Recherche de site Web

Cours intensif sur les réseaux de neurones récurrents pour l'apprentissage profond


Un autre type de réseau neuronal domine les problèmes difficiles d’apprentissage automatique impliquant des séquences d’entrées : les réseaux neuronaux récurrents.

Les réseaux de neurones récurrents ont des connexions qui comportent des boucles, ajoutant du feedback et de la mémoire aux réseaux au fil du temps. Cette mémoire permet à ce type de réseau d'apprendre et de généraliser à travers des séquences d'entrées plutôt que des modèles individuels.

Un type puissant de réseau neuronal récurrent appelé réseau de mémoire à long terme s'est révélé particulièrement efficace lorsqu'il est empilé dans une configuration approfondie, obtenant des résultats de pointe sur un large éventail de problèmes allant de la traduction linguistique au sous-titrage automatique. d'images et de vidéos.

Dans cet article, vous suivrez un cours intensif sur les réseaux de neurones récurrents pour l'apprentissage en profondeur, acquérant juste assez de compréhension pour commencer à utiliser les réseaux LSTM en Python avec Keras.

Après avoir lu cet article, vous saurez :

  • Les limites des perceptrons multicouches abordées par les réseaux de neurones récurrents
  • Les problèmes à résoudre pour rendre les réseaux de neurones récurrents utiles
  • Les détails des réseaux de mémoire à long terme utilisés dans l'apprentissage profond appliqué

Démarrez votre projet avec mon nouveau livre Long Short-Term Memory Networks With Python, comprenant des tutoriels étape par étape et le code source Python fichiers pour tous les exemples.

Commençons.

Prise en charge des séquences dans les réseaux de neurones

Il est préférable de formuler certains types de problèmes en impliquant soit une séquence comme entrée, soit comme sortie.

Par exemple, considérons un problème de série chronologique univariée, comme le prix d’une action au fil du temps. Cet ensemble de données peut être présenté comme un problème de prédiction pour un réseau de perceptrons multicouches à action directe classique en définissant la taille d'une fenêtre (par exemple, 5) et en entraînant le réseau à apprendre à faire des prédictions à court terme à partir de la fenêtre d'entrées de taille fixe.

Cela fonctionnerait mais est très limité. La fenêtre de saisie ajoute de la mémoire au problème mais est limitée à un nombre fixe de points et doit être choisie avec une connaissance suffisante du problème. Une fenêtre naïve ne permettrait pas de capturer les tendances plus larges au fil des minutes, des heures et des jours qui pourraient être pertinentes pour faire une prédiction. D’une prédiction à l’autre, le réseau ne connaît que les entrées spécifiques qui lui sont fournies.

La prédiction de séries chronologiques univariées est importante, mais il existe des problèmes encore plus intéressants impliquant des séquences.

Considérez la taxonomie suivante des problèmes de séquence qui nécessitent le mappage d'une entrée à une sortie (tiré d'Andrej Karpathy).

  • One-to-Many : sortie de séquence pour le sous-titrage d'images
  • Many-to-One : saisie de séquence pour la classification des sentiments
  • Many-to-Many : séquence d'entrée et de sortie pour la traduction automatique
  • Synchronisé plusieurs-à-plusieurs : séquences synchronisées en entrée et en sortie pour la classification vidéo

Vous pouvez également voir qu'un exemple individuel d'une entrée vers une sortie serait un exemple de réseau neuronal classique à action directe pour une tâche de prédiction telle que la classification d'images.

La prise en charge de séquences dans les réseaux de neurones constitue une classe de problèmes importante dans laquelle l’apprentissage profond a récemment montré des résultats impressionnants. Les résultats de pointe utilisent un type de réseau spécialement conçu pour les problèmes de séquence appelés réseaux de neurones récurrents.

Réseaux de neurones récurrents

Les réseaux de neurones récurrents ou RNN sont un type spécial de réseau de neurones conçu pour les problèmes de séquence.

Étant donné un réseau Perceptron multicouche à feed-forward standard, un réseau neuronal récurrent peut être considéré comme l’ajout de boucles à l’architecture. Par exemple, dans une couche donnée, chaque neurone peut transmettre son signal ultérieurement (latéralement) et le transmettre à la couche suivante. La sortie du réseau peut être renvoyée comme entrée du réseau avec le vecteur d'entrée suivant. Et ainsi de suite.

Les connexions récurrentes ajoutent de l'état ou de la mémoire au réseau et lui permettent d'apprendre des abstractions plus larges à partir des séquences d'entrée.

Le domaine des réseaux de neurones récurrents est bien établi avec des méthodes populaires. Pour que les techniques soient efficaces sur des problèmes réels, deux problèmes majeurs devaient être résolus pour que le réseau soit utile.

  1. Comment former le réseau avec rétropropagation
  2. Comment empêcher les dégradés de disparaître ou d'exploser pendant l'entraînement

1. Comment former des réseaux de neurones récurrents

La technique de base pour la formation des réseaux de neurones à action directe consiste à rétropropager les erreurs et à mettre à jour les poids du réseau.

La rétropropagation échoue dans un réseau neuronal récurrent en raison des connexions récurrentes ou en boucle.

Ce problème a été résolu par une modification de la technique de rétropropagation appelée Backpropagation Through Time ou BPTT.

Au lieu d'effectuer une rétropropagation sur le réseau récurrent comme indiqué, la structure du réseau est déroulée, où des copies des neurones ayant des connexions récurrentes sont créées. Par exemple, un seul neurone connecté à lui-même (A->A) pourrait être représenté comme deux neurones avec les mêmes valeurs de poids (A->B).

