Self-Attention
La Self-Attention, également connue sous le nom d’intra-attention, est un mécanisme d’attention utilisé principalement dans le domaine de l’apprentissage profond, en particulier dans le traitement du langage naturel (NLP) et la vision par ordinateur. Elle permet à un modèle de pondérer différemment l’importance de différentes parties d’une même séquence d’entrée (par exemple, les différents mots d’une phrase) lors du traitement de chaque partie de cette séquence. En d’autres termes, elle aide le modèle à se concentrer sur les éléments les plus pertinents de l’entrée pour mieux comprendre le contexte et les relations internes, sans nécessiter une architecture séquentielle rigide comme les réseaux de neurones récurrents (RNN).
Les concepts fondamentaux de la Self-Attention reposent sur la projection de chaque élément de la séquence d’entrée en trois vecteurs distincts : la Query (Requête), la Key (Clé) et la Value (Valeur). Pour chaque élément de la séquence (par exemple, chaque mot), sa Query est comparée à toutes les Keys des autres éléments (y compris lui-même) de la séquence. Cette comparaison, souvent réalisée par un produit scalaire (dot product), génère un score d’attention qui quantifie la pertinence de chaque autre élément pour l’élément actuel. Ces scores sont ensuite normalisés, typiquement à l’aide d’une fonction softmax, pour obtenir des poids d’attention qui somment à un. Finalement, la représentation de sortie pour chaque élément est calculée comme une somme pondérée des vecteurs Value de tous les éléments de la séquence, où les poids sont les scores d’attention normalisés. Ce processus permet à chaque élément de « regarder » les autres éléments et de décider lesquels sont les plus importants pour sa propre interprétation ou sa représentation mise à jour.
L’importance de la Self-Attention est considérable, car elle constitue la pierre angulaire de l’architecture Transformer, introduite dans l’article « Attention Is All You Need » en 2017. Les Transformers ont révolutionné le NLP, menant à des avancées majeures dans des tâches comme la traduction automatique, la génération de texte, la compréhension de texte et l’analyse de sentiment, avec des modèles comme BERT, GPT, et T5. Contrairement aux RNN qui traitent les séquences de manière séquentielle, limitant la parallélisation et peinant à capturer les dépendances à longue portée, la Self-Attention permet de calculer les relations entre tous les éléments d’une séquence simultanément. Cela facilite grandement la parallélisation sur les GPU et permet de modéliser efficacement les interactions entre des mots éloignés dans une phrase ou un document. Son impact s’étend également à la vision par ordinateur, où elle est utilisée dans les Vision Transformers (ViT) pour analyser les relations entre différentes parties d’une image.
Les applications pratiques de la Self-Attention sont nombreuses et variées. En traduction automatique, elle permet au modèle de comprendre quels mots de la phrase source sont les plus pertinents pour générer un mot spécifique dans la phrase cible, gérant mieux les réorganisations de mots et les dépendances complexes. Par exemple, en traduisant « The animal didn’t cross the street because it was too tired », la Self-Attention aide à déterminer si « it » se réfère à « animal » ou « street ». Dans la génération de texte, elle assure la cohérence et la pertinence du texte généré en maintenant le contexte sur de longues distances. Elle est aussi utilisée pour le résumé de texte (en identifiant les phrases clés), la réponse aux questions (en reliant la question aux parties pertinentes d’un document), l’analyse de sentiment (en focalisant sur les mots porteurs d’opinion), et même la recommandation de musique ou de films en modélisant les séquences d’interactions utilisateur. En vision, elle aide à identifier les relations spatiales entre les objets dans une scène.
Plusieurs variations et nuances du mécanisme de Self-Attention de base existent. La plus connue est la Multi-Head Attention (Attention Multi-Têtes), où le processus Q, K, V est effectué plusieurs fois en parallèle avec différentes projections linéaires apprises. Les résultats de ces « têtes » d’attention sont ensuite concaténés et projetés à nouveau, permettant au modèle d’apprendre différentes relations ou aspects contextuels simultanément depuis différents sous-espaces de représentation. Le Scaled Dot-Product Attention est la forme spécifique utilisée dans les Transformers, où le produit scalaire entre Q et K est divisé par la racine carrée de la dimension des vecteurs Key pour stabiliser les gradients pendant l’entraînement. D’autres variations comme la Sparse Attention (Attention Creuse) ou la Longformer visent à réduire la complexité computationnelle quadratique de la Self-Attention, la rendant plus applicable aux très longues séquences.
La Self-Attention est étroitement liée au concept plus général d’attention en apprentissage profond, qui permet aux modèles de se concentrer sur des parties spécifiques de l’entrée. Elle se distingue de l’attention « source-cible » (utilisée initialement dans les séquence-à-séquence avec RNNs) où l’attention relie les états d’un encodeur aux états d’un décodeur. La Self-Attention, elle, relie les positions d’une même séquence. Le concept clé qui a permis l’essor de la Self-Attention est l’architecture Transformer, qui l’utilise exclusivement, abandonnant la récurrence et la convolution pour le traitement séquentiel. Les Embeddings (plongements lexicaux) sont les représentations vectorielles initiales des éléments de la séquence qui sont ensuite traitées par la Self-Attention. On peut la contraster avec les approches séquentielles comme les RNN ou les approches locales comme les CNN, qui ont des mécanismes différents pour capturer les dépendances séquentielles ou spatiales.
L’origine de la Self-Attention telle qu’elle est largement utilisée aujourd’hui est principalement attribuée à l’article « Attention Is All You Need » de Vaswani et al. (2017). Bien que des mécanismes d’attention existaient auparavant (par exemple, l’attention additive de Bahdanau et l’attention multiplicative de Luong pour les modèles séquence-à-séquence), cet article a proposé d’utiliser l’attention, et spécifiquement la Self-Attention, comme unique composant pour modéliser les dépendances, en se passant complètement des boucles récurrentes ou des convolutions dans les couches principales de l’encodeur et du décodeur. Cette idée radicale a conduit à la création de l’architecture Transformer, marquant une étape majeure dans l’évolution des modèles d’apprentissage profond pour les données séquentielles.
Les avantages de la Self-Attention sont multiples. Sa capacité à modéliser directement les dépendances entre n’importe quelle paire d’éléments dans une séquence, indépendamment de leur distance, est un atout majeur par rapport aux RNN. Elle permet une parallélisation significative des calculs car les scores d’attention pour toutes les positions peuvent être calculés simultanément. De plus, les poids d’attention peuvent offrir une certaine forme d’interprétabilité, permettant d’inspecter sur quelles parties de l’entrée le modèle se concentre pour prendre une décision. Cependant, la Self-Attention présente aussi des inconvénients notables. Son principal défaut est sa complexité computationnelle et mémoire, qui est quadratique par rapport à la longueur de la séquence (O(n^2)), la rendant coûteuse pour des séquences très longues (milliers ou millions d’éléments). Elle peut également nécessiter de grandes quantités de données pour apprendre efficacement les relations complexes, et elle ne capture pas intrinsèquement l’information de position des éléments, nécessitant des techniques supplémentaires comme les encodages positionnels. Les défis actuels incluent le développement de mécanismes d’attention plus efficaces pour les longues séquences et une meilleure compréhension théorique de son fonctionnement.