Reti neurali: addestramento usando la retropropagazione dell'errore

La retropropagazione è l'algoritmo di addestramento più comune per le reti neurali. Rende fattibile la discesa del gradiente per le reti neurali multistrato. Molte librerie di codice di machine learning (come Keras) gestiscono automaticamente la retropropagazione, quindi non devi eseguire personalmente i calcoli sottostanti. Guarda il seguente video per una panoramica concettuale del funzionamento della retropropagazione:

Best practice per l'addestramento delle reti neurali

Questa sezione spiega i casi di errore della retropropagazione dell'errore e il modo più comune per regolarizzare una rete neurale.

Gradienti che svaniscono

I gradienti per i livelli della rete neurale inferiori (quelli più vicini al livello di input) possono diventare molto piccoli. Nelle reti profonde (reti con più di un livello nascosto), il calcolo di questi gradienti può comportare il prodotto di molti termini piccoli.

Quando i valori del gradiente si avvicinano a 0 per i livelli inferiori, si dice che i gradienti "svaniscono". I livelli con gradienti che svaniscono vengono addestrati molto lentamente o non vengono addestrati affatto.

La funzione di attivazione ReLU può contribuire a evitare i gradienti che svaniscono.

Gradienti esplosivi

Se i pesi di una rete sono molto grandi, i gradienti per i livelli inferiori coinvolgono i prodotti di molti termini grandi. In questo caso, puoi avere gradienti in crescita esponenziale, ovvero gradienti che diventano troppo grandi per convergere.

La normalizzazione batch può contribuire a evitare l'esplosione dei gradienti, così come la riduzione del tasso di apprendimento.

Unità ReLU morte

Quando la somma ponderata per un'unità ReLU scende al di sotto di 0, l'unità ReLU può bloccarsi. Restituisce 0, non contribuisce all'output della rete e i gradienti non possono più attraversarlo durante la retropropagazione. Con una sorgente di gradienti tagliata, l'input della ReLU potrebbe non cambiare 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 del dropout

Un'altra forma di regolarizzazione, chiamata regolarizzazione con dropout, è utile per le reti neurali. Funziona "ritirando" casualmente le attivazioni delle unità in una rete per un singolo passo del gradiente. Quanto più si esclude tanto più forte è la regolarizzazione:

  • 0,0 = nessuna regolarizzazione del dropout.
  • 1,0 = elimina tutti i nodi. Il modello non impara nulla.
  • Valori compresi tra 0,0 e 1,0 = più utili.