Imaginez devoir lire un livre en ne connaissant que des lettres isolées : ce serait lent et coûteux. À l'inverse, mémoriser chaque mot possible serait irréaliste. L'encodage par paires d'octets (Byte Pair Encoding, BPE) trouve le juste milieu : il découpe le texte en sous-mots fréquents, le vocabulaire dans lequel pensent réellement les grands modèles de langage.
D'un algorithme de compression à la tokenisation
À l'origine, le BPE était une technique de compression de données : on remplace itérativement la paire de symboles adjacents la plus fréquente par un nouveau symbole. Appliqué au texte, le principe devient un apprentissage de vocabulaire :
- On part des unités élémentaires (caractères ou octets).
- On compte toutes les paires adjacentes dans le corpus.
- On fusionne la paire la plus fréquente en un nouveau token.
- On répète jusqu'à atteindre une taille de vocabulaire cible.
Formellement, à chaque étape on choisit la paire $(a, b)$ qui maximise sa fréquence :
$$ (a, b) = \arg\max_{(x, y)} \; \text{count}(x, y) $$
Pourquoi les LLM en raffolent
Le BPE résout le problème des mots inconnus (out-of-vocabulary) : même un mot jamais vu se décompose en sous-morceaux connus. La variante byte-level (utilisée par GPT-2 et ses successeurs) part des octets bruts, garantissant qu'aucun caractère n'est jamais hors vocabulaire, quelle que soit la langue ou l'emoji.
| Approche | Vocabulaire | Mots inconnus |
|---|---|---|
| Par mot | Énorme | Fréquents |
| Par caractère | Minuscule | Aucun, mais séquences très longues |
| BPE (sous-mots) | Modéré | Quasi aucun |
Le BPE est le compromis qui permet aux modèles de couvrir toutes les langues avec un vocabulaire fini : un alphabet réinventé pour les machines.