Qu’est-ce qu’un réseau neuronal récurrent (RNN) ?

Femme utilisant des lunettes intelligentes dans un train

Auteur

Cole Stryker

Staff Editor, AI Models

IBM Think

Qu’est-ce qu’un réseau neuronal récurrent ?

Un réseau neuronal récurrent (« Recurrent Neural Network » ou RNN), est un réseau de neurones profond entraîné sur des données séquentielles ou des données de séries temporelles pour créer un modèle de machine learning (ML) capable de tirer des prédictions séquentielles ou de tirer des conclusions sur la base d’entrées séquentielles.

Un RNN pourrait être utilisé pour prédire les niveaux d’inondation quotidiens sur la base des données météorologiques, des marées et des inondations quotidiennes passées. Mais les RNN peuvent également être utilisés pour résoudre des problèmes ordinaux ou temporels tels que la traduction linguistique, le traitement automatique du langage naturel (NLP), l’analyse des sentiments, la reconnaissance vocale et le sous-titrage.

Design 3D de balles roulant sur une piste

Les dernières actualités et informations en matière d’IA 


La newsletter hebdomadaire Think vous apporte toute l’actualité sur l’IA, le cloud et bien d’autres sujets. 

Comment fonctionnent les RNN

À l’instar des réseaux neuronaux traditionnels, tels que les réseaux neuronaux à action directe et les réseaux neuronaux convolutifs (CNN), les réseaux neuronaux récurrents utilisent les données d’entraînement pour apprendre. Les RNN utilisent leur « mémoire » : les informations des entrées antérieures ont une influence sur l’entrée et la sortie en cours.

Alors que les réseaux d’apprentissage profond traditionnels supposent que les entrées et les sorties sont indépendantes les unes des autres, la sortie des RNN dépend des éléments antérieurs de la séquence. Bien que les événements futurs soient également utiles pour déterminer la sortie d’une séquence donnée, les réseaux neuronaux récurrents unidirectionnels ne peuvent pas tenir compte de ces événements dans leurs prédictions.

Prenons une expression idiomatique, telle que « être cloué au lit », qui est couramment utilisée lorsqu’une personne est malade, pour nous aider dans l’explication des RNN. Pour qu’elle ait un sens, elle doit être exprimée dans cet ordre spécifique. Par conséquent, les réseaux récurrents doivent tenir compte de la position de chaque mot dans la phrase idiomatique, puis ils utilisent cette information pour prédire le mot suivant dans la séquence.

Chaque mot de l’expression « être cloué au lit » fait partie d’une séquence, où l’ordre compte. Le RNN suit le contexte en maintenant un état masqué à chaque intervalle temporel. Une boucle de rétroaction est créée en passant l’état masqué d’une étape à l’autre. L’état masqué agit comme une mémoire qui stocke des informations sur les entrées précédentes. À chaque intervalle temporel, le RNN traite l’entrée actuelle (par exemple, un mot dans une phrase) ainsi que l’état masqué de l’intervalle temporel précédent. Cela permet au RNN de « se souvenir » des points de données précédents et d’utiliser ces informations pour influencer la sortie actuelle.

Une autre caractéristique distinctive des réseaux récurrents est qu’ils partagent des paramètres sur chaque couche du réseau. Alors que les réseaux à propagation avant ont des poids différents sur chaque nœud, les réseaux neuronaux récurrents partagent le même paramètre de poids au sein de chaque couche du réseau. Cela dit, ces poids sont toujours ajustés au cours des processus de rétropropagation et de descente de gradient afin de faciliter l’apprentissage par renforcement.

Les réseaux neuronaux récurrents utilisent des algorithmes de propagation avant et de rétropropagation à travers le temps (« Backpropagation Through Time » ou BPTT) pour déterminer les gradients (ou les différences), ce qui est légèrement différent de la rétropropagation traditionnelle, car elle est propre aux données séquentielles. Les principes de la BPTT sont les mêmes que ceux de la rétropropagation traditionnelle : le modèle s’entraîne lui-même en calculant les erreurs de sa couche de sortie à sa couche d’entrée. Ces calculs nous permettent d’ajuster les paramètres du modèle de manière appropriée. La BPTT diffère de l’approche traditionnelle en ce sens qu’elle additionne les erreurs à chaque intervalle temporel, alors que les réseaux à propagation à action directe n’ont pas besoin d’additionner les erreurs, car ils ne partagent aucun paramètre sur chaque couche.

Fonctions d’activation courantes

Une fonction d’activation est une fonction mathématique appliquée à la sortie de chaque couche de neurones du réseau pour introduire une non-linéarité et permettre au réseau d’apprendre des schémas plus complexes dans les données. Sans fonctions d’activation, le RNN se contenterait de calculer les transformations linéaires de l’entrée. Il serait alors incapable de traiter des problèmes non linéaires. La non-linéarité est cruciale pour l’apprentissage et la modélisation de schémas complexes, en particulier dans des tâches telles que le NLP, l’analyse de séries temporelles et la prédiction de données séquentielles.

