Problema del gradiente spariente cause, conseguenze e soluzioni

Gradient sparsity problem causes, consequences and solutions.

Questo post del blog mira a descrivere il problema del gradiente che svanisce e spiegare come l’uso della funzione sigmoide ne è risultato causa.

La funzione sigmoide è una delle funzioni di attivazione più popolari utilizzate per lo sviluppo di reti neurali profonde. L’uso della funzione sigmoide ha limitato l’addestramento di reti neurali profonde perché ha causato il problema del gradiente che scompare. Ciò ha causato la lenta apprendimento della rete neurale o in alcuni casi nessun apprendimento del tutto. Questo post del blog mira a descrivere il problema del gradiente che scompare e spiegare come l’uso della funzione sigmoide abbia portato a questo problema.

Funzione sigmoide

Le funzioni sigmoide sono utilizzate frequentemente nelle reti neurali per attivare i neuroni. È una funzione logaritmica con una caratteristica forma a S. Il valore di output della funzione si trova tra 0 e 1. La funzione sigmoide è utilizzata per attivare i livelli di output nei problemi di classificazione binaria. Viene calcolata come segue:

Nel grafico sottostante è possibile vedere un confronto tra la funzione sigmoide stessa e la sua derivata. Le prime derivate delle funzioni sigmoide sono curve a campana con valori compresi tra 0 e 0,25.

La nostra conoscenza su come le reti neurali eseguono la propagazione in avanti e all’indietro è essenziale per capire il problema del gradiente che scompare.

Propagazione in avanti

La struttura di base di una rete neurale è un livello di input, uno o più livelli nascosti e un singolo livello di output. I pesi della rete sono inizializzati casualmente durante la propagazione in avanti. Le caratteristiche di input sono moltiplicate per i pesi corrispondenti ad ogni nodo del livello nascosto, e un bias viene aggiunto alla somma netta a ogni nodo. Questo valore viene quindi trasformato in output del nodo utilizzando una funzione di attivazione. Per generare l’output della rete neurale, l’output del livello nascosto viene moltiplicato per i pesi più i valori di bias, e il totale viene trasformato utilizzando un’altra funzione di attivazione. Questo sarà il valore previsto della rete neurale per un dato valore di input.

Retropropagazione

Mentre la rete genera un output, la funzione di perdita (C) indica quanto bene ha previsto l’output. La rete esegue la retropropagazione per minimizzare la perdita. Un metodo di retropropagazione minimizza la funzione di perdita regolando i pesi e i bias della rete neurale. In questo metodo, il gradiente della funzione di perdita viene calcolato rispetto ad ogni peso nella rete.

Nella retropropagazione, il nuovo peso (w new ) di un nodo viene calcolato utilizzando il vecchio peso (w old ) e il prodotto del tasso di apprendimento (ƞ) e il gradiente della funzione di perdita

Con la regola di derivazione parziale, possiamo rappresentare il gradiente della funzione di perdita come un prodotto di gradienti di tutte le funzioni di attivazione dei nodi rispetto ai loro pesi. Pertanto, i pesi aggiornati dei nodi nella rete dipendono dai gradienti delle funzioni di attivazione di ogni nodo.

Per i nodi con funzioni di attivazione sigmoide, sappiamo che la derivata parziale della funzione sigmoide raggiunge un valore massimo di 0,25. Quando ci sono più livelli nella rete, il valore del prodotto della derivata diminuisce fino a quando ad un certo punto la derivata parziale della funzione di perdita si avvicina a un valore vicino a zero, e la derivata parziale scompare. Chiamiamo questo il problema del gradiente che scompare.

Con le reti poco profonde, la funzione sigmoide può essere utilizzata poiché il valore piccolo del gradiente non diventa un problema. Quando si tratta di reti profonde, il problema del gradiente che scompare potrebbe avere un impatto significativo sulle prestazioni. I pesi della rete rimangono invariati mentre la derivata scompare. Durante la retropropagazione, una rete neurale impara aggiornando i suoi pesi e i suoi bias per ridurre la funzione di perdita. In una rete con un gradiente che scompare, i pesi non possono essere aggiornati, quindi la rete non può imparare. Le prestazioni della rete diminuiranno di conseguenza.

Metodo per superare il problema

Il problema del gradiente che scompare è causato dalla derivata della funzione di attivazione utilizzata per creare la rete neurale. La soluzione più semplice al problema è sostituire la funzione di attivazione della rete. Invece della sigmoide, utilizzare una funzione di attivazione come ReLU.

Rectified Linear Units (ReLU) sono funzioni di attivazione che generano un output lineare positivo quando vengono applicate a valori di input positivi. Se l’input è negativo, la funzione restituisce zero.

La derivata di una funzione ReLU è definita come 1 per input maggiori di zero e 0 per input negativi. Il grafico condiviso di seguito indica la derivata di una funzione ReLU

Se la funzione ReLU viene utilizzata per l’attivazione in una rete neurale al posto di una funzione sigmoide, il valore della derivata parziale della funzione di perdita avrà valori di 0 o 1 che impediscono al gradiente di svanire. L’uso della funzione ReLU impedisce quindi al gradiente di svanire. Il problema con l’uso di ReLU è quando il gradiente ha un valore di 0. In tali casi, il nodo viene considerato come un nodo morto poiché i valori vecchi e nuovi dei pesi rimangono gli stessi. Questa situazione può essere evitata utilizzando una funzione leaky ReLU che impedisce al gradiente di cadere al valore zero.

Un’altra tecnica per evitare il problema del gradiente che svanisce è l’inizializzazione dei pesi. Questo è il processo di assegnazione di valori iniziali ai pesi nella rete neurale in modo che durante la retropropagazione, i pesi non svaniscano mai.

In conclusione, il problema del gradiente che svanisce deriva dalla natura della derivata parziale della funzione di attivazione utilizzata per creare la rete neurale. Il problema può essere peggiore in reti neurali profonde che utilizzano la funzione di attivazione Sigmoid. Può essere significativamente ridotto utilizzando funzioni di attivazione come ReLU e leaky ReLU.

Tina Jacob è appassionata di scienza dei dati e crede che la vita sia fatta di apprendimento e crescita, non importa cosa porti.