Aller au contenu principal

Mécanisme d'attention

Supposons que deux informations soient représentées par v1=[2,0]\mathbf{v}_1=[2,0] et v2=[0,4]\mathbf{v}_2=[0,4]. Prendre la moitié de chacune donne

12[2,0]+12[0,4]=[1,2].\tfrac12[2,0]+\tfrac12[0,4]=[1,2].

Quelle proportion prendre de chacune ? L’attention calcule ces poids à partir du contenu, au lieu de les fixer à une moitié.

Quel poids attribuer à chaque vecteur ?

Les vecteurs à mélanger sont appelés valeurs (values). Pour choisir leurs poids, introduisons une requête (query), le vecteur utilisé pour rechercher l’information : ici q=[1,0]\mathbf q=[1,0].

Chaque valeur possède une clé (key) à comparer avec la requête. Prenons k1=[1,0]\mathbf k_1=[1,0] et k2=[0,1]\mathbf k_2=[0,1]. Calculons d’abord les scores, avec la requête et les clés seulement. Les produits scalaires valent qk1=1\mathbf q^\top\mathbf k_1=1 et qk2=0\mathbf q^\top\mathbf k_2=0. La division par 2\sqrt2, racine carrée de la dimension des clés, donne les scores [1/2,0][0.707,0][1/\sqrt2,0]\approx[0.707,0].

Softmax transforme ces scores en poids positifs ou nuls dont la somme vaut un : il prend leurs exponentielles et divise par leur somme.

α1=e1/2e1/2+10.67,α2=1e1/2+10.33.\alpha_1=\frac{e^{1/\sqrt2}}{e^{1/\sqrt2}+1}\approx0.67, \qquad \alpha_2=\frac{1}{e^{1/\sqrt2}+1}\approx0.33.

Mélangeons ensuite les valeurs : chaque poids multiplie la valeur de la même position. Avec les poids arrondis, la sortie est

0.67[2,0]+0.33[0,4][1.34,1.32].0.67[2,0]+0.33[0,4]\approx[1.34,1.32].

La meilleure clé n'efface pas l'autre valeur. La température, les clés en double, les écarts de score et les masques modifient tous le mélange obtenu.

Modifiez une composante de q\mathbf q ci-dessous ; les clés et les valeurs restent fixes. Pour q=[0,0]\mathbf q=[0,0], les deux scores sont nuls, les poids valent [1/2,1/2][1/2,1/2] et la sortie [1,2][1,2]. Pour [0,1][0,1], les poids s’inversent et la sortie vaut environ [0.66,2.68][0.66,2.68]. Les scores déterminent les proportions ; les valeurs déterminent ce qui est mélangé.

xyv₁ = [2, 0]v₂ = [0, 4]O

k1 = [1, 0]Score 0.707

Poids 67.0%

k2 = [0, 1]Score 0.000

Poids 33.0%

Sortie O: [1.340, 1.321]Chaque score vaut q · kᵢ / √2 ; softmax donne deux poids dont la somme vaut 1. O = w₁v₁ + w₂v₂ est le mélange pondéré des deux vecteurs de valeurs. Modifier q déplace O sur le segment entre v₁ et v₂.

Pour un nombre quelconque de paires clé/valeur, ce calcul s’écrit

Attention(q,K,V)=iαivi,αi=expa(q,ki)jexpa(q,kj).\operatorname{Attention}(\mathbf{q},K,V)=\sum_i\alpha_i\mathbf{v}_i, \qquad \alpha_i=\frac{\exp a(\mathbf{q},\mathbf{k}_i)}{\sum_j\exp a(\mathbf{q},\mathbf{k}_j)}.

La requête, la clé et la valeur sont des rôles calculatoires, et non des significations intrinsèques. Ce sont généralement des projections apprises, et les valeurs n'ont pas besoin d'être égales aux clés. Ce calcul des poids à partir du contenu, suivi du mélange des valeurs, est une opération différentiable appelée adressage par le contenu.

Scores

L'attention additive utilise un petit réseau appris :

a(q,k)=vtanh(Wqq+Wkk).a(\mathbf{q},\mathbf{k})=\mathbf{v}^{\top}\tanh(W_q\mathbf{q}+W_k\mathbf{k}).

L'attention par produit scalaire mis à l'échelle (scaled dot-product attention) utilise

a(q,k)=qkdk.a(\mathbf{q},\mathbf{k})=\frac{\mathbf{q}^{\top}\mathbf{k}}{\sqrt{d_k}}.

Si les coordonnées de la requête et de la clé sont mutuellement indépendantes, de moyenne nulle et de variance unitaire, le produit scalaire non redimensionné a une variance dkd_k et un écart-type dk\sqrt{d_k}, ce qui peut saturer le softmax. La mise à l'échelle est un choix de conception adapté à ce score, et non une loi générale pour toute attention.

Forme matricielle et masques

Pour QRnq×dkQ\in\mathbb{R}^{n_q\times d_k}, KRnk×dkK\in\mathbb{R}^{n_k\times d_k} et VRnk×dvV\in\mathbb{R}^{n_k\times d_v} :

A=softmax ⁣(QKdk+M),O=AV.A=\operatorname{softmax}\!\left(\frac{QK^{\top}}{\sqrt{d_k}}+M\right), \qquad O=AV.

