Aide

Besoin d’aide ?

Posez votre question sur le Discord de MiniLab, dans le salon de cette page :

#questions-mécanisme-d-attention

Ouvrir le salon ↗

Pas encore membre ? Rejoindre le Discord, puis revenez sur ce bouton.

Ma progression

Sauvegarder ma progression

Chargement…

Votre progression est enregistrée dans ce navigateur, pour cette adresse seulement. Gardez ce code : il la restaure dans un autre navigateur, sur un autre ordinateur, ou si les données du site ont été effacées.

MINILAB-0-1C
Mentions légales
Affichage

Personnaliser l’affichage

Ce réglage s’applique à la vue côte à côte.
LEÇON 04FONDAMENTAL

La prédiction du token suivant.

Jusqu’ici, nous avons préparé le texte : il a été découpé en tokens, chaque token a reçu un identifiant, puis une fiche de nombres, son embedding. Mais que cherche à faire le modèle avec tout ça ? Dans cette leçon, nous allons découvrir une tâche fondamentale : prédire le token suivant, puis répéter cette prédiction pour construire une réponse.

01

La prédiction du token suivant

Si je vous dis « Il était une… », vous pensez sûrement « fois ». Vous avez lu et entendu assez d’histoires pour que cette suite vous vienne naturellement. Le clavier de votre téléphone propose lui aussi des mots pour poursuivre votre message.

Un modèle de langage causal reçoit une séquence de tokens et prédit le token qui pourrait la poursuivre. Les tokens précédents dont il dispose constituent son contexte. On dit « causal » parce que la prédiction utilise les tokens précédents, sans accéder aux tokens futurs.

Cette tâche, répétée, permet au modèle de construire une réponse. Nous étudions d’abord ce qu’il prédit ; les prochaines leçons expliqueront les étapes du calcul.

Texte reçu→Modèle→Prédiction du token suivant
02

Une distribution de probabilités

Après « Il était une », le mot « fois » est très probable. Mais « petite » ou « belle » seraient possibles aussi. Le modèle attribue une probabilité à chaque token de son vocabulaire. L’ensemble de ces valeurs forme une distribution de probabilités : elle indique les suites que le modèle estime plus ou moins probables pour ce contexte.

Exemple inventé
Il était une …

fois     → 85 %
petite   →  8 %
belle    →  5 %
voiture  → moins de 1 %
…

Toutes les probabilités, additionnées sur le vocabulaire, font 100 %. Dans cet exemple, les points de suspension représentent les autres candidats. Une méthode consiste à choisir systématiquement le token le plus probable : ici, « fois ». Ce choix s’appelle le décodage glouton, ou greedy decoding ; c’est la méthode utilisée dans notre laboratoire.

Dans un modèle moderne, ces probabilités sont calculées à partir des embeddings, en passant par les étapes que nous découvrirons dans les prochaines leçons. Nous verrons aussi pourquoi on ne choisit pas toujours le candidat le plus probable.

03

La génération autorégressive

Pour écrire une réponse entière, le modèle prédit un token, l’ajoute à la séquence, puis recommence avec ce contexte un peu plus long.

Exemple inventé, caractère par caractère
bonjo     → u
bonjou    → r
bonjour   → !
bonjour!  → …

Cette boucle, où chaque nouveau token s’appuie sur les tokens précédents, s’appelle la génération autorégressive. Elle décrit la répétition des prédictions ; le décodage glouton décrit, lui, la façon de choisir un token à chaque étape.

04

Un modèle de langage par n-grammes

Bien avant les réseaux de neurones, on savait déjà prédire la suite d’un texte, par simple comptage : c’est l’approche historique du modèle par n-grammes, utilisée pendant des décennies, par exemple en reconnaissance vocale. Pour observer cette tâche, le laboratoire utilise un modèle de ce type, qui compte les caractères. Son texte de référence, appelé corpus, contient les quinze premiers chapitres du roman Le Tour du monde en quatre-vingts jours de Jules Verne, soit environ 154 000 caractères.

