Problema della scomparsa del gradiente

Il problema della scomparsa del gradiente (in lingua inglese vanishing gradient problem) è un fenomeno che crea difficoltà nell'addestramento delle reti neurali profonde tramite retropropagazione dell'errore mediante discesa stocastica del gradiente. In tale metodo, ogni parametro del modello riceve a ogni iterazione un aggiornamento proporzionale alla derivata parziale della funzione di costo rispetto al parametro stesso. Una delle principali cause è la presenza di funzioni di attivazione non lineari classiche, come la tangente iperbolica o la funzione logistica, che hanno gradiente a valori nell'intervallo ( 0 , 1 ) {\displaystyle (0,1)} . Poiché nell'algoritmo di retropropagazione i gradienti ai vari livelli vengono moltiplicati tramite la regola della catena, il prodotto di n {\displaystyle n} numeri in ( 0 , 1 ) {\displaystyle (0,1)} decresce esponenzialmente rispetto alla profondità n {\displaystyle n} della rete. Quando invece il gradiente delle funzioni di attivazione può assumere valori elevati, un problema analogo che può manifestarsi è quello dell'esplosione del gradiente.

La retropropagazione dell'errore permise di addestrare le reti neurali tramite apprendimento supervisionato, ma i primi tentativi ebbero limitato successo e nel 1991, nella sua tesi di laurea, Sepp Hochreiter attribuì questa difficoltà al problema da lui chiamato "scomparsa del gradiente"[1][2], che affligge sia le reti neurali feed-forward profonde[3] che quelle ricorsive[4], che dal punto di vista dell'apprendimento sono equivalenti a reti profonde in quanto vengono "srotolate" rispetto alla direzione temporale con un livello per ogni intervallo di tempo.[5]

Illustrazione semplificata nelle reti neurali ricorrenti

In una rete neurale ricorrente dopo n {\displaystyle n} passaggi si ripetono moltiplicazioni di una matrice con un vettore per gli stati nascosti: il vettore di output nascosto h i {\displaystyle h_{i}} del livello i {\displaystyle i} dipende dall'output nascosto del livello precedente h i = f ( W h i 1 + b ) {\displaystyle {\vec {h}}_{i}=f(W{\vec {h}}_{i-1}+{\vec {b}})} .

Possiamo semplificare la discussione trascurando estremamente la funzione non lineare f {\displaystyle f} , bias b {\displaystyle {\vec {b}}} e notando che la matrice dei pesi ( W {\displaystyle W} ) è sempre lo stesso. In questo caso, l'output finale è solo: h n = W n h 0 , {\displaystyle {\vec {h}}_{n}=W^{n}{\vec {h}}_{0},}

dove h 0 {\displaystyle {\vec {h}}_{0}} è l'input iniziale alla rete. Se W = Q λ Q T {\displaystyle W=Q\lambda Q^{T}} può essere diagonalizzato, allora (a causa di W n = Q λ n Q T {\displaystyle W^{n}=Q\lambda ^{n}Q^{T}} ) è chiaro che gli autovalori minori di 1 decadono esponenzialmente con profondità n mentre gli autovalori maggiori di 1 esplodono in modo esponenziale con profondità n.[6]

Soluzioni

Il problema può essere affrontato usando differenti funzioni di attivazione, ad esempio funzioni rettificate come ReLU,[7] usando differenti algoritmi di addestramento, ad esempio Rprop, che dipende solo dal segno del gradiente e non dalla sua norma,[8] oppure usando metodi che non dipendono dal gradiente per l'ottimizzazione dei parametri, come algoritmi genetici e particle swarm optimization,[9] il cui costo può diventare tuttavia proibitivo nel caso di reti con un numero molto elevato di parametri.

Rispetto al periodo in cui il problema è stato scoperto, la scomparsa del gradiente è stata parzialmente mitigata con il passare del tempo grazie all'incremento significativo della potenza di calcolo a disposizione, specialmente grazie alla transizione da CPU a GPGPU per l'addestramento dei modelli, anche se ciò non rappresenta di per sé un'effettiva soluzione del problema.[10][11]

Un metodo proposto per contrastare la cancellazione del gradiente nelle reti profonde è quello di eseguire l'addestramento con un approccio multilivello, addestrando i singoli livelli separatamente e poi assemblandoli, e usando la retropropagazione sull'intera rete per rifinire l'addestramento. Jürgen Schmidhuber propose di addestrare i singoli livelli in maniera non supervisionata, in modo che apprendano una rappresentazione compressa del proprio input.[12] Geoffrey Hinton propose nel 2006 le reti deep belief, che modellano l'apprendimento della distribuzione di una rappresentazione ad alto livello tramite più livelli di variabili latenti. Ciascun livello è modellato da una macchina di Boltzmann ristretta e, se addestrato correttamente, garantisce un aumento del limite inferiore della log-verosimiglianza. Quando un numero sufficiente di livelli è stato addestrato, la rete può essere anche usata come modello generativo, ottenendo un nuovo campione a partire dai valori delle funzioni di attivazione del livello più alto.[11] Tale modello è utile per l'estrazione di caratteristiche da dati strutturati ad alta dimensionalità.[13]

