L’architecture transformer est une conception de réseau de neurones construite autour de la self-attention. Au lieu de s’appuyer principalement sur un traitement pas à pas, elle permet à chaque token de récupérer des informations depuis d’autres tokens pertinents de la séquence.

C’est pourquoi les transformers fonctionnent bien pour le langage et d’autres tâches sur des séquences. Si un mot dépend d’un autre mot très éloigné, l’attention donne au modèle un chemin direct entre eux.

Ce que signifie l’architecture transformer

Un bloc transformer fait plus qu’appliquer une seule formule, mais la self-attention en est l’idée centrale. En self-attention, chaque token produit trois vecteurs :

  • une requête, qui représente ce que ce token cherche
  • une clé, qui représente ce que ce token offre pour la mise en correspondance
  • une valeur, qui est l’information pouvant être transmise

Si les représentations des tokens sont organisées dans une matrice XX, une tête d’attention forme généralement

Q=XWQ,K=XWK,V=XWVQ = XW_Q, \qquad K = XW_K, \qquad V = XW_V

WQW_Q, WKW_K et WVW_V sont des matrices apprises.

La formule standard de l’attention par produit scalaire mis à l’échelle est

Attention(Q,K,V)=softmax ⁣(QKTdk)V\operatorname{Attention}(Q, K, V) = \operatorname{softmax}\!\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Ici, dkd_k est la dimension des clés. La mise à l’échelle par dk\sqrt{d_k} aide à éviter que les scores bruts de produit scalaire ne deviennent trop grands quand la dimension augmente.

Le softmax est appliqué ligne par ligne. Chaque ligne répond à la question d’un token : « Quelle attention dois-je accorder aux autres tokens ? »

Comment fonctionne la self-attention en langage simple

La self-attention ne choisit généralement pas un token en ignorant tous les autres. Elle construit une moyenne pondérée des vecteurs de valeurs.

Si un token correspond fortement à la clé d’un autre token, ce token reçoit un poids plus grand. Si la correspondance est faible, le poids est plus petit. La sortie pour un token est donc un mélange d’informations de la séquence tenant compte du contexte.

Cela aide pour l’accord sujet-verbe, la référence des pronoms et d’autres relations à longue portée. Le modèle n’a pas besoin que l’information traverse de nombreuses étapes intermédiaires avant de devenir disponible.

Exemple détaillé de self-attention

Prenons une requête et deux tokens candidats dans une seule tête d’attention. Pour garder des calculs simples, utilisons dk=1d_k = 1.

Supposons que le token courant ait pour requête

q=[2]q = [2]

et que les deux tokens candidats aient

k1=[2],k2=[1]k_1 = [2], \qquad k_2 = [1]

avec pour valeurs

v1=[10],v2=[4].v_1 = [10], \qquad v_2 = [4].

Les scores d’attention bruts sont les produits scalaires :

qk1T=4,qk2T=2.qk_1^T = 4, \qquad qk_2^T = 2.

Comme dk=1d_k = 1, le facteur d’échelle est 1=1\sqrt{1} = 1, donc les scores mis à l’échelle restent 44 et 22.

Appliquons maintenant softmax à ces deux scores :

α1=e4e4+e20.881,α2=e2e4+e20.119.\alpha_1 = \frac{e^4}{e^4 + e^2} \approx 0.881, \qquad \alpha_2 = \frac{e^2}{e^4 + e^2} \approx 0.119.

La sortie de l’attention est la combinaison pondérée

α1v1+α2v2=0.881(10)+0.119(4)9.29.\alpha_1 v_1 + \alpha_2 v_2 = 0.881(10) + 0.119(4) \approx 9.29.

L’idée clé est simple : la sortie se rapproche davantage de v1v_1 parce que la requête correspond plus fortement à k1k_1 qu’à k2k_2.

C’est le schéma de base à l’intérieur d’un modèle beaucoup plus grand. Les transformers réels font cela dans des dimensions plus élevées et sur de nombreux tokens à la fois, mais l’idée arithmétique reste la même.

