Documentation
Retour
  • IA générative
    • Introduction
    • 1. IA générative et LLM
    • 2. Tokens
    • 3. Générer une réponse
    • 4. Dans le modèle
      • Une architecture organise des calculs
      • De l’identifiant à une représentation utilisable
      • L’ordre des tokens doit aussi intervenir
      • L’attention fait circuler l’information entre les positions
      • Un bloc Transformer ne se résume pas à l’attention
      • Les couches transforment les représentations, pas les paramètres
      • De la dernière représentation aux probabilités
      • Ce que cette explication permet de comprendre — et ce qu’elle ne montre pas
      • Vérifier votre compréhension
      • La prochaine question : d’où viennent les paramètres ?
    • 5. Entraîner un assistant
    • 6. Contexte et mémoire
    • 7. Variation des réponses
    • 8. Raisonnement
    • 9. Erreurs et hallucinations
    • 10. Documents et outils
    • 11. Formuler et évaluer

4. Que se passe-t-il à l’intérieur du modèle ?

Suivre les représentations numériques à travers un Transformer : paramètres, attention, couches de calcul et probabilités du prochain token.

Au chapitre précédent, nous avons suivi la boucle qui construit une réponse : calculer les probabilités du prochain token, en sélectionner un, puis recommencer. Une étape restait à expliquer : comment obtient-on ces probabilités à partir d’une suite de nombres ?

Reprenons la note sur Passerelle. Pour produire un résumé utile, le modèle doit pouvoir relier 27 bénévoles à l’année précédente et 41 à l’année actuelle. Il doit aussi tenir compte de la consigne « en deux phrases ». Les identifiants des tokens ne portent pas, à eux seuls, toutes ces relations.

À l’intérieur du modèle, chaque token est associé à une représentation numérique. Des calculs transforment ces représentations et font circuler de l’information entre les positions du texte. La représentation obtenue à la dernière position permet finalement de calculer les possibilités de continuation.

Nous allons examiner ce parcours dans un Transformer causal, une famille d’architectures utilisée par de nombreux modèles générant du texte. Il s’agit d’un modèle explicatif de leur fonctionnement, pas du plan exact de tous les LLM. Les dimensions, les types de couches et leur agencement varient.

Une architecture organise des calculs

Un réseau neuronal artificiel est un ensemble de transformations numériques organisées en couches. Une couche reçoit des valeurs, effectue des calculs, puis transmet un résultat à la suivante. Le mot « neuronal » ne signifie pas que ces opérations reproduisent fidèlement le fonctionnement d’un cerveau humain.

Deux éléments doivent être distingués. L’architecture détermine l’organisation des opérations : quelles transformations utiliser, dans quel ordre et avec quelles connexions. Les paramètres sont les valeurs ajustées pendant l’entraînement qui déterminent le résultat de ces opérations.

Pour rendre cette distinction concrète, imaginez un calcul qui multiplie une entrée par un coefficient, puis ajoute une constante. La forme du calcul est fixée, mais changer le coefficient ou la constante change le résultat. Un réseau réalise un très grand nombre d’opérations de ce type, ainsi que d’autres transformations. Les paramètres ne sont donc pas des phrases enregistrées dans un fichier : ce sont des nombres qui interviennent dans le calcul.

Karpathy présente cette distinction dans son explication du réseau comme fonction paramétrée, à partir de 20 min 41 s. Microsoft sépare également les paramètres appris et le code de l’architecture dans LLM Fundamentals.

Voici le trajet que nous allons parcourir. Les repères de position sont présentés avec les représentations d’entrée pour faciliter la lecture ; leur intégration exacte dépend de l’architecture.

Identifiants des tokens
          ↓
Représentations numériques
et repères de position
          ↓
Blocs Transformer successifs
          ↓
Scores du prochain token
          ↓
Probabilités de continuation

La sélection du token, étudiée au chapitre 3, intervient ensuite. Le schéma décrit donc le calcul des possibilités, pas toute la boucle de génération.

De l’identifiant à une représentation utilisable

Un vecteur est une liste de nombres

Nous avons vu qu’un token possède un identifiant. Cet identifiant permet d’accéder à une ligne d’une table de représentations apprise pendant l’entraînement. Cette ligne est un vecteur : une liste ordonnée de valeurs numériques.

Voici un exemple entièrement fictif, volontairement réduit à trois valeurs :

[0,2 ; −0,4 ; 0,7]

