User Tools

Site Tools


neurali:error_backpropagation

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
neurali:error_backpropagation [2015/07/09 16:19] profproneurali:error_backpropagation [2023/06/06 18:42] (current) – [Precondizionamento] profpro
Line 1: Line 1:
 +====== Error Backpropagation ======
 +
 +
 +In sostanza: 
 +
 +Durante l'addestramento [[neurali:supervisioned learning rule]], basato su **error backpropagation**, si parte sempre dai dati di input e dati di output desiderati. Potrebbe sembrare che manchi l'informazione necessaria a riempire i pesi delle sinapsi dei neuroni hidden, invece basta applicare l'agoritmo di erro backpropagation
 +
 +  * si calcola l'output effettivo e l'errore prodotto rispetto ai dati desiderati
 +  * si fa risalire indietro questo errore (nel verso matematicamente inverso a quello dell'output) per calcolare come devono essere modificati i pesi sinaptici
 +
 +
 +  * A volta bastano 10 epoche, cioè  basta ripetere 10 volte l'addestramento con i dati. Altre volte sono necessarie 100 epoche, anche per la stessa rete, perché?
 +  * Perché l'addestramento di una rete parte sempre con pesi sinaptici random..
 +
 +====Precondizionamento====
 +
 +Vediamo due modi di operare molto utili per progettare reti e per addestrarle
 +
 +  * **Early stop**: fermarsi precocemente, per evitare [[neurali:parametri di progettazione ann#overfitting]]. Come faccio a sapere quando? Devo avere da parte un po' di dati anche per fare un test di validità del funzionamento di quello che ho ottenuto
 +  * **weight decay**: si aggiunge un parametro (momentum?) per evitare che i pesi sinaptici tendano a crescere a dismisura.  
 +  * **precondizionamento** da fare prima dell'addestramento per **normalizzare** i dati , i pesi sinaptici, il learning rate. 
 +
 +===Normalizzazione===
 +
 +    * **Normalizzare** i dati di input e di output significa avere una gaussiana con media~0 e varianza~1. 
 +    * **Normalizzare** i pesi sinpatici vuol dire usare per i pesi una distribuzione di probabilità uniforme (non gaussiana) da -√1/K a +√1/K, con K= n. nodi entranti in ogni neurone. 
 +    * Molto meglio usare una funzione di attivazione **tanh** (non sigmoid). 
 +    * **Normalizzare** il learning rate vuol dire che si può partire con questi valori e diminuirli:
 +      * con unsupervisioned learning λ=1
 +      * con supervisione learning λ=√1/N con N è il numero di dati forniti in input  
 +