Un RNN, ou réseau de neurones récurrent, est un réseau de neurones conçu pour les séquences comme le texte, la parole ou les séries temporelles. À chaque étape, il combine l’entrée courante avec un état caché provenant de l’étape précédente, de sorte que la sortie peut dépendre de ce qui est arrivé plus tôt.

C’est l’idée clé : un RNN possède une mémoire qui se met à jour en continu. Un LSTM est un type de RNN à portes qui gère cette mémoire plus soigneusement lorsque des informations importantes doivent survivre pendant de nombreuses étapes.

Ce que fait un RNN à chaque pas de temps

Au pas de temps tt, un RNN simple met à jour son état caché avec une règle du type

ht=tanh(Wxxt+Whht1+b).h_t = \tanh(W_x x_t + W_h h_{t-1} + b).

Ici, xtx_t est l’entrée courante, ht1h_{t-1} est l’état caché précédent, et hth_t est le nouvel état caché. Les matrices WxW_x et WhW_h ainsi que le biais bb sont appris pendant l’entraînement.

Si le modèle produit aussi une sortie à chaque étape, une forme courante est

yt=Wyht+c.y_t = W_y h_t + c.

La règle exacte de sortie dépend de la tâche. Certains problèmes nécessitent une sortie à chaque étape, tandis que d’autres n’utilisent que l’état caché final.

Pourquoi l’état caché est important

Un réseau feedforward voit une entrée puis passe à la suivante. Un RNN réutilise une partie de son calcul précédent. C’est cette réutilisation qui le rend utile pour le texte, la parole, les séries temporelles et d’autres données ordonnées.

Vous pouvez voir l’état caché comme une note compacte que le modèle s’écrit à lui-même après chaque étape. L’étape suivante lit cette note, la met à jour, puis transmet la version révisée.

Si vous changez l’ordre des mêmes entrées, les états cachés changent généralement aussi. L’ordre de la séquence compte.

Exemple de RNN détaillé

Les vrais RNN utilisent généralement des vecteurs et des activations non linéaires. Pour garder des calculs lisibles, prenons un petit exemple avec un état à un seul nombre :

ht=0.5ht1+xt,h0=0.h_t = 0.5 h_{t-1} + x_t, \quad h_0 = 0.

Traitons maintenant la séquence x1=2x_1 = 2, x2=1x_2 = -1, x3=3x_3 = 3.

Première étape :

h1=0.5(0)+2=2.h_1 = 0.5(0) + 2 = 2.

Deuxième étape :

h2=0.5(2)+(1)=0.h_2 = 0.5(2) + (-1) = 0.

Troisième étape :

h3=0.5(0)+3=3.h_3 = 0.5(0) + 3 = 3.

Ce qui compte ici n’est pas la formule exacte. C’est la dépendance à l’état précédent. À l’étape 2, la mise à jour n’utilise pas seulement x2x_2 ; elle utilise aussi ce qui a été transmis depuis l’étape 1. C’est le cœur de l’idée d’un RNN.

Si vous inversez l’ordre et utilisez x1=1x_1 = -1, x2=2x_2 = 2, x3=3x_3 = 3, alors

h1=1,h2=0.5(1)+2=1.5,h3=0.5(1.5)+3=3.75.h_1 = -1, \quad h_2 = 0.5(-1) + 2 = 1.5, \quad h_3 = 0.5(1.5) + 3 = 3.75.

L’état final est différent alors que les mêmes nombres apparaissent. C’est exactement pourquoi les RNN sont des modèles de séquence plutôt que des modèles qui traitent les entrées comme un simple ensemble sans ordre.

Pourquoi les RNN simples ont du mal avec les longues séquences

Dans un RNN simple, les anciennes informations doivent survivre à de nombreuses mises à jour répétées. Si la séquence est longue, cela peut être difficile. Les signaux utiles peuvent s’atténuer, et pendant l’entraînement les gradients peuvent aussi diminuer ou exploser au fil de nombreuses étapes.

C’est pourquoi les RNN classiques ont souvent du mal lorsque la tâche dépend d’informations situées loin en arrière dans la séquence. Le problème n’est pas que la récurrence soit une mauvaise idée. Le problème est qu’une mémoire à long terme est difficile à maintenir avec une simple mise à jour de l’état caché.

Comment le LSTM améliore la mémoire des RNN

Un LSTM, pour long short-term memory, est un RNN à portes. Il introduit un chemin de mémoire plus structuré, généralement appelé état de cellule, ainsi que des portes qui contrôlent quelles informations sont oubliées, quelles nouvelles informations sont écrites, et quelle partie est exposée en sortie.

Vous n’avez pas besoin des équations complètes des portes pour comprendre l’idée. Cette conception donne au modèle davantage de contrôle sur la mémoire. Si un détail doit survivre pendant de nombreuses étapes, un LSTM est mieux équipé pour le conserver qu’un RNN simple.

Cela ne veut pas dire qu’un LSTM se souvient de tout pour toujours. Cela signifie que son architecture apprend mieux quand préserver l’information et quand l’éliminer.

RNN vs LSTM en langage simple

Un RNN simple possède un seul état qui évolue au fil des étapes. Un LSTM ajoute un mécanisme de mémoire plus robuste autour de cette idée.

Si la séquence est courte et que la dépendance est locale, un RNN simple peut suffire. Si la tâche dépend d’informations apparues bien plus tôt dans la séquence, un LSTM est souvent le choix le plus sûr.

Erreurs fréquentes sur les RNN et les LSTM

Penser qu’un RNN voit toute la séquence d’un coup

En général, non. La représentation standard est un traitement étape par étape, avec un état transmis vers l’avant.

Supposer qu’un LSTM résout parfaitement le problème de mémoire

Il aide pour les dépendances à longue portée, mais cela reste un modèle entraîné avec une capacité finie et des limites pratiques.

Ignorer l’ordre de la séquence

Les RNN sont conçus pour des données ordonnées. Mélanger les éléments d’une séquence change le calcul.

Considérer l’état caché comme une mémoire lisible par un humain

L’état caché est une représentation numérique apprise, pas un résumé propre et lisible comme une phrase.

Quand on utilise les RNN et les LSTM

Ils sont utilisés pour des problèmes de séquence comme la modélisation du langage, la parole, l’écriture manuscrite, les flux de capteurs et la prévision de séries temporelles. Aujourd’hui, beaucoup de tâches de langage utilisent plutôt des transformers, mais les RNN et les LSTM restent importants parce qu’ils illustrent clairement la mémoire de séquence et peuvent encore être utiles dans des contextes plus petits ou spécialisés.

Essayez votre propre version

Écrivez votre propre séquence en quatre étapes et appliquez la règle simplifiée ht=0.5ht1+xth_t = 0.5 h_{t-1} + x_t. Puis inversez l’ordre de deux entrées et comparez l’état final. Cette petite expérience rend le rôle de la récurrence bien plus clair que l’acronyme à lui seul.

Si vous voulez explorer un autre cas, comparez cette page avec une explication sur les transformers ou les chaînes de Markov et observez ce que chaque modèle fait des informations passées.

Besoin d'aide pour un problème ?

Envoyez votre question et obtenez une solution vérifiée, étape par étape, en quelques secondes.

Ouvrir GPAI Solver →