Un modèle de langage dans un tableur (travail noté 4)
Ce travail construit, dans Google Sheets, un modèle de langage miniature : un modèle à bigrammes, qui donne la probabilité de chaque mot d’après le mot qui le précède. C’est le principe des n-grammes présenté au chapitre « Des règles aux probabilités », avec n = 2. Le modèle est ensuite utilisé pour générer du texte, en tirant chaque mot au hasard selon ces probabilités, comme le font, à une tout autre échelle, les grands modèles de langage.
Un exercice simple, à dessein
Après les Transformer, les assistants, les agents et l’interprétabilité, un modèle à bigrammes construit dans un tableur peut sembler dérisoire. Il est pourtant choisi pour cette simplicité. Il isole, sans rien autour, l’idée sur laquelle reposent tous les grands modèles de langage : estimer, à partir d’un corpus, la probabilité de chaque mot d’après ceux qui le précèdent, puis générer un texte en tirant les mots un à un selon ces probabilités. Le modèle de ChatGPT ne fait pas autre chose. Ce qui change, c’est la façon de calculer ces probabilités : un réseau de neurones, qui tient compte de milliers de jetons précédents au lieu d’un seul, et qui généralise à des suites jamais vues au lieu de compter des exemples. Le tableau « Ce qui a changé, ce qui est resté » fait la liste de ces différences, et de ce qui n’a pas bougé depuis les n-grammes.
Avant de commencer
Un modèle de langage n’est pas une description abstraite de la langue. C’est un modèle statistique entraîné sur un texte particulier, le corpus d’entraînement. Deux modèles entraînés l’un sur des romans du XIXᵉ siècle, l’autre sur des messages de réseaux sociaux, donneraient des probabilités très différentes.
Le modèle calcule une probabilité conditionnelle, notée avec une barre verticale, qui se lit « étant donné » :
$$P(\text{mot suivant} \mid \text{mot précédent})$$Le modèle du travail noté 2 classait des courriels. Il reposait sur une description de chaque classe, retournée par le théorème de Bayes : c’était un modèle génératif utilisé pour classer. Le modèle de ce travail est utilisé pour ce qu’il est : un modèle qui génère.
Vérifiez d’abord que votre Google Sheets est correctement configuré.
Générer un texte avec ce modèle revient à tirer chaque mot au hasard, selon les probabilités qui dépendent du mot précédent. La figure ci-dessous montre un tirage après le mot « le », avec les probabilités que vous allez calculer.
Consignes
- Construisez le fichier Google Sheets en suivant les étapes ci-dessous.
- Une fois le fichier complet et fonctionnel, partagez-le, et copiez son lien dans un document PDF (aucun autre format ne sera accepté).
- Répondez aux questions de la fin de cette page dans le même document PDF, de façon claire et précise.
Entraînement du modèle
Copiez les mots du texte suivant dans la colonne A d’une nouvelle feuille, un mot
par rangée. Utilisez correctement la
fonction copier-coller de Google
Sheets.
le
chat
dort
le
chien
mange
le
chat
mange
une
souris
le
chien
dort
la
souris
court
la
souris
mange
le
fromage
le
chat
court
le
chien
voit
le
chat
le
chat
voit
la
souris
le
chien
courtCes 38 mots forment le corpus d’entraînement, le texte à partir duquel le modèle calcule ses paramètres. Pour les vrais modèles de langage, ce corpus contient une grande partie du texte disponible sur le Web, comme les archives de Common Crawl.
Dans la cellule B1, entrez la formule suivante :
=A2Étendez la colonne B jusqu’à la cellule B37, en double-cliquant sur le petit
carré qui apparaît au coin inférieur droit de la cellule B1 quand on la
sélectionne. Google Sheets peut aussi proposer de le faire automatiquement.
Dans la cellule C1, entrez la formule suivante, puis étendez-la jusqu’à C37 :
=A1 & " " & B1La colonne C contient maintenant tous les bigrammes du corpus, c’est-à-dire
toutes les suites de deux mots consécutifs. La colonne B ne sert qu’à les obtenir
facilement.
Dans la colonne D, comptez combien de fois chaque bigramme apparaît dans le corpus,
avec la formule suivante, étendue jusqu’à D37 :
=COUNTIF(C:C, C1)Si la formule produit une erreur, vérifiez les paramètres linguistiques de votre Google Sheets.
Le bigramme le chien apparaît par exemple 4 fois, et le bigramme fromage le une
seule fois.
La colonne E calcule les paramètres du modèle, c’est-à-dire la probabilité d’un
mot étant donné le mot qui le précède :
Entrez dans la cellule E1 la formule suivante, et étendez-la jusqu’à E37. Elle
compte les mots de la colonne A sauf le dernier, qui n’est suivi d’aucun mot et
fausserait légèrement les probabilités :
=D1 / COUNTIF(A$1:INDEX(A:A, COUNTA(A:A)-1), A1)Le dénominateur est toujours supérieur ou égal au numérateur, et chaque valeur est donc une probabilité comprise entre 0 et 1.
Dans la colonne F, gardez une seule fois chaque bigramme, ce qui donne 26 bigrammes
différents :
=SORT(UNIQUE(C:C))Séparez ensuite les deux mots de chacun de ces bigrammes, le premier dans la colonne
G :
=INDEX(SPLIT(F1, " "), 1)et le second dans la colonne H :
=INDEX(SPLIT(F1, " "), 2)Enfin, la colonne I reprend la probabilité correspondante de la colonne E :
=INDEX(E:E, MATCH(F1, C:C, 0))On constate par exemple que le mot la est toujours suivi du mot souris, avec une
probabilité de 1, tandis que le mot le peut être suivi de chat, chien ou
fromage, avec des probabilités de 0,5, 0,4 et 0,1.
Utilisation du modèle (inférence)
Le modèle est maintenant entraîné : ses paramètres sont calculés. On peut s’en servir pour générer un texte nouveau, en tirant les mots au hasard.
Entrez un premier mot dans la cellule J1, par exemple le. Ce mot doit faire partie
du vocabulaire du modèle. Entrez ensuite la formule suivante dans la cellule K1 si
vous voulez générer les mots à l’horizontale, ou dans la cellule J2 si vous voulez
les générer à la verticale :
=LET(
next_word_mask, ARRAYFORMULA($G:$G = J1),
next_words, FILTER($H:$H, next_word_mask),
probs, FILTER($I:$I, next_word_mask),
probs_cumul, SCAN(0, probs, LAMBDA(a, b, a + b)),
sampled_word_idx, MATCH(RAND(), {0; probs_cumul}, 1),
INDEX(next_words, sampled_word_idx)
)Cette formule s’étend sur plusieurs lignes. Entrez-la dans la barre de formule, en haut de la feuille, plutôt que directement dans la cellule.
La formule fait trois choses.
- Elle retrouve les mots qui peuvent suivre le mot de départ, et leurs probabilités.
- Elle place ces probabilités bout à bout entre 0 et 1, en calculant leurs sommes successives (les probabilités cumulées).
- Elle tire un nombre au hasard entre 0 et 1, avec
RAND(), et choisit le mot dans le segment duquel ce nombre tombe, comme dans la figure du début de cette page.
Pour continuer la génération, étendez la formule vers la droite (à partir de K1) ou
vers le bas (à partir de J2). Chaque nouvelle modification de la feuille relance les
tirages, et produit donc un nouveau texte.
Questions
Le modèle et ses paramètres
Quels sont les paramètres du modèle ? Indiquez précisément les colonnes qui les contiennent.
Expliquez dans vos mots comment ces paramètres sont calculés.
En quoi la colonne
Bde ce modèle diffère-t-elle de la colonneBdu modèle de classification des courriels du travail noté 2 ?Expliquez pourquoi le modèle de classification du travail noté 2 était utilisé comme un modèle discriminatif, alors que ce modèle de langage est utilisé comme un modèle génératif. (Voir « Décrire plutôt que séparer ».)
Ce que le corpus enseigne au modèle
Quelle est la conséquence du fait que le bigramme
le chatapparaisse 5 fois dans le corpus d’entraînement ?Quelle est la conséquence du fait que le bigramme
la sourisapparaisse 3 fois, et en quoi cette situation diffère-t-elle de celle de la question 5 ?Certains bigrammes permettent-ils de générer des suites moins grammaticales ? Lesquels, en particulier ?
Certains bigrammes permettent-ils de générer des suites dont le sens est étrange ? Lesquels, en particulier ?
Le modèle peut-il générer un bigramme qui ne fait pas partie de ses exemples d’entraînement ? Expliquez.
Générer
Supposons que le modèle ait généré le mot
voit. Expliquez la conséquence du choix du mot suivant sur la suite de la phrase générée.La longueur des phrases générées par le modèle est-elle limitée ? Expliquez.
Le chapitre « Générer » présente la température. Comment le texte généré changerait-il si l’on tirait toujours le mot le plus probable, ce qui correspond à une température très basse ? Donnez un exemple à partir du mot
le. Que faire quand plusieurs mots sont à égalité ? Dans ce cas, vous pouvez choisir le premier dans l’ordre alphabétique.
Les limites du modèle, et les grands modèles de langage
De quel type d’apprentissage s’agit-il : supervisé, non supervisé ou auto-supervisé ? Justifiez votre réponse. (Voir « Trois façons d’apprendre ».)
Qu’est-ce qui changerait si l’on utilisait un modèle à trigrammes plutôt qu’à bigrammes ? Quelles seraient les contraintes de ce choix ? Vous pouvez comparer les tailles 2 et 3 dans l’applet du chapitre « Des règles aux probabilités ».
Expliquez les limites de ce modèle quant à sa capacité de généralisation. À quoi sont-elles dues, et comment le modèle neuronal de 2003 présenté au chapitre « Prédire le mot suivant » les dépasse-t-il ?
Comment pourrait-on faire en sorte que le modèle génère des phrases complètes, avec un début et une fin ? Indice : pensez au jeton spécial qui marque la fin d’un texte dans les grands modèles de langage.