Problème de gradient évanouissant - Vanishing gradient problem

En apprentissage automatique , le problème du gradient de disparition est rencontré lors de la formation de réseaux de neurones artificiels avec des méthodes d'apprentissage basées sur le gradient et la rétropropagation . Dans de telles méthodes, chacun des poids du réseau neuronal reçoit une mise à jour proportionnelle à la dérivée partielle de la fonction d'erreur par rapport au poids actuel à chaque itération de l'apprentissage. Le problème est que dans certains cas, le gradient sera extrêmement faible, empêchant efficacement le poids de changer sa valeur. Dans le pire des cas, cela peut empêcher complètement le réseau de neurones de poursuivre sa formation. Comme exemple de la cause du problème, les fonctions d'activation traditionnelles telles que la fonction tangente hyperbolique ont des gradients dans la plage (0,1] , et la rétropropagation calcule les gradients par la règle de la chaîne . Cela a pour effet de multiplier n de ces petits nombres pour calculer gradients des premières couches dans un réseau à n couches, ce qui signifie que le gradient (signal d'erreur) diminue de façon exponentielle avec n tandis que les premières couches s'entraînent très lentement.

La rétro-propagation a permis aux chercheurs de former à partir de zéro des réseaux de neurones artificiels profonds supervisés , avec peu de succès au départ. Hochreiter de diplom thèse de 1991 a identifié formellement la raison de cet échec dans la « fuite problème gradient », ce qui affecte non seulement de nombreux couches réseaux anticipatifs , mais aussi les réseaux récurrents . Ces derniers sont entraînés en les dépliant dans des réseaux feedforward très profonds, où une nouvelle couche est créée pour chaque pas de temps d'une séquence d'entrée traitée par le réseau. (La combinaison du dépliage et de la rétropropagation est appelée rétropropagation dans le temps .)

Lorsque l'on utilise des fonctions d'activation dont les dérivées peuvent prendre des valeurs plus importantes, on risque de rencontrer le problème de gradient explosif associé .

Illustration extrêmement simplifiée dans les réseaux neuronaux récurrents

Dans un réseau de neurones récurrents, après des étapes, il y a des multiplications répétées d'une matrice avec un vecteur pour les états cachés : Le vecteur de sortie caché de la couche dépend de la sortie cachée de la couche précédente . Nous pouvons simplifier la discussion en négligeant extrêmement la fonction non linéaire , le biais et en notant que la matrice de poids ( ) est toujours la même. Dans ce cas, la sortie finale est juste : où est l'entrée initiale du réseau. Si peut être diagonalisé, alors (à cause de ) il est clair que les valeurs propres inférieures à 1 décroissent exponentiellement avec la profondeur n tandis que les valeurs propres supérieures à 1 explosent exponentiellement avec la profondeur n.

Solutions

Hiérarchie à plusieurs niveaux

Pour pallier ce problème, plusieurs méthodes ont été proposées. L'un est la hiérarchie multi-niveaux des réseaux de Jürgen Schmidhuber (1992) pré-entraînée un niveau à la fois grâce à un apprentissage non supervisé , affiné par rétropropagation . Ici, chaque niveau apprend une représentation compressée des observations qui est transmise au niveau suivant.

Approche connexe

Des idées similaires ont été utilisées dans les réseaux de neurones à anticipation pour un pré-entraînement non supervisé pour structurer un réseau de neurones, ce qui lui permet d'apprendre d'abord des détecteurs de caractéristiques généralement utiles . Ensuite, le réseau est entraîné davantage par rétropropagation supervisée pour classer les données étiquetées. Le modèle de réseau de croyances profondes de Hinton et al. (2006) consiste à apprendre la distribution d'une représentation de haut niveau à l'aide de couches successives de variables latentes binaires ou réelles . Il utilise une machine Boltzmann restreinte pour modéliser chaque nouvelle couche de fonctionnalités de niveau supérieur. Chaque nouvelle couche garantit une augmentation de la limite inférieure de la probabilité de log des données, améliorant ainsi le modèle, s'il est correctement formé. Une fois que suffisamment de couches ont été apprises, l'architecture profonde peut être utilisée comme modèle génératif en reproduisant les données lors de l'échantillonnage du modèle (une "passe ancestrale") à partir des activations de caractéristiques de niveau supérieur. Hinton rapporte que ses modèles sont des extracteurs de caractéristiques efficaces sur des données structurées de grande dimension.

Mémoire longue à court terme

Une autre technique particulièrement utilisée pour les réseaux de neurones récurrents est le réseau de mémoire à long court terme (LSTM) de 1997 par Hochreiter & Schmidhuber . En 2009, les réseaux LSTM multidimensionnels profonds ont démontré la puissance de l'apprentissage en profondeur avec de nombreuses couches non linéaires, en remportant trois concours ICDAR 2009 en reconnaissance d'écriture manuscrite connectée , sans aucune connaissance préalable des trois langues différentes à apprendre.

Matériel plus rapide

Les progrès matériels ont signifié que de 1991 à 2015, la puissance informatique (en particulier celle fournie par les GPU ) a été multipliée par environ un million, rendant la rétropropagation standard possible pour les réseaux plusieurs couches plus profondes que lorsque le problème du gradient de disparition a été reconnu. Schmidhuber note que c'est "essentiellement ce qui remporte de nombreux concours de reconnaissance d'images maintenant", mais que cela "ne résout pas vraiment le problème de manière fondamentale" puisque les modèles originaux s'attaquant au problème du gradient de fuite par Hinton et d'autres ont été formés à un processeur Xeon , pas des GPU.

Réseaux résiduels

L'un des moyens les plus récents et les plus efficaces de résoudre le problème du gradient de fuite consiste à utiliser les réseaux de neurones résiduels , ou ResNets (à ne pas confondre avec les réseaux de neurones récurrents). Les ResNets font référence aux réseaux de neurones où les connexions ignorées ou les connexions résiduelles font partie de l'architecture du réseau. Ces connexions de saut permettent aux informations de gradient de traverser les couches, en créant des "autoroutes" d'informations, où la sortie d'une couche/activation précédente est ajoutée à la sortie d'une couche plus profonde. Cela permet aux informations des premières parties du réseau d'être transmises aux parties les plus profondes du réseau, aidant à maintenir la propagation du signal même dans les réseaux plus profonds. Ignorer les connexions est un élément essentiel de ce qui a permis la formation réussie de réseaux de neurones plus profonds.

Les ResNets ont généré une erreur d'entraînement (et une erreur de test) inférieure à celle de leurs homologues moins profonds simplement en réintroduisant les sorties des couches moins profondes du réseau pour compenser la disparition des données. Notez que les ResNets sont un ensemble de réseaux relativement peu profonds et ne résolvent pas le problème du gradient de fuite en préservant le flux de gradient sur toute la profondeur du réseau - ils évitent plutôt le problème simplement en construisant ensemble des ensembles de nombreux réseaux courts. (Ensemble par construction)

Autres fonctions d'activation

Les redresseurs tels que ReLU souffrent moins du problème du gradient de fuite, car ils ne saturent que dans une direction.

Autre

Behnke s'est appuyé uniquement sur le signe du gradient ( Rprop ) lors de l'entraînement de sa pyramide d'abstraction neurale pour résoudre des problèmes tels que la reconstruction d'images et la localisation de visages.

Les réseaux de neurones peuvent également être optimisés en utilisant un algorithme de recherche universel sur l'espace des poids des réseaux de neurones, par exemple, une estimation aléatoire ou plus systématiquement un algorithme génétique . Cette approche n'est pas basée sur le gradient et évite le problème du gradient de fuite.

Voir également

Les références