C’est un modèle de langage par n-grammes : un n-gramme est une suite de n éléments consécutifs, ici des caractères. Pour prédire la suite, le modèle compte les caractères qui ont suivi un contexte dans le corpus. Leur fréquence lui permet d’estimer une probabilité pour chaque candidat.

Vous choisissez la taille du contexte utilisé, de 1 à 5 caractères. Avec cinq caractères de contexte et un caractère à prédire, le modèle s’appuie sur des suites de six caractères.

Dans le roman lu par le laboratoire, pour « Passepar »
contexte de 1 caractère, il voit « r » :
e       → 1 981 fois sur 8 228  → 24 %
espace  → 1 123 fois sur 8 228  → 14 %
a       →   862 fois sur 8 228  → 10 %
…

contexte de 5 caractères, il voit « separ » :
t       →   145 fois sur 145    → 100 %

Avec un seul caractère, beaucoup de lettres ont suivi r. Avec cinq caractères, le modèle retrouve que « separ » est suivi de « t » dans les 145 occurrences observées. Dans cet exemple, le contexte plus long donne une prédiction plus précise. Mais un contexte long peut aussi être rare : même une probabilité de 100 % peut reposer sur très peu d’observations.

Ce compteur n’utilise ni les embeddings, ni les étapes que nous découvrirons ensuite. Il illustre la même tâche de prédiction, avec un mécanisme différent de celui d’un modèle de langage moderne.

05

Tester le contexte et la prédiction

Dans le laboratoire, tapez Passepar. Avec un contexte de 5 caractères, réglage de départ, le t s’impose à 100 %, et la génération pas à pas termine « Passepartout ». Descendez ensuite à 1 caractère : le modèle ne voit plus que le r et propose un e, parce que c’est le caractère qui suit le plus souvent un « r » dans le roman.

Essayez aussi Phileas F, le héros du roman : avec cinq caractères de contexte, le modèle complète « Fogg ». Cliquez plusieurs fois sur le bouton « Ajouter » : vous répétez vous-même la boucle de génération. La carte « Une génération pas à pas » la répète automatiquement, jusqu’à quinze fois.

06

Les limites du modèle de comptage

Même avec cinq caractères, le contexte de notre modèle reste minuscule. Il ne sait pas de quoi parle votre phrase : il compte seulement les caractères qui suivent les derniers dans le corpus. Un modèle de langage moderne peut tenir compte de nombreux tokens précédents, dans la limite de sa fenêtre de contexte. Cela lui donne accès à davantage d’informations, sans garantir une réponse cohérente.

Notre modèle tourne aussi en rond. Avec un seul caractère de contexte, en choisissant toujours le candidat le plus fréquent, il finit par écrire de de de de. Avec cinq caractères, sa suite ressemble à du français, mais elle ne veut pas nécessairement dire quelque chose. Les modèles modernes peuvent aussi se répéter ; nous étudierons plus tard les méthodes de génération qui influencent ce comportement.

Enfin, notre modèle ne connaît que le roman du corpus. Si les derniers caractères de votre texte n’y apparaissent jamais, il essaie un contexte plus court. Cette stratégie de repli est appelée backoff. Si le dernier caractère lui-même est absent du roman, comme X ou œ, il n’a rien à proposer. Les modèles modernes sont entraînés sur des corpus bien plus vastes, mais leurs données restent elles aussi limitées.

Retenez bien cette faiblesse : le compteur ne sait rien d’une suite exacte de caractères qu’il n’a jamais vue. Il ne peut pas se dire qu’elle ressemble à une autre suite, rencontrée cent fois. C’est précisément pour surmonter cette limite que les LLM modernes ne comptent pas des suites exactes. Ils s’appuient sur les embeddings, vus dans la leçon 03, qui rapprochent les éléments similaires, et sur le Transformer, que nous découvrirons dans les prochaines leçons. Un modèle peut ainsi faire une prédiction raisonnable sur une phrase qu’il n’a jamais lue.

