La retropropagazione è l'algoritmo di addestramento più comune per le reti neurali. Rende la discesa del gradiente fattibile per le reti neurali multilivello. Molte librerie di codice di machine learning (ad esempio Keras) gestire automaticamente la retropropagazione dell'errore, quindi non è necessario i calcoli sottostanti. Guarda il seguente video per panoramica concettuale del funzionamento della retropropagazione dell'errore:
Best practice per l'addestramento della rete neurale
Questa sezione spiega i casi di errore della retropropagazione dell'errore e le un modo comune per regolarizzare una rete neurale.
Gradienti in fuga
I gradienti per la rete neurale gli strati di rete (quelli più vicini al livello di input) possono diventare molto piccoli. Nelle reti profonde (reti con più di uno strato nascosto), il calcolo di questi gradienti può comportare prodotto di tanti piccoli termini.
Quando i valori dei gradienti si avvicinano a 0 per gli strati inferiori, i gradienti vengono ha detto "sparire". Gli strati con gradienti scomparsi si addestrano molto lentamente o meno del tutto.
La funzione di attivazione ReLU può aiutare a prevenire la scomparsa dei gradienti.
Gradienti esplosivi
Se le ponderazioni in una rete sono molto grandi, allora i gradienti per coinvolge prodotti con molti termini di grandi dimensioni. In questo caso puoi avere gradienti con esplosione: gradienti che diventano troppo grandi per convergere.
La normalizzazione del batch può aiutare a prevenire l'esplosione dei gradienti, così come la riduzione tasso di apprendimento.
Unità ReLU non attive
Quando la somma ponderata di un'unità ReLU scende al di sotto di 0, l'unità ReLU può sono bloccati. Emette un valore pari a 0 e non contribuisce in alcun modo all'output della rete, e i gradienti non possono più fluire al suo interno durante la retropropagazione dell'errore. Con un dell'origine dei gradienti tagliata, l'input alla ReLU potrebbe non cambiare mai abbastanza per riportare la somma ponderata al di sopra di 0.
La riduzione del tasso di apprendimento può contribuire a evitare che le unità ReLU si esauriscano.
Regolarizzazione abbandono
Un'altra forma di regolarizzazione, chiamata regolarizzazione del dropout, è utile per le reti neurali. Funziona "scadendo" casualmente attivazioni di unità in una rete per un singolo passaggio del gradiente. Più spesso abbandonerai, più forte sarà la regolarizzazione:
- 0.0 = Nessuna regolarizzazione dell'abbandono.
- 1.0 = Elimina tutti i nodi. Il modello non impara nulla.
- Valori compresi tra 0,0 e 1,0 = più utile.