Ceci est une traduction automatique ; la version originale est en anglais. Lire l'original

Pourquoi un modèle de langage peine à compter les lettres d’un mot

A white paneled robot counts on its fingers while blank glowing jigsaw pieces float in front of it, fusing into fewer and larger pieces.

Le mot « strawberry » parvient au modèle sous la forme de trois morceaux — str, aw, berry. Les lettres ont disparu avant même qu’il n’ait lu quoi que ce soit.

WHAT YOU TYPEstrawberry3 × rWHAT THE MODEL RECEIVESstrawberry3 OPAQUE IDs
Vous envoyez des lettres. Le modèle reçoit trois identifiants opaques. Les r n’ont jamais figuré dans l’entrée qu’il a vue.

Demandez à un modèle de langage combien de fois la lettre « r » apparaît dans « strawberry », et il se peut fort bien qu’il vous réponde deux. C’est souvent considéré comme la preuve d’une faille profonde. Cela revient pourtant plutôt à demander à quelqu’un de compter les coups de pinceau d’un mot qu’il a seulement entendu prononcer.

Ce que le modèle reçoit réellement

Avant qu’un modèle ne voie du texte, celui-ci est découpé en jetons. Ni des lettres, ni des mots — des morceaux choisis par un algorithme qui a observé un vaste corpus et fusionné les paires adjacentes les plus fréquentes, encore et encore, jusqu’à obtenir un vocabulaire de quelques dizaines de milliers de fragments.

Les mots fréquents deviennent un jeton unique. Les mots plus rares sont découpés, et l’emplacement de ces découpes est déterminé par des statistiques de corpus plutôt que par le sens ou l’orthographe. « strawberry » peut ainsi arriver sous la forme de deux ou trois morceaux, et le modèle les perçoit comme des symboles atomiques — chacun étant un indice arbitraire dans un vocabulaire, sans plus de structure interne accessible au modèle qu’un numéro de rue.

Les lettres n’y sont donc tout simplement pas. Un modèle peut apprendre des faits sur l’orthographe — que certains jetons tendent à co-apparaître avec certaines affirmations concernant les lettres —, mais il raisonne par ouï-dire sur sa propre entrée plutôt qu’à partir de l’entrée elle-même. Vous pouvez observer cette découpe s'effectuer dans le Tokenizer.

Ce que cela explique d’autre

L’arithmétique sur les grands nombres. Les nombres sont eux aussi découpés en jetons, et pas toujours chiffre par chiffre. Un nombre peut être fractionné en morceaux qui chevauchent les valeurs de position, de sorte qu’un modèle effectuant de l’arithmétique en colonnes manipule des éléments qui ne s’alignent pas sur les colonnes. Une dégradation marquée des performances à mesure que le nombre de chiffres augmente indique que le problème est d’ordre représentationnel.

Rimes, anagrammes, acrostiches. Toute tâche définie à partir des lettres plutôt que du sens se heurte au même obstacle.

Coûts et limites de contexte dans les langues autres que l’anglais. Les tokeniseurs sont entraînés sur des corpus à écrasante majorité anglophones ; l’anglais bénéficie donc de jetons efficaces, tandis que les autres langues sont fragmentées en un plus grand nombre de morceaux par mot. La même phrase dans une langue moins représentée peut consommer plusieurs fois plus de jetons, ce qui augmente le coût de traitement et occupe une part plus importante d’une fenêtre de contexte limitée. C’est une question d’équité dissimulée au cœur d’une étape de prétraitement.

L’effet de surprise ne se limite pas aux jetons

Le sens est géométrique. Les mots deviennent des vecteurs, et la proximité dans cet espace est apprise à partir de la cooccurrence — ce qui apparaît près de quoi. C’est pourquoi les modèles saisissent si bien les associations et héritent des biais des textes sur lesquels ils ont été entraînés : si un mot apparaît près de certains autres dans le corpus, il se situera près d’eux dans cet espace, et rien dans le mécanisme ne distingue un fait d’un stéréotype. L’outil Token Embeddings construit une version réduite de cet espace pour vous permettre de visualiser cette géométrie.

