L'attention multi-têtes est un composant central de l'architecture transformeur en apprentissage profond. Elle étend le mécanisme d'attention de base en calculant plusieurs opérations d'attention en parallèle, chacune avec ses propres projections apprises des requêtes, des clés et des valeurs. Cela permet au modèle de capturer différents types de relations et de motifs au sein de la séquence d'entrée, tels que les dépendances syntaxiques, la coréférence ou les indices positionnels, à travers de multiples sous-espaces de représentation. Les sorties de ces têtes d'attention parallèles sont ensuite concaténées et projetées linéairement pour produire le résultat final, permettant au modèle d'accorder conjointement son attention à des informations provenant de différents sous-espaces de représentation à différentes positions.
Le concept a été introduit dans l'article de 2017 « Attention Is All You Need » par des chercheurs de Google, dont Jakob Uszkoreit, Lukasz Kaiser et Niki Parmar. L'article proposait le transformeur, qui repose entièrement sur des mécanismes d'attention et se passe de récurrence et de convolutions, conduisant à des améliorations significatives de la vitesse d'entraînement et des performances sur les tâches de séquence à séquence. L'attention multi-têtes est depuis devenue un élément fondamental des grands modèles de langage tels que GPT, BERT et T5, et est largement utilisée en traitement du langage naturel, en vision par ordinateur et en reconnaissance vocale.
Mécanisme
Dans le mécanisme d'attention, chaque jeton d'entrée est représenté par un vecteur, souvent appelé plongement de jeton. Pour une séquence de jetons, le modèle calcule trois matrices : les requêtes (Q), les clés (K) et les valeurs (V). Le score d'attention entre une requête et une clé est généralement calculé comme un produit scalaire, mis à l'échelle par la racine carrée de la dimension des clés. Ces scores sont normalisés à l'aide d'une fonction softmax pour produire des poids d'attention, qui sont ensuite utilisés pour calculer une somme pondérée des valeurs.
L'attention multi-têtes exécute ce processus plusieurs fois en parallèle, chacune avec différentes projections linéaires apprises des requêtes, clés et valeurs d'origine. Par exemple, avec 8 têtes, le modèle calcule 8 sorties d'attention distinctes, chacune se concentrant sur différents aspects de la séquence. Les sorties sont concaténées et passées à travers une couche linéaire finale. Cette conception permet au modèle d'accorder son attention à des informations provenant de différents sous-espaces de représentation, ce qui est particulièrement utile pour capturer des motifs linguistiques divers.
Contrairement aux poids « durs », qui sont fixés pendant l'entraînement, les poids d'attention sont « mous » et calculés pendant la passe avant, ce qui signifie qu'ils changent avec chaque entrée. Cela permet au modèle de se concentrer dynamiquement sur les parties pertinentes de l'entrée, comme l'illustre l'exemple d'alignement en traduction automatique : lors de la traduction de « I love you » en français, le modèle attribue des poids d'attention élevés à « I » lors de la génération de « je », à « you » lors de la génération de « t' », et à « love » lors de la génération de « aime ».
Historique
Le mécanisme d'attention a été développé pour remédier aux faiblesses des réseaux de neurones récurrents (RNN), qui tendent à favoriser les informations en fin de phrase et à atténuer l'importance des mots antérieurs. Les premiers mécanismes d'attention, tels que l'attention additive de style Bahdanau (2014) et l'attention multiplicative de style Luong (2015), ont été greffés sur des architectures RNN encodeur-décodeur pour la traduction automatique. Ils permettaient au décodeur d'accéder directement à tous les états cachés de l'encodeur, plutôt que de se fier uniquement à l'état caché final.
La percée majeure est venue avec l'auto-attention, où chaque élément de la séquence d'entrée prête attention à tous les autres, permettant au modèle de capturer des dépendances globales. Cette idée était centrale au transformeur, qui a remplacé la récurrence par des mécanismes d'attention entièrement. L'architecture parallélisable du transformeur a permis des accélérations significatives de l'entraînement, conduisant à son adoption dans des modèles comme BERT, T5 et les transformeurs génératifs pré-entraînés (GPT).
Variantes
Plusieurs variantes de l'attention ont été développées, beaucoup implémentant des poids mous. Celles-ci incluent :
- Programmeurs de poids rapides (1992) : Un réseau de neurones « lent » produit les poids « rapides » d'un autre réseau de neurones via des produits externes. Cela a ensuite été renommé « auto-attention linéarisée ».
- Attention de style Bahdanau (attention additive) : Utilise un réseau à propagation avant pour calculer les scores d'alignement.
- Attention de style Luong (attention multiplicative) : Utilise des produits scalaires entre les états du décodeur et de l'encodeur.
- Attention positionnelle et attention positionnelle factorisée : Incorporent des informations positionnelles dans les calculs d'attention.
- Attention spatiale et par canaux pour les réseaux de neurones convolutifs : Opèrent sur les dimensions spatiales ou les canaux de caractéristiques.
Ces variantes recombinent les entrées côté encodeur pour redistribuer les effets à chaque sortie cible, utilisant souvent une matrice de corrélation de produits scalaires pour les coefficients de re-pondération.
Optimisations
La taille de la matrice d'attention est proportionnelle au carré du nombre de jetons d'entrée, ce qui peut être gourmand en mémoire pour les longues séquences. Flash attention est une implémentation qui réduit les besoins en mémoire et augmente l'efficacité sans sacrifier la précision. Elle partitionne le calcul d'attention en blocs plus petits qui tiennent dans la mémoire plus rapide sur puce du GPU, réduisant le besoin de stocker de grandes matrices intermédiaires.
FlexAttention, développé par Meta, est un noyau d'attention qui permet aux utilisateurs de modifier les scores d'attention avant le softmax et choisit dynamiquement l'algorithme d'attention optimal, offrant une flexibilité pour des motifs d'attention personnalisés.
Applications
L'attention est largement utilisée en traitement du langage naturel, en vision par ordinateur et en reconnaissance vocale. En TAL, elle améliore la compréhension du contexte dans des tâches comme la réponse aux questions et le résumé. En vision, l'attention visuelle aide les modèles à se concentrer sur les régions d'image pertinentes, améliorant la détection d'objets et le sous-titrage d'images.
En vision par ordinateur, les transformeurs de vision (ViT) appliquent l'attention multi-têtes à des patchs d'image. Les cartes d'attention, qui visualisent les scores d'attention sous forme de cartes de chaleur, sont devenues un moyen courant d'inspecter le processus de décision des modèles ViT. Les couches plus profondes tendent à montrer des visualisations plus significatives sémantiquement. L'attention rollout est un algorithme récursif qui combine les scores d'attention de toutes les couches en calculant le produit scalaire des cartes d'attention successives.
Étant donné que les transformeurs de vision sont généralement entraînés de manière auto-supervisée, les cartes d'attention ne sont généralement pas sensibles aux classes. Lorsqu'une tête de classification est attachée, les cartes d'attention discriminantes par classe (CDAM) combinent les cartes d'attention et les gradients par rapport au jeton de classe pour fournir des explications spécifiques à la classe.
Impact
L'attention multi-têtes a joué un rôle déterminant dans l'essor de la IA générative et des grands modèles de langage. Elle permet aux modèles de traiter efficacement de longues séquences et de capturer des dépendances complexes, ce qui en fait un composant clé des systèmes développés par des organisations comme OpenAI, Anthropic et Google DeepMind. L'architecture a également influencé la conception matérielle, avec des entreprises comme Nvidia et Cerebras optimisant les puces pour les calculs basés sur l'attention.
La recherche se poursuit sur l'amélioration de l'efficacité et de l'interprétabilité de l'attention. Des techniques comme l'attention éparse, l'attention linéaire et les méthodes basées sur les noyaux visent à réduire la complexité quadratique de l'attention, tandis que les outils d'interprétabilité aident à comprendre ce que les modèles apprennent. L'attention multi-têtes reste un domaine d'étude dynamique en apprentissage automatique et en intelligence artificielle.