Alcune note sull'apprendimento automatico
È un sistema in cui una macchina può eseguire compiti senza programmazione esplicita. Le basi teoriche esistono fin dagli anni '60, ma risultati significativi sono possibili (dal 2013 in poi circa) grazie ad hardware dedicato, algoritmi in grado di sfruttarne la potenza e dataset di dati ben strutturati e catalogati.
Un esempio di classificazione
Un software programmato esplicitamente per eseguire la classificazione delle immagini dovrebbe identificare esplicitamente le caratteristiche dell'oggetto. Questo può funzionare se tutti gli oggetti in questione sono ragionevolmente semplici e simili. Ma cosa succede se alcune caratteristiche della stessa categoria di oggetti presentano una varianza elevata?
Un approccio senza istruzioni esplicite
Potremmo sottoporre al software (ovvero il modello di machine learning) un dataset di dati di immagine opportunamente etichettato eseguendo su di esso un numero opportuno di cicli di training e test. Un altro esempio potrebbe utilizzare la regressione lineare per prevedere i prezzi delle case in base alle loro dimensioni. Le caratteristiche comuni di questi due esempi sono lo studio dei dati per formare un’ipotesi. L'aggiunta di più dati probabilmente esporrà errori all'interno dell'ipotesi, quindi potremo misurare il divario di errore e formare un'ipotesi aggiornata con un divario di errore minore.
La macchina deve analizzare il set di dati utilizzando alcune ipotesi, ad es. una variabile lineare rappresentabile come una retta su un piano cartesiano. L'obiettivo della macchina è testare ogni possibile risultato per estrarre quello con il tasso di errore più basso. È semplice con una variabile lineare, molto più complesso con alcuni moderni modelli di machine learning che hanno miliardi di variabili, ma il principio è lo stesso: la macchina parte da un punto (o set di parametri) casuale e si muove verso il tasso di errore più basso, ciclo dopo ciclo di treno e prova.
Ogni passaggio di training e test fornisce una misura (una "funzione di errore" o "funzione di perdita") e la ripetizione di questi passaggi è il "gradiente di discesa" verso la soluzione.
Esistono vari modi per migliorare i risultati come la backpropagation per ottimizzare i parametri dei dati e [gli abbandoni dei nodi neurali](https://machinelearningmastery.com/dropout -for-regularizing-deep-neural-networks/) per ridurre l'overfitting (quando il modello ML non è più in grado di generalizzare bene sui dati del mondo reale).
Alcune categorie di machine learning
- apprendimento supervisionato: classificazione di immagini, riconoscimento del testo e vocale, rilevamento di frodi
- apprendimento non supervisionato: raggruppamento dei dati in cluster o individuazione di anomalie
- apprendimento per rinforzo: il software trova la soluzione migliore per un dato problema