Reti neurali: addestramento usando la retropropagazione dell'errore

La retropropagazione è l'algoritmo di addestramento più comune per le reti neurali. Rende possibile la discesa del gradiente per le reti neurali multilivello. Molte librerie di codice di machine learning (come Keras) gestiscono la retropropagazione automaticamente, quindi non devi eseguire tu stesso 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 backpropagation e il modo più comune per regolarizzare una rete neurale.

Sfumature che scompaiono

I gradienti per i livelli inferiori della rete neurale (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 scompaiono vengono addestrati molto lentamente o non vengono addestrati affatto.

La funzione di attivazione ReLU può contribuire a prevenire i gradienti che tendono a zero.

Esplosione dei gradienti

Se i pesi in una rete sono molto grandi, i gradienti per i livelli inferiori comportano prodotti di molti termini di grandi dimensioni. In questo caso, puoi avere gradienti esplosivi: gradienti troppo grandi per convergere.

La normalizzazione dei batch può contribuire a prevenire i gradienti esplosivi, così come la riduzione del tasso di apprendimento.

Unità ReLU morte

Quando la somma ponderata per un'unità ReLU scende sotto 0, l'unità ReLU può bloccarsi. Restituisce 0, non contribuendo all'output della rete e i gradienti non possono più attraversarlo durante la retropropagazione. Con una sorgente di gradienti interrotta, l'input della ReLU potrebbe non cambiare mai abbastanza da riportare la somma ponderata sopra lo zero.

La riduzione del tasso di apprendimento può contribuire a evitare che le unità ReLU muoiano.

Regolarizzazione del dropout

Un'altra forma di regolarizzazione, chiamata regolarizzazione dropout, è utile per le reti neurali. Esclude in modo casuale le attivazioni di 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 = Drop out di tutti i nodi. Il modello non apprende nulla.
  • Valori compresi tra 0,0 e 1,0 = Più utili.