Polydesk-logotype
Polydesk.ai — Header

Mecanisme d’Attention

Definition Le mecanisme d’attention est une technique de deep learning qui permet a un modele de ponderer dynamiquement l’importance de chaque element d’une sequence (ou d’un ensemble de donnees) par rapport a un element cible. C’est le composant fondamental de l’architecture Transformer.
ProprieteDetail
CategorieMecanisme de deep learning
OrigineBahdanau et al. (2014), popularise par Vaswani et al. (2017, « Attention Is All You Need »)
Formule cleAttention(Q, K, V) = softmax(QK^T / sqrt(d_k)) V
VariantesSelf-attention, cross-attention, multi-head attention
Utilise dansLLMs, modeles de diffusion, vision par ordinateur

Intuition

Avant l’attention, les modeles de sequences comme les RNNs et LSTMs traitaient les sequences de maniere sequentielle, compressant toute l’information dans un vecteur de taille fixe (le hidden state final). Pour les longues sequences, ce goulot d’etranglement perdait inevitablement de l’information.

L’attention resout ce probleme en permettant au modele de « regarder » directement n’importe quelle position de la sequence d’entree a chaque etape de generation. Par exemple, pour traduire « Le chat est sur le tapis », quand le modele genere le mot « cat », il peut directement se concentrer sur « chat » dans la phrase source, sans dependre d’un vecteur intermediaire compresse.

En termes simples, l’attention repond a la question : « Etant donne ce que je suis en train de traiter, quelles parties de l’entree sont les plus pertinentes ? »

Scaled Dot-Product Attention

La forme standard de l’attention, introduite dans le papier « Attention Is All You Need » (Vaswani et al., 2017), utilise trois matrices : Query (Q), Key (K) et Value (V). L’analogie la plus intuitive est un systeme de recherche : la Query est la question posee, les Keys sont les index d’une base de donnees, et les Values sont les contenus associes a ces index.

Le calcul se fait en quatre etapes. On calcule le produit scalaire entre chaque Query et toutes les Keys (QK^T), ce qui mesure la similarite entre la question et chaque element. On divise par la racine carree de la dimension des Keys (sqrt(d_k)) pour stabiliser les gradients. On applique un softmax pour obtenir des poids d’attention normalises (qui somment a 1). On multiplie ces poids par les Values pour obtenir la sortie, qui est une combinaison ponderee des Values.

La formule complete est : Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) * V. Le facteur de normalisation 1/sqrt(d_k) est crucial : sans lui, pour des dimensions elevees, les produits scalaires deviennent tres grands, les softmax saturent et les gradients disparaissent.

Multi-Head Attention

Plutot que de calculer une seule fonction d’attention, le multi-head attention projette Q, K et V dans h sous-espaces differents (les « tetes »), calcule l’attention separement dans chaque sous-espace, puis concatene et projette les resultats. Typiquement, un Transformer utilise 8 a 128 tetes selon la taille du modele.

Chaque tete apprend a capturer un type different de relation. Par exemple, dans un LLM, une tete peut se specialiser dans les relations syntaxiques (sujet-verbe), une autre dans les coreferences (pronoms vers noms), une autre dans les relations semantiques longue distance. Cette specialisation emerge naturellement de l’entrainement.

Si le modele a une dimension d_model et h tetes, chaque tete opere sur des vecteurs de dimension d_model/h. Le cout total reste le meme qu’une seule attention de dimension d_model, mais la capacite representationnelle est bien superieure.

Types d’attention

Self-attention

Dans la self-attention, Q, K et V viennent tous de la meme sequence. Chaque element de la sequence calcule son attention par rapport a tous les autres elements. C’est le mecanisme central des Transformers : il permet a chaque token de « voir » et d’integrer l’information de tous les autres tokens de la sequence.

Cross-attention

Dans la cross-attention, Q vient d’une sequence et K/V viennent d’une autre. C’est le mecanisme utilise dans les modeles encodeur-decodeur (traduction), dans les modeles de diffusion conditionnes par du texte (Q vient de l’image, K/V du prompt texte encode), et dans les modeles multimodaux.

Causal attention (masked self-attention)

La causal attention empeche chaque position de « voir » les positions futures en appliquant un masque triangulaire. C’est obligatoire pour les modeles autogressifs comme GPT : quand le modele predit le mot suivant, il ne doit pas avoir acces aux mots qui viennent apres. Le masque met a -infini les scores d’attention pour les positions futures avant le softmax.

L’attention dans les Transformers

Un bloc Transformer standard empile plusieurs couches, chacune contenant un sous-bloc de multi-head attention suivi d’un feedforward network (FFN), avec des residual connections et du layer normalization. L’encodeur utilise de la self-attention bidirectionnelle (chaque token voit tous les autres). Le decodeur utilise de la causal self-attention (chaque token ne voit que les precedents) plus de la cross-attention vers la sortie de l’encodeur.

