Loading
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.
Ouvrir l'instrumentSi un modèle a seize têtes d'attention, en montrer une est un choix qu'il faut défendre. D'où l'instinct naturel de les combiner — et il existe une méthode publiée pour le faire proprement.
Le rollout d'attention propage l'attention à travers le réseau. On moyenne les têtes de chaque couche, on ajoute la matrice identité pour tenir compte des connexions résiduelles, on renormalise, puis on multiplie les couches entre elles. Le résultat est une matrice unique décrivant le flux d'information des tokens d'entrée vers les positions de sortie, sur tout le modèle.
C'est rigoureux, abondamment cité, et c'était la vue par défaut de ce projet.
C'était aussi, sur ce modèle, statistiquement indiscernable de ne rien montrer.
L'idée décisive : un classement calculé à partir d'une distribution quasi uniforme reste un classement. Il ordonnera les mots avec assurance, et cet ordre sera proche de l'arbitraire.
L'entropie normalisée est l'outil. Prenez une ligne, traitez-la comme une distribution de probabilité, calculez son entropie de Shannon, divisez par ln(n). Le résultat vaut 1,0 pour une ligne parfaitement uniforme et tend vers 0 à mesure que la masse se concentre.
Pour la phrase « Enter an English sentence to inspect how attention differs across heads », chaque ligne de rollout mesurait entre 0,935 et 0,971.
Une entropie normalisée de 1,0 correspond à une ligne uniforme — qui ne dit rien. Le rollout mélange toutes les couches et toutes les têtes ; sur un modèle à quatre couches, le résultat frôle ce plafond pour chaque mot.
Basculez entre le rollout et la tête sélectionnée pour le même mot. La ligne de rollout est presque plate — les barres diffèrent à peine. La ligne de la tête présente une structure visible sans rien mesurer.
La figure ci-dessus porte sur une autre phrase, et elle se comporte de la même façon. Sur ses neuf mots, l'entropie du rollout reste entre 0,952 et 0,973, et le pic d'une ligne de rollout ne dépasse jamais 1,76× l'uniforme. Les têtes que l'instrument sélectionne pour ces mêmes mots vont de 3,52× à 6,49× l'uniforme, à des entropies de 0,443 à 0,799.
Pour are, côte à côte :
| Vue | Pic | × uniforme | Entropie |
|---|---|---|---|
| Rollout | 0,141 | 1,27× | 0,963 |
| Tête L1H4 | 0,499 | 4,49× | 0,734 |
Un pic à 1,27× l'uniforme n'est pas un résultat. Cela signifie que le gagnant dépasse d'un quart un partage équitable, sur une ligne de neuf mots, et que de petites variations n'importe où rebattraient les trois premières places.
Ce n'est pas un bug du rollout, ni un défaut de la passe avant. C'est une propriété documentée de la méthode, confrontée à un modèle peu profond.
Le rollout ajoute la matrice identité à chaque couche pour modéliser le flux résiduel, puis multiplie. Chaque multiplication mélange un peu plus chaque position avec toutes les autres. Après suffisamment de couches, le produit tend vers quelque chose de proche de l'uniforme — la signature mathématique d'une marche aléatoire qui perd son point de départ.
Sur un modèle à douze couches, le rollout dispose d'assez de profondeur pour que la structure survive au mélange. Sur quatre couches, l'étalement va plus vite que le signal. La méthode n'est pas fausse ; on lui demande de résumer un processus trop court pour avoir grand-chose à résumer.
Le défaut n'était pas d'utiliser le rollout. C'était d'afficher le rollout par défaut et de laisser un visiteur y lire un classement.
L'interface présentait une liste ordonnée avec des poids à trois décimales. Toute cette présentation disait : « ces mots sont classés par importance ». Un lecteur n'a aucun moyen de savoir que l'ordre est à peine au-dessus du bruit. Les nombres sont vrais — cette ligne de rollout a bien ces valeurs — et l'impression qu'ils produisent est fausse.
Même mode de défaillance que l'article précédent, ailleurs : arithmétique correcte, présentation trompeuse.
Le correctif a été de mesurer à quel point une ligne est réellement piquée, et de laisser cela décider de ce qui s'affiche. Les lignes sont désormais classées par leur ratio : sous 1,6 c'est plat, de 1,6 à 3 c'est diffus, au-delà de 3 c'est sélectif. La sélection privilégie une tête donnant une ligne sélective pour le mot ciblé, et le verdict de forme est affiché à côté : le lecteur voit quand l'outil lui dit que la ligne ne dit pas grand-chose.
Le rollout reste disponible, étiqueté, exactement correct. Il n'ouvre simplement plus par défaut en se faisant passer pour un classement.
Il reste le choix honnête pour le résultat enregistré qui ouvre la scène, car cet export ne contient que le rollout moyenné : les têtes individuelles n'ont pas été sauvegardées. Y afficher une vue par tête reviendrait à inventer des têtes absentes du fichier.
Et il reste la bonne réponse à une question que personne ne posait : à travers tout le réseau, chemins résiduels compris, comment l'information circule-t-elle de cette entrée vers cette sortie ? C'est une vraie question, avec une vraie méthode. Ce n'est pas la question que pose un visiteur qui clique sur un mot, laquelle est : à quoi ce mot est-il relié ?
Accorder la statistique à la question, c'est l'essentiel de l'interprétabilité. Le reste consiste à admettre quand la statistique dont on dispose ne répond pas à la question posée.
Ensuite : comment tester un modèle quand on ne peut pas regarder la réponse et dire si elle est juste ?
Plus à lire
En médiane, 24 % de chaque ligne affichée avait déjà été supprimée avant que vous ne la voyiez. Au pire, 95 %. L'arithmétique était juste depuis le début.
J'ai écrit le code et les tests à partir de la même idée fausse, et ils s'accordaient parfaitement. Tout était vert.
La table d'embeddings pèse 31 254 528 octets. Une phrase de douze mots en utilise environ 20 Ko. HTTP Range fait que c'est la seule partie qui circule.