Aller au contenu
Kudos AI
Read in English
Construire un modèle de langue

Le préentraînement et l’affinage

Comment la prédiction du mot suivant transforme du texte non annoté en supervision, pourquoi l’entropie croisée n’est que l’opposé de la log-probabilité moyenne, ce que mesure vraiment la perplexité, et pourquoi un modèle qui complète le texte avec fluidité ne sait toujours pas suivre une instruction.

8 min de lectureKudos AI

Prérequis : L’architecture du transformeur

log V démontré à l’écran comme la perte que doit rapporter un modèle indécis, puis confronté à une mesure réelle qui n’en est distante que de 0,03.

À la fin de L’architecture du transformeur nous avions 124 millions de paramètres initialisés au hasard, disposés dans la bonne forme et ne prédisant rien. Passer de là à un modèle qui écrit une prose fluide, puis à un modèle qui fait ce qu’on lui dit, demande deux étapes d’entraînement distinctes, avec des données, des coûts et des finalités différents.

Cet article couvre les deux, ainsi que la mesure qui vous dit si la première fonctionne.

A. Le problème de l’annotation, et comment il se dissout

L’apprentissage supervisé a besoin d’étiquettes, et les étiquettes coûtent cher. Raschka dit explicitement que c’est la contrainte habituelle des modèles d’apprentissage automatique traditionnels et des réseaux profonds entraînés selon le paradigme supervisé conventionnel - et que l’étape de préentraînement d’un LLM y échappe entièrement.

L’échappatoire est l’apprentissage auto-supervisé, où le modèle engendre ses propres étiquettes à partir des données d’entrée. Pour la langue, l’astuce est la prédiction du mot suivant : utiliser le mot qui suit dans une phrase ou un document comme l’étiquette que le modèle est censé prédire. Raschka appelle cela une forme d’auto-étiquetage, et la conséquence est l’essentiel - puisque les étiquettes sont créées à la volée, d’immenses jeux de texte non annoté deviennent utilisables comme données d’entraînement.

Le corpus n’est alors que du texte : textes d’internet, livres, Wikipédia, articles de recherche, de l’ordre de milliers de milliards de mots.

Le remarquable, c’est que cela fonctionne du tout. Raschka note qu’il est réellement frappant que les modèles GPT acquièrent les capacités qu’ils acquièrent à partir d’une tâche aussi simple que prédire le mot suivant. Rien dans l’objectif ne mentionne la grammaire, les faits ou le raisonnement. Ceux-ci se révèlent instrumentalement utiles pour deviner ce qui vient ensuite, ils sont donc appris comme effet de bord.

Chaque position fournit un signal d’entraînement d’un coup. Comme l’attention est masquée causalement, une seule passe avant sur une séquence de longueur 1 024 produit une prédiction aux 1 024 positions, chacune supervisée par le token qui a effectivement suivi.

B. Décodeur seul

Raschka consigne une simplification structurelle qu’il vaut la peine d’énoncer clairement : comparée au transformeur originel, l’architecture GPT générale est relativement simple - essentiellement la seule partie décodeur, sans l’encodeur. Il n’y a pas de composant séparé pour encoder une séquence source, parce qu’il n’y a pas de séquence source. Le modèle lit un préfixe et le prolonge, ce qui est tout ce qu’exige la prédiction du mot suivant.

C. Noter une prédiction

Le modèle produit une distribution de probabilité sur tout le vocabulaire à chaque position. Il nous faut un nombre disant à quel point cette distribution est bonne.

La quantité naturelle est la probabilité que le modèle a attribuée au token effectivement apparu. Raschka construit la perte exactement à partir de là, par étapes : prendre la probabilité du modèle pour chaque token cible, prendre les logarithmes, les moyenner, et changer le signe. Il note que l’objectif n’est pas de faire monter la log-probabilité moyenne jusqu’à 00 mais de faire descendre son opposé jusqu’à 00, et que cette valeur opposée est ce que l’apprentissage profond appelle la perte d’entropie croisée.

Déroulé, sur trois prédictions. Supposons que le modèle ait attribué les probabilités 0.100.10, 0.600.60 et 0.300.30 aux trois tokens réellement apparus.

ln⁡0.10=−2.3026,ln⁡0.60=−0.5108,ln⁡0.30=−1.2040.\ln 0.10 = -2.3026,\qquad \ln 0.60 = -0.5108,\qquad \ln 0.30 = -1.2040 .

Leur moyenne vaut

−2.3026−0.5108−1.20403=−1.3391,\frac{-2.3026 - 0.5108 - 1.2040}{3} = -1.3391 ,

la perte d’entropie croisée est donc +1.3391+1.3391.

Ce sont les logarithmes qui font que cela se comporte correctement. Une probabilité de 0.0010.001 sur le vrai token contribue ln⁡0.001=−6.9\ln 0.001 = -6.9, tandis que 0.010.01 contribue −4.6-4.6 - se tromper dix fois plus coûte une pénalité additive fixe, et les erreurs confiantes sont punies sans borne.