La sortie est échantillonnée, non choisie. Un modèle produit une distribution de probabilité sur le jeton suivant, et un élément doit en sélectionner un. Baissez la température et il choisira chaque fois l’option la plus probable, devenant répétitif et prévisible. Augmentez-la et il retiendra plus souvent des options de faible probabilité, devenant inventif et peu fiable. Une grande partie de ce qu’on décrit comme la « créativité » ou les « hallucinations » d’un modèle relève simplement d’un paramètre d’échantillonnage. Temperature Sampling rend la distribution et la sélection visibles côte à côte.

Pourquoi il est utile de le savoir

Cela transforme un mystère en spécification. « Le modèle n’est pas fiable » ne permet pas d’agir. « Le modèle ne voit pas les lettres, il faut donc confier l’orthographe et le comptage de caractères à du code » le permet. Tout comme « cette langue coûte trois fois plus de jetons, il faut prévoir le budget en conséquence » et « cette sortie a été échantillonnée à une température qui ne donnera pas de résultats réproductibles ».

Presque toutes les décisions pratiques pour bien utiliser ces systèmes découlent de la compréhension de la couche dont provient un comportement — le tokeniseur, la géométrie des plongements ou l’échantillonneur. Aucun de ces trois éléments ne constitue de l’intelligence, et tous trois sont inspectables.

Comment le vocabulaire est construit

La méthode habituelle est le codage par paires d’octets (byte pair encoding), et elle est plus simple que sa réputation ne le laisse penser. On commence avec chaque caractère sous forme de jeton individuel. On compte toutes les paires adjacentes dans l’ensemble du corpus, on trouve la paire la plus fréquente et on la fusionne en un seul nouveau jeton. On répète l’opération quelques dizaines de milliers de fois.

Ce qui en émerge n’est pas une analyse linguistique, mais un classement par fréquence. Les mots anglais courants subsistent entiers parce qu’ils étaient fréquents dans le corpus ; la morphologie n’est capturée que là où elle coïncide par hasard avec la fréquence. Le tokeniseur n’a aucune notion du fait que « running » contient « run » — il ne le représentera ainsi que si ce découpage s’est trouvé être le plus fréquent lors du comptage.

Cela a une conséquence qu’il convient d’énoncer clairement : le vocabulaire est le fossile d’un corpus particulier à un moment donné. Modifiez le texte d’entraînement et les découpes changent. Deux modèles dotés de tokeniseurs différents ne sont pas seulement en désaccord sur la sortie ; ils sont en désaccord sur ce qu’est l’entrée.

Pourquoi ce n’est pas si simple à corriger

La réaction évidente consiste à fournir au modèle des caractères à la place. Certains modèles le font, mais ce compromis a un coût.

Les jetons existent pour raccourcir la séquence. Une page d’anglais compte environ 250 jetons ou 1 200 caractères, et le coût du mécanisme d’attention augmente comme le carré de la longueur de la séquence — ainsi, travailler au niveau des caractères coûte environ vingt fois plus de calcul pour le même passage. La tokenisation est une étape de compression, et elle est soumise exactement au même arbitrage que dans l’article sur la compression : vous obtenez des séquences plus courtes en renonçant à l’accès à la structure sous le jeton.

Il s’agit donc d’un échange délibéré entre la visibilité au niveau des caractères et la longueur de la séquence, effectué avant même que le modèle ne voie quoi que ce soit, et son coût se fait sentir précisément là où le détail au niveau du caractère était essentiel.

Une astuce de compression datant de 1994

Ce schéma de découpe a une histoire singulière. Le codage par paires d’octets (byte pair encoding) a été publié par Philip Gage en 1994 comme un algorithme de compression de données, dans une revue de programmation, pour réduire la taille des fichiers. Sa règle consistait à trouver la paire d’octets adjacents la plus fréquente et à la remplacer par un octet non utilisé, puis à répéter l’opération.

En 2016, Sennrich, Haddow et Birch l’ont emprunté pour la traduction automatique, non pas pour compresser quoi que ce soit, mais pour construire un vocabulaire capable de représenter les mots rares sous forme de morceaux plutôt que d’y renoncer.

Ainsi, une astuce de compression vieille de trente ans, conçue à une époque où la préoccupation était l’espace disque, détermine ce que les plus grands modèles d’aujourd’hui sont capables de percevoir.