Attention Visualization
L’attention visualization désigne l’ensemble des techniques permettant de visualiser les poids d’attention dans les modèles transformer, afin de comprendre quels éléments d’une séquence d’entrée le modèle « regarde » pour produire chaque élément de sortie.
Quand un transformer traite la phrase « Le chat dort sur le canapé », le mécanisme d’attention attribue des poids à chaque paire de tokens. L’attention visualization rend ces poids lisibles sous forme de heatmaps, de graphes bipartites ou d’embeddings interactifs. C’est l’un des premiers réflexes des chercheurs et praticiens pour « ouvrir la boîte noire » d’un modèle de NLP ou de vision.
Mais attention (sans jeu de mots) : visualiser l’attention ne signifie pas forcément comprendre le raisonnement du modèle. Ce sujet fait l’objet d’un débat scientifique majeur que nous détaillerons plus loin.
- Domaine
- Explicabilité / XAI
- Appliqué à
- Modèles Transformer (NLP, vision, multimodal)
- Outils principaux
- BertViz, AttentionViz, Ecco, LIT (Language Interpretability Tool), Inseq, Captum
- Article fondateur
- « Attention Is All You Need » (Vaswani et al., NeurIPS 2017)
- Débat clé
- « Attention is not Explanation » (Jain & Wallace, 2019) vs « Attention is not not Explanation » (Wiegreffe & Pinter, 2019)
- Type de méthode
- Post-hoc, observationnelle (non causale)
- Modèles supportés
- BERT, GPT-2, T5, ViT, et la plupart des modèles Hugging Face
- Coût
- Gratuit Open Source
Rappel : le mécanisme d’attention dans les transformers
Avant de visualiser l’attention, il faut comprendre ce qu’elle est. Le mécanisme de self-attention est le cœur de l’architecture transformer. Pour chaque token d’une séquence, le modèle calcule trois vecteurs : une query (Q), une key (K) et une value (V). L’attention entre deux tokens est proportionnelle au produit scalaire entre la query de l’un et la key de l’autre, normalisé par une fonction softmax.
Formellement, pour une tête d’attention donnée :
Attention(Q, K, V) = softmax(Q · K^T / √d_k) · V
Le résultat du softmax est une matrice de poids entre 0 et 1, où chaque valeur indique « combien » un token « prête attention » à un autre token. Ce sont ces poids que l’attention visualization rend visibles.
Un transformer utilise typiquement le multi-head attention : plusieurs têtes d’attention opèrent en parallèle, chacune apprenant des patterns différents. Un modèle comme BERT-base possède 12 couches de 12 têtes chacune, soit 144 matrices d’attention à analyser pour une seule entrée. C’est précisément cette complexité qui rend les outils de visualisation indispensables.
Pourquoi visualiser l’attention
L’attention visualization répond à plusieurs besoins pratiques et scientifiques :
Comprendre le comportement du modèle. En analysant les patterns d’attention, les chercheurs ont découvert que certaines têtes se spécialisent : certaines gèrent la résolution de coréférence (relier « il » à « le chat »), d’autres suivent les relations syntaxiques (sujet-verbe), d’autres encore adoptent des patterns positionnels (attention aux tokens adjacents ou au token [CLS]).
Débugger un modèle. Quand un modèle fait une erreur, visualiser l’attention peut révéler qu’il se concentre sur les mauvais tokens. Par exemple, dans un modèle de question-answering, si l’attention se disperse uniformément au lieu de se focaliser sur la partie pertinente du contexte, cela signale un problème de compréhension.
Détecter les biais. L’analyse des patterns d’attention peut révéler des biais systématiques. Si un modèle de classification de CV prête systématiquement attention aux prénoms (proxy du genre ou de l’origine ethnique) plutôt qu’aux compétences, c’est un signal d’alerte.
Communiquer avec les non-techniciens. Les heatmaps d’attention sont visuellement intuitives. Montrer à un client ou un régulateur que le modèle « regarde les bons mots » est plus parlant qu’une explication technique abstraite, même si cette interprétation est simplifiée (nous y reviendrons).
Recherche fondamentale. L’attention visualization a été un catalyseur pour l’interprétabilité mécanistique. L’étude systématique des têtes d’attention a mené à des découvertes sur l’organisation interne des LLM : têtes d’induction, têtes de copie, circuits de recall factuel.
Les outils d’attention visualization
BertViz : la référence historique
BertViz, créé par Jesse Vig (Salesforce Research), est l’outil de référence pour la visualisation d’attention dans les modèles de langage. Publié initialement à l’ICLR 2019, puis étendu à ACL 2019, il propose trois niveaux de visualisation :
Head view (vue par tête). Affiche les poids d’attention sous forme de graphe bipartite pour une tête d’attention spécifique dans une couche donnée. Les tokens source sont à gauche, les tokens cible à droite, reliés par des lignes dont l’opacité reflète le poids d’attention. C’est la vue la plus courante et la plus intuitive.
Model view (vue globale). Offre une vue panoramique de toutes les couches et toutes les têtes simultanément. Chaque cellule d’une grille représente une tête d’attention, avec un aperçu miniature du pattern. Cette vue permet de repérer rapidement les têtes atypiques ou les patterns récurrents entre couches.
Neuron view (vue neurone). Visualise les neurones individuels dans les vecteurs query et key, montrant comment ils contribuent au calcul de l’attention. Cette vue est plus technique, réservée à la recherche approfondie, et limitée aux modèles BERT, GPT-2 et RoBERTa.
BertViz s’utilise dans un notebook Jupyter ou Google Colab via une API Python simple :
from transformers import AutoTokenizer, AutoModel, utils
from bertviz import head_view
# Charger le modèle avec output des attentions
utils.logging.set_verbosity_error()
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
model = AutoModel.from_pretrained(
"bert-base-uncased",
output_attentions=True
)
# Tokeniser et exécuter le modèle
inputs = tokenizer.encode(
"The cat sat on the mat",
return_tensors="pt"
)
outputs = model(inputs)
# Visualiser l'attention
attention = outputs[-1] # Tuple de tenseurs d'attention
tokens = tokenizer.convert_ids_to_tokens(inputs[0])
head_view(attention, tokens)
BertViz supporte la majorité des modèles Hugging Face Transformers, y compris BERT, GPT-2, XLNet, RoBERTa, DistilBERT, ALBERT, T5 et bien d’autres. Il suffit que le modèle retourne les poids d’attention via le paramètre output_attentions=True.
AttentionViz : la vue globale
AttentionViz, développé par Catherine Yeh et son équipe (Harvard, publié dans IEEE Transactions on Visualization and Computer Graphics, 2023), propose une approche radicalement différente. Au lieu de visualiser les poids d’attention bruts, il crée un embedding conjoint des vecteurs query et key dans un espace de haute dimension, puis le projette en 2D ou 3D via t-SNE ou UMAP.
L’avantage de cette approche : elle permet d’analyser des patterns globaux à travers des centaines ou des milliers de séquences d’entrée, pas seulement une séquence à la fois. Dans cet espace projeté, les paires query-key avec une forte attention sont géographiquement proches. Cela révèle des clusters et des structures que les visualisations classiques par séquence ne peuvent pas montrer.
AttentionViz supporte BERT (langage), GPT-2 (langage) et ViT (vision), et propose trois vues interactives : une vue matricielle (toutes les têtes), une vue détaillée (une tête) et une vue contextuelle (phrase/image associée à un point). L’outil est accessible en démo en ligne.
Ecco : au-delà de l’attention
Ecco, créé par Jay Alammar (auteur des célèbres tutoriels visuels sur les transformers), va plus loin que la simple visualisation d’attention. Publié à ACL 2021, Ecco propose trois axes d’analyse :
Saliency des entrées (input saliency). Utilise les gradients pour identifier quels tokens d’entrée ont le plus influencé chaque token de sortie. C’est une approche complémentaire à l’attention, basée sur la feature attribution par gradient.
Évolution des états cachés (hidden states). Visualise comment les représentations des tokens évoluent à travers les couches du modèle. Cela permet de suivre la « trajectoire » d’un concept à travers le réseau.
Activation des neurones. Décompose les activations des couches feedforward via la factorisation matricielle non-négative (NMF) pour identifier des groupes de neurones spécialisés.
Ecco s’intègre dans Jupyter et supporte les modèles GPT-2, BERT, RoBERTa, T5 et T0 via Hugging Face.
Autres outils notables
| Outil | Créateur | Spécificité | Type |
|---|---|---|---|
| LIT (Language Interpretability Tool) | Interface unifiée pour l’analyse de modèles NLP : attention, saliency, métriques, datasets complets | Application web | |
| Inseq | Communauté académique | Toolkit de feature attribution pour les modèles séquence-à-séquence, intégrant plusieurs méthodes (integrated gradients, attention, etc.) | Bibliothèque Python |
| Captum | Meta (PyTorch) | Framework générique d’interprétabilité pour PyTorch, incluant des méthodes d’attribution applicable aux transformers | Bibliothèque Python |
| LM Transparency Tool | Nostalgebraist / communauté | Analyse des logit lens et tuned lens pour tracer comment les prédictions évoluent couche par couche | Bibliothèque Python |
| TransformerLens | Neel Nanda | Bibliothèque pour l’interprétabilité mécanistique : hooks, activation patching, analyse causale des composants | Bibliothèque Python |
Types de visualisations d’attention
Heatmap d’attention
La forme la plus élémentaire : une matrice carrée où chaque cellule (i, j) représente le poids d’attention du token i vers le token j. Les valeurs élevées sont colorées en rouge/sombre, les faibles en blanc/clair. C’est efficace pour les séquences courtes, mais devient illisible au-delà de 50-100 tokens.
Graphe bipartite
C’est la visualisation signature de BertViz. Les tokens sont listés en deux colonnes (source et cible), reliés par des lignes dont l’épaisseur ou l’opacité correspond au poids d’attention. Cette représentation est plus lisible que la heatmap pour identifier les connexions fortes entre tokens spécifiques.
Attention rollout et attention flow
Les poids d’attention bruts d’une couche ne reflètent qu’une étape du calcul. L’attention rollout (proposé par Abnar et Zuidema, 2020) combine les matrices d’attention à travers les couches en les multipliant successivement, en tenant compte des connexions résiduelles. Cela donne une vision plus fidèle de l’attention « effective » qu’un token d’entrée reçoit depuis la sortie du modèle.
L’attention flow utilise une approche basée sur les flux maximaux dans un graphe pour propager l’attention de manière plus rigoureuse que le simple rollout.
Joint query-key embedding
L’approche d’AttentionViz : projeter les vecteurs query et key dans un espace commun via t-SNE ou UMAP. Les tokens dont les query-key ont un produit scalaire élevé (donc une forte attention) se retrouvent proches dans la projection. Cette méthode est la seule qui permet une analyse globale sur de nombreuses séquences simultanément.
Visualisation d’attention pour la vision
Les Vision Transformers (ViT) découpent les images en patches et appliquent le self-attention entre ces patches. La visualisation d’attention pour ViT superpose les poids d’attention sur l’image originale, révélant quelles zones de l’image le modèle « regarde » pour sa classification. Des méthodes comme Attention Guided CAM combinent les gradients et l’attention pour produire des cartes de saliency plus précises que l’attention seule.
Le grand débat : l’attention est-elle une explication ?
C’est le sujet le plus controversé de l’interprétabilité des transformers. Le débat se structure autour de trois articles fondamentaux.
« Attention is not Explanation » (Jain & Wallace, 2019)
Sarthak Jain et Byron Wallace (NAACL 2019) ont démontré deux résultats troublants. Premièrement, les poids d’attention sont souvent faiblement corrélés avec les mesures d’importance des features basées sur les gradients. Deuxièmement, il est possible de trouver des distributions d’attention très différentes qui produisent des prédictions quasiment identiques. Autrement dit : l’attention ne reflète pas nécessairement ce qui est « important » pour le modèle, et des patterns d’attention radicalement différents peuvent mener au même résultat.
Leur conclusion : les poids d’attention ne constituent pas une explication fiable des prédictions du modèle.
« Attention is not not Explanation » (Wiegreffe & Pinter, 2019)
Sarah Wiegreffe et Yuval Pinter (EMNLP 2019) ont répondu en contestant les hypothèses sous-jacentes de Jain & Wallace. Leur argument principal : la notion d’« explication » n’est pas bien définie, et les tests de Jain & Wallace sont trop restrictifs. Ils proposent quatre tests alternatifs et montrent que les distributions d’attention adversariales trouvées par Jain & Wallace échouent sur des diagnostics plus fins.
Leur conclusion, plus nuancée : l’attention ne fournit pas à elle seule une explication complète, mais elle reste un signal utile quand elle est analysée dans le contexte global du modèle.
État actuel du débat
Plusieurs travaux ultérieurs ont affiné la compréhension. Serrano et Smith (2019) ont montré que masquer ou permuter les poids d’attention affecte peu les prédictions, ce qui confirme que l’attention seule n’est pas une explication suffisante. Kobayashi et al. (2020) ont proposé d’analyser non pas les poids d’attention seuls, mais les normes des vecteurs attention-pondérés, ce qui fournit des attributions plus fidèles.
Le consensus actuel dans la communauté, synthétisé par Bibal et al. (ACL 2022), est le suivant :
Les travaux récents en interprétabilité mécanistique (Anthropic, 2025, avec les attribution graphs et le circuit tracing) vont encore plus loin : plutôt que d’observer les corrélations dans les poids d’attention, ils interviennent directement sur les composants du modèle (ablation de têtes, patching d’activations) pour établir des relations causales. L’attention visualization reste un point de départ utile, mais les méthodes interventionnistes la complètent de manière essentielle.
Guide pratique : utiliser l’attention visualization
Workflow recommandé
Voici un workflow en quatre étapes pour exploiter efficacement l’attention visualization :
Étape 1 : Explorer avec la model view. Utilisez BertViz en model view pour avoir une vue d’ensemble de toutes les couches et têtes. Identifiez les têtes qui présentent des patterns intéressants (attention focalisée vs dispersée, patterns diagonaux vs verticaux).
Étape 2 : Zoomer avec la head view. Pour les têtes identifiées, passez en head view pour examiner précisément quelles relations token-à-token sont captées. Les patterns typiques incluent la résolution de coréférence, les relations syntaxiques, l’attention aux séparateurs ou au token spécial [CLS].
Étape 3 : Croiser avec d’autres méthodes. Ne vous fiez pas à l’attention seule. Calculez les integrated gradients ou les valeurs SHAP sur le même exemple et comparez. Si l’attention et les gradients pointent vers les mêmes tokens, la confiance dans l’explication augmente. S’ils divergent, creusez davantage.
Étape 4 : Valider par intervention. Pour les cas critiques, utilisez l’ablation de têtes (masquer une tête spécifique et observer l’impact sur la prédiction) ou l’activation patching pour établir un lien causal entre l’attention observée et le comportement du modèle.
Exemple complet : BertViz avec encodeur-décodeur
Voici un exemple pour un modèle de traduction :
from transformers import AutoTokenizer, AutoModel
from bertviz import model_view
# Charger un modèle encodeur-décodeur
tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-en-fr")
model = AutoModel.from_pretrained(
"Helsinki-NLP/opus-mt-en-fr",
output_attentions=True
)
# Encoder-decoder : phrase source et cible
src_text = "The weather is beautiful today"
tgt_text = "Le temps est magnifique aujourd'hui"
# Tokeniser
encoder_input = tokenizer(
src_text, return_tensors="pt", add_special_tokens=True
)
decoder_input = tokenizer(
tgt_text, return_tensors="pt", add_special_tokens=True
)
# Forward pass
outputs = model(
**encoder_input,
decoder_input_ids=decoder_input["input_ids"]
)
# Visualiser l'attention cross (encoder → decoder)
# Les attentions cross sont dans outputs.cross_attentions
encoder_tokens = tokenizer.convert_ids_to_tokens(
encoder_input["input_ids"][0]
)
decoder_tokens = tokenizer.convert_ids_to_tokens(
decoder_input["input_ids"][0]
)
# La model_view supporte l'attention cross
model_view(
encoder_attention=outputs.encoder_attentions,
decoder_attention=outputs.decoder_attentions,
cross_attention=outputs.cross_attentions,
encoder_tokens=encoder_tokens,
decoder_tokens=decoder_tokens
)
Patterns d’attention courants
L’analyse systématique des têtes d’attention dans BERT (Clark et al., 2019) a identifié plusieurs patterns récurrents :
| Pattern | Description | Couches typiques |
|---|---|---|
| Diagonal | Chaque token prête attention à lui-même ou aux tokens immédiatement adjacents | Couches basses (1-3) |
| Vertical (CLS/SEP) | Forte attention vers les tokens spéciaux [CLS] ou [SEP], qui servent de « collecteurs » d’information | Toutes les couches |
| Coréférence | Les pronoms prêtent attention à leur antécédent (« il » → « le chat ») | Couches intermédiaires (5-8) |
| Syntaxique | Relations sujet-verbe, adjectif-nom, préposition-complément | Couches intermédiaires |
| Sémantique | Attention entre tokens sémantiquement liés dans la phrase | Couches hautes (9-12) |
| Uniforme | Attention répartie uniformément, sans focus particulier (« résiduel ») | Variable |
| Induction | Têtes qui copient des patterns vus précédemment dans la séquence (in-context learning) | Couches basses à intermédiaires |
Limites de l’attention visualization
Corrélation, pas causalité
C’est la limite fondamentale, mise en lumière par le débat « Attention is not Explanation ». Un poids d’attention élevé entre les tokens A et B ne signifie pas que B « explique » A au sens causal. Le modèle peut utiliser l’information de B via les connexions résiduelles et les couches feedforward sans que cela se reflète dans les poids d’attention.
Complexité du multi-head attention
Avec 12+ couches et 12+ têtes par couche, il y a 144+ matrices d’attention à analyser pour chaque entrée. Sélectionner « la bonne » tête est subjectif et risque le cherry-picking : on peut presque toujours trouver une tête qui confirme l’hypothèse qu’on veut valider. L’attention rollout atténue ce problème mais ne le résout pas entièrement.
Le problème du softmax
La fonction softmax normalise les poids d’attention pour qu’ils somment à 1. Cela crée une compétition artificielle entre tokens : un token peut avoir un poids d’attention élevé simplement parce que les autres ont des poids très faibles, pas parce qu’il est intrinsèquement important. De plus, les poids proches de zéro ne signifient pas nécessairement une absence d’influence, car l’information peut transiter par d’autres mécanismes.
Scalabilité
Pour les LLM modernes avec des contextes de 100K+ tokens, la matrice d’attention est énorme (100K × 100K valeurs par tête). Les outils actuels ne sont pas conçus pour cette échelle. Les architectures à attention efficace (Flash Attention) ne calculent parfois pas explicitement la matrice d’attention complète, rendant la visualisation impossible sans modifications.
Limitations spécifiques à la vision
Pour les ViT, l’attention entre patches d’image est moins intuitive que l’attention entre mots. Un patch « important » selon l’attention peut correspondre à un artefact du découpage en patches plutôt qu’à une région sémantiquement pertinente de l’image.
Alternatives et compléments
L’attention visualization ne devrait jamais être utilisée seule. Voici les méthodes complémentaires qui forment un toolkit d’interprétabilité complet :
| Méthode | Approche | Avantage vs attention viz |
|---|---|---|
| SHAP | Valeurs de Shapley pour chaque token d’entrée | Fondement théorique solide, attributions quantitatives |
| Integrated Gradients | Intégrale des gradients le long d’un chemin depuis une baseline | Attribution au niveau du token, plus fidèle que l’attention |
| LIME | Modèle local linéaire sur des perturbations de l’entrée | Model-agnostic, intuitif |
| Activation patching | Remplacement ciblé d’activations pour tester la causalité | Établit des relations causales, pas seulement des corrélations |
| Logit lens / Tuned lens | Projection des hidden states intermédiaires dans l’espace vocabulaire | Montre l’évolution de la prédiction couche par couche |
| Circuit tracing | Identification des circuits computationnels via des modèles de remplacement (transcoders) | Interprétabilité mécanistique profonde, Anthropic 2025 |
| Contrefactuels | Modification minimale de l’entrée pour changer la prédiction | Explications actionnables |
Cas d’usage concrets
Débogage de question-answering
Votre modèle de QA extractif retourne la mauvaise réponse à partir d’un long contexte. En visualisant l’attention cross entre la question et le contexte, vous découvrez que le modèle se fixe sur un passage superficiellement similaire (mêmes mots-clés) plutôt que sur le passage qui contient réellement la réponse. Cela pointe vers un problème de compréhension sémantique profonde, pas seulement de matching lexical.
Audit de biais dans un classifieur texte
Un classifieur de sentiments pour des avis clients montre des performances inégales entre produits. L’analyse d’attention révèle que certaines têtes prêtent une attention disproportionnée aux noms de marques plutôt qu’aux adjectifs qualificatifs. Le modèle a appris un raccourci : certaines marques sont systématiquement associées à des avis positifs dans les données d’entraînement. C’est un cas de biais de shortcut.
Découverte des têtes d’induction
Les travaux d’Elhage et al. (Anthropic, 2022) ont utilisé l’analyse systématique de l’attention pour découvrir les « induction heads » : des paires de têtes d’attention qui, ensemble, implémentent un mécanisme de copie permettant l’in-context learning. La première tête (dans une couche basse) copie l’information d’un token vers le token suivant, et la seconde (dans une couche supérieure) utilise cette information pour prédire la suite d’un pattern déjà observé. Cette découverte, rendue possible par l’attention visualization, a été fondamentale pour comprendre comment les LLM apprennent à partir d’exemples dans le prompt.
Position dans l’écosystème XAI
L’attention visualization s’inscrit dans l’écosystème plus large de l’explicabilité et de la transparence des modèles IA. Elle se distingue des méthodes de feature attribution (comme SHAP) par son caractère observationnel plutôt que quantitatif. Elle fait partie des prérequis pour l’interprétabilité mécanistique, qui cherche à comprendre les algorithmes appris par les réseaux de neurones.
Dans le contexte de l’AI Act, l’attention visualization seule ne suffit pas à remplir les exigences de transparence et d’accountability. Elle doit être combinée avec des méthodes d’attribution formelles et une documentation structurée (model cards).
Questions fréquentes sur l’attention visualization
L’attention visualization fonctionne-t-elle avec GPT-4 ou Claude ?
Non, pas directement. Les LLM propriétaires comme GPT-4 (OpenAI) ou Claude (Anthropic) ne donnent pas accès aux poids d’attention via leur API. L’attention visualization nécessite un accès aux matrices d’attention internes du modèle, ce qui n’est possible qu’avec des modèles open-source ou open-weight (BERT, GPT-2, Llama, Mistral) déployés localement. Pour les modèles propriétaires, les fournisseurs proposent parfois des outils d’interprétabilité dédiés (comme les attribution graphs d’Anthropic), mais pas la visualisation d’attention brute.
Les poids d’attention expliquent-ils vraiment les prédictions du modèle ?
Pas de manière fiable. Le débat scientifique (Jain & Wallace 2019, Wiegreffe & Pinter 2019) a montré que les poids d’attention sont un signal corrélationnel, pas causal. Des distributions d’attention très différentes peuvent produire la même prédiction, et les poids d’attention ne reflètent pas toujours l’importance réelle des features. Utilisez l’attention comme un outil exploratoire de première intention, pas comme une justification formelle. Pour des explications robustes, complétez avec des méthodes de feature attribution basées sur les gradients ou les valeurs de Shapley.
Quel outil choisir pour commencer ?
BertViz est le meilleur point d’entrée. Il est simple à installer (pip install bertviz), bien documenté, et fonctionne dans Jupyter/Colab avec la majorité des modèles Hugging Face. Pour une analyse plus poussée intégrant saliency et activations, passez à Ecco. Pour une analyse globale sur de nombreuses séquences, utilisez AttentionViz. Pour l’interprétabilité mécanistique (ablation de têtes, patching), utilisez TransformerLens ou les outils du framework Captum.
Peut-on visualiser l’attention des Vision Transformers (ViT) ?
Oui. AttentionViz supporte ViT nativement. Vous pouvez aussi extraire les attentions d’un ViT Hugging Face avec output_attentions=True et les afficher comme des heatmaps superposées à l’image. Des méthodes spécialisées comme Attention Rollout et Attention Guided CAM produisent des cartes de saliency plus précises pour la vision. Gardez en tête que l’attention entre patches de 16×16 pixels donne une résolution spatiale limitée par rapport aux cartes de saliency des CNN.
L’attention visualization est-elle suffisante pour la conformité AI Act ?
Non. L’AI Act exige des explications compréhensibles pour les décisions des systèmes IA à haut risque. L’attention visualization est un outil exploratoire, pas une méthode d’explication formelle. Pour la conformité, vous devez fournir des attributions quantitatives (SHAP, integrated gradients), une documentation structurée (model cards), un monitoring continu et une supervision humaine. L’attention visualization peut compléter ce dispositif comme outil de diagnostic interne, mais ne le remplace pas.