Depuis le début de notre exploration des modèles de langage, nous avons sillonné les contrées verdoyantes du NLP en partant des démarches les plus intuitives et élémentaires pour arriver jusqu’à cet article où l’on va tenter de comprendre comment fonctionne les systèmes de NLP juste avant la révolution des approches par transformers comme GPT.
Notre première escale nous a présenté les n-grams, une approche de modélisation statistique du langage qui, malgré sa simplicité initiale et son élégance, se heurte rapidement à des limites, notamment la difficulté à lier le contexte et la sémantique au-delà de très courtes séquences de mots (3-4 en pratique) et l’incapacité à généraliser rapidement des patterns. Les n-grams, dans leur forme simple, ont aussi le défaut de représenter tous les tokens de manière équivalente et donc de ne leur faire porter aucune sémantique.
Conscients de ces contraintes, nous avons exploré les embeddings sémantiques, notamment à travers Word2Vec, une technique avancée qui permet de représenter les tokens dans des espaces vectoriels, capturant ainsi leur signification et leurs relations sémantiques.
Cependant, l’aventure ne s’est pas arrêtée là. Nous avons rapidement compris que la manière dont nous découpons notre texte en tokens – auparavant, en découpant simplement les mots ou les caractères – était elle-même sous-optimale. Cela nous a conduit à explorer des méthodes de tokenization plus sophistiquées qui prennent en compte la morphologie et la structure interne des mots pour une représentation plus précise et efficace du texte.
Chaque étape de ce périple nous a rapprochés de notre but : avoir une compréhension du fonctionnement des modèles capables de représenter et de générer du langage avec finesse et précision, autrement dit des modèles de NLP modernes comme Llama, GPT, Claude etc.
Dans ce volet de la série, nous abordons une suite logique mais encore plus ambitieuse dans l’évolution du NLP : les Réseaux de Neurones Récurrents (RNN) et leurs évolutions.
RNN : Principe de fonctionnement et limites
Fonctionnement
Les Réseaux de Neurones Récurrents (RNN) marquent une avancée significative dans la modélisation du langage naturel après les méthodes basées sur les n-grams, grâce a la tokenization et les embeddings sémantiques que l’on a vu dans les articles précédents. Contrairement aux n-grams qui se concentrent sur la probabilité des mots en fonction de leurs voisins immédiats, les RNN introduisent une capacité à « se souvenir » des informations issues des tokens précédents grâce à l’introduction d’une « mémoire ». Chaque token, traité par le processus de tokenization et représenté par son embedding sémantique, est traité séquentiellement, permettant au modèle de prendre en compte le contexte.
Un RNN traite l’information token par token, où chaque étape de décision tient compte non seulement de l’input actuelle mais aussi d’un « état caché », une « mémoire », qui transmet l’information des étapes précédentes. Cette conception vise à modéliser des contextes plus longs, ce qui est important quand on essaye de générer des phrases d’une certaine taille.
Imaginons la phrase : « J’ai emmené mon chien chez le vétérinaire car il ne mangeait pas ses… ». On s’attend naturellement à ce que le mot « croquettes » complète la phrase. Mais un modèle N-gram (avec N=5) ne voit que les cinq derniers mots : « il ne mangeait pas ses ». Pour lui, le mot qui suit pourrait tout aussi bien être « légumes », car il ne sait pas que l’on parle d’un chien. Avec un RNN, la mémoire évolue à chaque nouveau mot lu. Autrement dit, le modèle ajuste en permanence ce qu’il retient, ce qui lui permet de se souvenir non seulement des derniers mots, mais aussi d’éléments plus anciens du texte, et pourrait facilement retrouver qu’on parle d’un chien dans l’exemple précédent.
Pour être concret, la mémoire d’un RNN est représentée par un vecteur qui se met à jour à chaque token. Il essaie d’accumuler le plus fidèlement possible les informations venant des tokens déjà vus. Mais à cause de ce fonctionnement cumulatif, dès que le contexte devient trop long, les RNN montrent également rapidement leurs limites.
Limites
Pour avoir un ordre de grandeur, un RNN peine à dépasser les 10 tokens. Il peut faire référence à ce qui a été dit dans la phrase courante, voire la phrase précédente si elle est courte mais ne peut pas aller chercher de l’information au-delà.
Les RNN souffrent notamment du problème du vanishing gradient : lorsque les séquences sont longues, les informations provenant de tokens éloignés s’estompent progressivement au moment de l’entraînement. Cela rend difficile l’apprentissage de dépendances à long termes, comme relier une référence en début de phrase à un mot attendu bien plus tard. Pour combler ce problème des évolutions ont été proposées : les LSTM.
Les LSTM
L’idée… est d’oublier
Les LSTM (Long Short Term Memory) sont une variante des RNN. Le principe est d’ajouter à l’architecture RNN classique plusieurs éléments supplémentaires:
- Un mécanisme d’oubli d’information afin de forcer l’état caché à rester stable et à ne pas trop accumuler d’informations, limitant le problème du vanishing gradient.
- Deux sortes de mémoires, une à court terme, qui permet de garder le contexte proche, et une mémoire à long terme pour pouvoir se référer à des éléments dans un contexte lointain. (On comprend maintenant le nom de cette architecture !)
Comment marche un LSTM ?
Quand un LSTM lit un nouveau token, il se passe trois choses :
- L’information du token arrive dans la mémoire à court terme, qui gère le contexte immédiat.
- Une partie de cette information est stockée dans la mémoire à long terme, pour être réutilisée plus tard si besoin.
- En parallèle, une partie de la mémoire à long terme est “effacée” afin que le modèle ne soit pas encombré par trop de détails inutiles et limiter le problème du vanishing gradient.
Ce système agit comme un filtre qui choisit quoi garder et quoi oublier, ce qui permet au modèle de pouvoir considérer des contextes beaucoup plus importants. On peut arriver à une centaine de tokens de contexte!
Les limites
Malgré leurs avantages, les LSTM présentent néanmoins plusieurs limites :
- Complexité computationnelle : Leur architecture, avec deux mémoires distinctes et le passage d’une à l’autre, augmente le nombre de paramètres et ralentit l’entraînement.
- Dépendances très longues : Même si les LSTM atténuent le problème du vanishing gradient, ils ne l’éliminent pas totalement. Au-delà de plusieurs centaines de tokens, leur performance chute.
- Difficulté de parallélisation : Le traitement séquentiel des tokens empêche un calcul massivement parallèle, ce qui limite leur efficacité sur des corpus très longs.
GRU (…mais pas celui des Minions)
Pour tenter de résoudre la problématique de la complexité computationnelle, une nouvelle architecture est proposée en 2014 : GRU. Les GRU ou Gated Recurrent Unit sont une évolution, ou plutôt, une simplification des LSTM.
Au lieu d’avoir deux mémoires séparées (comme dans un LSTM), ce modèle n’en possède qu’une seule mais celle-ci est gérée par deux mécanismes :
- Le premier permet de construire une nouvelle mémoire à partir de la mémoire passée et du token en cours de traitement. Cette mémoire dite « candidate » est utilisée dans le deuxième mécanisme.
- Le deuxième détermine dans quelle mesure l’état précédent est conservé et combien de nouvelles informations issues du premier mécanisme sont ajoutées dans la mémoire.
Cette simplification, permet d’entraîner beaucoup plus rapidement les modèles. Néanmoins, leur performance diminue, étant incapables d’atteindre la capacité de contextualisation des LSTM. De plus, étant aussi des modèles récurrents, ils souffrent des mêmes limitations que les LSTM quant à la difficulté de paralléliser et de traiter des grands corpus de texte.
Conclusion
Des améliorations et des évolutions ont été apportées à la famille des modèles de langage basés sur les RNN, entre les années 2010 et 2020. Nous avons parlé des LSTM et des GRU, mais une pléthore d’autres techniques ont été testées et éprouvées avec des gains de performance significatifs :
- Bidirectionnalité des RNN pour améliorer le contexte
- Simplification des architectures LSTM/GRU
- IndRNN qui rend le modèle quasi parallélisable
- L’attention qui permet de donner plus d’importance à certains tokens
Néanmoins, l’usage des RNN dans le cadre des modèles de langage va être bouleversé en 2017 : attention is all you need.

