Les identifiants numériques.
Dans la leçon précédente, vous avez vu le tokenizer découper baba en tokens, puis le transformer en [50, 49, 50, 49]. Arrêtons-nous maintenant sur ces nombres. Que représente exactement un identifiant dans le vocabulaire ? En quoi se distingue-t-il de la position du token dans la phrase ? Et pourquoi ce simple numéro ne suffit-il pas encore à traduire le sens ?
Un numéro d’identifiant comme référence
Le modèle ne sait manipuler que des nombres. Chaque token reçoit donc un numéro unique, son identifiant (en anglais token ID), qui sert de référence dans le catalogue du vocabulaire. Dans le vocabulaire actuel du laboratoire, b correspond à 50 et a à 49.
Les numéros attribués dans ce cours appartiennent au vocabulaire pédagogique MiniLab que nous avons créé pour l’occasion : un autre tokenizer, comme celui d’un modèle large d’OpenAI, va utiliser d’autres identifiants.
Une référence stable
Un token conserve son identifiant, quelle que soit la phrase dans laquelle il apparaît. Le modèle peut ainsi retrouver la même référence pendant l’entraînement et lors des requêtes (que nous aborderons plus tard).
Cette stabilité a une conséquence : puisque le même caractère porte toujours le même identifiant, les deux b de baba sont tous les deux codés 50. Comment le modèle peut-il alors savoir lequel vient en premier ? L’identifiant seul ne le lui dit pas. Il faut donc ajouter un repère supplémentaire : la position.
La position
Le token est l’unité de texte ; son identifiant est son numéro dans le vocabulaire ; sa position indique sa place dans la séquence. Si un token apparaît plusieurs fois, son identifiant reste le même, mais chaque occurrence a sa propre position.
Tokens b a b a
Identifiants 50 49 50 49
Positions 0 1 2 3Les identifiants se répètent, les positions jamais. Les positions commencent à 0. Essayez avec ananas : le a y apparaît trois fois avec l’identifiant 49, et le n deux fois avec l’identifiant 62. Comparez les informations affichées sur leurs cartes.
Un identifiant ne contient encore aucun sens
L'identifiant est un simple numéro de registre : il sert uniquement à désigner le token, sans rien dire sur ce qu'il signifie. Notre tokenizer travaille caractère par caractère, mais imaginons un tokenizer par mots, où « chat » et « chien » auraient chacun leur identifiant, par exemple 412 et 413. Ces deux numéros se suivent, mais cette proximité n’indique aucune proximité de sens : « chat » aurait tout aussi bien pu recevoir 7, et « table » le numéro 413. De plus, un identifiant reste le même quel que soit le contexte, alors que le sens d'un mot dépend de la phrase entière, comme « chat » qui peut désigner « un animal domestique » ou « un fil de discussion » selon le contexte.
Une suite transmise au modèle
Les identifiants sont donc regroupés dans une séquence qui conserve l’ordre des tokens. Cette suite ordonnée est transmise au modèle pour les étapes suivantes.
À ce stade, l’identifiant n'est qu'une référence technique et ne porte aucune information de sens. C'est pourquoi, dans la prochaine leçon, nous verrons comment le modèle résout cette limite grâce aux embeddings.
Un identifiant est une référence stable dans un vocabulaire. Il se distingue de la position du token et ne porte pas de sens à lui seul. Les identifiants sont transmis dans l’ordre au modèle.