Questa sezione illustra i casi di errore della retropropagazione e il modo più comune per regolarizzare una rete neurale.
Casi di errore
Esistono diversi modi comuni per causare errori di retropropagazione.
Gradienti evanescenti
I gradienti per i livelli inferiori (più vicini all'input) possono diventare molto ridotti. Nelle reti profonde, il calcolo di questi gradienti può comportare l'assunzione del prodotto di molti termini più piccoli.
Quando i gradienti svaniscono verso 0 per i livelli inferiori, questi livelli vengono addestrati molto lentamente o per niente.
La funzione di attivazione ReLU può aiutare a evitare la scomparsa di gradienti.
Gradienti esplosivi
Se le ponderazioni in una rete sono molto grandi, i gradienti per i livelli inferiori riguardano prodotti appartenenti a molti termini di grandi dimensioni. In questo caso puoi avere gradienti che esplodono, ovvero troppo grandi per convergere.
La normalizzazione batch può aiutare a evitare l'esplosione di gradienti, così come l'abbassamento del tasso di apprendimento.
Unità ReLU non attive
Quando la somma ponderata di un'unità ReLU è inferiore a 0, l'unità ReLU può bloccarsi. Emette 0 attivazione, non contribuendo nulla all'output della rete e i gradienti non possono più attraversarla durante la retropropagazione. Con una sorgente di gradienti interrotta, l'input nella ReLU potrebbe non cambiare mai abbastanza per riportare la somma ponderata superiore a 0.
Ridurre il tasso di apprendimento può aiutare a evitare che le unità ReLU si esauriscano.
Regolarizzazione dell'abbandono
Un'altra forma di regolarizzazione, chiamata Dropout, è utile per le reti neurali. Funziona "eliminando" in modo casuale le attivazioni delle unità in una rete per un singolo passaggio del gradiente. Più abbandoni, più forte è la regolarizzazione:
- 0.0 = Nessuna regolarizzazione dell'abbandono.
- 1,0 = Elimina tutto. Il modello non apprende nulla.
- Valori compresi tra 0,0 e 1,0 = Più utili.