Raschka observe aussi que « entropie croisée » et « opposé de la log-probabilité moyenne » s’emploient de façon interchangeable en pratique, et que la fonction cross_entropy de PyTorch exécute toutes ces étapes d’un coup.

Python

S'exécute dans votre navigateur. La première exécution télécharge l'environnement Python (~10 Mo), puis il est mis en cache.

D. La perplexité, et un contrôle de cohérence

L’entropie croisée est en unités logarithmiques, difficiles à ressentir. La perplexité en est l’exponentielle, exp⁡(entropie croiseˊe)\exp(\text{entropie croisée}), et Raschka la décrit comme une façon plus interprétable de comprendre l’incertitude du modèle dans la prédiction du token suivant - une perplexité plus basse signifiant des prédictions plus proches de la distribution réelle.

L’interprétation : la perplexité est en gros le nombre d’options également probables entre lesquelles le modèle choisit effectivement. Notre perte de 1.33911.3391 donne e1.3391≈3.82e^{1.3391} \approx 3.82 - le modèle est à peu près aussi incertain que quelqu’un qui devinerait uniformément parmi quatre possibilités.

Cela fournit un véritable contrôle sur un modèle non entraîné. Le réseau non entraîné de Raschka donne une perte de 10.794010.7940. Un modèle qui n’a rien appris devrait être proche de l’uniforme sur le vocabulaire, et une distribution uniforme sur VV issues a pour entropie croisée exactement ln⁡V\ln V :

ln⁡50257=10.8249.\ln 50257 = 10.8249 .

Le 10.794010.7940 mesuré se situe 0.030.03 en dessous, et l’exponentielle donne une perplexité d’environ 48,70048{,}700 pour un vocabulaire de 50,25750{,}257. Le modèle non entraîné devine, comme attendu, presque uniformément parmi tous les tokens qu’il connaît.

Cela vous donne un plancher de référence. Tout modèle de langue doit battre ln⁡V\ln V, sinon il n’a rien appris du tout - et l’écart entre la perte d’un modèle et ce plafond mesure directement la structure qu’il a extraite du texte.

Interactif : le plancher, et comment y lire un nombre

La perplexité en part du vocabulaire, voilà la forme transposable.

log V10.7940
Plancher uniforme, log V
10.8249
Options effectives
48,726
Part du vocabulaire
97.0%
Ce que cela dit
indécis, comme doit l’être un modèle neuf

Un modèle indécis répartit la probabilité uniformément et paie pour cela log V = 10.8249. Le modèle non entraîné de la leçon rapporte 10,7940, soit 48 726 options effectives pour un vocabulaire de 50 257, autrement dit 96,95 % encore en jeu. Voilà à quoi ressemble « vraiment indécis » en chiffres, et voilà la lecture dont a besoin la vérification de la leçon : « bien en dessous » et « bien au-dessus » sont difficiles à appliquer, une part ne l’est pas. Vous êtes à 10.7940 sur un vocabulaire de 50,257, ce qui laisse 97.0% en jeu, et la lecture est donc indécis. Une part un peu supérieure à un n’est pas un bogue : l’entropie croisée n’a pas de borne supérieure, et un modèle qui tire au hasard sans être tout à fait uniforme paie cette irrégularité - le modèle non entraîné de la leçon lui-même lit 1,18 sur les chargeurs complets. Seule une part très supérieure à un, deux ou dix fois le vocabulaire, signale un bogue dans la perte ou la tokenisation. La part est aussi la forme transposable. La moitié du vocabulaire en jeu se lit pareil à mille jetons et à cinquante mille, là où les deux pertes brutes diffèrent de près de quatre et où ni l’une ni l’autre ne signifie rien seule.

E. Ce que le préentraînement produit, et ce qu’il ne produit pas

Le résultat est un modèle de fondation, et Raschka est précis sur sa capacité : le préentraînement apprend au modèle à engendrer un mot à la fois, si bien que le LLM préentraîné est capable de compléter du texte - terminer des phrases ou écrire des paragraphes à partir d’un fragment - ainsi que de capacités en few-shot.

Il est tout aussi précis sur la limite. Les LLM préentraînés peinent souvent avec des instructions spécifiques, avec des exemples tels que « Corrige la grammaire de ce texte » ou « Convertis ce texte à la voix passive ».

La raison découle de l’objectif. Le modèle a appris quel texte suit typiquement un autre texte. Étant donné « Corrige la grammaire de ce texte : … », une suite plausible dans la nature est une autre consigne d’exercice, ou une liste de consignes semblables - ce genre de texte tend à apparaître près de ce genre de texte. Produire la phrase corrigée est une suite parmi bien d’autres, et rien dans le préentraînement ne l’a désignée comme la bonne.

F. L’affinage