Les LLMs modernes comme GPT, Claude, Gemini et Mistral utilisent des architectures decoder-only avec uniquement de la causal self-attention. Les modeles comme BERT utilisent un encodeur avec de la self-attention bidirectionnelle. Les modeles de traduction et certains modeles generatifs utilisent l’architecture complete encodeur-decodeur.

Complexite et optimisations

La self-attention a une complexite quadratique O(n^2) en memoire et en calcul par rapport a la longueur de la sequence n. Pour une fenetre de contexte de 1M tokens (comme Claude Opus 4.6 ou Gemini 3.1 Pro), cela pose des defis considerables.

Flash Attention (Dao et al., 2022) est l’optimisation la plus impactante. Elle ne change pas la mathematique de l’attention mais reorganise les calculs pour exploiter la hierarchie memoire des GPUs (SRAM vs HBM), reduisant les acces memoire et accelerant le calcul de 2 a 4x. Flash Attention 2 et 3 ont encore ameliore les performances. Pratiquement tous les frameworks modernes l’integrent par defaut.

Les attentions « efficientes » comme Sparse Attention, Longformer et BigBird reduisent la complexite a O(n * sqrt(n)) ou O(n * log(n)) en limitant le champ d’attention (fenetre locale + tokens globaux). Les Ring Attention et Sequence Parallelism distribuent le calcul d’attention sur plusieurs GPUs pour les tres longues sequences.

Les KV-cache (Key-Value cache) accelerent l’inference autoregrssive en stockant les Keys et Values des tokens deja generes, evitant de les recalculer a chaque nouveau token. Les techniques comme GQA (Grouped Query Attention, utilisee par Llama 2+) et MQA (Multi-Query Attention) reduisent la taille du KV-cache en partageant les Keys/Values entre plusieurs tetes de Query.

Attention en vision par ordinateur

Le Vision Transformer (ViT) applique l’attention aux images en les decoupant en patches et en traitant ces patches comme une sequence de tokens. Cette approche a egale puis depasse les CNNs traditionnels sur la classification d’images quand suffisamment de donnees d’entrainement sont disponibles.

Dans les modeles de diffusion, l’attention est utilisee dans les architectures U-Net (self-attention dans les blocs de resolution intermediaire) et dans les Diffusion Transformers (DiT) qui utilisent l’attention comme mecanisme principal.

Astuce Polydesk Pour visualiser comment l’attention fonctionne dans un LLM, essayez BertViz (outil open-source) qui permet d’observer les poids d’attention couche par couche et tete par tete. C’est la meilleure facon de comprendre intuitivement ce que chaque tete d’attention a appris a capturer.

Questions frequentes

Pourquoi l’attention est-elle si importante en IA ?

L’attention a rendu possible les Transformers, qui sont la base de tous les LLMs modernes (GPT, Claude, Gemini, Mistral) et de la plupart des modeles de generation d’images. Elle permet de traiter des sequences longues, de capturer des dependances a longue distance, et de paralleliser le calcul (contrairement aux RNNs sequentiels).

Que signifient Query, Key et Value dans l’attention ?

Query (Q) represente « ce que je cherche », Key (K) represente « ce qui est disponible », et Value (V) represente « le contenu associe ». Le produit QK^T mesure la pertinence de chaque element, et les Values sont ponderees en consequence. C’est analogue a une recherche dans une base de donnees ou la Query est la requete et les Keys sont les index.

Pourquoi l’attention est-elle quadratique ?

Parce que chaque token calcule son attention par rapport a tous les autres tokens. Pour n tokens, cela produit une matrice d’attention n x n, soit O(n^2) en memoire et en calcul. C’est pourquoi les fenetres de contexte tres longues (1M tokens) necessitent des optimisations comme Flash Attention ou des techniques de sparsification.

Quelle est la difference entre self-attention et cross-attention ?

En self-attention, Q, K et V viennent de la meme sequence (le modele attend a lui-meme). En cross-attention, Q vient d’une sequence et K/V d’une autre (le modele attend a une source externe, comme un prompt texte pour guider la generation d’images).

Flash Attention change-t-elle le resultat du calcul d’attention ?

Non. Flash Attention produit exactement le meme resultat mathematique que l’attention standard. La difference est dans l’implementation : elle reorganise les calculs pour minimiser les acces a la memoire lente du GPU (HBM), en effectuant les calculs par blocs dans la memoire rapide (SRAM). C’est une optimisation materielle, pas algorithmique.

Polydesk.ai — Footer