Per quanto riguarda le reti neurali ricorsive, anch'esse affette dalla scomparsa del gradiente, che ne riduce la capacità di apprendere relazioni a lungo termine, il settore venne rivoluzionato nel 1997 con l'introduzione, da parte di Sepp Hochreiter e Jürgen Schmidhuber, dell'architettura long-short term memory (LSTM).[14] Nelle reti LSTM lo stato del modello si propaga nel tempo senza attraversare funzioni non lineari, prevenendo la cancellazione o esplosione del gradiente.[15] Le reti LSTM hanno ottenuto notevoli risultati in molti problemi inerenti sequenze temporali, come il riconoscimento della scrittura o l'elaborazione del linguaggio naturale.[16][17]

Le reti neurali residuali permettono di contrastare la scomparsa del gradiente in reti molto profonde, grazie all'aggiunta di connessioni scorciatoia che permettono a una breve sequenza di livelli di imparare non semplicemente la funzione obiettivo, ma il suo residuo ottenuto sottraendo la funzione identità.[18][19]

Note

  1. ^ S. Hochreiter. Untersuchungen zu dynamischen neuronalen Netzen. Diploma thesis, Institut f. Informatik, Technische Univ. Munich, 1991. Advisor: J. Schmidhuber.
  2. ^ S. Hochreiter, Y. Bengio, P. Frasconi, and J. Schmidhuber. Gradient flow in recurrent nets: the difficulty of learning long-term dependencies. In S. C. Kremer and J. F. Kolen, editors, A Field Guide to Dynamical Recurrent Neural Networks. IEEE Press, 2001.
  3. ^ (EN) Garrett B. Goh, Nathan O. Hodas e Abhinav Vishnu, Deep learning for computational chemistry, in Journal of Computational Chemistry, vol. 38, n. 16, 15 giugno 2017, pp. 1291-1307, DOI:10.1002/jcc.24764/abstract, PMID 28272810, arXiv:1701.04503.
  4. ^ Razvan Pascanu, Tomas Mikolov e Yoshua Bengio, On the difficulty of training Recurrent Neural Networks, 16 febbraio 2013.
  5. ^ S. Hochreiter, Y. Bengio, P. Frasconi e J. Schmidhuber, Gradient flow in recurrent nets: the difficulty of learning long-term dependencies, in Kremer e J. F. Kolen (a cura di), A Field Guide to Dynamical Recurrent Neural Networks, IEEE Press, 2001, ISBN 0-7803-5369-2.
  6. ^ Andrew Trask, Grokking Deep Learning, Manning, 2019, ISBN 978-1617293702. URL consultato l'8 ottobre 2021 (archiviato dall'url originale il 14 settembre 2021).
  7. ^ (EN) Xavier Glorot, Antoine Bordes e Yoshua Bengio, Deep Sparse Rectifier Neural Networks, in PMLR, 14 giugno 2011.
  8. ^ Sven Behnke, Hierarchical Neural Networks for Image Interpretation. (PDF), Lecture Notes in Computer Science, vol. 2766, Springer, 2003.
  9. ^ Sepp Hochreiter's Fundamental Deep Learning Problem (1991), su people.idsia.ch. URL consultato il 7 gennaio 2017.
  10. ^ Jürgen Schmidhuber, Deep learning in neural networks: An overview, in Neural Networks, vol. 61, 2015, pp. 85-117, DOI:10.1016/j.neunet.2014.09.003, PMID 25462637, arXiv:1404.7828.
  11. ^ a b G. E. Hinton, S. Osindero e Y. Teh, A fast learning algorithm for deep belief nets (PDF), in Neural Computation, vol. 18, n. 7, 2006, pp. 1527-1554, DOI:10.1162/neco.2006.18.7.1527, PMID 16764513.
  12. ^ J. Schmidhuber., "Learning complex, extended sequences using the principle of history compression," Neural Computation, 4, pp. 234–242, 1992.
  13. ^ G. Hinton, Deep belief networks, in Scholarpedia, vol. 4, n. 5, 2009, p. 5947, Bibcode:2009SchpJ...4.5947H, DOI:10.4249/scholarpedia.5947.
  14. ^ Sepp Hochreiter e Jürgen Schmidhuber, Long Short-Term Memory, in Neural Computation, vol. 9, n. 8, 1997, pp. 1735-1780, DOI:10.1162/neco.1997.9.8.1735, PMID 9377276.
  15. ^ Cristopher Olah, Understanding LSTM networks, su colah.github.io.
  16. ^ Graves, Alex; and Schmidhuber, Jürgen; Offline Handwriting Recognition with Multidimensional Recurrent Neural Networks, in Bengio, Yoshua; Schuurmans, Dale; Lafferty, John; Williams, Chris K. I.; and Culotta, Aron (eds.), Advances in Neural Information Processing Systems 22 (NIPS'22), December 7th–10th, 2009, Vancouver, BC, Neural Information Processing Systems (NIPS) Foundation, 2009, pp. 545–552
  17. ^ A. Graves, M. Liwicki, S. Fernandez, R. Bertolami, H. Bunke e J. Schmidhuber, A Novel Connectionist System for Improved Unconstrained Handwriting Recognition, in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 31, n. 5, 2009, pp. 855-868, DOI:10.1109/tpami.2008.137.
  18. ^ Kaiming He, Xiangyu Zhang, Shaoqing Ren e Jian Sun, Deep Residual Learning for Image Recognition, in arXiv:1512.03385 [cs], 10 dicembre 2015.
  19. ^ Andreas Veit, Michael Wilber e Serge Belongie, Residual Networks Behave Like Ensembles of Relatively Shallow Networks, 20 maggio 2016.
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica