Table of Contents
Gradient descent
È un algoritmo, ma non è strettamente legato alle reti neurali
https://en.wikibooks.org/wiki/Artificial_Neural_Networks/Error-Correction_Learning
E' usato nelle reti neurali per la fase di addrestramento?
Data una rete neurale N x M
- N è il numero totale di layer
- l è indice di un generico layer (1..N)
- Ml è il numero totale di neuroni su un layer l
- j è indice di un generico neurone sul layer l (1..Ml)
- x è un vettore con indice i (1..Ml)
- w è un vettore con indice i e j (i collegamenti tra due layer sono Ml·Ml)
- Si crea una nuova rete neurale fornendo dei pesi random (vedi nota sotto nota_sui_pesi_iniziali)
- Si fornisce un esempio di input (x) e di output atteso (yo)
- Si calcola l'output effettivo, usando le funzioni di attivazione sigmaxx: y = sigmaxx(zetaxx(w,x))
- Si calcola una funzione di errore: e = yo - y
- Poiché il valore attuale di un peso w[n+1] dipende dal valore del peso al passo precedente w[n]
- Si applica una formula che modifica il valore attuale dei pesi in base all'errore calcolato rispetto all'output atteso
NOTA: w[n+1] vuol dire che si sta svolgendo un passo n dell'addestramento. L'addrestramento consiste nel fare dei calcoli che modificano i pesi. w[n+1] significa che si è giunti a fornire un certo input (n+1-esimo), che ha prodotto (istantaneamente) un certo output e che ha permesso di ottenere una nuova versione del peso w
La formula è stata ottenuta calcolando l'errore quadratico medio di tutti i dati attesi di esempio, aggiungendo un termine (weight decay) che tende a diminuire la dimensione dei pesi per evitare overfitting 1) . Se voglio minimizzare questo errore variando i pesi sinaptici, si deve eseguire una derivata rispetto ai pesi
Un'altra formula produce il nuovo peso in base:
- al vecchio peso,
- all'errore, che dipende da sigmaxx
- ad un coefficiente etaxx
Conseguenze
Si otterrà una dipendenza dalla derivata della funzione di attivazione sigmaxx (deve essere facile da derivare)
Si ottiene una dipendenza dell'output di un layer (l+1) dal layer precedente (l) che spiega il significato del nome error backpropagation
Parametro di step size
parametri_di_progettazione_ann
etaxx viene chiamato “dimensione del passo”, ma poi, nella backpropagation rule si chiama “learning rate”
nota sui pesi iniziali
Se si inizializzassero tutti i pesi di tutti i layer a zero, il precedente algoritmo di ottimizzazione potrebbe produrre la soluzione in cui tutti i neuroni di tutti i layer hanno tutti gli stessi pesi.
Per questo motivo la rete viene sempre inizializzata con pesi random.