Ce qu’il y a d’autre dans un bloc transformer

Un transformer, ce n’est pas seulement une formule d’attention. Un bloc standard contient généralement :

  • une attention multi-tête, afin que le modèle puisse apprendre plusieurs types de relations en même temps
  • un réseau feedforward appliqué position par position, qui transforme chaque représentation de token après l’attention
  • des connexions résiduelles, qui aident à préserver et affiner l’information à travers les couches
  • une normalisation de couche, qui aide à stabiliser l’entraînement

Dans l’architecture transformer d’origine pour les tâches de séquence à séquence, le modèle comportait une pile d’encodeurs et une pile de décodeurs.

  • L’encodeur utilise la self-attention sur la séquence d’entrée.
  • Le décodeur utilise une self-attention masquée afin qu’une position ne puisse pas regarder les futurs tokens de sortie.
  • Le décodeur peut aussi utiliser la cross-attention, où les requêtes viennent du décodeur et les clés et valeurs viennent de la sortie de l’encodeur.

De nombreux modèles de langage modernes n’utilisent que la partie décodeur. L’idée centrale de l’attention est toujours là, mais l’architecture globale est spécialisée pour la prédiction du token suivant.

Pourquoi les transformers ont besoin d’informations de position

L’attention seule est équivariante par permutation par rapport aux tokens d’entrée. En langage simple, si vous appliquez seulement l’attention au même ensemble de vecteurs de tokens sans ajouter de position, le modèle ne sait pas intrinsèquement quel token vient en premier.

C’est pourquoi les transformers ajoutent une information de position, comme des embeddings de position appris ou des encodages positionnels. Sans ce signal supplémentaire, les tâches sensibles à l’ordre comme le langage seraient beaucoup plus difficiles à modéliser correctement.

Erreurs fréquentes à propos de l’architecture transformer

Penser que l’attention est tout le transformer

C’est l’idée centrale, mais l’architecture dépend aussi des couches feedforward, des chemins résiduels, de la normalisation et de l’information de position.

Confondre self-attention et cross-attention

En self-attention, QQ, KK et VV proviennent de la même séquence. En cross-attention, ils ne viennent pas tous de la même source.

Oublier le rôle du masquage

Les modèles de langage à décodeur seul ont besoin d’un masquage causal pendant l’entraînement et l’inférence afin qu’un token ne puisse pas prêter attention aux tokens futurs.

Considérer les poids d’attention comme une explication complète

Les poids d’attention peuvent être informatifs, mais ils ne constituent pas une preuve complète du raisonnement du modèle. Le comportement final dépend aussi des vecteurs de valeurs, des couches suivantes et des transformations non linéaires.

Quand les modèles transformers sont utilisés

Les transformers sont largement utilisés pour la modélisation du langage, la traduction, le résumé, la génération de code, la parole et de nombreuses tâches en vision. Ils fonctionnent particulièrement bien lorsque les relations au sein d’une séquence ou d’un ensemble comptent davantage que des motifs purement locaux.

Ils ne sont pas magiques dans tous les contextes. Pour de très petits jeux de données, des contraintes strictes de temps réel ou des problèmes où la structure inductive locale compte le plus, une autre architecture peut encore être plus adaptée.

Essayez un problème similaire

Prenez une expression de trois mots et concentrez-vous sur un seul mot. Décidez lesquels des autres mots devraient recevoir un poids d’attention élevé et pourquoi, puis esquissez un petit exemple requête-clé-valeur correspondant à cette intuition.

Si vous voulez aller un peu plus loin, calculez à la main une petite sortie d’attention. C’est généralement le moyen le plus rapide de passer de « Je connais la formule » à « Je comprends ce que fait l’architecture ».

Besoin d'aide pour un problème ?

Envoyez votre question et obtenez une solution vérifiée, étape par étape, en quelques secondes.

Ouvrir GPAI Solver →