Les points-virgules séparent les valeurs ; la virgule est le séparateur décimal. Le vecteur comporte trois dimensions, c’est-à-dire trois composantes. Dans les modèles réels, les vecteurs peuvent être beaucoup plus longs. Leurs valeurs ne sont pas les identifiants des tokens : elles constituent une autre représentation.

Cette représentation initiale est appelée embedding. Dans le modèle décrit ici, un même identifiant donne accès au même embedding de token. Ce qui changera ensuite, c’est la représentation calculée en fonction de la position et du contexte.

Les composantes ne sont pas des étiquettes écrites à la main

Il serait tentant de lire notre vecteur comme « 0,2 pour l’entraide, −0,4 pour la finance, 0,7 pour les étudiants ». Ce serait inventer une interprétation.

Les valeurs sont apprises ensemble. Une propriété utile peut être répartie sur plusieurs composantes, et une composante peut participer à plusieurs propriétés. On parle de représentation distribuée. On ne dispose pas, en général, d’un dictionnaire simple associant chaque dimension à un concept humain unique.

Ces représentations peuvent rendre certaines relations entre tokens exploitables par le calcul. Mais un embedding isolé n’est ni une définition complète du token ni la preuve que le modèle interprète correctement une phrase. Le contexte reste à intégrer.

L’ordre des tokens doit aussi intervenir

Comparez ces deux phrases :

Les bénévoles remercient les étudiants.

Les étudiants remercient les bénévoles.

Elles utilisent les mêmes mots, mais ne disent pas la même chose. Une représentation qui ne tiendrait compte que de leur présence perdrait cette différence.

Le Transformer utilise donc des informations de position. Elles permettent aux calculs de tenir compte de l’ordre ou de la distance entre les tokens. Certaines architectures ajoutent une représentation de position à l’embedding de chaque token ; il existe aussi d’autres façons d’intégrer ces repères.

Il faut distinguer trois types d’informations numériques : l’identifiant désigne une unité du vocabulaire, la position indique où se trouve une occurrence dans la séquence, et les composantes du vecteur servent au calcul. Si un token apparaît deux fois, son identifiant peut être identique alors que ses positions diffèrent.

À titre d’exemple concret, GPT-2 utilise des représentations de position absolue. Cet exemple historique aide à comprendre une solution ; il ne décrit pas nécessairement celle d’un modèle plus récent.

L’attention fait circuler l’information entre les positions

Chaque position possède maintenant une représentation numérique. Mais il faut encore pouvoir relier les informations dispersées dans le texte. Dans la note de Passerelle, les nombres, les années et les bénévoles n’occupent pas la même position.

Le mécanisme d’attention permet de combiner des informations provenant de différentes positions, avec des poids calculés en fonction des représentations présentes. Il ne s’agit pas d’une concentration humaine ou d’une décision consciente de « regarder » un mot.

On parle d’auto-attention, ou self-attention, lorsque les représentations mises en relation proviennent de la même séquence. Celle-ci peut contenir la consigne, le document et le début de réponse déjà généré.

Trois rôles : requête, clé et valeur

Pour chaque position, des transformations apprises produisent trois vecteurs. Ils ont des rôles différents :

  • La requête, ou query, sert à calculer avec quelles positions établir des correspondances.
  • La clé, ou key, sert de terme de comparaison pour une position candidate.
  • La valeur, ou value, contient l’information numérique qui sera combinée dans le résultat.

La requête n’est pas votre question écrite en français, et la clé n’est pas un mot-clé choisi manuellement. Ce sont des vecteurs obtenus par calcul à partir des représentations du bloc.

Pour une position donnée, le système compare sa requête aux clés des positions autorisées. Dans l’attention classique du Transformer, ces comparaisons reposent sur des multiplications et des additions entre composantes. Les scores sont ensuite transformés en poids positifs dont la somme vaut 1.

Enfin, les vecteurs de valeur sont combinés selon ces poids. Une position peut ainsi recevoir davantage d’information numérique provenant de certaines positions que d’autres. Les transformations qui produisent les requêtes, les clés et les valeurs ont été apprises ; les poids d’attention, eux, sont recalculés à partir du texte traité.

Une combinaison pondérée, sur un exemple réduit

Pour voir ce que signifie « combiner », supposons qu’un petit calcul d’attention dispose seulement de deux positions autorisées. Les vecteurs et les poids suivants sont inventés pour l’explication ; ils ne proviennent pas d’une observation de Passerelle dans un modèle.

PositionVecteur de valeurPoids d’attention
A[2 ; 0]0,75
B[0 ; 4]0,25

On multiplie chaque composante par son poids, puis on additionne les contributions :