Nous savons maintenant ce que le modèle cherche à prédire. Il reste à comprendre comment il transforme les embeddings en une prédiction qui tient compte du contexte. Les embeddings seuls ne précisent pas la place de chaque token dans la séquence : dans la prochaine leçon, nous verrons comment le modèle reçoit une information sur leur position grâce à l’encodage positionnel.

À retenir

Un modèle de langage causal prédit le token suivant à partir des tokens précédents disponibles dans son contexte. Il produit une distribution de probabilités sur son vocabulaire : une valeur par token, dont la somme vaut 100 % (ou 1).

La génération est autorégressive : le token choisi est ajouté au contexte, puis le modèle est appelé de nouveau. Choisir à chaque étape le token le plus probable s’appelle le décodage glouton (greedy).

Le laboratoire utilise un modèle de n-grammes par comptage. Pour un contexte formé des k derniers caractères (de 1 à 5), la probabilité d’un caractère est le nombre de fois où il suit ce contexte dans le corpus, divisé par le nombre total d’observations après ce contexte. Si le contexte n’a jamais été vu, le modèle se replie sur un contexte plus court (backoff). Un contexte plus long peut affiner la prédiction, mais les contextes deviennent aussi plus rares et les estimations moins fiables.

Modèles de langage et n-grammes · Google Machine Learning Crash Course ↗
Causal language modeling · Hugging Face ↗

VÉRIFIER SES CONNAISSANCES

Valider cette étape

Répondez aux trois questions pour débloquer la suite. Vous pouvez réessayer autant de fois que nécessaire.

Chargement de la progression…

Mise en ligne le

ESPACE DE PRATIQUE

Le laboratoire

Regardez le modèle deviner la suite de votre texte.

● EN DIRECT
01

Votre texte

MODIFIABLE
02

Ce que le modèle regarde

Dans ce laboratoire, notre modèle fonctionne caractère par caractère. Si vous ne lui donnez qu'un seul caractère de contexte, il ne regarde que la toute dernière lettre pour deviner la suivante : ses prédictions sont donc très aveugles.

En augmentant le nombre de caractères pris en compte dans cet exercice, vous agrandissez la fenêtre de contexte du modèle. Un contexte plus long peut affiner la prédiction, mais il peut aussi apparaître rarement ou jamais dans le corpus : les probabilités reposent alors sur peu d’observations ou sur un contexte plus court.

Calcul en cours…

À retenir

Un modèle de langage produit, pour le contexte reçu, une chance pour chaque token du vocabulaire. On ajoute un token, puis on recommence : c’est ainsi qu’une réponse s’écrit, token après token.

Le modèle de ce laboratoire se contente de compter des groupes de caractères dans un roman de Jules Verne et ne regarde que les 1 à 5 derniers caractères, ce qui rend la prédiction très simplifiée pour la compréhension mais moins fiable qu’un vrai modèle de langage. Un LLM moderne accomplit la même tâche à partir des tokens disponibles dans sa fenêtre de contexte, avec des mécanismes que nous étudierons dans les prochaines leçons.

06

Pour aller plus loin

Notre modèle par comptage est le point de départ classique pour comprendre les modèles de langage. Ces ressources gratuites montrent comment on passe de ce compteur à un vrai modèle.

  • makemore · Andrej Karpathy ↗Projet open source qui commence exactement par ce type de modèle : une table de comptage qui prédit le caractère suivant, avant d’aller jusqu’au Transformer.
  • Text generation · Hugging Face ↗Guide officiel : un vrai modèle génère le token suivant à partir du texte et de ce qu’il a déjà écrit ; le décodage glouton y est le choix par défaut.
  • CS224N · Stanford University ↗Cours universitaire gratuit ; la leçon « Language Models and RNNs » présente les modèles de langage, dont les n-grammes.