La fonction d’activation contrôle l’amplitude de la sortie du neurone, en maintenant les valeurs dans une plage spécifiée (par exemple, entre 0 et 1 ou -1 et 1), ce qui permet d’éviter que les valeurs ne deviennent trop grandes ou trop petites lors des propagations en avant et des rétropropagations. Dans les RNN, les fonctions d’activation sont appliquées à chaque intervalle temporel aux états masqués, contrôlant la façon dont le réseau met à jour sa mémoire interne (état masqué) en fonction de l’entrée actuelle et des états masqués passés.

Les fonctions d’activation les plus courantes (illustrées ci-dessous) sont les suivantes :

La fonction sigmoïde consiste à interpréter la sortie comme des probabilités ou à contrôler des portes qui décident de la quantité d’informations à retenir ou à oublier. Cependant, la fonction sigmoïde est sujette au problème de disparition du gradient (expliquée plus loin), ce qui la rend moins idéale pour les réseaux plus profonds.

La fonction Tanh (tangente hyperbolique), souvent utilisée car elle produit des valeurs centrées sur zéro, permet d’obtenir un meilleur flux de gradient et d’apprendre plus facilement les dépendances à long terme.

La fonction ReLU (unité linéaire rectifiée) peut entraîner des problèmes d’explosion de gradients en raison de sa nature illimitée. Cependant, des variantes telles que Leaky ReLU et Parametric ReLU ont été utilisées pour atténuer certains de ces problèmes.

Pour en savoir plus sur le fonctionnement des RNN, consultez notre analyse approfondie des réseaux neuronaux récurrents.

Types de RNN

Les réseaux à propagation avant cartographient les entrées et les productions une à une, et bien que nous ayons visualisé les réseaux neuronaux récurrents de cette façon dans les schémas précédents, ils n’ont pas cette contrainte. Au lieu de cela, la longueur de leurs entrées et sorties peut varier, et différents types de RNN sont utilisés pour différents cas d’utilisation, tels que la génération de musique, la classification des sentiments et la traduction automatique. Les variantes les plus populaires de l’architecture des réseaux neuronaux récurrents incluent :

  • RNN standard
  • Réseaux neuronaux récurrents bidirectionnels (« Bidirectional Recurrent Neural Networks » ou BRRN)
  • Long short-term memory (LSTM)
  • Unités récurrentes fermées (« Gated Recurrent Units » ou GRU)
  • RNN encodeurs-décodeurs

RNN standard

La version la plus basique d’un RNN, où la sortie à chaque intervalle temporel dépend à la fois de l’entrée actuelle et de l’état masqué de l’intervalle temporel précédent, souffre de problèmes tels que la disparition des gradients, ce qui rend difficile l’apprentissage des dépendances à long terme. Ils excellent dans les tâches simples avec des dépendances à court terme, comme prédire le mot suivant dans une phrase (pour les phrases courtes et simples) ou la valeur suivante dans une série temporelle simple.

Les RNN sont adaptés aux tâches qui traitent les données de manière séquentielle en temps réel, comme le traitement des données des capteurs pour détecter des anomalies dans des délais courts, où les entrées sont reçues une par une et les prédictions doivent être faites immédiatement sur la base des entrées les plus récentes.

Réseaux neuronaux récurrents bidirectionnels (« Bidirectional Recurrent Neural Networks » ou BRRN)

Alors que les réseaux neuronaux récurrents (« Recurrent Neural Networks » ou RNN) unidirectionnels ne peuvent s’appuyer que sur des entrées antérieures pour faire des prédictions sur l’état actuel, les RNN bidirectionnels, ou BRNN, extraient des données postérieures pour en améliorer la précision. Pour revenir à l’exemple « être cloué au lit », un modèle basé sur un BRNN peut mieux prédire que le deuxième mot de cette phrase est « être cloué » s’il sait que le dernier mot de la séquence est « lit ».

Long short-term memory (LSTM)

La LSTM est une architecture RNN populaire, qui a été introduite par Sepp Hochreiter et Juergen Schmidhuber comme solution au problème du gradient qui disparaît. Ces travaux ont abordé le problème des dépendances à long terme. Autrement dit, si l’état précédent qui influence la prédiction actuelle ne se situe pas dans un passé récent, le modèle RNN risque de ne pas être en mesure de prédire avec précision l’état actuel.

Supposons que nous voulions prédire les mots en italique dans le groupe de phrases suivant : « Alice est allergique aux fruits à coque. Elle ne peut pas manger de beurre de cacahuètes ». Le contexte d’une allergie aux fruits à coque peut nous aider à anticiper que les aliments qui ne peuvent pas être consommés sont ceux qui contiennent des fruits à coque. Toutefois, si ce contexte était antérieur de quelques phrases, il serait difficile, voire impossible, pour le RNN de relier les informations.

