Loading
Il divise le problème par deux sans le dissoudre. [CLS] porte 0,63× la norme de valeur d'un token de contenu — pas le quasi-zéro annoncé. Quatre couches ne font pas douze.
Ouvrir l'instrumentLa partie 6 décrivait un problème : en médiane, 24 % de chaque ligne d'attention affichée disparaît dans [CLS] et [SEP] avant que vous ne la voyiez, avec un pire cas à 95 %. L'interface le divulgue. La divulgation est honnête, mais c'est une excuse, pas une réparation.
Il existe une réparation publiée. Cet article raconte son test — et le fait que la réponse soit non.
L'idée décisive : ce qui circule d'un token à un autre n'est pas le poids d'attention. C'est le poids multiplié par le vecteur transporté — et un token qui attire un poids énorme en ne transportant presque rien s'est en fait mis hors circuit.
Kobayashi et al., EMNLP 2020, Attention is Not Only a Weight. L'argument : la sortie d'une tête est la somme sur j de α·v — poids d'attention fois vecteur value. Regarder α seul ignore la magnitude de ce qui est transporté.
Mesurez ‖α·v‖ à la place, et leur résultat principal est que BERT prête peu d'attention aux tokens spéciaux. Les séparateurs attirent de grands poids mais portent de faibles normes de value : leur contribution réelle est très en deçà de ce que suggère α.
Si cela tenait ici, le puits s'évaporerait, la pastille de divulgation pourrait disparaître, et l'interface cesserait de s'excuser.
La règle du projet rendait l'étape suivante évidente : mesurer avant de construire. Et fixer la condition d'abandon à l'avance, pour que le résultat ne soit pas rationalisé après coup — si la part de puits ne s'effondre pas, on abandonne l'idée et on le dit.
La bande > 90 % se vide et la médiane est divisée par deux. La pire ligne passe de 97,7 % à 83,4 % — mieux, mais toujours pas une image qu'on montrerait sans avertissement.
Part de puits sur les 110 lignes réellement affichées, selon le poids d'attention et selon la mesure pondérée par la norme. Méthode complète dans evidence/ex3-norm-weighted-attention.md.
Sur les 110 lignes réellement affichées par l'instrument — une par mot, sur la tête qu'il ouvrirait, agrégées exactement comme il agrège :
| Attention α | Pondéré ‖α·v‖ | |
|---|---|---|
| Part de puits médiane | 19,9 % | 10,0 % |
| Pire ligne | 97,7 % | 83,4 % |
| Lignes au-dessus de 50 % | 25 | 12 |
| Lignes au-dessus de 90 % | 8 | 0 |
La médiane est divisée par deux. La bande au-dessus de 90 % se vide entièrement.
Et la pire ligne passe de 97,7 % à 83,4 %.
C'est ce chiffre qui a tranché. L'argument était : « le puits s'évapore visiblement quand on change de lentille ». Il ne s'évapore pas. Il passe de catastrophique à mauvais. Douze lignes perdent encore plus de la moitié de leur masse : la divulgation reste, l'avertissement reste, le marquage reste — et il y aurait en plus un basculement à expliquer.
À signaler aussi, parce que cela dessert l'idée : 31 lignes sur 110 empirent, jusqu'à 26 % en relatif.
La prémisse tient en direction et échoue en quantité, et une seule mesure explique tout.
Sur 14 phrases × 16 têtes, la norme de value d'un token spécial rapportée à celle d'un token de contenu moyen :
| Token | Médiane | Sous 1,0 |
|---|---|---|
[CLS] | 0,63× | 196 sur 224 |
[SEP] | 0,70× | 147 sur 224 |
Les tokens spéciaux portent bien des values plus faibles. Mais d'un facteur d'environ 0,6 — pas le quasi-zéro que Kobayashi rapporte pour BERT-base.
Un affaiblissement de 0,6× ne peut pas sauver une ligne à 95 %. Il la place à 73 %. Ce seul ratio est tout le résultat.
Leur mesure portait sur douze couches et 768 dimensions cachées. Ici, quatre et 256. L'effet est fonction de la profondeur et ne se transpose pas à cette échelle. L'article n'a pas tort : il décrit un modèle plus grand.
Deux résultats annexes. Inclure la projection de sortie — le vrai f(x) de Kobayashi, et non ‖v‖ seul — n'apporte rien : 10,3 % contre 10,0 % en médiane. Et le choix de tête est stable, la même tête étant retenue sur 98 lignes sur 110 : l'amélioration vient de la mesure elle-même, pas d'un contournement des têtes chargées en puits.
Un résultat négatif est exactement le genre de conclusion qui mérite la suspicion, puisqu'il justifie de ne pas travailler.
L'oracle a d'abord été revalidé contre la référence PyTorch : 1,324e-6. Le runtime a été temporairement instrumenté pour renvoyer ‖v‖ par tête, et les deux implémentations comparées sur les 14 phrases — attention concordante à 1,204e-4, ‖v‖ à 7,272e-5 en relatif. L'instrumentation a ensuite été retirée ; rien n'en a été livré.
Le portage a été vérifié par le comportement avant d'être utilisé pour quoi que ce soit de nouveau, en reproduisant trois nombres déjà consignés dans le dépôt : the → scissors 0,431 à 95,2 % de puits, for → scissors 0,617 à 0,0426 de la ligne, doctor → nurse 0,607.
Et il a été testé par mutation. Forcer toutes les normes de value à 1,0 reproduit les nombres d'α au dernier chiffre ; annuler la norme de [CLS] les déplace. La mesure répond bien à v et ne re-rapporte pas α en douce.
Une seconde lentille exigerait encore la pastille de divulgation, l'avertissement au-delà de 50 %, le marquage des puits — et ajouterait un basculement et un changement de protocole à un panneau qui porte déjà quatre mises en garde. L'amélioration médiane est réelle et invisible pour quelqu'un qui lit une seule ligne.
Elle n'a donc pas été construite, et le résultat est le livrable. « Nous avons essayé le correctif publié standard sur notre propre modèle et mesuré ce qu'il valait » est une phrase plus rare et plus utile qu'un basculement ne l'aurait été.
À rouvrir si le modèle grandit un jour. L'effet dépend de la profondeur, et la mesure est désormais peu coûteuse à répéter.
Ensuite, et pour finir : ce que l'attention peut, et ne peut pas, vous dire.
Plus à lire
J'ai écrit le code et les tests à partir de la même idée fausse, et ils s'accordaient parfaitement. Tout était vert.
Changez l'unique adjectif qui décide du référent de « it ». La réponse d'un lecteur s'inverse. Aucune des seize têtes ne change de gagnant.
Chaque ligne de rollout se situe entre 0,935 et 0,971 d'entropie normalisée. C'est une distribution uniforme déguisée en classement, et c'était la vue par défaut.