In che modo la CNN evita il problema del gradiente evanescente


15

Ho letto molto sulle reti neurali convolutive e mi chiedevo come evitare il problema del gradiente in via di estinzione. So che le reti di credenze profonde impilano autocodificatori a livello singolo o altre reti poco profonde pre-addestrate e posso quindi evitare questo problema, ma non so come evitarlo nelle CNN.

Secondo Wikipedia :

"nonostante il summenzionato" problema del gradiente di scomparsa ", la potenza di elaborazione superiore delle GPU rende possibile la semplice retro-propagazione per reti neurali feedforward profonde con molti livelli".

Non capisco perché l'elaborazione GPU rimuova questo problema?


2
L'articolo di Wikipedia non ha giustificato il motivo per cui la GPU ha contribuito a risolvere il problema del gradiente in via di estinzione? È perché anche se i gradienti sono piccoli, poiché le GPU sono così veloci che riusciamo ancora a migliorare i parametri facendo molti passi grazie alle GPU?
Charlie Parker,

2
Esattamente. Il problema del gradiente di sparizione è il motivo per cui i pesi di livello inferiore vengono aggiornati a una velocità molto ridotta, e quindi ci vuole un'eternità per addestrare la rete. Ma, come con le GPU, puoi fare più calcoli (cioè più aggiornamenti ai pesi) in minor tempo, con sempre più elaborazione GPU, il problema del gradiente di sparizione è in qualche modo svanito .
Sangram,

@CharlieParker, potresti approfondire GPU's are fast correlated with vanishing gradients, posso capire la logica veloce con una grande larghezza di banda di memoria per elaborare moltiplicazioni di matrici multiple! ma potresti spiegare cosa c'entra con i derivati? Il problema del gradiente evanescente sembra fare di più con l'inizializzazione del peso , no?
Anu,

Risposte:


13

Il problema del gradiente in via di estinzione ci richiede di utilizzare piccoli tassi di apprendimento con discesa del gradiente, che quindi necessitano di molti piccoli passi per convergere. Questo è un problema se si dispone di un computer lento che impiega molto tempo per ogni passaggio. Se hai una GPU veloce che può eseguire molti più passaggi in un giorno, questo è meno un problema.

Esistono diversi modi per affrontare il problema del gradiente in via di estinzione. Immagino che l'effetto più grande per le CNN provenga dal passaggio da unità non lineari sigmoidi a unità lineari rettificate. Se si considera una semplice rete neurale cui errore dipende dal peso w i j solo attraverso y j , doveEwijyj

yj=f(iwijxi),

il suo gradiente è

wijE=Eyjyjwij=Eyjf(iwijxi)xi.

Se è la funzione sigmoide logistica, f sarà vicino allo zero per ingressi grandi e piccoli. Se f è un'unità lineare rettificata,fff

la derivata è zero solo per gli input negativi e 1 per gli input positivi. Un altro importante contributo viene dall'inizializzazione corretta dei pesi. Questo documento sembra una buona fonte per comprendere le sfide in modo più dettagliato (anche se non l'ho ancora letto):

f(u)=max(0,u),

http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf


2
Sono un po 'perplesso sulle unità lineari rettificate. Sì, per sigmoidi ecc. Il gradiente è spesso molto piccolo, ma per le unità lineari rettificate è spesso esattamente zero. Non è peggio? Pertanto, se i pesi di un'unità sono sfortunati, non cambieranno mai.
Hans-Peter Störr,

2
Pensando a questo, le ReLU che perdono e / o rumorose potrebbero essere in uso per questo motivo.
lato sole

5
Perché la tua prima frase è vera? Vale a dire "Il problema del gradiente in via di estinzione ci impone di utilizzare piccoli tassi di apprendimento con discesa del gradiente che richiedono quindi molti piccoli passi per convergere." Perché abbiamo bisogno di piccoli tassi di apprendimento per affrontare il problema del gradiente in via di estinzione? Se i gradienti sono già piccoli a causa dei gradienti che svaniscono, mi sarei aspettato che renderli piccoli rendesse le cose peggiori.
Charlie Parker,

2
Bella domanda, avrei dovuto spiegare meglio questa affermazione. Il problema del gradiente che sta scomparendo non è che tutti i gradienti sono piccoli (cosa che potremmo facilmente risolvere usando grandi tassi di apprendimento), ma che i gradienti svaniscono mentre si ripropaga attraverso la rete. Vale a dire, i gradienti sono piccoli in alcuni strati ma grandi in altri strati. Se usi grandi tassi di apprendimento, il tutto esplode (perché alcuni gradienti sono grandi), quindi devi usare un piccolo tasso di apprendimento. L'uso di più tassi di apprendimento è un altro approccio per affrontare il problema, a costo di introdurre più iperparametri.
Lucas,

3
Direi che il tasso di apprendimento è principalmente legato al problema del gradiente che esplode . Il ridimensionamento del gradiente con un tasso di apprendimento esageratamente basso non impedisce affatto i gradienti che svaniscono, ma semplicemente ritarda l'effetto mentre l'apprendimento rallenta considerevolmente. L'effetto stesso è causato dalla ripetuta applicazione delle non linearità e dalla moltiplicazione di piccoli valori. Naturalmente c'è una tendenza ad andare a tassi di apprendimento più piccoli (a causa della potenza di calcolo) ma ciò non ha nulla a che fare con i gradienti di fuga poiché controlla solo quanto bene viene esplorato lo spazio degli stati (date le condizioni stabili).
runDOSrun,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.