Apprendimento supervisionato e gradient descent
Apprendimento supervisionato
Section titled “Apprendimento supervisionato”Il nostro obiettivo è quello di costruire una funzione .
Si definisce apprendimento supervisionato perché ci vuole un supervisore (un umano o anche una macchina) che crea un database di esempi.
Dobbiamo imporre una restrizione, ovvero che l’argomento abbia la stessa distribuzione di probabilità degli esempi che il sistema ha già visto.
Una distribuzione di probabilità rappresenta la probabilità che le componenti dei vettori di esempio e di input assumano certi valori. La nostra dà risultati attendibili solo quando i vettori di esempio e quelli di input seguono la stessa distribuzione di probabilità.
L’apprendimento supervisionato è solo uno dei modi per arrivare a una funzione che, dato un input qualsiasi, riesca a restituire un output.
La nostra funzione (d’ora in poi modello) esprime l’associazione tra input e output tramite dei parametri che possono essere modificati per migliorare la correttezza dell’output.
Il processo di apprendimento sta nel trovare i migliori parametri in maniera automatica. Ecco perché si chiama machine learning.
Nomenclatura
Section titled “Nomenclatura”Di seguito definiamo alcuni termini che vengono spesso usati nel campo:
- Features: rappresentano una caratteristica misurabile di ciò che viene dato in input al modello. Di solito una feature corrisponde ad una componente di .
- Pesi: in inglese ci si riferisce alle componenti del vettore come weights.
- Ottimizzazione: processo con il quale si trovano i pesi che permettono di abbassare la percentuale di errori commessi dal modello.
In generale l’output di un modello si può definire in due modi:
- Regressione: il modello, partendo dall’input dato, calcola un numero reale.
- Classificazione: il modello restituisce sempre un numero, ma questo numero appartiene ad un insieme finito di possibili valori.
Come trovare i pesi
Section titled “Come trovare i pesi”Iniziamo a calcolare sull’insieme degli esempi. Con parametri casuali il modello dà risultati che possono essere giusti o sbagliati.
Definiamo una misura (che chiameremo errore) di quanto una risposta sia sbagliata rispetto all’etichetta dell’esempio. Il modo per ottimizzare i parametri è quello di trovare i valori che minimizzano la funzione di errore.
Una buona misura di errore può essere la somma dei quadrati degli errori commessi dalla funzione sugli esempi:
Se è una funzione derivabile, allora posso ‘spostarmi’ verso il minimo.
Gradient descent: dato che il computer non può trovare il minimo della funzione in maniera visiva (come farebbe un umano a colpo d’occhio), l’algoritmo che si usa è quello di spostarsi a piccoli passi sulla funzione nella direzione del gradiente di . In questo modo eventualmente si arriva a un punto di minimo dove .
Come testare un modello
Section titled “Come testare un modello”Nell’apprendimento supervisionato è importante tenere ben separati l’insieme dei dati di esempio usati per l’allenamento e quello dei dati usati per testare le prestazioni del sistema.
Quindi un giudizio finale si può dare in base al numero di risposte corrette date dal sistema sui dati di test su cui non è stato allenato.
Il metodo più corretto sarebbe quello di dividere in tre insiemi i dati:
- training set: usato per ottimizzare i parametri attraverso il gradient descent;
- validation set: usato per validare un modello; dà risultati ottimistici perché stiamo modificando il modello per ottenere prestazioni migliori su questo set;
- testing set: si usa come prova finale per vedere se ci sono discrepanze tra il validation set e un caso più generale;
-fold cross-validation
Section titled “𝐾-fold cross-validation”Tecnica usata per decidere come suddividere i dati di esempio negli insiemi di training e validazione.
- Si divide l’insieme totale in sottoinsiemi.
- Se ne tiene uno da parte come validation set.
- Ogni volta che si modifica il modello, si usa un altro sottoinsieme di dati come validation set.
- Infine, si fa una media tra tutti i risultati di validazione.
In questo modo si evita di concentrare l’ottimizzazione del modello su uno specifico set di dati di validazione e ci si può aspettare che il risultato del testing set sia più simile a quello atteso.
Come scegliere un valore ottimale di ? La ricerca è ancora in corso.