L'attention croisée est un mécanisme en apprentissage automatique et apprentissage profond qui calcule des poids d'attention entre les éléments de deux séquences distinctes, généralement une source et une cible. C'est un composant central de l'architecture Transformer, où elle permet au décodeur de se concentrer sur les parties pertinentes de la sortie de l'encodeur lors de la génération de chaque jeton. Contrairement à l'auto-attention, qui relie des positions au sein d'une seule séquence, l'attention croisée relie des positions entre séquences, ce qui la rend essentielle pour des tâches telles que la traduction automatique, le résumé de texte et la génération de légendes d'images.
Le concept est issu de mécanismes d'attention antérieurs développés pour les réseaux de neurones récurrents (RNN), qui souffraient de difficultés à retenir des informations provenant de parties éloignées d'une séquence. L'attention, inspirée par la focalisation visuelle et cognitive humaine, a permis aux modèles de pondérer directement l'importance de chaque élément d'entrée. La percée est venue avec l'introduction du Transformer en 2017, qui a remplacé la récurrence par une attention parallélisable, et l'attention croisée est devenue un ingrédient clé des modèles encodeur-décodeur comme BERT, T5 et les transformeurs génératifs pré-entraînés (GPT).
Historique
Les racines de l'attention croisée remontent au début des années 1990, lorsque les programmeurs de poids rapides, ou contrôleurs de poids rapides, ont proposé un mécanisme où un réseau de neurones « lent » génère les poids « rapides » d'un autre réseau via des produits externes. Cette idée, plus tard renommée auto-attention linéarisée, a posé les bases conceptuelles. En 2014, l'attention de style Bahdanau (attention additive) a été introduite pour la traduction automatique basée sur les RNN, permettant au décodeur de s'aligner sur les états cachés de l'encodeur. L'attention de style Luong (attention multiplicative) a suivi en 2015, offrant une fonction de score plus efficace.
La percée majeure est venue avec l'auto-attention, où chaque élément d'une séquence s'attend à tous les autres, permettant de capturer des dépendances globales. Cette idée était centrale à l'architecture Transformer, introduite dans l'article de 2017 « Attention Is All You Need » par des chercheurs de Google et de l'Université de Toronto. Le Transformer a remplacé la récurrence par des mécanismes d'attention, et l'attention croisée est devenue un composant standard des modèles encodeur-décodeur, formant la base de modèles comme BERT, T5 et GPT.
Mécanisme
Dans un Transformer encodeur-décodeur typique, l'encodeur traite la séquence source (par exemple, une phrase en anglais) et produit un ensemble de représentations cachées. Le décodeur génère la séquence cible (par exemple, en français) un jeton à la fois. À chaque étape de décodage, le décodeur utilise l'attention croisée pour calculer une somme pondérée des sorties de l'encodeur, où les poids reflètent la pertinence de chaque jeton source pour le jeton cible actuel.
L'opération d'attention croisée implique trois matrices : les requêtes (Q) dérivées de la sortie précédente du décodeur, les clés (K) et les valeurs (V) dérivées de la sortie de l'encodeur. Les poids d'attention sont calculés comme le softmax des produits scalaires mis à l'échelle entre Q et K, qui sont ensuite utilisés pour pondérer V. Cela permet au décodeur de se concentrer sélectivement sur les informations sources pertinentes, de manière similaire à un traducteur humain qui pourrait revenir sur des mots spécifiques de la phrase source.
Interprétation des poids d'attention
Les poids d'attention croisée peuvent être visualisés comme une matrice d'alignement, montrant quels jetons sources sont les plus influents pour chaque jeton cible. En traduction, l'alignement est le processus de correspondance des mots de la phrase source avec la phrase traduite. Les réseaux qui effectuent une traduction mot à mot sans tenir compte de l'ordre des mots montreraient les scores les plus élevés le long de la diagonale de la matrice. Une dominance hors diagonale indique un alignement plus nuancé.
Par exemple, traduire « I love you » en français : lors du premier passage du décodeur, 94 % du poids d'attention est sur « I », produisant « je » ; lors du deuxième passage, 88 % sur « you », produisant « t' » ; lors du troisième passage, 95 % sur « love », produisant « aime ». Cela donne une matrice d'alignement où « love » s'aligne avec « aime ». Parfois, l'alignement est de plusieurs à plusieurs, comme « look it up » correspondant à « cherchez-le ». Les poids d'attention doux, qui répartissent le poids sur plusieurs jetons, fonctionnent mieux que l'attention dure (mettre un poids à 1 et les autres à 0), car une somme pondérée de vecteurs cachés fournit souvent un contexte plus riche que la sélection d'un seul meilleur vecteur.
Variantes
L'attention croisée a plusieurs variantes, différant par la manière dont les scores d'attention sont calculés :
- Attention additive (style Bahdanau) : Utilise un réseau feed-forward pour calculer les scores d'alignement.
- Attention multiplicative (style Luong) : Utilise des produits scalaires entre les vecteurs de requête et de clé.
- Attention positionnelle : Incorpore des encodages positionnels pour tenir compte de l'ordre des jetons.
- Attention positionnelle factorisée : Réduit la complexité en factorisant l'attention à travers les dimensions.
Pour les réseaux de neurones convolutionnels, les mécanismes d'attention peuvent opérer sur les dimensions spatiales (attention spatiale), les dimensions de canaux (attention de canaux), ou des combinaisons. 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 la re-pondération.
Optimisations
Attention Flash
La taille de la matrice d'attention croît de manière quadratique avec le nombre de jetons d'entrée, nécessitant une mémoire GPU significative pour les longues séquences. L'attention flash, introduite en 2022, réduit les besoins en mémoire et augmente l'efficacité sans sacrifier la précision. Elle partitionne le calcul de l'attention en blocs plus petits qui tiennent dans la mémoire sur puce plus rapide du GPU, réduisant le besoin de stocker de grandes matrices intermédiaires et diminuant l'utilisation de la mémoire tout en améliorant l'efficacité computationnelle.
FlexAttention
FlexAttention est un noyau d'attention développé par Meta qui permet aux utilisateurs de modifier les scores d'attention avant le softmax et choisit dynamiquement l'algorithme d'attention optimal. Cette flexibilité permet des motifs d'attention personnalisés, tels que la parcimonie ou le masquage, sans sacrifier les performances.
Applications
L'attention croisée est largement utilisée en traitement du langage naturel, en vision par ordinateur et en reconnaissance vocale. En TALN, 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 la génération de légendes d'images. En reconnaissance vocale, l'attention croisée aligne les caractéristiques acoustiques avec la sortie textuelle.
Cartes d'attention comme explications pour les transformeurs de vision
Depuis l'article original sur le transformeur de vision (ViT), visualiser les scores d'attention sous forme de cartes de chaleur (cartes de saillance ou cartes d'attention) est devenu une méthode courante pour inspecter le processus de décision des modèles ViT. On peut calculer des cartes d'attention pour n'importe quelle tête d'attention à n'importe quelle couche, les couches plus profondes montrant des visualisations plus significatives sémantiquement. Le déploiement d'attention est un algorithme récursif qui combine les scores d'attention à travers toutes les couches en calculant le produit scalaire des cartes d'attention successives.
Comme 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 au backbone ViT, les cartes d'attention discriminantes par classe (CDAM) combinent les cartes d'attention et les gradients par rapport au jeton de classe. Certaines méthodes d'interprétabilité sensibles aux classes, développées à l'origine pour les réseaux de neurones convolutionnels, peuvent être adaptées aux ViT, fournissant des informations sur les régions d'image qui influencent les prédictions.