Pour y remédier, les réseaux LSTM possèdent des « cellules » situées dans les couches cachées du réseau neuronal artificiel, qui possèdent trois portes : une porte d’entrée, une porte de sortie et une porte d’oubli. Ces portes contrôlent le flux d’informations nécessaires pour prévoir la sortie sur le réseau.   Par exemple, si les pronoms de genre, tels que « elle », ont été répétés plusieurs fois dans les phrases précédentes, vous pouvez les exclure de l’état de la cellule.

Unités récurrentes fermées (« Gated Recurrent Units » ou GRU)

Une GRU est similaire à une LSTM, car elle permet également de résoudre le problème de mémoire à court terme des modèles RNN. Au lieu d’utiliser un « état de cellule » pour réguler les informations, elle utilise des états cachés et, au lieu de trois portes, il y en a deux : une porte de réinitialisation et une porte de mise à jour. À l’instar des portes dans les LSTM, les portes de réinitialisation et de mise à jour contrôlent quelles informations doivent être conservées et dans quelle quantité.

En raison de leur architecture plus simple, les GRU sont plus efficaces en termes de calcul et nécessitent moins de paramètres que les LSTM. Cela les rend plus rapides à entraîner et souvent plus adaptées à certaines applications en temps réel ou aux ressources limitées.

RNN encodeurs-décodeurs

Ils sont couramment utilisés pour les tâches de séquence à séquence, telles que la traduction automatique. L’encodeur traite la séquence d’entrée dans un vecteur de longueur fixe (contexte) et le décodeur utilise ce contexte pour générer la séquence de sortie. Cependant, le vecteur de contexte de longueur fixe peut constituer un goulot d’étranglement, en particulier pour les longues séquences d’entrée.

Limites des RNN

L’utilisation des RNN a diminué dans le domaine de l’intelligence artificielle, notamment en faveur d’architectures telles que les modèles de transformeurs, mais les RNN ne sont pas obsolètes. Les RNN étaient traditionnellement populaires pour le traitement des données (par exemple, les séries temporelles et la modélisation linguistique) en raison de leur capacité à gérer les dépendances temporelles.

Cependant, la faiblesse des RNN face aux problèmes de gradients qui disparaissent et qui explosent, ainsi que l’essor des modèles de transformeurs tels que BERT et GPT, ont entraîné ce déclin. Les transformeurs peuvent capturer les dépendances à long terme de manière beaucoup plus efficace, sont plus faciles à paralléliser et sont plus performants dans des tâches telles que le NLP, la reconnaissance vocale et les prévisions de séries temporelles.

Cela dit, les RNN sont toujours utilisés dans des contextes spécifiques où leur nature séquentielle et leur mécanisme de mémoire peuvent être utiles, en particulier dans des environnements plus petits et aux ressources limitées ou pour des tâches où le traitement des données bénéficie d’une récurrence étape par étape.

Pour les personnes qui souhaitent expérimenter de tels cas d’utilisation, Keras est une bibliothèque open source populaire, désormais intégrée à la bibliothèque TensorFlow, qui fournit une interface Python pour les RNN. L’API est conçue pour être facile à utiliser et à personnaliser, ce qui permet aux utilisateurs de définir leur propre couche de cellules RNN avec un comportement personnalisé.

Mixture of Experts | 28 août, épisode 70

Décryptage de l’IA : Tour d’horizon hebdomadaire

Rejoignez notre panel d’ingénieurs, de chercheurs, de chefs de produits et autres spécialistes de premier plan pour connaître l’essentiel de l’actualité et des dernières tendances dans le domaine de l’IA.

Solutions connexes
IBM watsonx.ai

Entraînez, validez, réglez et déployez une IA générative, des modèles de fondation et des capacités de machine learning avec IBM watsonx.ai, un studio d’entreprise nouvelle génération pour les générateurs d’IA. Créez des applications d’IA en peu de temps et avec moins de données.

Découvrir watsonx.ai
Solutions d’intelligence artificielle

Mettez l’IA au service de votre entreprise en vous appuyant sur l’expertise de pointe d’IBM dans le domaine de l’IA et sur son portefeuille de solutions.

Découvrir les solutions d’IA
Conseils et services en matière d’IA

Réinventez les workflows et les opérations critiques en ajoutant l’IA pour optimiser les expériences, la prise de décision et la valeur métier en temps réel.

Découvrir les services d’IA
Passez à l’étape suivante

Bénéficiez d’un accès centralisé aux fonctionnalités couvrant le cycle de développement de l’IA. Produisez des solutions IA puissantes offrant des interfaces conviviales, des workflows et un accès à des API et SDK conformes aux normes du secteur.

Découvrir watsonx.ai Réserver une démo en direct