In uno dei miei post precedenti, abbiamo spiegato che le reti neurali apprendono attraverso l’algoritmo di backpropagation. L’idea principale è che iniziamo dal livello di output e spostiamo o “propaghiamo” l’errore fino al livello di input aggiornando man mano i pesi rispetto alla funzione di perdita. Se non hai familiarità con questo, ti consiglio vivamente di controllare quel post:
I pesi vengono aggiornati utilizzando la loro derivata parziale rispetto alla funzione di perdita. Il problema è che questi gradienti diventano sempre più piccoli man mano che ci avviciniamo agli strati inferiori della rete. Ciò fa sì che i pesi degli strati inferiori cambino appena durante l’allenamento della rete. Questo è noto come problema del gradiente evanescente.
Può essere vero il contrario laddove i gradienti continuano ad aumentare attraverso gli strati. Questo è il problema del gradiente esplosivo Quale è principalmente un problema in reti neurali ricorrenti.
Tuttavia, a carta pubblicato da Saverio Glorot E Giosuè Bengio nel 2010 sono stati diagnosticati diversi motivi per cui ciò accade ai gradienti. I principali colpevoli furono i funzione di attivazione del sigmoide e come vengono inizializzati i pesi (tipicamente dalla distribuzione normale standard). Questa combinazione fa sì che le varianze cambino tra gli strati fino a quando non diventano saturare ai margini estremi della funzione sigmoidea.
Di seguito è riportata l’equazione matematica e il grafico della funzione sigmoidea. Si noti che ai suoi estremi il gradiente diventa zero. Pertanto, in questi punti di saturazione non viene effettuato alcun “apprendimento”.
Esamineremo ora alcune tecniche che possono ridurre la possibilità che i nostri gradienti svaniscano o esplodano durante l’allenamento.
Fonte: towardsdatascience.com