User Tools

Site Tools


neurali:gradient_descent

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
neurali:gradient_descent [2015/07/09 16:04] profproneurali:gradient_descent [2020/06/08 22:20] – external edit 127.0.0.1
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**. 
neurali/gradient_descent.txt · Last modified: 2023/06/06 18:40 by profpro