Réponse courte
L’auto-attention permet à chaque mot d’une phrase de construire son sens à partir des autres mots qui l’entourent. Pour chaque mot, le modèle mesure à quel point il correspond à chacun des autres mots, transforme ces scores en poids dont la somme fait 1, et mélange l’information des autres mots selon ces poids.
Question de suivi Que sont les requêtes, les clés et les valeurs?
L’auto-attention (self-attention) est le calcul au cœur du Transformer, l’architecture de réseau derrière GPT-3 et BERT. Son rôle est simple à énoncer. Quand le modèle lit un mot, il doit pouvoir regarder tous les autres mots du passage et décider lesquels aident à l’expliquer. Dans « Le chat s’assit, car il était fatigué », le mot « il » ne veut pas dire grand-chose à lui seul. L’auto-attention est la façon dont le modèle relie « il » à « chat ».
Le préfixe « auto » signifie que la phrase s’observe elle-même : chaque mot regarde les autres mots du même passage, plutôt qu’un texte distinct. La méthode a été exposée en 2017 dans l’article de Google « Attention Is All You Need », qui appelle sa version l’attention par produit scalaire mis à l’échelle (scaled dot-product attention). La voici en six étapes, avec des nombres assez petits pour être vérifiés à la main.
Étape 1 : transformer chaque mot en trois courtes listes de nombres
Avant que l’attention commence, chaque mot est déjà devenu un vecteur : une liste de nombres qui représente le mot. (Dans le Transformer original, cette liste compte 512 nombres.) Le modèle multiplie le vecteur de chaque mot par trois grilles de nombres qu’il a apprises pendant l’entraînement. Il en résulte trois nouveaux vecteurs pour chaque mot, appelés sa requête, sa clé et sa valeur. Nous verrons à la fin ce que chacun signifie. Pour l’instant, retenez seulement que chaque mot possède les trois.
Pour garder l’arithmétique simple, notre exemple utilise des vecteurs de seulement deux nombres. Les vrais modèles en utilisent beaucoup plus, mais les étapes sont identiques.
Étapes 2 à 4 : noter, mettre à l’échelle et normaliser
Disons que le modèle travaille sur « il », dont la requête est [1; 2].
Étape 2, noter. Comparez la requête de « il » à la clé de chaque mot à l’aide d’un produit scalaire : multipliez les nombres correspondants et additionnez-les. Pour « chat », dont la clé est [2; 1,5], le score est 1×2 + 2×1,5 = 5. Plus le score est élevé, meilleure est la correspondance.
Étape 3, mettre à l’échelle. Divisez chaque score par la racine carrée de la longueur des vecteurs. Nos vecteurs ont une longueur de 2; nous divisons donc par environ 1,41. L’article explique pourquoi : avec de longs vecteurs, les produits scalaires peuvent devenir très grands, ce qui pousse l’étape suivante dans une zone où l’entraînement devient instable.
Étape 4, normaliser avec softmax. Softmax est une fonction qui transforme n’importe quelle liste de nombres en poids positifs dont la somme fait 1, en donnant la plus grande part aux grands nombres.
Voici le calcul complet pour « il ». Les vecteurs de clé sont inventés pour l’illustration; un modèle entraîné apprend les siens.
| Mot | Clé | Score (requête · clé) | Mis à l’échelle (÷ 1,41) | Poids après softmax |
|---|---|---|---|---|
| Le | [0; 0] | 0 | 0,00 | 0,02 |
| chat | [2; 1,5] | 5 | 3,54 | 0,63 |
| s’assit | [0,5; 0] | 0,5 | 0,35 | 0,03 |
| car | [0; 0,5] | 1 | 0,71 | 0,04 |
| il | [1; 1] | 3 | 2,12 | 0,15 |
| était | [0,5; 0,5] | 1,5 | 1,06 | 0,05 |
| fatigué | [1; 0,5] | 2 | 1,41 | 0,08 |
La somme des poids fait 1,00. « Chat » reçoit 63 % de l’attention, « il » en garde 15 % pour lui-même, et les petits mots n’obtiennent presque rien.
Étapes 5 et 6 : mélanger les valeurs
Étape 5, pondérer. Multipliez le vecteur de valeur de chaque mot par son poids. La valeur de « chat » est multipliée par 0,63; celle de « Le », par 0,02.
Étape 6, additionner. Faites la somme de toutes les valeurs pondérées. Le résultat est le nouveau vecteur de « il ». Il est surtout constitué d’information venant de « chat », avec un peu de tout le reste. Quand la couche suivante du réseau lit ce vecteur, « il » porte désormais le sens de « le chat ».
Le modèle fait cela pour tous les mots en même temps, pas un par un. En pratique, les requêtes, les clés et les valeurs de tous les mots sont empilées dans des tableaux (des matrices), et les six étapes se résument à quelques grandes multiplications, que les processeurs graphiques traitent rapidement. C’est une grande partie de la raison pour laquelle les Transformers s’entraînent plus vite que les anciens modèles qui lisaient un mot à la fois. Dans un modèle qui écrit du texte, comme GPT-3, il y a une règle de plus : un mot ne peut porter attention qu’aux mots qui le précèdent, pour que le modèle ne puisse pas jeter un œil à ce qui vient ensuite.
À essayer : remplacez la clé de « fatigué » dans le tableau par [2; 2] et refaites les étapes 2 à 4 avec une calculatrice. (Softmax : élevez e, environ 2,718, à la puissance de chaque score mis à l’échelle, puis divisez chaque résultat par leur total.) Observez quelle part de l’attention passe de « chat » à « fatigué ».
Que sont les requêtes, les clés et les valeurs?
Les trois noms empruntent le vocabulaire de la recherche d’information, comme le fait un moteur de recherche ou une base de données. Une image utile est celle d’une bibliothèque. La requête, c’est ce que vous cherchez. La clé de chaque livre, c’est l’étiquette sur son dos que vous comparez à votre requête. La valeur, c’est ce que contient le livre, le contenu que vous emportez réellement. Dans l’auto-attention, la requête d’un mot demande « quel genre de mot m’aiderait? », chaque clé répond « voici ce que j’offre », et les valeurs sont l’information qui est mélangée.
Les trois viennent du même vecteur de mot, mais par trois grilles de nombres apprises différentes. Cette séparation compte. Un mot peut être recherché pour une raison et apporter autre chose. Dans le Transformer original, les vecteurs de mots de 512 nombres sont réduits à des requêtes, des clés et des valeurs de 64 nombres chacune, et le modèle divise les scores par 8, la racine carrée de 64 : c’est l’étape de mise à l’échelle de notre exemple.
L’article fait aussi tourner plusieurs ensembles de requêtes, de clés et de valeurs côte à côte, chacun avec ses propres grilles apprises. C’est ce qu’on appelle l’attention multitête (multi-head attention), et la conception originale utilise huit têtes. Chaque tête peut apprendre un type de lien différent. Dans les exemples de l’article lui-même, certaines têtes semblent suivre la structure de la phrase, et deux paraissent aider à déterminer à quoi renvoie un pronom comme its. Le modèle réunit ensuite les sorties des têtes.
Personne n’écrit ces grilles à la main. Elles commencent par des nombres aléatoires et sont ajustées pendant l’entraînement, des millions de fois, chaque fois que les réponses du modèle sont fausses. Avec le temps, elles se fixent sur des valeurs qui permettent aux mots utiles de se trouver, et c’est pourquoi un modèle entraîné peut relier « il » à « chat » sans qu’on lui ait jamais dit ce qu’est un pronom.
Sources
- Attention Is All You Need — Vaswani et al., Google Brain / Google Research (arXiv), 12 juin 2017
- The Illustrated Transformer — Jay Alammar, 27 juin 2018