Aller au contenu
Kudos AI

Tokenisation

Le découpage du texte en unités discrètes sur lesquelles un modèle de langue opère réellement, typiquement des fragments de sous-mots plutôt que des mots entiers.

Aussi appelé : Codage par paires d’octets, BPE, Tokenisation en sous-mots

Un mot scindé en trois sous-mots, puis un vecteur one-hot multiplié à travers la matrice d’embeddings, chaque autre ligne visiblement annulée.

Comprendre Tokenisation

Un modèle de langue ne peut opérer ni sur des caractères bruts ni sur des mots abstraits ; il lui faut un vocabulaire fini de symboles discrets associés à des identifiants entiers, qui indexent ensuite une table d’embeddings. La tokenisation est l’étape qui réalise cette segmentation, et sa conception a des conséquences qui traversent tout le système.

Découper sur les espaces en mots entiers échoue dans deux directions. Le vocabulaire devient énorme tout en restant incomplet, puisque nouveaux mots, noms propres, fautes de frappe et variantes morphologiques apparaissent sans fin ; et tout mot absent du vocabulaire doit être remplacé par un jeton inconnu, ce qui détruit de l’information. Découper en caractères individuels évite cela mais produit des séquences très longues avec peu de sens par jeton.

Le codage par paires d’octets emprunte la voie médiane. Partant des caractères individuels, il repère à répétition la paire adjacente de symboles la plus fréquente et la fusionne en un nouveau symbole, jusqu’à ce que le vocabulaire atteigne une taille cible. Les mots fréquents finissent en jetons uniques, tandis que les mots rares sont décomposés en fragments porteurs de sens. Raschka note que les modèles GPT emploient exactement ce schéma, et que grâce à lui ils n’ont besoin d’aucun jeton de mot inconnu : toute chaîne est représentable, quitte à se rabattre sur des morceaux plus petits.

Cela a des conséquences pratiques qu’il vaut la peine d’intérioriser. Le nombre de jetons diffère du nombre de mots, souvent nettement, et ce sont les jetons que mesurent les fenêtres de contexte et la tarification. Les tokeniseurs entraînés majoritairement sur l’anglais fragmentent aussi plus agressivement les autres langues, si bien qu’une même phrase peut coûter plusieurs fois plus de jetons dans une langue que dans une autre. Et comme le modèle voit des jetons plutôt que des lettres, les tâches au niveau du caractère, comme compter les lettres d’un mot, lui sont véritablement malcommodes.

Exemple : Tokenisation

Un mot courant comme « the » est assez fréquent pour survivre en un seul jeton. Un mot plus rare comme « tokenization » peut être scindé en morceaux tels que « token » et « ization », de sorte que le modèle voit encore le radical reconnaissable plutôt qu’un symbole inconnu opaque.

La procédure de fusion est mécanique. Sur un corpus de caractères, la paire qui co-occurre le plus souvent, disons « t » suivi de « h », est fusionnée en « th ». Les comptes sont recalculés et la paire suivante la plus fréquente fusionnée, et ainsi de suite pour un nombre fixé de fusions. La liste de fusions apprise est le tokeniseur.

Comme le repli se fait vers des unités toujours plus petites, et en dernier ressort vers les octets bruts, aucune entrée n’est irreprésentable. Un nom propre jamais vu ou un terme technique inédit est simplement encodé en plusieurs morceaux de sous-mots au lieu de déclencher un échec de hors-vocabulaire.

Questions fréquentes

Pourquoi ne pas simplement tokeniser en mots ?

Le vocabulaire serait immense et resterait incomplet, puisque la langue produit continuellement des mots nouveaux, et tout mot jamais vu se réduirait à un jeton inconnu. La tokenisation en sous-mots garde le vocabulaire borné tout en restant capable de tout encoder.

Pourquoi le nombre de jetons diffère-t-il autant selon les langues ?

Parce que les règles de fusion sont apprises d’un corpus d’entraînement. Un tokeniseur bâti principalement sur l’anglais apprend des fusions qui compriment efficacement l’anglais, et les langues sous-représentées dans ce corpus sont découpées en morceaux plus nombreux et plus petits, ce qui augmente leur coût en jetons à contenu identique.

Pourquoi les modèles de langue peinent-ils à compter les lettres d’un mot ?

Ils ne voient jamais les lettres. Un mot peut arriver sous forme d’un ou deux jetons de sous-mots sans structure de caractères explicite : les questions sur les caractères individuels portent donc sur une information que la représentation d’entrée du modèle a largement écartée.

En résumé

La tokenisation convertit le texte en l’ensemble borné d’unités de sous-mots qu’un modèle peut consommer. Le codage par paires d’octets en est la méthode standard, supprimant entièrement le problème du hors-vocabulaire, et ses conséquences se voient dans les limites de contexte, la tarification, le coût selon la langue, et l’angle mort du modèle sur les caractères isolés.