大型语言模型 (LLM) 取得了令人瞩目的进展,这些大型模型可以执行各种任务,从生成类似人类的文本到回答问题。然而,理解这些模型的工作原理仍然具有挑战性,尤其是因为存在一种称为叠加的现象,其中特征混合在一个神经元中,使得从原始模型结构中提取人类可理解的表示变得非常困难。这就是稀疏自动编码器等方法似乎能够解开特征以提高可解释性的原因。
在这篇博文中,我们将使用稀疏自动编码器在一个特别有趣的宾语-动词一致性案例中寻找一些特征回路,并了解模型组件如何为该任务做出贡献。
在神经网络的背景下,特征回路是网络如何学习组合输入特征以在更高层次上形成复杂模式的方式。我们使用“回路”的隐喻来描述特征如何在神经网络的各层中进行处理,因为这种处理方式让我们想起了电子电路中处理和组合信号的过程。
这些特征回路通过神经元和层之间的连接逐渐形成,其中每个神经元或层负责转换输入特征,它们的交互作用导致有用的特征组合一起发挥作用,从而做出最终预测。
以下是特征回路的一个示例:在许多视觉神经网络中,我们可以找到“一个回路,作为一个检测不同角度方向曲线的单元族。曲线检测器主要由早期、不太复杂的曲线检测器和线检测器实现。这些曲线检测器在下一层用于创建 3D 几何形状和复杂的形状检测器”[1]。
在接下来的章节中,我们将研究 LLM 中用于主谓一致任务的一个特征回路。
在机器学习的背景下,我们有时会观察到叠加,指的是模型中的一个神经元表示多个重叠特征而不是单个、不同的特征的现象。例如,InceptionV1 包含一个神经元,它对猫脸、汽车前部和猫腿做出反应。
这就是稀疏自动编码器 (SAE) 的作用所在。
SAE 有助于我们将网络的激活解开成一组稀疏特征。这些稀疏特征通常是人类可以理解的,使我们能够更好地理解模型。通过将 SAE 应用于 LLM 模型的隐藏层激活,我们可以隔离有助于模型输出的特征。
您可以在我之前的博文中找到 SAE 工作原理的详细信息。
主谓一致是英语中的一条基本语法规则。句子中的主语和谓语动词在数量上必须一致,即单数或复数。例如:
对于人类来说,理解这条简单的规则对于文本生成、翻译和问答等任务非常重要。但是我们如何知道 LLM 是否真的学习了这条规则呢?
我们现在将探讨 LLM 如何为这项任务形成特征回路。
现在让我们构建创建特征回路的过程。我们将分四个步骤进行:
我们首先构建一个玩具语言模型,它可能与以下代码完全没有意义。这是一个具有两层简单层的神经网络。
对于主谓一致,模型应该:
<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>
目前还不清楚隐藏层内部发生了什么。因此,我们引入了以下稀疏自动编码器:
<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>
我们训练原始模型 SubjectVerbAgreementNN 和 SubjectVerbAgreementNN,使用旨在表示动词的不同单数和复数形式的句子,例如“The cat runs”、“the babies run”。但是,和之前一样,对于玩具模型,它们可能没有实际意义。
现在我们可视化特征回路。如前所述,特征回路是用于处理特定特征的神经元单元。在我们的模型中,特征包括:
您可以在图中看到我们将特征回路可视化为一个图:
对于真实案例,我们在 GPT2-small 上运行类似的代码。我们显示了表示选择单数动词的决策的特征回路图。
特征回路帮助我们了解复杂 LLM 中的不同部分如何导致最终输出。我们展示了使用 SAE 为主谓一致任务形成特征回路的可能性。
但是,我们必须承认,这种方法仍然需要一些人为干预,因为我们并不总是知道在没有适当设计的情况下是否真的可以形成回路。
[1] 缩放:电路简介
Please note that I have preserved the image placeholders and assumed the images are still accessible at the provided URLs. I have also maintained the original formatting as much as possible while rewording and restructuring the text for improved flow and clarity. The code blocks remain unchanged.
以上是LLM中具有稀疏自动编码器的特征电路的配方的详细内容。更多信息请关注PHP中文网其他相关文章!