L’attention permet à chaque position d’une séquence de construire sa représentation en pondérant toutes les autres positions selon leur pertinence pour elle. Ces poids ne sont pas appris une fois pour toutes : ils sont calculés pour chaque entrée, à la volée.
Trois vecteurs sont produits pour chaque position par des projections linéaires apprises :
Le poids d’attention entre deux positions est le produit scalaire de la requête de l’une et de la clé de l’autre, normalisé par un softmax sur toutes les positions. La sortie est la moyenne des valeurs pondérée par ces poids.
L’analogie qui aide : c’est une recherche dans un dictionnaire, en version continue. Au lieu de récupérer la valeur d’une seule clé exacte, on récupère un mélange de toutes les valeurs, pondéré par la ressemblance entre la requête et chaque clé.
Le détail qu’il faut savoir justifier : la division par la racine de la dimension des clés. Sans elle, les produits scalaires croissent avec la dimension, le softmax sature, et les gradients disparaissent. C’est une question fréquente, et savoir expliquer ce facteur d’échelle distingue immédiatement.
Plutôt qu’une seule attention sur toute la dimension, on en calcule plusieurs en parallèle sur des sous-espaces, puis on concatène. Chaque tête peut ainsi se spécialiser : une sur l’accord grammatical, une sur les liens de coréférence, une sur la position voisine. C’est de la capacité de représentation gagnée pour un coût de calcul identique, puisque chaque tête travaille sur une dimension réduite.
La complexité est quadratique en longueur de séquence : doubler le contexte quadruple le calcul et la mémoire. C’est le verrou central de l’extension des fenêtres de contexte, et la raison d’être de toute une littérature — attention creuse, attention linéaire, FlashAttention qui réorganise les calculs pour éviter de matérialiser la matrice complète, et les architectures à espace d’états comme Mamba.
Les trois variantes à savoir distinguer : l’auto-attention, où requêtes et clés viennent de la même séquence ; l’attention croisée, où les requêtes viennent du décodeur et les clés de l’encodeur ; et l’attention causale, masquée pour qu’une position ne voie que le passé — c’est celle des modèles de génération, et le masque est ce qui les empêche de tricher en lisant la réponse.