HeadlinesBriefing favicon HeadlinesBriefing.com

Un petit réseau compresse les données, attire le Pentagone

Towards Data Science •
×

Je ne m'attendais pas à ce que la géométrie apparaisse. Je reproduisais une petite partie de l'article d'interprétabilité d'Anthropic de 2022, "Toy Models of Superposition" [1], principalement parce que l'affirmation centrale semblait assez invraisemblable pour que je veuille la vérifier moi-même plutôt que de la prendre pour acquise. L'affirmation : un réseau neuronal peut représenter plus de caractéristiques qu'il n'a de dimensions pour travailler, en les empaquetant à des angles les uns par rapport aux autres et en tolérant un peu d'interférence.

Demandez-lui de compresser cinq choses en deux dimensions dans les bonnes conditions, et il ne choisit pas deux gagnants et n'abandonne pas le reste. Il arrange les cinq en un pentagone parfait. Je n'avais pas PyTorch ni aucune bibliothèque autograd disponible, ni accès à Internet pour en installer une, donc tout ce qui suit est du NumPy pur, et j'ai dérivé la passe arrière à la main.

Cela s'est avéré être le bon type d'ennuyeux. Dériver les gradients vous-même vous force à comprendre réellement ce que le modèle fait aux données, plutôt que de faire confiance à un appel .backward() auquel vous n'avez jamais eu à penser. Si vous avez une formation en mathématiques et que vous n'avez jamais dérivé manuellement la rétropropagation à travers même un petit réseau, je le recommande sincèrement comme exercice.

C'est dix minutes de règle de chaîne qui font que tout ce qui suit s'emboîte. Toutes les données de cet article sont synthétiques. Je les génère moi-même dans le code, aucun ensemble de données externe n'est impliqué, ce qui est aussi la façon dont l'article original le fait.

Toutes les images, sauf indication contraire, sont de l'auteur. Le problème que cela essaie d'expliquer : Voici le puzzle motivant, et il est réel dans la recherche sur l'interprétabilité. Si vous regardez à l'intérieur d'un réseau neuronal entraîné en espérant trouver des neurones individuels qui représentent proprement des concepts individuels, un neurone pour "est-ce un chien", un pour "est-ce rouge", vous ne trouvez généralement pas cela.

Au lieu de cela, vous trouvez des neurones qui semblent répondre à plusieurs choses non liées à la fois, un neurone qui s'active à la fois pour les visages de chats et les avant des voitures, par exemple. Cela s'appelle la polysémie, et cela rend l'interprétabilité beaucoup plus difficile, car vous ne pouvez pas simplement lire ce qu'un réseau "croit" en inspectant des unités individuelles. La proposition de l'article est que la polysémie n'est pas du bruit ou un échec.

C'est une stratégie réelle que le réseau utilise délibérément, car il a plus de concepts à représenter qu'il n'a de neurones pour les représenter, et la plupart de ces concepts sont rarement actifs en même temps. Si deux caractéristiques ne sont presque jamais "activées" simultanément, le réseau peut se permettre de les laisser partager une direction dans l'espace d'activation, car l'interférence ne coûte quelque chose que dans les rares occasions où les deux se déclenchent ensemble. Cette stratégie d'empaquetage est ce que l'article appelle la superposition, et son modèle jouet est conçu pour être le cadre le plus simple possible où vous pouvez la voir se produire et la mesurer réellement.

Le modèle, et les mathématiques que j'ai dû résoudre pour l'entraîner : La configuration est petite exprès. Vous avez n caractéristiques synthétiques, chacune un nombre entre 0 et 1 qui est zéro la plupart du temps (c'est la parcimonie) et non nul le reste du temps. Vous les compressez à travers un goulot d'étranglement de m dimensions cachées, où m est plus petit que n, puis vous essayez de reconstruire les caractéristiques originales à la sortie via une ReLU.

Concrètement, avec une seule matrice de poids W de forme (m, n) utilisée à la fois pour la compression et la reconstruction : h=W⋅x, x̂=ReLU(W⊤⋅h+b). L'entraînement minimise une erreur quadratique pondérée entre x et x̂, où chaque caractéristique i obtient un poids d'importance Ii, donc on dit au réseau que certaines caractéristiques comptent plus que d'autres : L=∑i Ii⋅(xi−x̂i)²\m...