Formazione sulle reti neurali: best practice

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.