User Tools

Site Tools


neurali:gradient_descent

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

neurali:gradient_descent [2018/04/25 07:55]
neurali:gradient_descent [2020/06/08 22:20] (current)
Line 1: Line 1:
 +======Gradient descent======
  
 +È un algoritmo, ma non è strettamente legato alle reti neurali 
 +
 +https://en.wikibooks.org/wiki/Artificial_Neural_Networks/Error-Correction_Learning
 +
 +  * N è il numero di layer
 +    * l è indice di un generico layer (1..N)
 +  * Ml è il numero 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 [[neurali:gradient_descent&#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'[[neurali: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 [[neurali:parametri_di_progettazione_ann|overfitting]] ((http://ufldl.stanford.edu/wiki/index.php/Backpropagation_Algorithm)) . 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
 +
 +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 [[neurali:error backpropagation]]
 +
 +====Parametro di step size====
 +
 +[[neurali: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**.