Imaginez lire une phrase dont tous les mots seraient jetés en vrac dans un sac, sans ordre. C'est exactement ce que « voit » un Transformer sans encodage positionnel : son mécanisme d'attention traite l'entrée comme un ensemble non ordonné de jetons. L'encodage positionnel (positional encoding) est l'astuce qui réinjecte l'information d'ordre et de distance entre les mots.
Pourquoi en a-t-on besoin ?
Contrairement aux réseaux récurrents (RNN) qui lisent les mots un à un, l'attention d'un Transformer est permutation-invariante : « le chat mange la souris » et « la souris mange le chat » produiraient les mêmes représentations. Pour distinguer ces phrases, on ajoute à chaque vecteur de mot (embedding) un vecteur dépendant de sa position dans la séquence.
L'encodage sinusoïdal d'origine
Dans l'article fondateur Attention Is All You Need (2017), les auteurs proposent des fonctions sinus et cosinus de fréquences différentes :
$$PE_{(pos,\,2i)} = \sin!\left(\frac{pos}{10000^{2i/d}}\right), \quad PE_{(pos,\,2i+1)} = \cos!\left(\frac{pos}{10000^{2i/d}}\right)$$
où $pos$ est la position, $i$ l'indice de dimension et $d$ la taille de l'embedding. Chaque position obtient ainsi une signature unique, et les positions relatives s'expriment par de simples combinaisons linéaires.
Les grandes familles
| Type | Principe | Exemples |
|---|---|---|
| Absolu fixe | Sinusoïdes prédéfinies | Transformer original |
| Absolu appris | Vecteurs entraînés | BERT, GPT-2 |
| Relatif / rotatif | Encode la distance entre jetons | RoPE (LLaMA), ALiBi |
Les approches modernes comme RoPE ont l'avantage de mieux généraliser à des séquences plus longues que celles vues à l'entraînement.
Sans encodage positionnel, un Transformer entendrait les mots mais en ignorerait l'ordre — l'encodage lui rend le sens de la phrase.