L’affinage part des poids préentraînés et poursuit l’entraînement sur un jeu de données annoté pour une finalité précise. Raschka distingue deux sortes :

  • L’affinage de classification - adapter le modèle pour attribuer des étiquettes, son exemple travaillé étant un classifieur de courriels indésirables. La pile de transformeur est conservée et la tête de sortie est remplacée par une tête dimensionnée au nombre de classes.
  • L’affinage par instructions, dit aussi affinage supervisé par instructions - entraîner sur des paires d’instructions et de réponses souhaitées pour que le modèle apprenne à suivre des instructions et à produire la réponse voulue. Il l’identifie comme l’une des principales techniques derrière les agents conversationnels, les assistants personnels et les systèmes de dialogue.

L’économie de tout cela est l’essentiel. Le préentraînement consomme des milliers de milliards de mots non annotés ; l’affinage par instructions utilise un ensemble annoté comparativement minuscule. Presque tout ce que le modèle sait a été appris à la première étape - la seconde lui apprend surtout laquelle de ses nombreuses suites plausibles est celle qu’on lui demande.

La progression complète exposée par Raschka :

raw unlabelled text  →  pretrained foundation model  →  fine-tuned model\text{raw unlabelled text} \;\rightarrow\; \text{pretrained foundation model} \;\rightarrow\; \text{fine-tuned model}

la complétion de texte et l’aptitude en few-shot arrivant à l’étape médiane, et la classification, le résumé, la traduction ou le comportement d’assistant à la dernière.

À retenir

  • L’apprentissage auto-supervisé dissout le problème de l’annotation : le mot suivant est l’étiquette, donc le texte non annoté devient de la supervision et des milliers de milliards de mots deviennent utilisables.
  • GPT n’est que le décodeur - pas d’encodeur, parce qu’il n’y a pas de séquence source à encoder.
  • L’entropie croisée est l’opposé de la log-probabilité moyenne des vrais tokens ; notre exemple donne 1.33911.3391 à partir des probabilités 0.10,0.60,0.300.10, 0.60, 0.30.
  • La perplexité est exp⁡(entropie croiseˊe)\exp(\text{entropie croisée}) - en gros le nombre d’options entre lesquelles le modèle choisit effectivement.
  • Un modèle non entraîné score environ ln⁡V\ln V : le 10.794010.7940 de Raschka contre ln⁡50257=10.8249\ln 50257 = 10.8249, soit une perplexité proche de la taille du vocabulaire. C’est le plancher que tout modèle réel doit battre.
  • Le préentraînement produit de la complétion de texte, pas de l’obéissance ; les modèles préentraînés échouent couramment sur des instructions comme « Corrige la grammaire de ce texte ».
  • L’affinage sur un petit jeu annoté fournit ce que le préentraînement ne peut pas - soit une tête de classification, soit un comportement de suivi d’instructions.

La suite

Ceci complète le chemin des caractères bruts à un modèle qui suit des instructions : La tokenisation et les plongements a transformé le texte en tenseurs, L’attention et l’auto-attention et L’architecture du transformeur ont construit le modèle, et cet article l’a entraîné. Pour l’autre tradition de l’intelligence artificielle - celle qui cherche et raisonne au lieu de prédire le token suivant - voyez La recherche adversariale et le minimax.

Références et lectures complémentaires

  • Sebastian Raschka, Build a Large Language Model (From Scratch), Manning, 2025· Bibliothèque de référence Kudos AI

Les œuvres protégées par le droit d’auteur sont citées à titre de référence uniquement et ne sont pas hébergées ici ; veuillez consulter l’éditeur pour y accéder.

Lecture associée

8 min de lectureConstruire un modèle de langue

La tokenisation et les plongements

Comment le texte devient des nombres sur lesquels un modèle peut s’entraîner : construire un vocabulaire, pourquoi le codage par paires d’octets n’a jamais besoin d’un token inconnu, la couche de plongement comme une consultation qui est prouvablement un one-hot fois une matrice, et pourquoi la position doit être réinjectée à la main.

IA générativeTraitement du langage naturelApprentissage profond
10 min de lectureConstruire un modèle de langue

L’architecture du transformeur

Assembler un GPT à partir de l’attention : projections multi-têtes, normalisation de couche déroulée à la main, pourquoi les connexions de raccourci sauvent le gradient, l’expansion x4 du réseau à propagation avant, et un décompte de paramètres qui reproduit exactement les 124 millions de GPT-2 small.

IA générativeApprentissage profondTraitement du langage naturel
8 min de lectureConstruire un modèle de langue

L’attention et l’auto-attention

Requêtes, clés et valeurs construites depuis la base : pourquoi l’attention existe, comment se calcule l’attention par produit scalaire mis à l’échelle, pourquoi elle est divisée par la racine carrée de la dimension, et comment fonctionne le masquage causal, avec chaque matrice calculée et vérifiée.

IA générativeApprentissage profondTraitement du langage naturel
← Retour à tous les articles