AA a pour dimensions nq×nkn_q\times n_k et OO a pour dimensions nq×dvn_q\times d_v. Les masques s’appliquent avant Softmax : le padding exclut les clés de remplissage, le masque causal exclut les positions futures, et les masques structurels limitent les connexions locales, de graphe ou par blocs. Avec un masque additif -\infty, une ligne entièrement masquée contient uniquement des logits -\infty : le softmax ordinaire n’y définit aucune distribution de probabilités. Consultez le comportement de l’API choisie et traitez explicitement ces lignes ; aucune valeur de retour n’est universelle. Modifier un token masqué ne doit pas changer une sortie non masquée si les représentations Q/K/V autorisées restent fixes.

Normaliser sur les clés, pas sur les requêtes

Le softmax de AA agit séparément sur chaque ligne, donc sur l’axe des clés. Pour un masque additif, Mij=0M_{ij}=0 autorise une paire et -\infty l’interdit. Dans une séquence causale de trois positions, la première ligne voit la première clé, la deuxième les deux premières et la troisième les trois. Si tous les scores autorisés sont nuls, les lignes valent [1,0,0][1,0,0], [1/2,1/2,0][1/2,1/2,0] et [1/3,1/3,1/3][1/3,1/3,1/3]. La diagonale est autorisée quand l’entrée à cette position prédit le token suivant. C’est la convention du Transformer original.

Un masque de padding sur les clés ne supprime pas automatiquement les sorties des requêtes de padding : les exclure de la perte ou de l’agrégation ultérieure. Les conventions booléennes varient selon les API ; vérifier si True signifie autorisé ou interdit. Le test d’invariance au token masqué suppose que Q/K/V aux positions autorisées restent fixes : aucun calcul en amont ne doit déjà y avoir mélangé le contenu masqué.

L’auto-attention (self-attention) tire Q/K/V d’une même représentation, généralement avec des projections apprises distinctes ; l’attention croisée (cross-attention) tire les requêtes d’un côté et K/V de l’autre. L’attention multi-têtes opère dans plusieurs sous-espaces projetés, puis concatène et projette les résultats. Les têtes peuvent être redondantes ou changer avec une reparamétrisation tout en conservant des sorties proches ; aucune ne correspond nécessairement à un concept humain stable, comme la syntaxe ou la coréférence.

L’attention de style Bahdanau a d'abord permis à chaque étape du décodeur RNN d'accéder à plusieurs états de l'encodeur ; Luong a comparé les formes globales et locales. Le Transformer a ensuite fait de l'auto-attention une opération de couche principale. L'attention n'a pas commencé avec le Transformer.

Différentes conceptions d'efficacité pour différents problèmes

L’auto-attention dense forme n×nn\times n scores ; à dimensions de tête fixes, le temps et la mémoire intermédiaire de l’implémentation naïve croissent quadratiquement avec la longueur. Les variantes ci-dessous ciblent des coûts différents.

ConceptionModificationNe résout pas automatiquement
FlashAttentionattention exacte tuilée et soucieuse des E/S (IO-aware) sans stocker toute la matrice intermédiairel'arithmétique reste généralement quadratique ; dépendance au kernel et au matériel
MQAles têtes de requête partagent une seule tête K/Vcompromis de capacité et de qualité
GQAles têtes de requête partagent un ensemble plus restreint de têtes K/Vreste uniquement un compromis cache/qualité
fenêtre glissante / creuse (sparse)restreint les positions atteignablesles positions omises nécessitent des chemins inter-couches
attention linéaire / à base de noyaux (kernel)réordonne ou approxime l'agrégationla normalisation, le comportement numérique et la qualité peuvent différer de Softmax

MQA/GQA réduisent surtout le stockage et le trafic mémoire du cache KV autorégressif, sans réduire le nombre de têtes de requête. Ces variantes changent le partage, pas la fonction de score ; leurs noms seuls ne garantissent ni qualité, ni adéquation à l’entraînement, ni compatibilité. Rapportez le nombre de têtes de requête, de têtes K/V, la dimension par tête, la fenêtre, le type de données (dtype) et le kernel plutôt que de dire simplement « attention efficace ». Les RNNs/SSMs peuvent convenir au streaming à état fixe ; la convolution peut économiser données et calcul lorsque la localité est forte.

Frontière d'interprétation

Les poids d'attention sont des coefficients de routage au sein d'une passe avant unique, mais ne constituent pas automatiquement une importance causale. Des poids différents peuvent produire des sorties similaires ; les valeurs et les couches ultérieures modifient l'influence ; les gradients et les interventions peuvent être en désaccord ; et la seule netteté de distribution ne dit pas grand-chose.

« Attention is not Explanation » démontre les défaillances de l'interprétation directe ; une analyse concurrente soutient que l'attention peut néanmoins être informative sous des diagnostics et des tests contrefactuels définis. La conclusion défendable est que les poids peuvent constituer des indices, mais qu'ils doivent être associés à des suppressions, remplacements ou interventions — et non traités comme une explication autonome.

Liens entre les explications

La normalisation utilise la même opération que la régression softmax, mais les poids mélangent ici les valeurs au lieu de prédire des classes. La note Transformer assemble attention, information de position, connexions résiduelles, normalisation et couches feed-forward. Les variantes d’attention et le cache KV reprennent ces formes Q/K/V pour expliquer l’inférence autorégressive et son coût mémoire.

Cette description en Q/K/V est orientée vers le NLP et la pratique des Transformers. La vision, les ensembles, les graphes et les formulations antérieures à base de noyaux statistiques ne reçoivent qu'une couverture de frontière.

Explorer les liensOuvrir le réseau