Les modèles de grandes langues (LLM) ont réalisé des progrès remarquables qui peuvent effectuer une variété de tâches, de la génération de texte humain à la réponse aux questions. Cependant, comprendre le fonctionnement de ces modèles reste difficile, en particulier parce qu'il existe un phénomène appelé superposition où les caractéristiques sont mélangées dans un neurone, ce qui rend très difficile l'extrait de représentations indispensables humaines à partir de la structure du modèle d'origine. C'est pourquoi des méthodes comme l'autoencoder clairsemé semblent être capables de démêler les fonctionnalités pour améliorer l'interprétabilité.
Dans ce billet de blog, nous utiliserons l'autoencoder clairsemé pour rechercher certaines boucles de fonctionnalités dans un cas particulièrement intéressant de cohérence d'objet-verbe et comprendre comment les composants du modèle contribuent à la tâche.
Dans le contexte des réseaux de neurones, la boucle de fonctionnalité est la façon dont le réseau apprend à combiner les fonctionnalités d'entrée pour former des modèles complexes à un niveau supérieur. Nous utilisons la métaphore de "Loop" pour décrire comment les fonctionnalités sont traitées dans diverses couches d'un réseau neuronal, car cette façon de traitement nous rappelle le processus de traitement et de combinaison de signaux dans les circuits électroniques. Ces boucles de caractéristiques sont progressivement formées par la connexion entre le neurone et la couche, où chaque neurone ou couche est responsable de la transformation des caractéristiques d'entrée, et leurs interactions conduisent à des combinaisons de fonctionnalités utiles qui travaillent ensemble pour faire la prédiction finale.
Ce qui suit est un exemple de boucles de fonction: dans de nombreux réseaux de neurones visuels, nous pouvons trouver "une boucle, en tant que famille d'unités qui détectent les courbes sous différents angles. Les détecteurs de courbe sont principalement composés de détecteurs de courbe précoce et moins complexes. et la mise en œuvre du détecteur de ligne.
Dans les chapitres suivants, nous examinerons une boucle de fonctionnalité pour les tâches cohérentes des prédicats de sujet dans LLM.
superposition et autoencoder clairsemé
C'est ce que fait l'autoencoder clairsemé (SAE).
SAE nous aide à débloquer l'activation du réseau en un ensemble clairsemé de fonctionnalités. Ces caractéristiques clairsemées sont souvent compréhensibles par les humains, ce qui nous permet de mieux comprendre le modèle. En appliquant SAE à l'activation de la couche cachée du modèle LLM, nous pouvons isoler des fonctionnalités qui contribuent à la sortie du modèle.
Vous pouvez trouver des détails sur le fonctionnement de SAE dans mon article de blog précédent.
Étude de cas: cohérence des prédicats du sujet
Nous allons maintenant explorer comment LLM forme des boucles de fonctionnalité pour cette tâche.
Builler la boucle de fonctionnalité
Nous entrons d'abord la phrase dans le modèle. Pour cette étude de cas, nous considérons la phrase suivante:
Entrez une phrase avec un verbe singulier ou pluriel.
<code># ====== 定义基础模型(模拟主谓一致)====== class SubjectVerbAgreementNN(nn.Module): def __init__(self): super().__init__() self.hidden = nn.Linear(2, 4) # 2 个输入 → 4 个隐藏激活 self.output = nn.Linear(4, 2) # 4 个隐藏 → 2 个输出 (runs/run) self.relu = nn.ReLU() def forward(self, x): x = self.relu(self.hidden(x)) # 计算隐藏激活 return self.output(x) # 预测动词</code>
Nous formons les modèles originaux SubjectverBagrementNN et SubjectVerbagrementNN, en utilisant des phrases conçues pour représenter différentes formes de verbes singulières et pluriels, telles que "The Cat Runs", "The Babies Run". Mais, comme avant, pour les modèles de jouets, ils peuvent ne pas avoir de sens.
<code># ====== 定义稀疏自动编码器 (SAE) ====== class c(nn.Module): def __init__(self, input_dim, hidden_dim): super().__init__() self.encoder = nn.Linear(input_dim, hidden_dim) # 解压缩为稀疏特征 self.decoder = nn.Linear(hidden_dim, input_dim) # 重构 self.relu = nn.ReLU() def forward(self, x): encoded = self.relu(self.encoder(x)) # 稀疏激活 decoded = self.decoder(encoded) # 重构原始激活 return encoded, decoded</code>
Convertir les attributs du langage en une couche cachée
de la représentation abstraite.Pour les cas réels, nous exécutons du code similaire sur GPT2-Small. Nous montrons un diagramme de boucle caractéristique représentant la décision de sélectionner les verbes singuliers.
Les boucles de fonctionment nous aident à comprendre comment différentes parties de LLM complexes conduisent à la sortie finale. Nous montrons la possibilité de former des boucles de fonction à l'aide de SAE pour des tâches cohérentes de prédicat sujet.
Cependant, nous devons admettre que cette approche nécessite toujours une intervention humaine, car nous ne savons pas toujours si des boucles peuvent vraiment être formées sans conception appropriée.
[1] Zoom: Introduction du circuit
Veuillez noter que j'ai préservé les espaces réservés d'image et que les images sont toujours accessibles aux URL fournies. restent inchangés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!