0,75 × [2 ; 0] + 0,25 × [0 ; 4] = [1,5 ; 1]

Le résultat contient une combinaison des deux valeurs. Le système n’a pas simplement copié le token de A en ignorant B. Ce petit exemple montre le principe d’une somme pondérée ; un vrai bloc utilise de nombreuses dimensions et des transformations supplémentaires.

Le mécanisme requête–clé–valeur et cette combinaison sont décrits dans la section Attention de l’article fondateur du Transformer.

« Causal » : ne pas utiliser la suite à prédire

Dans un Transformer causal standard, une position peut utiliser sa propre information et celle des positions précédentes, mais pas celle des positions suivantes. Un masque causal exclut ces dernières du calcul d’attention.

Le mot « causal » désigne ici cette contrainte de circulation de l’information. Il ne signifie pas que le modèle établit des relations de cause à effet entre les faits du monde.

À la dernière position disponible, les tokens antérieurs autorisés peuvent contribuer au calcul du prochain token. En revanche, aucun token de la future réponse n’est accessible comme s’il était déjà écrit.

Cette restriction compte aussi pendant l’entraînement : même lorsqu’un texte complet est disponible comme exemple, la prédiction à une position ne doit pas utiliser le token qu’elle cherche à prévoir. Les architectures à attention bidirectionnelle suivent d’autres règles ; ce chapitre décrit le cas causal utilisé pour notre génération.

Plusieurs têtes, pas plusieurs personnages

Un bloc peut effectuer plusieurs calculs d’attention en parallèle. Chacun utilise ses propres transformations : c’est l’attention multi-tête. Les résultats sont ensuite réunis et transformés.

Cela permet de combiner l’information de plusieurs façons. Mais il ne faut pas attribuer automatiquement une spécialité fixe à chaque tête — « celle-ci comprend la grammaire, celle-là vérifie les faits ». Ces rôles ne sont pas distribués à la main comme des postes dans une équipe.

Un poids d’attention élevé donne un coefficient élevé à un vecteur de valeur dans une combinaison donnée. Il ne prouve ni que le passage est vrai, ni qu’il constitue à lui seul la cause d’une réponse. Une carte d’attention ne suffit pas à expliquer tous les calculs du modèle.

Un bloc Transformer ne se résume pas à l’attention

L’attention combine l’information entre positions. Un autre composant, souvent appelé réseau feed-forward ou MLP, transforme la représentation à chaque position.

Dans la forme classique que nous décrivons, ce réseau applique les mêmes transformations à chaque position d’un bloc, sans mélanger directement les positions à cette étape. Il reçoit toutefois des représentations déjà enrichies par l’attention. Les mêmes calculs peuvent donc produire des résultats différents selon le contexte.

Ce composant combine notamment des transformations linéaires — des sommes pondérées — et une fonction non linéaire. Une telle fonction ne se réduit pas à multiplier les entrées par des coefficients fixes et à additionner le tout. Cette non-linéarité permet de construire des transformations plus riches qu’une simple chaîne de sommes pondérées.

Deux autres mécanismes complètent habituellement le bloc. Une connexion résiduelle ajoute le résultat d’une transformation à la représentation qui existait avant elle, plutôt que de remplacer entièrement celle-ci.

Une normalisation ajuste l’échelle des valeurs utilisées dans certains calculs. Ces deux mécanismes facilitent l’entraînement de réseaux profonds ; ils n’évaluent pas la fiabilité des phrases.

L’ordre précis de ces opérations varie. Il n’est pas nécessaire de mémoriser un schéma universel qui n’existe pas. Il faut retenir leur distinction : combiner entre positions, transformer à chaque position, puis transmettre une représentation mise à jour.

L’article Attention Is All You Need décrit ces composants dans ses sections sur les blocs et sur les réseaux feed-forward. Son architecture originale comportait un encodeur et un décodeur pour la traduction. Nous en utilisons ici les principes pour expliquer la famille causale, sans assimiler tous les LLM au modèle exact de 2017.

Les couches transforment les représentations, pas les paramètres

Un modèle empile plusieurs blocs. Le bloc suivant reçoit les représentations produites par le précédent et les transforme à son tour. Dans les architectures usuelles, les différents blocs possèdent leurs propres paramètres appris.

Les valeurs intermédiaires obtenues pendant ces calculs sont appelées activations. Elles dépendent de l’entrée et changent au fil des couches. Les paramètres, eux, restent normalement fixes pendant l’inférence.