Cela permet de transformer le graphe cyclique d'un réseau neuronal récurrent en un graphe acyclique comme un réseau neuronal à rétroaction classique, et la rétropropagation peut être appliquée.

2. Comment avoir des dégradés stables pendant l'entraînement

Lorsque la rétropropagation est utilisée dans des réseaux de neurones très profonds et des réseaux de neurones récurrents déroulés, les gradients calculés pour mettre à jour les poids peuvent devenir instables.

Ils peuvent devenir de très grands nombres appelés gradients explosifs, ou de très petits nombres appelés problème de gradient de disparition. Ces grands nombres, à leur tour, sont utilisés pour mettre à jour les poids dans le réseau, rendant la formation instable et le réseau peu fiable.

Ce problème est atténué dans les réseaux de perceptrons multicouches profonds grâce à l'utilisation de la fonction de transfert du redresseur et à des approches encore plus exotiques mais désormais moins populaires consistant à utiliser un pré-entraînement non supervisé des couches.

Dans les architectures de réseaux neuronaux récurrents, ce problème a été atténué grâce à un nouveau type d'architecture appelé réseaux de mémoire à long terme et à court terme qui permet d'entraîner des réseaux récurrents profonds.

Réseaux de mémoire à long terme et à court terme

Le réseau Long Short-Term Memory ou LSTM est un réseau neuronal récurrent formé à l'aide de la rétropropagation dans le temps et surmonte le problème du gradient de disparition.

En tant que tel, il peut être utilisé pour créer de grands réseaux récurrents (empilés) qui, à leur tour, peuvent être utilisés pour résoudre des problèmes de séquence difficiles dans l'apprentissage automatique et obtenir des résultats de pointe.

Au lieu de neurones, les réseaux LSTM comportent des blocs de mémoire connectés en couches.

Un bloc possède des composants qui le rendent plus intelligent qu’un neurone classique et une mémoire pour les séquences récentes. Un bloc contient des portes qui gèrent l’état et la sortie du bloc. Une unité fonctionne sur une séquence d'entrée, et chaque porte au sein d'une unité utilise la fonction d'activation sigmoïde pour contrôler si elle est déclenchée ou non, rendant conditionnel le changement d'état et l'ajout d'informations circulant à travers l'unité.

Il existe trois types de portes au sein d'une unité mémoire :

  • Forget Gate : décide de manière conditionnelle quelles informations doivent être supprimées de l'unité.
  • Input Gate : décide de manière conditionnelle quelles valeurs de l'entrée doivent mettre à jour l'état de la mémoire.
  • Output Gate : décide de manière conditionnelle ce qu'il faut sortir en fonction de l'entrée et de la mémoire de l'unité.

Chaque unité est comme une mini machine à états où les portes des unités ont des poids qui sont appris au cours de la procédure de formation.

Vous pouvez voir comment vous pouvez obtenir un apprentissage et une mémoire sophistiqués à partir d'une couche de LSTM, et il n'est pas difficile d'imaginer comment des abstractions d'ordre supérieur peuvent être superposées avec de telles couches multiples.

Ressources

Vous avez couvert beaucoup de sujet dans cet article. Vous trouverez ci-dessous quelques ressources que vous pouvez utiliser pour approfondir le sujet des réseaux de neurones récurrents pour l'apprentissage en profondeur.

Ressources pour en savoir plus sur les réseaux de neurones récurrents et les LSTM.

  • Réseau de neurones récurrent sur Wikipédia
  • Mémoire à long terme sur Wikipédia
  • L'efficacité déraisonnable des réseaux de neurones récurrents par Andrej Karpathy
  • Comprendre les réseaux LSTM
  • Plongée en profondeur dans les réseaux neuronaux récurrents
  • Un guide du débutant sur les réseaux récurrents et les LSTM

Tutoriels populaires pour la mise en œuvre des LSTM.

  • LSTM pour la modélisation du langage avec TensorFlow
  • RNN pour la compréhension des mots parlés en Theano
  • LSTM pour l'analyse des sentiments dans Theano

Sources primaires sur les LSTM.

  • Mémoire à long terme et à court terme [pdf], article de 1997 de Hochreiter et Schmidhuber
  • Apprendre à oublier : prédiction continue avec LSTM, 2000 de Schmidhuber et Cummins qui ajoute la porte d'oubli
  • Sur la difficulté de former les réseaux de neurones récurrents [pdf], 2013

Des personnes à suivre qui font un excellent travail avec les LSTM.

  • Alex Graves
  • Jürgen Schmidhuber
  • Ilya Sutskever
  • Tomas Mikololov

Résumé

Dans cet article, vous avez découvert des problèmes de séquence et des réseaux de neurones récurrents qui peuvent être utilisés pour les résoudre.

Concrètement, vous avez appris :

  • Les limites des réseaux de neurones classiques et comment les réseaux de neurones récurrents peuvent surmonter ces problèmes
  • Les problèmes pratiques liés à la formation des réseaux de neurones récurrents et comment ils sont surmontés
  • Le réseau de mémoire à long terme utilisé pour créer des réseaux de neurones récurrents profonds

Avez-vous des questions sur les réseaux de neurones récurrents profonds, les LSTM ou cet article ? Posez votre question dans les commentaires et je ferai de mon mieux pour y répondre.

Articles connexes