Le vocabulaire peut prêter à confusion : on appelle souvent les paramètres des « poids », mais les « poids d’attention » que nous venons de voir sont des résultats calculés pour une entrée donnée. Ce ne sont pas les mêmes objets.

Pour Passerelle, une nouvelle consigne peut donc modifier les activations et les poids d’attention sans modifier les paramètres appris. C’est ainsi que le même modèle traite des demandes différentes.

Il ne faut pas imaginer une suite imposée où la première couche reconnaîtrait toujours les mots, la deuxième la grammaire et la troisième le sens. L’entraînement peut faire émerger des structures utiles, mais leur répartition n’est pas un programme de cours écrit à l’avance. Ajouter des couches ne garantit pas non plus une meilleure réponse dans toutes les situations.

De la dernière représentation aux probabilités

Après le dernier bloc, le modèle dispose d’une représentation calculée à partir des informations accessibles. Pour prévoir le prochain token, il utilise celle de la dernière position disponible.

Une transformation de sortie apprise produit alors un score par token du vocabulaire. Ces scores sont appelés des logits. Un logit peut être négatif ou positif ; ce n’est pas encore un pourcentage, et les logits n’ont aucune obligation de totaliser 1.

Une opération appelée softmax les transforme en une distribution de probabilités. Elle donne davantage de poids aux scores élevés tout en normalisant le total à 1.

La softmax intervient aussi dans le calcul des poids d’attention. Dans l’attention, elle répartit les poids entre les positions accessibles. À la sortie du modèle, elle répartit les probabilités entre les tokens candidats.

Nous retrouvons ainsi les probabilités du chapitre 3. La méthode de génération peut les ajuster, puis choisir un token. Ce token rejoint la séquence et le processus se poursuit.

Le passage des représentations aux scores puis aux probabilités est présenté dans la section Embeddings and Softmax. La softmax ne vérifie aucun fait : elle organise des scores en probabilités. Un calcul numérique parfaitement exécuté peut donc aboutir à une réponse inexacte.

Ce que cette explication permet de comprendre — et ce qu’elle ne montre pas

Nous pouvons maintenant distinguer les éléments du système. L’identifiant permet de retrouver un embedding. Les positions donnent des repères d’ordre. Les blocs transforment les représentations en combinant les informations accessibles. La sortie convertit la dernière représentation en possibilités pour le prochain token.

Ce parcours explique comment la réponse peut dépendre d’informations éloignées dans le texte, plutôt que du seul dernier mot. Il ne démontre pas que chaque information du contexte sera utilisée correctement, ni que le réseau possède une compréhension humaine de l’association.

De même, notre exemple d’attention n’est pas une photographie de ce qui se produit réellement pour Passerelle. Pour affirmer qu’une tête particulière relie un nombre à une année dans un modèle précis, il faudrait mesurer ses calculs et tester cette interprétation. Le mécanisme général et l’explication d’une réponse particulière ne sont pas la même chose.

Vérifier votre compréhension

  1. Un token apparaît à deux endroits du texte. Qu’est-ce qui peut rester identique à l’entrée ? Qu’est-ce qui peut différer après prise en compte des positions et du contexte ?
  2. Dans l’exemple d’attention, pourquoi le résultat [1,5 ; 1] ne correspond-il ni à A seul ni à B seul ? Que signifie ici le poids 0,75 ?
  3. Vous changez la consigne en « résume en une phrase ». Est-ce nécessairement un changement de paramètres ? Quelles valeurs peuvent évoluer pendant le calcul ?
  4. Un token reçoit la plus forte probabilité en sortie. Qu’est-ce que cela indique ? Qu’est-ce que cela ne prouve toujours pas sur la réponse ?

Vous n’avez pas besoin de retenir les sigles ni de refaire les calculs d’un réseau complet. L’objectif est de pouvoir suivre le trajet de l’information et distinguer les valeurs apprises des valeurs calculées.

La prochaine question : d’où viennent les paramètres ?

Nous avons décrit un modèle dont les paramètres permettent déjà de produire des continuations utiles. Mais ces valeurs ne sont pas choisies à la main pour chaque question. Comment sont-elles ajustées à partir de textes ? Et pourquoi savoir poursuivre un texte ne suffit-il pas à devenir un assistant ?

Le prochain chapitre reliera l’entraînement du modèle à son utilisation en conversation, en distinguant l’apprentissage initial et les étapes qui orientent son comportement.

Chapitre précédent : Comment le modèle construit-il une réponse ?

Chapitre suivant : Comment le modèle apprend-il, puis devient-il un assistant ?

Revenir au sommaire de la formation