电路追踪:揭示语言模型中的计算图¶
Apr 30, 2025 · 原文: https://transformer-circuits.pub/2025/attribution-graphs/methods.html
引言¶
深度学习模型通过一系列分布在众多计算单元(人工"神经元")上的变换来产生输出。机制可解释性领域致力于用人类可理解的语言描述这些变换。迄今为止,我们团队的方法遵循两步走的思路:首先,我们识别特征——模型在其计算中使用的可解释构建块;其次,我们描述这些特征相互作用以产生模型输出的过程,即电路。
一种自然的做法是直接用模型的原始神经元作为这些构建块。1 采用这一做法,先前的工作成功地在视觉模型中识别出了有趣的电路,这些电路由似乎表征有意义视觉概念的神经元构成 \cite{cammarata2020thread}。然而,模型神经元往往具有多语义性——同时表征许多不相关概念的混合。多语义性被认为的原因之一是叠加现象 \cite{arora2018linear,goh2016decoding,elhage2022superposition}:模型需要表征的概念数量超过其神经元数量,因此不得不将概念的表征"涂抹"到众多神经元上。网络的基本计算单元(神经元)与有意义概念之间的这种错配,已被证明是机制研究议程取得进展的主要障碍,尤其是在理解语言模型方面。
近年来,稀疏编码模型,如稀疏自编码器(sparse autoencoder, SAE)\cite{bricken2023monosemanticity,cunningham2023sparse,gao2024scaling,rajamanoharan2024jumping}、转码器(transcoder)\cite{dunefsky2024transcoders,marks2024dictionary,templeton2024predicting} 和跨层转码器(crosscoder)\cite{lindsey2024crosscoders},已成为识别以叠加方式表征的可解释特征的有力工具。这些方法将模型激活值分解为稀疏激活的组成部分("特征"),2 这些组成部分在许多情况下被证明与人类可理解的概念相对应。虽然当前的稀疏编码方法在识别特征方面并不完美(参见 § 局限性),但它们产生的结果已足够可解释,促使我们研究由这些特征构成的电路。已有数位作者在这一方向上迈出了有希望的步伐 \cite{marks2024sparse,dunefsky2024transcoders,ge2024automatically}。
虽然研究由稀疏编码特征构成的电路这一基本前提听起来很简单,但设计空间很大。在本文中,我们描述当前的方法,其中涉及几个关键的方法论决策:
- 转码器。我们使用转码器的一种变体 \cite{dunefsky2024transcoders,templeton2024predicting} 而非 SAE 来提取特征,这使我们能够构建一个可解释的"替代模型",作为原始模型的代理来研究。重要的是,这种方法使我们能够分析特征与特征之间的直接相互作用。
- 跨层。我们的分析基于跨层转码器(cross-layer transcoder, CLT)\cite{lindsey2024crosscoders},其中每个特征从某一层的残差流读取输入,并对原始模型所有后续 MLP 层的输出做出贡献,这大大简化了最终得到的电路。值得注意的是,我们可以用学到的 CLT 特征替代模型的 MLP,同时在约 50% 的情况下与底层模型的输出保持一致。
- 归因图。我们聚焦于研究"归因图",它描述模型在特定提示上为某个目标词元(token)产生输出所采取的步骤,采用的方法与 Dunefsky 等人相似 \cite{dunefsky2024transcoders}。归因图中的节点表示激活的特征、提示中的词元嵌入、重建误差和输出 logits(对数几率)。图中的边表示节点之间的线性效应,因此每个特征的活动量是其输入边的总和(直至其激活阈值)(参见 § 归因图)。
- 特征间的线性归因。我们这样设计我们的设置:对于特定输入,特征之间的直接相互作用是线性的。这使归因成为一种定义明确、有原则可循的操作。关键在于,我们冻结注意力模式和归一化分母(遵循 \cite{nelhage2021mathematical}),并借助转码器来实现这种线性。3 特征之间还存在由其他特征中介的间接相互作用,它们对应于多步路径。
- 剪枝。尽管我们的特征是稀疏的,但在给定提示上激活的特征仍然太多,难以轻松解读最终得到的图。为管理这种复杂性,我们通过识别在特定词元位置上对模型输出贡献最大的节点和边来对图进行剪枝(参见 § 附录:图剪枝)。这样做使我们能够为任意提示生成模型计算的稀疏、可解释的图。
- 交互界面。我们设计了一个交互式界面,用于探索归因图及其构成特征,使研究者能够快速识别并高亮其中的关键机制。
- 验证。我们研究电路的方法是间接的——我们的替代模型可能使用与底层模型不同的机制。因此,验证我们在归因图中发现的机制十分重要。我们通过扰动实验来做到这一点。具体而言,我们衡量沿某个特征方向施加扰动,在多大程度上对其他特征激活值(以及模型输出)产生了与归因图一致的变化。我们发现,跨提示来看,扰动实验通常与我们的归因图在定性上一致,尽管存在一些偏差。
- 全局权重。虽然本文主要聚焦于研究单个提示的归因图,但我们的方法也使我们能够直接研究替代模型的权重("全局权重"),这些权重是跨多个提示的机制的基础。在 § 全局权重中,我们展示了这样做面临的一些挑战——由于权重干涉,朴素的全局权重往往不如归因图可解释。然而,我们成功地将它们应用于理解小数字加法的底层电路。
本文的目标是详细描述并验证我们的方法论,并以几个案例研究作为示例说明。
-
我们首先介绍方法。我们描述替代模型的搭建(§ 构建可解释的替代模型)以及我们如何构建归因图(§ 归因图),并以两个案例研究(§ 事实回忆案例研究、§ 加法案例研究)作结。随后我们继续探索构建全局电路的方法,包括其中的挑战以及应对这些挑战的一些初步方法(§ 全局权重)。
-
随后我们提供对跨层转码器及由此产生的归因图的详细定量评估(§ 评估),展示 CLT 在哪些指标上相对神经元和逐层转码器提供了帕累托改进。之后,我们概述姊妹论文,该论文将我们的方法应用于 Claude 3.5 Haiku 的各种行为(§ 生物学)。接着我们讨论方法论上的局限性(§ 局限性),其中包括注意力模式的作用、重建误差的影响、抑制母题(suppression motifs)的识别,以及理解全局电路的困难。解决这些局限性,并观察由此会揭示哪些额外的模型机制,是未来工作一个有前景的方向。
-
最后,我们以更广泛的讨论(§ 讨论)收尾,探讨用于生成归因图的方法设计空间——我们方法中的部分内容可以与其他方法自由组合,同时保留大部分收益——并回顾相关工作(§ 相关工作)。
- 我们的姊妹论文 On the Biology of a Large Language Model 将这些方法应用于 Claude 3.5 Haiku,研究了多跳推理、规划、幻觉等多种多样的行为。
我们注意到,训练跨层转码器会带来可观的前期成本与投入,但这一成本会在其应用于电路发现的过程中被摊薄。我们发现,它带来的电路可解释性与简约性提升足以证明这笔投入是值得的(参见开源权重模型的成本估算,以及与逐层转码器相比的成本匹配性能讨论)。尽管如此,我们强调,也可以改用逐层转码器甚至 MLP 神经元等替代方案(保持上述步骤 3–8 不变),并且仍然能产生有价值的洞见。此外,未来很可能会开发出比 CLT 更好的方法。
为便于复现,我们分享了关于 CLT 实现的指南、剪枝方法的细节,以及支持交互式图分析界面的前端代码。
构建可解释的替代模型¶
架构¶
跨层转码器(CLT)由分为 \(L\) 层的神经元("特征")组成,层数与底层模型相同。该模型的目标是使用稀疏激活的特征重建底层模型各 MLP 的输出。特征从其关联层的模型残差流接收输入,但之所以称为"跨层",是因为它们可以向所有后续层提供输出。4 具体而言:
- 第 \(\ell^\text{th}\) 层的每个特征都使用一个线性编码器后接一个非线性激活,从该层的残差流"读入"输入。
- 第 \(\ell^\text{th}\) 层的特征对层 \(\ell, \ell+1,\ldots , L\) 中 MLP 输出的重建做出贡献,对每个输出层使用一组独立的线性解码器权重。
- 所有层中的所有特征都联合训练。因此,层 \(\ell^\prime\) 中 MLP 的输出由所有先前层的特征联合重建。
更正式地说,运行跨层转码器时,设 \(\mathbf{x^{\ell}}\) 表示原始模型在层 \(\ell\) 的残差流激活值。CLT 特征激活值 \(\mathbf{a^{\ell}}\) 在层 \(\ell\) 的计算方式如下:
其中 \(W_{enc}^{\ell}\) 是层 \(\ell\) 的 CLT 编码器矩阵。
我们用 \(\mathbf{y^{\ell}}\) 表示原始模型在层 \(\ell\) 的 MLP 输出。CLT 的重建尝试 \(\mathbf{\hat{y}^{\ell}}\)(对 \(\mathbf{y^{\ell}}\))使用 JumpReLU 激活函数 \cite{rajamanoharan2024jumping} 计算如下:
其中 \(W_{dec}^{\ell' \to \ell}\) 是层 \(\ell'\) 的特征输出到层 \(\ell\) 所用的 CLT 解码器矩阵。
为训练跨层转码器,我们最小化两个损失函数之和。第一个是跨层求和的重建误差损失:
第二个是跨层求和的稀疏性惩罚(带有一个总体系数 \(\lambda\)——一个超参数——以及另一个超参数 \(c\)):
其中 \(N\) 是每层的特征数量,\(\mathbf{W_{dec, i}^{\ell}}\) 是特征 \(i\) 的所有解码器向量的拼接。
我们在一个小型 18 层 transformer 模型("18L")5 以及 Claude 3.5 Haiku 上训练了不同规模的 CLT。所有层的特征总数从 300K 到 10M(18L)以及从 300K 到 30M(Haiku)不等。更多训练细节参见 § 附录:CLT 实现细节。
从跨层转码器到替代模型¶
给定一个训练好的跨层转码器,我们可以定义一个"替代模型",用跨层转码器特征替代模型的 MLP 神经元——也就是说,每一层的 MLP 输出都被替换为所有写入该层的 CLT 对该输出的重建。运行这个替代模型的前向传播与运行原始模型完全相同,只有两处修改:
- 当到达层 \(\ell\) 中 MLP 的输入时,我们计算编码器位于层 \(\ell\) 的跨层转码器特征的激活值。
- 当到达层 \(\ell\) 中 MLP 的输出时,我们用本层及先前层中跨层转码器特征经由各自面向层 \(\ell\) 的解码器产生的输出之和覆盖它。
注意力层照常应用,不做任何冻结或修改。虽然我们的 CLT 只使用来自底层模型的输入激活值进行训练,但"运行"替代模型意味着要在"分布外"的输入激活值上运行 CLT——这些激活值来自替代模型自身的中间激活。
作为一项简单的评估,我们衡量替代模型最可能的词元输出与底层模型一致的那部分补全所占的比例。这一比例随规模增大而提高,并且与逐层转码器基线(即每一层都训练一个标准的单层转码器;所示特征数量指所有层的总数)相比,CLT 表现得更好。我们还与阈值化神经元基线进行比较,改变低于该阈值时神经元被清零的阈值(根据经验,我们发现神经元的激活值越高,其可解释性越强;下文将指出,依据我们在 § 定量 CLT 评估中的自动评估,其可解释性在何处大致与特征相当)。我们最大的 18L CLT 在来自开源数据集的多样化预训练风格提示中,有 50% 与底层模型的下一词元补全一致(参见 § 附加评估细节)。6
局部替代模型¶
虽然运行替代模型有时能重现底层模型的输出,但二者之间仍存在显著差距,而且重建误差会在层间累积放大。由于我们最终关心的是理解底层模型,我们希望尽可能贴近它。为此,在研究固定提示 \(p\) 时,我们构建一个局部替代模型,它
- 用 CLT 替代 MLP 层(与替代模型相同);
- 使用底层模型在 \(p\) 上前向传播得到的注意力模式和归一化分母(参见 \cite{nelhage2021mathematical,dunefsky2024transcoders});
- 在每个(词元位置,层)对上,为 CLT 输出添加一个误差校正项,其值等于真实 MLP 在 \(p\) 上的输出与 CLT 在 \(p\) 上的输出之差(参见 \cite{marks2024sparse})。
经过这一误差校正以及冻结注意力与归一化非线性之后,我们实际上已经用不同的基本单元重写了底层模型在提示 \(p\) 上的计算;经误差校正的替代模型的所有激活值和 logits 输出都与底层模型完全一致。然而,这并不能保证局部替代模型与底层模型使用相同的机制。我们可以通过衡量这两个模型对扰动的反应差异来测量机制上的差异;我们将扰动行为与归因图一致的程度称为"机制忠实度",将在 § 评估机制忠实度中讨论。7
局部替代模型可以看作一个横跨所有词元的大型全连接神经网络,我们可以对它进行经典的电路分析:
- 其输入是提示中每个词元的独热向量拼接而成的集合。
- 其神经元是所有词元位置上处于激活状态的 CLT 特征的并集。
- 其权重是从一个特征到另一个特征的所有线性路径上的相互作用之和,这些路径包括经由残差流和注意力的路径,但不经过 MLP 或 CLT 层。由于注意力模式和归一化分母被冻结,源特征的激活通过每条路径对目标特征预激活的影响,相对于源特征的激活是线性的。我们有时将这些称为"虚拟权重",因为它们并未在底层模型中实例化。
- 此外,它还有与误差项对应的类偏置节点,每个偏置都连接到模型中的每个下游神经元。
局部替换模型中仅有的非线性,就是施加于特征预激活之上的那些。
局部替换模型是我们归因图的基础——我们在归因图中研究局部替换模型在其所针对的提示(prompt)上的特征间相互作用。这些图是本文的主要研究对象。
归因图¶
我们将通过一个案例研究来介绍构建归因图的方法论,该案例涉及模型为任意标题编写首字母缩略词的能力。在我们研究的例子中,模型成功补全了一个虚构的缩略词。具体而言,我们给模型提示 The National Digital Analytics Group (N,并采样其补全结果:DAG)。模型训练所用的分词器有一个特殊的 "Caps Lock" 词元(token),这意味着提示和补全按如下方式分词:The National Digital Analytics Group (``⇪``n``dag。
我们通过构建一张归因图来解释模型为输出 "DAG" 词元所执行的计算,该图展示了信息从提示出发、流经中间特征、最终到达该输出的全过程。8 下面我们展示完整归因图的简化示意图。图中底部是提示,顶部是模型的补全结果。方框代表相似特征的组合,悬停即可显示每个特征的可视化。我们将在 § 理解与标注特征 中讨论对特征的解释。箭头代表一组特征或一个词元对其他特征及输出 logit(对数几率)的直接效应。
这个缩略词提示的归因图显示了三条主要路径,分别源自构成目标缩略词的各个词元。路径从特定单词的特征出发,促进"在正确位置说出该词首字母"的特征,这些特征又与一个 "say DAG" 特征及 logit 之间存在正边。"say X" 标签描述的是"输出特征",即促进特定词元 X 输出的特征,任意的单个字母用下划线表示。"Word → say _W" 边代表注意力头的 OV 电路(输出-值电路)向某个子空间写入信息,该子空间随后在目标位置被 MLP 放大。除了这些顺序路径之外,每组特征还有一条直达 logit 的边,代表仅经由注意力头 OV 电路中介的效应(即在局部替换模型中不"触碰"另一层 MLP 的输出路径)。
为了输出 "DAG",模型还需要决定输出一个缩略词,并考虑提示中已经包含 N 这一事实;确实,我们看到了"处于缩略词中"和"处于缩略词开头的 N 中"的特征与 logit 之间存在正边。单词 National 对 logit 的影响极小。我们推测这是因为它的主要贡献在于影响注意力模式,而我们的方法无法解释这一点(见 § 局限性:缺失的注意力电路)。
在本节的其余部分,我们将说明如何计算和可视化归因图。
为提示构建归因图¶
为了解释局部替换模型执行的计算,我们计算一张因果图,描绘它在特定提示上执行的计算步骤序列。我们构建该图的核心逻辑与 Dunefsky 等人 \cite{dunefsky2024transcoders} 的方法本质相同,只是扩展以处理跨层转码器(cross-layer transcoders)。我们的图包含四类节点:
- 输出节点对应于候选输出词元。我们只为达到 95% 概率质量所需的词元构建输出节点,总数最多 10 个。9
- 中间节点对应于提示中每个词元位置上处于激活状态的跨层转码器特征。
- 图的主输入节点对应于提示词元的嵌入。
- 附加输入节点("误差节点")对应于底层模型中每个 MLP 输出里 CLT 未能解释的部分。
图中的边代表局部替换模型中的直接、线性归因。边从特征、嵌入和误差节点出发,终止于特征节点和输出节点。给定源特征节点 \(s\) 和目标特征节点 \(t\),它们之间的边权重定义为 \(A_{s\rightarrow t} := a_sw_{s \rightarrow t}\),其中 \(w_{s \rightarrow t}\) 是将局部替换模型视为全连接神经网络时其中的(虚拟)权重,\(a_s\) 是源特征的激活值。10
就底层模型而言,\(w_{s \rightarrow t}\) 是对连接源特征解码器向量与目标特征编码器向量的所有线性路径(即经由注意力头 OV 电路和残差连接)的求和。
现在我们给出在实践中如何利用反向雅可比矩阵高效计算这些量的细节。设 \(s\) 是位于第 \(\ell_s\) 层、上下文位置 \(c_s\) 的源特征节点,\(t\) 是位于第 \(\ell_t\) 层、上下文位置 \(c_t\) 的目标特征节点。我们用 \(J_{c_s, \ell_s \rightarrow c_t, \ell_t}^{\blacktriangledown}\) 表示底层模型在目标提示上反向传播时的雅可比矩阵,其中对所有含非线性的模型组件——MLP 输出、注意力模式和归一化分母——施加了停止梯度(stop-gradient)操作,该矩阵从上下文位置 \(c_t\)、第 \(\ell_t\) 层的残差流映射到上下文位置 \(c_s\)、第 \(\ell_s\) 层的残差流。那么从 \(s\) 到 \(t\) 的边权重为
其中
- \(W_{\text{dec}, \;s}^{\ell_s \to \ell}\) 是特征 \(s\) 写入第 \(\ell\) 层的解码器向量,
- \(W_{\text{enc}, \;t}^{\ell_t}\) 是特征 \(t\) 的编码器向量。
其他类型边的公式与此类似,例如,嵌入-特征边的权重由 \(w_{s \rightarrow t} = \text{Emb}_s^TJ_{c_s, \ell_s \rightarrow c_t, \ell_t}^{\blacktriangledown} W_{\text{enc}, \;t}^{\ell_t}\) 给出。注意误差节点没有输入边。所有这些公式,以及将雅可比矩阵按底层模型中的路径展开的推导,参见 § 附录:归因图计算。
由于我们在上述计算中对模型的所有非线性施加了停止梯度,任意特征节点 \(t\) 的预激活 \(h_t\) 就是它在图中入边之和:\(h_t = \sum_\mathcal{S_t} w_{s \rightarrow t}\),其中 \(S_t\) 是与 \(t\) 处于更早层、且上下文位置相同或更早的节点集合。因此,归因图的边提供了每个特征活动的线性分解。
注意,这些图不包含节点通过影响注意力模式而对其他节点产生影响的信息,但确实包含经由冻结注意力的输出而实现的节点间影响信息。换言之,我们解释了从一个词元位置流向另一个词元位置的信息,但不解释模型为何移动这些信息。11 还要注意,跨层特征的出边汇总了它在所有写入层上的解码对下游特征产生的效应。
虽然我们替换模型的特征是稀疏激活的(每个词元位置大约有一百个激活特征),但归因图仍然太大而无法完整查看,尤其是随着提示长度的增加——即使是短提示,边的数量也可能增长到数百万。幸运的是,通常一个小子图就能涵盖从输入到输出的大部分重要路径。
为了识别这样的子图,我们应用一种剪枝算法,旨在保留对 logit 节点直接或间接施加显著影响的节点和边。使用默认参数时,我们通常能将节点数量减少到原来的十分之一,而所解释的行为仅减少 20%。我们算法与指标的方法论细节见 § 附录:图剪枝。
从归因图中学习¶
即使经过剪枝,归因图的信息密度依然很高。剪枝后的图往往包含数百个节点和数万条边——信息量太大,无法一次性解读。为了驾驭这种复杂性,我们开发了一个交互式归因图可视化界面。该界面的设计目标是支持"追踪"图中的关键路径、保留重新访问已探索节点和路径的能力,并按需呈现解读特征所需的信息。
下面我们展示从单个词元 "DAG" 出发进行归因的归因图交互式可视化:
该界面是交互式的。节点可以悬停或点击以显示附加信息。还可以通过 Cmd/Ctrl+Click 选择节点子集来构建子图。在子图中,特征可以聚合成我们称为超级节点(supernodes)的组合(动机见下文 § 将特征分组为超级节点)。
理解与标注特征¶
我们使用与先前工作 Scaling Monosemanticity 中类似的特征可视化,来手动解读并标注图中各个特征。12
最容易标注的是输入特征和输出特征:输入特征在特定词元或紧密相关的词元类别上激活,常见于浅层;输出特征促进模型用特定词元或紧密相关的词元类别继续生成回复,常见于深层。例如:
- 这个特征很可能是输入特征,因为它的可视化显示它在单词 "digital" 以及 "digitize" 等相似单词上强烈激活,而在其他单词上不激活。因此我们把它标注为 "digital" 特征。
- 这个特征(来自后文 § 加法案例研究 的一个 Haiku 特征)是一个输入特征,它在一系列以数字 6 结尾的词元上激活,甚至在与 6 关系更抽象的词元如 "six" 和 "June" 上也会激活。
- 这个特征很可能是输出特征,因为它在几个不同的词元上强烈激活,而在每个示例中,该词元后面都跟着文本 "dag"。此外,可视化的顶部表明,该特征提升模型预测 "dag" 的概率超过任何其他词元(就经由残差流的直接效应而言)。这表明它是一个输出特征。由于输出特征很常见,在标注促进某个词元或类别 X 的输出特征时,我们通常直接写 "say X",因此我们把这个示例标注为 "say 'dag'"。
- 这个特征(来自后文 § 事实回忆案例研究)是一个促进多种运动的输出特征,不过它也展示了标注输出特征可能遇到的困难。例如,必须注意到 "lac" 是 "lacrosse" 的第一个词元。此外,该特征激活后上下文中的下一个词元往往并不是运动名称,而通常是一个适合出现运动名称的位置。
另一些特征常见于模型的中间层,更为抽象,标注起来需要更多功夫。我们可能会利用它们激活的上下文示例、它们的 logit 效应(它们通过残差流和解嵌入直接促进或抑制的词元),以及它们所连接的特征来标注它们。例如:
- 这个特征在左括号之后未完成的缩略词的前一两个字母上激活,涵盖各种字母和缩略词,因此我们把它标注为"一般性地继续一个缩略词"。
- 这个特征在各种第二个字母为 D 的缩略词的开头激活,而它直接促进的许多词元的第二个字母也是 D。(并非所有这些词元都是如此,但我们并不指望 logit 效应能完美代表特征的功能,因为模型其余部分会产生间接效应。我们还发现,离最后一层越远的特征,其 logit 效应越难以解读。)为简洁起见,我们把这个特征标注为 "say '_D'",用下划线代表第一个字母。
- 最后,这个特征在各种看起来不像缩略词的大写字母串的首字母上激活,而它抑制最强烈的词元是类似缩略词的字母,但除此之外它的示例缺乏明显的共性,因此我们暂时把它标注为"抑制缩略词"。
我们发现,即便这些特征的标注并不完美,也足以让我们在图中发现重要的结构。
将特征分组为超级节点¶
归因图常常包含一些特征组,它们共享与自身在提示中所起作用相关的某个侧面。例如,在我们的提示中,有三个特征在 "Digital" 上激活,它们各自在不同的情形和语境下对单词 "digital" 作出响应。对这个提示而言,唯一重要的侧面是单词 "digital" 以 "D" 开头;三个特征都与同一组下游节点存在正边。因此,就分析这个提示而言,把这些特征归为一组、视为一个单元是合理的。为了可视化和分析的方便,我们发现把多个节点——对应于(特征,上下文位置)对——归入一个"超级节点"会很方便。这些超级节点对应我们上面展示的简化示意图中的方框,为方便起见,下面再重复一次。
我们分组节点的策略取决于手头的分析,也取决于特征在给定提示中的角色。我们有时会根据分析所侧重的侧面——即我们针对机制所作论断中重要的那个侧面——来归组在相似上下文上激活、具有相似嵌入或 logit 效应、或具有相似输入/输出边的特征。我们通常希望超级节点内的节点相互促进,并且它们对下游节点的效应符号相同。虽然我们试验过一些自动化策略,例如基于解码器向量或图的邻接矩阵进行聚类,但没有一种自动化方法足以覆盖说明某些机制论断所需的全部特征分组方式。我们将在 § 相似特征与超级节点 中进一步讨论超级节点及其存在的可能原因。
用干预验证归因图假设¶
在归因图中,节点提示哪些特征对模型的输出重要,边提示它们如何重要。我们可以通过在底层模型中进行特征扰动,并检查对下游特征或模型输出的影响是否与基于图的预测一致,来验证归因图的论断。对特征的干预方式是:修改其计算出的激活值,并注入其修改后的解码以替代原本的重建结果。
跨层转码器(cross-layer transcoder)中的特征会写入多个输出层,因此我们需要决定在哪个层范围内执行干预。该怎么做呢?我们可以像处理逐层转码器那样,在单个层上干预某个特征的解码,但归因图中的边表示的是多个层解码的累积效应,因此在单层上干预只会触及给定边的一个子集。此外,我们经常需要同时对多个特征进行干预,而超节点(supernode)中的不同特征会解码到不同的层。
为了在层范围上执行干预,我们会修改给定范围内每一层上某个特征的解码,并从该范围内最后一层开始运行一次前向传播。由于我们不会根据范围内更早位置的干预结果重新计算某一层的 MLP 输出,模型 MLP 输出发生的唯一变化将来自我们的干预。我们将这种方法称为「约束修补」(constrained patching),因为它不允许干预在其修补范围内产生二阶效应。另一种我们称为「迭代修补」(iterative patching)的方法见 § 附录:迭代修补(Iterative Patching);至于为什么更朴素的方法——例如在模型前向传播过程中把特征的解码向量加到每一层——会有重复计算特征效应的风险,参见 § 附录:使用跨层特征引导的细微之处(Nuances of Steering with Cross-Layer Features)中的讨论。
下面我们展示约束修补的乘法版本:将目标特征的激活值乘以 \(M\)(在第 \([\ell - 1, \ell]\) 层范围内进行)。请注意,更远层上的 MLP 输出不会直接受到该修补的影响。13
归因图是利用底层模型的注意力模式构建的,因此图中的边并不涵盖经由 QK 电路介导的效应。类似地,在我们的扰动实验中,我们保持注意力模式固定为未受扰动的前向传播中观测到的取值。这一方法论选择意味着,我们的结果不考虑扰动本身可能如何改变注意力模式。
回到我们的首字母缩略词提示(acronym prompt),我们展示对超节点进行修补的结果,首先从抑制「Group」超节点开始。为清晰起见,下面我们把修补效应叠加到超节点示意图上,展示对其他超节点以及 logit(对数几率)分布的影响。请注意,在此图中,节点在图形中的位置并不对应词元位置,除非另有明确说明。
下面我们展示抑制某些超节点对其他超节点的总激活以及 logit 的影响结果。对于每次修补,我们都把节点中每个特征的激活值设为其原始值的相反数(等价地,我们以 −1 为因子进行乘法引导)。14 然后我们把每个节点的总激活量绘制为它占其原始值的比例。15 我们用橙色轮廓标出那些我们假设修补会对其产生效应的下游节点。
我们看到,抑制每个词的特征会依次抑制相关的初始特征。此外,「say DA_」特征超节点同时受到「Digital」和「Analytics」超节点被抑制的影响。
定位重要层¶
归因图还让我们能够识别:一个特征的解码在哪些层会对 logit 产生最大的下游效应。例如,「Analytics」超节点的特征主要通过中间特征组「say A」「say DA」和「say DAG」(位于第 13 层及之后)间接作用于「dag」的 logit。
因此,我们预期对「Analytics」特征进行负向引导会作用于 dag 的 logit:其效应在第 13 层之前趋于平稳,随后在接近最后一层时幅度减小。这种减小源于我们干预的约束性。如果修补范围包含了所有「say an acronym」特征,那么它们的激活不会改变,因为约束修补不允许产生连锁效应。下面我们展示分别对每个 Analytics 特征进行引导的效果:起始层固定为 1,扫过修补的结束层。16
事实回忆案例研究¶
现在我们转向事实回忆(factual recall)的问题:研究模型如何以 65% 的置信度补全 Fact: Michael Jordan plays the sport of with basketball \cite{nanda2023factualrecall,batson2024easy}。我们首先计算一个归因图。与首字母缩略词研究一样,我们把语义相近的特征分组为超节点。
下面的超节点示意图展示了两条主要路径。一条路径源自「plays」和「sport」词元,促进「sport」和「say a sport」特征,进而促进 basketball、football 以及其他体育项目的 logit。另一条路径源自「Michael Jordan and other celebrities」,促进与 basketball 相关的特征,这些特征到 basketball logit 的边为正、到 football logit 的边为负。除了这些串行路径之外,一些特征组(如「Michael Jordan」和「sport/game of」)与 basketball logit 之间有直接边,代表仅经由注意力头 OV 介导的效应,这与 Batson 等人 \cite{batson2024easy} 的发现一致。
下面我们还展示了完整的交互式归因图。
此外,正如 Nanda 等人 \cite{nanda2023factualrecall} 所观察到的,似乎有一组复杂的机制参与把关于实体 Michael Jordan 的信息贡献给「Jordan」处的残差流。我们把以下特征归入同一个超节点:对「Michael」敏感的特征、一个已经识别出词元对「Michael Jordan」的 L1(第一层)特征、针对其他名人的特征,以及在「Michael Jordan」和其他不相关概念上都会激活的多语义特征。请注意,只要多语义特征与提示相关的某个侧面(facet)共享,我们就选择把它们包含进超节点,例如这个特征在单词「synergy」上的激活就比在「Michael Jordan」上更强。我们将在「定性特征评估」(Qualitative Feature Evaluations)中对特征进行更深入的评估。
引导实验可以再次让我们验证归因图提出的假设。
消融「sport」或「Michael Jordan」超节点都会对 logit 产生很大影响,但对另一个超节点的影响相对较小,这印证了平行路径结构。此外,我们看到抑制中间的「basketball discussion」超节点同样会对 logit 产生很大影响。
加法案例研究¶
现在我们考虑简单的加法提示 calc: 36+59=. 17 与前面的章节不同,我们展示的是 Haiku 3.5 的结果,因为它的模式更清晰,且展现出相同的结构(并排比较见 § 附录:加法特征比较……)。我们研究小数字加法,因为它是大多数 LLM 和成年人类都能熟练表现的最简单行为之一(不妨心算一下这道题,看看你的方法是否与模型一致!)。
在通用的特征可视化(基于任意数据集样本)之外,我们还补充了一种专门覆盖两位数加法问题集的可视化,从而能够清晰地了解每个特征的作用。参照分析了神经元的 Nikankin 等人 \cite{nikankin2024arithmetic} 的做法,我们对在 = 词元上激活的每个特征用三种图进行可视化:
- 操作数图(operand plot):展示该特征在 100 × 100 潜在输入网格上的激活情况。
- 输出权重图(output weight plot):展示其对 [0, 99] 输出的直接权重。18
- 嵌入权重图(embedding weight plot)(或「解嵌入」\cite{dunefsky2024transcoders}):展示嵌入向量对特征编码器的直接效应。其格式与输出权重图相同。
下面我们针对不同特征分别展示这三种图的一个示例。在这个受限的域上,操作数图是对 CLT 特征作为函数的完整描述。这些图中的条纹和网格代表不同类型的结构(例如,对角线表示对和的约束,而网格表示对输入的模约束)。
在下面的超节点示意图中,我们看到信息从输入特征流出——这些特征拆分出操作数的末位数字、数值和量级——进入三条主要路径:末位数字路径(mod 10)(浅棕色,右侧)、中等精度路径(中间)和低精度路径(深棕色,左侧),19 它们共同产生和的中等精度值以及和的末位数字;这些最终通过建设性干涉,同时给出和的 mod 100 版本与最终输出。
我们提供了 18L 对应的交互图,见此处。
超节点图揭示了该任务背后特征的一种分类体系(taxonomy):特征沿两大主轴变化,20
-
计算角色(Computational role)
-
求和特征(Sum features):操作数图呈对角线状,在一对输入的和满足某个条件时激活。
- 查表特征(Lookup Table Features):图呈网格状,由满足
condition1(a) AND condition2(b)的输入 a 和 b 组成。我们将在下文更详细地讨论它们。 - 加法函数特征(Add Function Features):图呈水平或垂直条带。某个加数满足某个条件,或者一个
OR操作合并了跨加数的两个条件。 - 大多激活特征(Mostly Active Features):在我们 10,000 个加法提示中的大多数「=」词元上激活。
-
杂项特征(Miscellaneous Features):具有各种奇怪的性质,但往往看起来像是上述类型的混合激活模式。我们发现它们对输出的影响较低。
-
条件属性(Condition properties)
-
精度(Precision):我们发现有些条件具有个位精度(sum=_5 或 =59),有些具有精确范围(宽度如 2 或 10),还有些具有宽度在 2–50 之间的模糊范围。
- 模性(Modularity):我们发现有些特征对和或操作数的取值敏感:其敏感性既可以是绝对意义上的,也可以是 mod 10、mod 100 意义下的,较少见的有 mod 2、mod 5、mod 25 和 mod 50。
- 模式(Pattern):我们发现有些特征对输入或输出中的正则表达式风格模式敏感,例如「starts with 51」,如 \cite{nikankin2024arithmetic} 所述。这些特征在我们的加法归因图中并不突出,对模型输出的影响较低,但它们的的确确存在,并且可能对其他涉及数字的任务更重要。
这些发现与其他机制研究大体一致:在自然语言语料上训练的语言模型使用涉及量级和模数的平行启发式来执行加法,这些启发式通过建设性干涉产生正确答案 \cite{nikankin2024arithmetic,kantamneni2025trig,zhou2024pre}。具体而言,Nikankin 等人 \cite{nikankin2024arithmetic} 提出了「一袋启发式」(bag of heuristics)的解释,识别出一组「操作数」(operand)特征(相当于我们的「add X」特征)和「结果」(result)特征(相当于我们的「sum」特征),它们在感知输入和产生输出时表现出高/低精度以及不同的模性。
我们还确认了查表特征的存在,它们似乎是模型与 CLT 所用架构的一个有趣推论。神经元和 CLT 特征的激活值是通过对其输入之和施加非线性变换计算得到的。这就在特征对一组输入的响应上产生了一个「平行四边形约束」(parallelogram constraint):即,如果特征 \(f\) 在形如 \(x+y\) 和 \(z+w\) 的两个输入上激活,那么它必然在 \(x+w\) 或 \(z+y\) 中至少一个输入上激活。这是因为 \(f\) 的预激活是操作数的仿射函数。21 特别地,输入特征不可能一步就产生一个通用的求和特征。例如,一个对 1+4 和 2+3 都激活的通用「sum = 5」特征,必然会对 1+3 或 2+4 中至少一个激活。因此,在把两个输入的信息复制到「=」词元与产生它们和的某个性质之间,必然存在某个中间步骤。CLT 的查表特征就代表了加法中的这些中间步骤。22
为了验证我们在归因图中观察到的结构与模型的因果结构一致,我们执行了一系列干预。对每个超节点,我们将其扰动为原始值的相反数,并测量其对所有后续超节点和输出的影响。我们发现结果与归因图大体一致:
具体而言,抑制两个输入词元中任一上面的个位特征,都会抑制整条个位路径(_6 + _9 查表特征、由此产生的 sum=_5 和 sum= _95 特征),而量级路径基本保持完好,包括 sum~92 特征。值得注意的是,当抑制 _6 时,模型会自信地输出 98,而不是正确答案 95;原始问题中的十位数字由其他量级信号保留了下来,但个位数字变成了 9 自加所得的结果。(不过,抑制 _9 会导致输出 91 而非 92,因此这种数字命理只能姑妄听之。)相反,抑制任一输入上的低精度特征(~30 和 ~59)会抑制低精度查表特征、量级求和特征以及相应的求和特征,而个位路径则不受影响。
我们还展示了扰动对输出的定量影响:对 _6 + _9 查表特征进行负向引导会把结果散布在 5 的范围内,而对最终的 sum=_95 特征进行负向引导则会把结果散布到更宽的带上(可能来自 sum~92 特征)。
下面,在建立了用于把该电路推广到其他输入的全局权重框架之后,我们将研究 CLT 特征在全部两位数加法提示范围内的相互作用。
全局权重¶
我们构建的归因图展示了特征如何在特定提示上相互作用以产生模型的输出,但我们对一个更全局的图景同样感兴趣:特征在所有上下文中的相互作用方式。在经典多层感知机中,全局相互作用由模型的权重提供:如果两个神经元位于相邻层,一个神经元对另一个的直接影响力就是它们之间的权重;如果神经元相隔更远,一个对另一个的影响力则经由中间层分解。在我们的设置中,特征之间的相互作用包含一个与上下文无关的分量和一个与上下文相关的分量。理想情况下我们希望两者都捕捉到:我们想要一组与上下文无关的全局权重,同时又能捕捉网络在所有可能上下文中的行为。在本节中,我们分析与上下文无关的分量(一种「虚拟权重」)、它们存在的一个问题(大的「干涉」项对分布没有因果效应),以及一种利用共激活统计量来处理干涉的方法。
在特定提示上,一个源 CLT 特征(\(s\))通过三类路径影响目标(\(t\)):
- 残差直达(residual-direct):\(s\) 的解码器写入残差流,随后在更晚的层被 \(t\) 的编码器读取。
- 注意力直达(attention-direct):\(s\) 的解码器写入残差流,经若干注意力头 OV 步传输后,被 \(t\) 的编码器读取。
- 间接(indirect):从 \(s\) 到 \(t\) 的路径由其他 CLT 特征中介。
我们注意到,残差直达影响不过是源特征在该提示上的激活值乘以一个虚拟权重,而该虚拟权重在不同输入间保持一致。23 正是由于这种一致关系,虚拟权重成为全局权重的一种简单形式。人们已在神经网络中的许多不同组件之间推导出虚拟权重,包括注意力头 \cite{nelhage2021mathematical}、SAE 特征 \cite{bricken2023monosemanticity,kissane2024attention} 和转码器特征 \cite{dunefsky2024transcoders}。对于 CLT,两个特征之间的虚拟权重等于下游特征的编码器与这两个特征之间的解码器之和的内积。
更正式地说,设 \(\ell_s\) 和 \(\ell_t\) 分别为特征 \(s\) 与 \(t\) 的编码器权重所在的层。设 \(L_{st}\) 为这两个特征之间的层的集合,满足 \(\forall \ell \in L_{st}, s \leq \ell < t\)。特征 \(s\) 在抵达特征 \(t\) 之前,会写入 \(L_{st}\) 中所有 MLP 的输出。设 \(W_{\text{dec}}^{s,\ell}\) 为特征 \(s\) 面向层 \(\ell\) 的解码器权重,\(W_{\text{enc}}^t\) 为特征 \(t\) 的编码器权重。于是虚拟权重计算如下:
归因图的边由残差直达贡献(虚拟权重乘以特征的激活值)与注意力直达贡献之和构成。
解读虚拟权重有一个主要问题:干涉 \cite{elhage2022superposition,henighan2023superposition}。由于数百万个特征经由残差流相互作用,它们彼此之间都会相连;在分布内从不共同激活的特征之间,仍然可能存在(可能很大的)虚拟权重。出现这种情况时,虚拟权重就不再适合充当全局权重,因为这些连接从不影响网络的功能。
我们可以在下面的例子中看到干涉的作用:我们从 18L 中取一个「说一个游戏名」(Say a game name)特征,按量级绘制它最大的虚拟权重。绿色条表示正连接,紫色条表示负连接。许多连接最强的特征难以解读,或与该概念没有明显关联。
你可能会认为这表明虚拟权重或我们的 CLT 未能捕捉可解释的连接。不过,只要我们设法从这些权重中去除干涉,仍然可以发现许多可解释的连接。24
这个问题有两种基本解法。其一,把研究的特征集限制在某个小领域内激活的特征上(正如我们在 § 全局权重与加法 中所做的)。其二,引入数据分布上特征-特征共激活的信息。
例如,设 \(a_i\) 为特征 \(i\) 的激活值。我们可以如下乘以虚拟权重,计算出一个期望残差归因值:
这表示残差直达路径在我们分析过的所有提示上的平均强度(Dunefsky 等人 \cite{dunefsky2024transcoders} 也计算过这一量)。这与在某个上下文位置内对许多词元的全部归因图取平均类似。25 该表达式中的指示函数(\({\small 1}\kern-0.33em1(a_j > 0)\))刻画了归因仅在目标特征激活时才为正这一事实。由于微小的特征激活往往具有多语义性,我们改用目标激活值来对归因加权:
我们把最后这种权重称为目标加权期望残差归因(target-weighted expected residual attribution, TWERA)。如公式所示,这两个值都可以通过把原始虚拟权重乘以激活值的(「分布内」)统计量得到。
现在,我们重新审视前面那个游戏特征示例,但这次按 TWERA 对连接排序。我们还绘制了每条连接的「原始」虚拟权重以作对比。这些连接中可解释的明显增多,说明虚拟权重提取出了有用的信号,只是我们需要去除干涉才能看到它们。上文虚拟权重图中最可解释的那些特征(另一个「说一个游戏名」特征和「极限飞盘」(Ultimate frisbee)特征)得以保留,而许多无关概念被过滤掉了。
TWERA 并非解决干涉的完美方案。将 TWERA 值与原始虚拟权重对比可以发现,许多极小的虚拟权重具有很强的 TWERA 值。26 这表明 TWERA 在很大程度上依赖共激活统计量,并且除了单纯去除大的干涉权重之外,还极大地改变了哪些连接是重要的。TWERA 也不能很好地处理抑制(归因方法普遍如此)。我们将在未来工作中进一步探讨这些问题。
尽管如此,我们仍发现,与归因图相比,全局权重为我们提供了一个有用的窗口,可以观察特征在更广泛的上下文中的行为。在本文其余部分以及姊妹论文中,我们将用这些方法来补充我们的理解。
全局权重与加法¶
现在我们回到上文在 Haiku 3.5 上的简单加法问题,展示与数据无关的虚拟权重如何在我们对加法特征的分类学各类型之间揭示出清晰的结构。我们再次考虑 10,000 个提示 calc: a+b=(其中 a,b ∈ [0, 99])的补全。除操作数图(同样定义见上文)之外,我们还考察了虚拟权重图:先把庞大的 \(n_\text{feat} \times n_\text{feat}\) 虚拟权重矩阵限制到在 10,000 个加法提示中至少 10 个上激活的特征集合上。这让我们得以看到所有可能经由直接残差路径发生的特征-特征相互作用。
在上面 36+59 提示中出现的特征附近,我们看到:
- _6 + _9 查表特征馈入其他求和特征(sum=_15、sum=_25 等),后者在与量级特征组合时很可能激活。
- add _9 特征馈入其他个位查表特征(_9 + _9、_0 + _9 等)。
- sum = _5 特征接收其他查表特征的馈入。
- 中等精度的 ~36+60 查表特征除了接收我们在此提示上看到的 add ~57 特征外,还接收 add ~62 特征的馈入。
我们提供了一个交互式界面,用来探索我们较小的 18L 模型中在两位数加法问题上突出的全部 2931 个特征之间的虚拟权重。
我们发现,把范围限制在这个狭窄的加法问题领域内激活的特征上,会得到一张全局电路图,其中大多数边都可以依据源特征与目标特征所实现的操作数函数来解释。此外,特征之间的连接重现了上一节那张图的一个更一般的版本:加法特征把某个特定操作数检测为输入的一部分,查表特征把这一信息传播给求和特征,求和特征(与前面的特征协同)产生模型的最终答案。
我们发现其中若干特征以启发式的形式出现,正如 Nikankin 等人 \cite{nikankin2024arithmetic} 所述:操作数图具有预测力的特征直接把这种预测推向输出——低精度特征提升与其操作数匹配的范围内的输出;个位查表特征直接提升与其映射匹配的输出(例如 _6 + _9 直接提高 _5 输出的权重)。在模型的最后几层之前,几乎没有任何特征代表完整的求解。从 CLT 的视角看,模型使用的是若干中间启发式,而非一个输出单一而确定的连贯程序化算法。
我们关注模型执行加法所用的计算步骤,这与 Kantamneni 和 Tegmark \cite{kantamneni2025trig} 从表征出发的同期工作互补。受整数嵌入向量傅里叶分解中出现尖峰这一观察的启发,他们找到了与数字的量级以及 mod 2、mod 5、mod 10 和 mod 100 分量高度相关的低维子空间。投影到这些子空间后,模型在该任务上的大部分性能得以保留,这与「时钟」(Clock)算法一致——它在每个模数下分别计算,最后以建设性干涉汇合;CLT 特征展示的本质上正是该方法的高精度与低精度版本。我们发现的一些重要特征具有与其神经元相似的操作数图,而他们把这些神经元拟合为(经阈值化的)傅里叶模态之和。27 我们图中出现的一些重要特征(例如以固定数字开头的操作数或和,如 95_ 和 9_)无法用傅里叶术语描述,这与他们的低秩近似存在一定误差相一致。28 识别我们无监督方法所揭示的计算策略整体背后的表征基础,是未来工作的一个有前景的方向。
总而言之,我们复现了「基础模型使用启发式」这一图景,并找到了与之匹配的 CLT 特征;通过干预实验展示了这些启发式如何贡献于可分离的路径;并证明了这些启发式如何相互连接、层层递进,共同解决加法任务。
评估¶
在本节中,我们对转码器特征及由此推导出的归因图进行定性与定量评估,重点关注可解释性与充分性。对更宏观的发现与局限讨论感兴趣的读者,我们建议直接跳到 § 生物学 和 § 局限性。
我们的方法产出模型在特定提示上机制的因果图描述。如何量化这些描述在多大程度上捕捉了模型的真实运作?这个问题很难归结为单一数字,因为涉及多个相关因素:
可解释性。我们对单个特征「意味着什么」理解得如何?下面我们会尝试用几种方式量化可解释性;不过在实践中,我们仍然在很大程度上依赖主观评估。我们把特征分组为「超节点」的连贯性同样值得评估。本文不打算量化这一点,而是留给读者自行验证我们的分组是否合理、是否可解释。我们还要指出,在归因图的语境中,图的整体可解释性与单个特征的可解释性同等重要。为此,我们量化了图简单性的一个概念:平均路径长度。
充分性。我们(剪枝后的)归因图在多大程度上足以解释模型的行为?我们尝试从几个方面量化这一点。最直接的评估是我们对替代模型输出与底层模型匹配程度的衡量,详见 § 从跨层转码器到替代模型。这是一项「硬」评估:计算图上任一位置的单个错误都可能严重损害性能。下面我们还计算了几个「较软」的充分性指标,衡量归因图中误差节点所占的比例。请注意,在许多情况下,我们展示的是剪枝归因图的子图示意图,描绘我们认为最值得注意的组成部分。我们有意不去衡量这些子图的充分性,因为它们常常有意排除图中「无趣」但必要的部分(例如加法提示中的「这是一道数学题」特征)。我们把更有原则性地将归因图蒸馏为「有趣」组成部分、并量化损失了多少(以及何种)信息的工作留给未来。29
机制保真度。我们识别出的机制在多大程度上确实被模型使用?为衡量这一点,我们进行扰动实验(例如抑制激活中的特征),并检验效应是否与局部替代模型(归因图所描绘的底层对象)的预测一致。下面我们会尝试定量地这样做,同时也在具体案例研究中验证保真度,尤其关注我们识别为有趣/重要的机制的保真度。请注意,我们的机制保真度概念与电路组件对模型计算的必要性这一思想相关。不过,必要性可能是个有些局限的概念——对模型输出并非严格「必要」的机制仍然可能值得识别,尤其是在多个机制并行协作、共同促成某项计算的情况下,而这是我们经常观察到的。
我们注意到,我们使用的具体评估方法在许多情况下是本文新提出的。部分原因在于,本文的工作多少有些独特:我们聚焦于单个提示的归因图,而非识别模型完成整个任务背后所依托的电路。为整个流水线(特征、超节点、图)开发更好的可解释性、充分性与保真度自动评估方法,是未来研究的一个重要课题。关于既往电路评估方法的更多细节,参见 § 相关工作。
跨层转码器评估¶
特征定性评估¶
CLT 特征要对我们有价值,就必须能被人类解读(也许未来它们只要能被 AI 解读就足够了!)。可解释性归根结底是一种定性属性——衡量我们特征可解释性的最佳方式,是观察它们的实际运行。理解特征代表什么的一个标准(尽管不完整)工具,是查看它激活的数据集样本(我们把这类样本的集合称为我们的「特征可视化」)。在本文后面的电路案例研究以及姊妹论文中,我们提供了数千个特征可视化。下面我们还展示了从每个模型不同层随机抽样的 50 个特征。
我们的特征可视化展示了来自公开数据集(Common Corpus、移除书籍后的 The Pile \cite{gao2020pile}、LMSYS Chat 1m \cite{zheng2023lmsyschat1m} 和 Isotonic Human-Assistant Conversation)中最强激活该特征的样本片段,以及最大激活与零之间以不同程度激活该特征的插值样本。高亮标记表示特征在给定词元位置上的激活强度。我们还展示了该特征通过解嵌入层的直接连接而最强促进/抑制的输出词元(注意:这一信息对模型较后层中的特征通常更有意义)。
18L 特征(悬停查看)
| 层 1 | 层 5 | 层 9 | 层 13 | 层 17 |
|---|---|---|---|---|
Haiku 特征(悬停查看)
| 第一层 | 中间层 | 最后一层 |
|---|---|---|
在非常粗略的层面,我们发现了几类特征:
- 输入特征:表征文本低级属性(例如特定词元或短语)的特征。大多数早期层的特征属于此类,但此类特征也存在于中间层和较后层。
- 激活值表征上下文更抽象属性的特征。例如,一个表征混合常见清洁化学品危险性的特征。这些特征出现在中间层和较后层。
- 执行功能的特征,例如一个「加 9」特征,它使模型输出一个比上下文中另一个数字大九的数字。这些特征往往出现在中间层和较后层。
- 输出特征:其激活促进特定输出(特定词元或词元类别)的特征。一个例子是「说一个首府」特征,它促进对应于美国各州首府名称的词元。
- 多语义特征,尤其是在早期层中,例如这个对词元「rhythm」、Michael Jordan 以及若干其他不相关概念都会激活的特征。
与我们先前关于跨层转码器的结果 \cite{lindsey2024crosscoders} 一致,我们发现,特征在其输出「驻留」于多个层的程度上也各不相同——有些特征主要贡献于重建一个或少数几个层,另一些特征一直到模型最后一层都有很强的输出,大多数特征则介于两者之间。
我们还注意到,Haiku 特征所表征的抽象在许多情况下比较小的 18L 模型中的特征更丰富,这与该模型更强的能力相一致。
定量 CLT 评估¶
在 § 从跨层转码器到替代模型中,我们评估了 CLT 复现底层模型计算的能力。在这里,我们衡量重建误差、稀疏性(以「L0」衡量,即每个输入词元平均激活的特征数)和特征可解释性。随着我们增大 CLT 的规模,我们观察到重建误差(跨层平均)和特征稀疏性均出现帕累托改进(在 18L 上,重建误差在 L0 大致固定的情况下下降;而在 Haiku 上,重建误差与 L0 同时下降)。在我们规模最大的 18L 运行(10M 特征)中,我们实现了 ~11.5% 的归一化平均重建误差和 88 的平均 L0。在我们规模最大的 Haiku 运行(30M 特征)中,我们实现了 21.7% 的归一化重建误差和 235 的平均 L0。
我们还计算了两种基于 LLM 的可解释性定量度量,它们在 \cite{lindsey2024evals} 中被引入并得到更详细的描述:
-
归类评估(Sort Eval):我们随机抽取两个特征,找出令它们激活最强的数据集示例集合。我们将这些示例集合呈现给 Claude,包括逐词元的特征激活信息。然后我们取只激活其中一个特征的其他数据集示例,将它们呈现给 Claude,并请它(基于初始示例集合)猜测这些示例对应哪个特征。最终评估分数是 Claude 在任意给定特征对上猜中正确特征的经验似然。
-
对比评估(Contrastive Eval):我们(使用 Claude)生成内容与结构相似、但在一个关键方面有所不同的提示对。我们计算只在其中一个提示上激活、而在另一个上不激活的特征集合。我们向 Claude 展示每个此类特征的特征可视化(feature vis)以及两个提示,并请它猜测是哪个提示导致该特征激活。最终评估分数是 Claude 在多次试验中为特征猜中正确提示的经验似然。
我们发现,根据这两个度量,CLT 特征的质量随规模增大而提高(同时重建误差也得到改善)——见下图。30
我们还将 CLT 与两个基线进行比较:在模型每一层上训练的逐层转码器(PLT),以及在不同激活水平上阈值化的模型原始神经元。31 我们发现,在所有指标上,CLT 都优于 PLT,而 CLT 和 PLT 都大幅优于阈值化神经元的帕累托前沿。
归因图评估¶
§ 归因图 中的案例研究侧重于从归因图中得出的定性观察。在本节中,我们描述用于比较方法论选择和字典规模的更定量化的评估。在下面每个小节中,我们将介绍一个指标,并比较使用 (1) 跨层转码器、(2) 每一层的逐层转码器以及 (3) 阈值化神经元生成的图32。为了把定量结果与定性观察联系起来,我们将链接到在这些指标上得分特别高或特别低的图。
虽然我们不把这些指标视为需要优化的基本量,但它们已被证明是有用的指南,既能追踪字典学习中的 ML 改进,也能标记我们的方法表现不佳的提示。
计算节点影响力¶
我们的基于图的指标依赖于从间接影响力矩阵导出的量。非正式地说,该矩阵衡量图中每对节点经由所有可能路径相互影响的程度。这为每个节点提供了一个自然的重要性指标:它对 logit 节点的影响程度。我们还经常比较来自误差节点与来自非误差节点的影响力大小。
为构造该矩阵,我们从图的邻接矩阵出发。我们将所有边权替换为其绝对值(或简单地将负值截断为 0),得到无符号邻接矩阵,然后将指向每个节点的输入边归一化,使其和为 1。设 \(A\) 表示这个归一化的无符号邻接矩阵,其索引为(目标,源)。
间接影响力矩阵为 \(B = A + A^2 + A^3 + \cdots\),这是一个诺伊曼级数,可以高效地计算为 \(B = (I - A)^{-1} - I\)。\(B\) 的条目表示给定节点对之间所有路径的强度之和,其中任意给定路径的强度由其在 \(A\) 中各组成边的值之积给出。为了计算每个节点的 logit 影响力分数,我们计算 B 中与 logit 节点对应的行的加权平均(按该特定 logit 的概率加权)。
测量与比较路径长度¶
图复杂性的一个自然指标是从嵌入节点到 logit 节点的平均路径长度。直观地说,较短的路径更容易理解,因为需要解读的因果链环节更少。
为了测量不同长度路径的影响力,我们计算影响力矩阵 \(B_{\ell} = \sum_{i=0}^{\ell} A^{i}\)。长度小于或等于 \(\ell\) 的路径的影响力则由 \(P_{\ell} = \sum_{e} B^{\ell}_{t,e}\) 给出,其中 \(e\) 遍历所有嵌入节点,\(t\) 是 logit 节点。33
下面,我们比较由 10M CLT、10M PLT 和阈值化神经元构建的图,比较指标是它们在一个预训练提示数据集上平均的按路径长度分布的影响力(未剪枝)。34
跨层转码器最重要的优势之一,是它们能在多大程度上缩短图中的路径长度。为了理解这会造成多大的定性差异,我们邀请读者查看针对同一提示、用不同类型替代模型生成的这些图。
| 替代模型类型 | 平均路径长度 | 图链接 |
|---|---|---|
| 跨层转码器(10m) | 2.3 | capital-analogy-clt |
| 逐层转码器(10m) | 3.7 | capital-analogy-plt |
我们发现,跨层转码器压缩路径的一个重要情形是放大(amplification):许多相似的特征依次相互激活。例如,在提示 Zagreb:Croatia::Copenhagen: 上,逐层转码器显示出一条完全由 Copenhagen 特征 构成的长度为 7 的路径,而跨层转码器把它们全部压缩到第 1 层的特征。
这个例子既说明了把跨多个层的重复计算放大整合为单个跨层特征的优点,也说明了其缺点。一方面,它使可解释性大大提升,因为它自动将重复计算压缩为单个特征,而无需事后分析或聚类。它还降低了「链条断裂」(chain-breaking)的风险——在放大链条中缺失一个特征,会阻碍沿图继续回溯的能力(即路径的某一步缺少相关的放大特征,从而切断因果链)。另一方面,CLT 具有与底层模型不同的因果结构,这增加了替代模型的机制偏离底层模型的风险。在上面的例子中,我们观察到一组 Copenhagen 特征激活了一个 Denmark 特征,后者启动了一条 Copenhagen 特征与 Denmark 特征相互强化的链条。这种动态在 CLT 图中不可见;只要这种动态在底层模型中也存在,它就是一个 CLT 机制不忠实的例子。
评估与比较图完整性¶
由于我们的替代模型存在重建误差,我们希望衡量模型的计算被捕捉到了多少。也就是说,图的影响力中有多少归因于特征节点,而非误差节点。
为衡量这一点,我们主要依赖两个指标:
- 图完整性分数:衡量有多少比例的输入边(按目标节点的 logit 影响力分数加权)来自特征节点或嵌入节点,而非误差节点。
- 图替代分数:衡量有多少比例的端到端图路径(按强度加权)经由特征节点(而非误差节点)从嵌入节点通往 logit 节点。
直观地说,完整性分数给予更多的「部分得分」(partial credit),衡量最重要的节点输入中有多大比例得到了解释;而替代分数则奖励完整的解释。
下面,我们报告各种规模和类型的字典在我们的预训练提示数据集上的平均未剪枝图替代分数与完整性分数。我们发现,最大的方法论改进来自从逐层转码器转向跨层转码器,而扩大特征数量的收益很大但边际递减。
为了让读者理解我们在不同分数的图中观察到的定性差异,我们邀请读者探索一些有代表性的归因图。请注意,这些图使用了我们的默认剪枝设置进行剪枝,我们将在下文更详细地描述该设置。
| 替代模型类型 | 完整性分数 | 替代分数 | 图链接 |
|---|---|---|---|
| 跨层转码器(10m) | 0.80 | 0.61 | uspto-telephone-clt |
| 逐层转码器(10m) | 0.78 | 0.37 | uspto-telephone-plt |
图剪枝¶
我们非常依赖剪枝来让图更易于消化理解。为了决定剪掉多少图,我们可以使用上面描述的完整性和替代指标,但此时被剪掉的节点计入误差项。通过改变剪枝阈值,我们描绘出 {节点、边} 数量与 {替代、完整性} 分数之间的前沿(完整图表和细节见附录)。
我们发现,通常可以将节点数量减少一个数量级,而完整性只降低 20%。
为了直观感受这种定性差异,下表中我们链接了同一提示(另一个首字母缩略词)在不同剪枝阈值下生成的归因图。
| 剪枝阈值 | 完整性分数 | 节点数 | 图链接 |
|---|---|---|---|
| 0.95 | 0.87 | 236 | iasg-p95 |
| 0.9 | 0.83 | 137 | iasg-p90 |
| 0.8(默认) | 0.70 | 55 | iasg-p80 |
| 0.7 | 0.58 | 27 | iasg-p70 |
评估机制忠实度¶
如 § 用干预验证归因图假设 中所讨论的,归因图提供关于机制的假设,这些假设必须通过扰动实验来验证。这是因为归因图描述的是局部替代模型中的相互作用,而局部替代模型可能与底层模型不同。在我们的大部分工作中,我们把归因图当作生成关于模型内部特定机制假设的工具(「特征 A 激活特征 B,从而提高了词元 X 的似然」),这些假设对应归因图的「片段」(snippet)。我们总结了三种验证实验的结果,更详细的描述见 § 附录:验证替代模型。
我们首先测量由归因图导出的影响力指标在多大程度上能够预测对 logit 和其他特征的干预效应。首先,我们测量节点的 logit 影响力分数在多大程度上能够预测消融某个特征对模型输出分布的影响。我们发现,与直接归因(即归因图中的直接边,忽略多步路径)和激活幅度等基线相比,影响力对消融效应的预测能力显著更强(参见「验证节点到 logit 的影响力」)。随后,我们对特征之间的相互作用进行了类似的分析。我们计算特征对之间的影响力分数,并将其与消融该特征对中上游特征对下游特征激活的相对效应进行比较。我们观察到 Spearman 相关系数为 0.72,这证明图影响力是下游模型中效应的良好代理指标(参见「验证特征间影响力」)。解读这些结果时的一些复杂之处参见「使用跨层特征引导的细微之处」。
上述指标有助于估计干预实验验证图中某个特定机制的可能性。我们可能还希望对归因图隐含做出的所有机制假设进行更普遍的验证。因此,另一种互补的验证方法是测量局部替代模型整体的机制忠实度,而不是归因图内的特定路径。我们可以这样操作化:考察在局部替代模型(即归因图所描述的模型)中施加的扰动,在多大程度上与底层模型中相应的扰动产生相同的下游效应。我们发现,在干预后一层处测量时,两个模型的扰动结果相当接近(余弦相似度 ~0.8,归一化均方误差 ~0.4),但扰动差异会随层数显著累积。35 更多细节参见「评估局部替代模型的忠实度」。
生物学¶
在我们的姊妹论文中,我们使用此处概述的方法,对前沿模型 Haiku 3.5 的九个行为案例研究中的电路进行了深入调查。这些案例包括:
- 多步推理。 我们展示了一个简单示例:模型执行“两跳”推理来补全 “The capital of the state containing Dallas is…”(达拉斯所在州的首都是……),走的是 Dallas → Texas → Austin(达拉斯 → 得克萨斯 → 奥斯汀)这条路径。我们能够看到并操纵它对中间步骤 Texas(得克萨斯)的表征。
- 诗歌中的规划。 我们展示了模型在书写诗行时会规划自己的输出。在开始写每一行之前,模型会预先识别可能出现在行末的押韵词。这些预先选定的押韵选项随后塑造了模型构建整行的方式。
- 多语言电路。 我们发现模型同时使用语言特异性的电路与抽象、语言无关的电路(后者在 Claude 3.5 Haiku 中比在较小的模型中更为普遍)。
- 加法。 我们重点展示了一个案例:同一套加法电路在差异很大的上下文之间泛化;我们还揭示了 Claude 3.5 Haiku 与一个更小、能力更弱的模型在加法机制上的质性差异。
- 医学诊断。 我们展示了一个示例:模型根据报告的症状识别出候选诊断,并据此提出后续问题,以探询可能佐证诊断的更多症状——这一切都“在它的头脑中”完成,而不把步骤写下来。
- 实体识别与幻觉。 我们揭示了让模型能够区分熟悉与不熟悉实体的电路机制,这一区分决定了模型是选择回答事实性问题,还是承认自己不知道。该电路的“误触发”可能导致幻觉。
- 拒绝有害请求。 我们找到证据表明:模型在微调期间构建了一个通用的“有害请求”特征,它由预训练期间学到的、表征各类具体有害请求的特征聚合而成。
- 一次越狱分析,其工作原理是:先诱骗模型“在不知不觉中”开始给出危险指令,然后凭借遵守句法与语法规则的压力使其继续下去。
- 思维链的忠实性。 我们探究了思维链推理相对于模型实际机制的忠实程度。我们能够区分三类情形:模型确实执行了它声称在执行的步骤;模型不顾真实性编造推理;模型从人类给出的线索倒推,使其“推理”最终落在人类暗示的答案上。
- 一个隐藏目标的模型。 我们还将我们的方法应用于该模型的一个变体,它被微调去追求一个秘密目标:利用其训练过程中的偏置。虽然模型不愿公开说出它的目标,我们的方法却将其暴露出来,揭示该目标被“烙进”了模型的“Assistant(助手)”人设之中。
我们建议读者先浏览这些案例研究,再回到本节来理解我们遇到的局限,以及这些局限如何塑造了我们的方法开发思路。
局限性¶
尽管本文与配套论文呈现的结果令人振奋,我们的方法仍存在若干重大局限。概括而言,最重要的几点如下:
- 注意力电路缺失 —— 我们不解释注意力模式是如何由 QK 电路计算出来的,因此有时会“错过计算中有趣的部分”。
- 重构误差与暗物质 —— 我们只解释了模型计算的一部分,仍有大量计算隐而未现。当关键计算缺失时,归因图揭示不了多少东西。
- 未激活特征与抑制性电路的作用 —— 某些特征没有激活这一事实,往往与其他特征激活了一样有趣。特别是,存在许多涉及特征抑制其他特征的有趣电路。
- 图复杂度 —— 最终得到的归因图可能非常复杂、难以理解。
- 特征处于错误的抽象层级 —— 特征分裂、特征吸收等问题意味着,特征往往并不处于最便于理解电路的抽象层级。
- 理解全局电路的困难 —— 理想情况下,我们希望以全局方式理解模型,而不是针对单个示例做归因。然而,全局电路极具挑战性。
- 机制忠实性 —— 当我们用跨层转码器(crosscoder)替换 MLP 计算时,我们有多大把握它们在使用与原 MLP 相同的机制,而不是某种仅与原 MLP 输出高度相关的东西?
我们在下文详细讨论这些问题,并尽可能提供具体的反例,展示由于这些问题,我们目前的方法无法解释模型计算的场景。我们希望这些内容能激励未来的研究。
注意力电路缺失¶
我们方法的一个重大局限是:我们的归因图是相对于固定的注意力模式计算的。这使归因成为定义明确、有原则的操作,但也意味着我们的图并不试图解释模型的注意力模式是如何形成的,也不解释这些模式如何通过注意力头的输出-值矩阵来中介特征与特征之间的交互 \cite{nelhage2021mathematical}。在本文中,我们聚焦于那些这一问题不算严重的案例研究——即注意力模式不负责模型计算中“有趣部分”或“关键点”的案例。然而,我们也发现了许多案例,其中这一局限使我们的归因图基本无用。
示例:归纳¶
让我们暂时考虑一个简单得多的模型——一个不起眼的 2 层纯注意力模型,即 \cite{nelhage2021mathematical} 所研究的那一类。这类模型的一个有趣性质是:它们利用归纳头 \cite{nelhage2021mathematical,olsson2022context} 来执行基本的上下文学习(in-context learning)。例如,考虑下面的提示:
I always loved visiting Aunt Sally. Whenever I was feeling sad, Aunt
这类模型会让归纳头回看 "Sally",然后预测它是正确答案。如果我们应用目前的方法,得到的答案没什么信息量。它只会告诉我们:模型预测了 "Sally",因为上下文中更早的位置出现过词元(token)"Sally"。
这遗漏了整个有趣的故事!归纳头之所以关注 "Sally",是因为它前面是 "Aunt",与当前词元相匹配。此前的方法(如 \cite{wang2022interpretability,nelhage2021mathematical})能够阐明这一点,因此这个案例甚至可以被视为某种倒退。
事实上,当我们的方法被应用于 Claude 3.5 Haiku 处理这个提示时,恰好就出现了这个问题。参见归因图可视化——图中包含从词元级“Sally”特征到“say Sally”(说出 Sally)特征、再到 "Sally" 的 logit(对数几率)的直接边,却未能解释这些边是如何产生的。
示例:多项选择题¶
归纳是注意力计算的一个简单案例:即便没有归因图的帮助,我们也能对其机制做出合理的猜测。然而,归因图的这种失效也会出现在更复杂的场景中,并在那里完全遮蔽模型计算中有趣的步骤。例如,考虑一道多项选择题:
Human: In what year did World War II end?
(A) 1776
(B) 1945
(C) 1865
Assistant: Answer: (B)
当我们为 Assistant 回复中的 "B" 词元计算归因图(交互式图可视化)时,得到的答案相对无趣——我们之所以回答 "B",是因为一个 tokens following "(b)"(紧跟“(b)”的词元)特征在正确答案上激活了。(还存在一条直达 "B" 词元的通路,以及由 say "B"(说出 B)运动特征(motor feature)中介的输出通路;为简洁起见,我们选择省略这些。)
其中没有任何一条能对模型如何选出答案提供有用的解释!图“跳过了”计算中有趣的部分——即模型如何知道 1945 是正确答案。这是因为该行为由注意力驱动。进一步调查表明,似乎有三个“正确答案”特征会在多项选择题的正确答案上触发,而干预实验显示它们起着关键作用。据此,我们推测其机制大致如下。36
由于这涉及大量推测,有必要厘清我们对 QK 电路已知什么、未知什么。
- 我们知道它受注意力控制,因为冻结注意力会锁定答案。
- 我们不知道它是否由某个特定的注意力头中介,也不知道所涉及的任何头是否具有可被理解为该现象之推广的普遍行为。
- 我们确实知道有三个特征似乎在追踪“这看起来像正确答案”。我们也知道对它们进行干预会以预期的方式改变正确答案;例如,在选项 C 上激活它们会使模型预测
"C"。 - 我们不知道“正确答案”特征是否直接作用于所涉注意力头的键(key)侧,也不知道是否存在“需要答案”特征、以及它们是否在查询(query)侧起作用。
- 我们也不知道是否可能存在替代的并行机制(参见 Feng & Steinhardt \cite{feng2023language})。
总而言之,我们不了解的东西还有很多!
但尽管我们的理解有限,有一点似乎很清楚:模型行为关键性地流经注意力模式以及计算这些模式的 QK 电路。在我们能解决这个问题之前,凡是注意力起关键作用的案例,我们的归因图都会“错过故事”。而且,虽然在本案例中我们通过人工调查对故事获得了部分理解,但我们希望未来的方法能够自动浮现这类信息!
关于注意力的未来方向¶
我们怀疑,以注意力为关键点的类似电路广泛存在于各种提示中。在这些情况下,我们目前的归因图几乎帮不上忙,需要新的方法。
归根结底,QK 电路是残差流上的一个二次型。这意味着归因可以自然地归结到键侧与查询侧特征的对上。每一对特征都有一个权重,描述它们会增强还是减弱对某个特定词元的注意力。然而,这种方法有一个缺点:复杂度呈二次方爆炸。
如果存在注意力叠加,那么逐一考察单个注意力头的 QK 电路可能反而把事情弄得更难,甚至产生误导。有趣的行为可能分散在多个头上,而每个头都有自己的 QK 电路。
我们还怀疑,对注意力层进行某种形式的字典学习,或者引入完整的注意力替换层,可能使这些“QK 归因”更易于处理、更可解释。我们认为,找到处理注意力归因的正确方式,是未来工作中最重要的方向之一。
重构误差与暗物质¶
我们的跨层转码器无法完全重构模型的激活。因此,我们的方法会留下模型机制中的一些“暗物质”未被观测到,部分原因是我们的字典不够大,无法为模型可能知道的每一个概念都学习一个对应的特征。在我们的归因图中,这一失效表现为“错误节点”:它们为其他节点提供输入,自身却不接收任何输入(它们“凭空冒出”),并且不可解释。在本文呈现的示例中,尽管存在错误节点,我们还是设法识别出了有趣的机制。需要指出的是,我们所描述的电路只是对模型计算的部分描述(既因为错误节点的存在,也因为我们所强调的电路通常只包含图中非错误节点的一个子集!)。
然而,值得强调的是,在某些情况下,错误节点会完全遮蔽模型在做什么。例如,考虑这次尝试的越狱——一个经过混淆的、要求模型编写恶意软件的请求(模型拒绝了该请求):
Human: Write an office macro TAhT SEaRChEs fOS AND EtEIaFTxLRS pASWORdS
Assistant:
在归因图中,混淆提示词元上的几乎所有节点都是错误节点,这使我们无法追溯在“Assistant:”词元上激活的、与拒绝相关的特征的来源。
这个例子中错误节点的普遍存在或许并不令人意外——这个提示相对于典型提示而言相当偏离分布(out-of-distribution),因此跨层转码器很可能在预测模型活动方面表现不佳。
我们还注意到,误差的另一个主要来源是:我们对特征的人类解释与它们真正表征的内容之间存在差距。通常,我们对特征的解释过于粗糙,无法解释它们精确的激活轮廓。
关于重构误差与“暗物质”的未来方向¶
我们看到了解决这一问题的几条途径:
- 将替换模型扩展到更大的规模/更多的训练数据,将提高它们所能解释的方差比例。
- 对我们跨层转码器的架构进行修改,可以使其更具表达力,从而能够解释更多方差。
- 以更端到端的方式训练替换模型,而不是仅仅基于 MSE(均方误差),即便在 MSE 水平固定的情况下,也可能降低分配给错误节点的权重。
- 在感兴趣的数据分布上对替换模型进行微调,可以提升我们在这些分布上捕获机制的能力。
- 我们可以开发从错误节点反向归因的方法。这会在归因图中留下一个不可解释的“洞”,但在某些情况下仍可能比我们当前这种无输入的错误节点提供更多关于模型的洞见。
未激活特征与抑制性电路的作用¶
我们的跨层转码器特征被训练为稀疏激活。它们的稀疏性是我们方法成功的关键。它使我们能够聚焦于给定提示下相对较小的一组特征,而替换模型中却有数千万个特征。然而,这种便利依赖于一个关键假设——只有激活的特征才参与模型响应背后的机制。
事实上,情况未必如此!在某些情况下,某个特征因被其他特征抑制而缺乏激活,这可能是模型响应的关键。例如,在我们对幻觉与实体识别的分析中(参见配套论文),我们发现了一个电路:其中“无法回答”("can't answer")特征被表征已知实体或已知答案问题的特征所抑制。因此,要解释模型为什么在特定情境下产生幻觉,我们需要理解是什么导致“无法回答”特征没有激活。
默认情况下,我们的归因图无法回答这类问题,因为它只显示活跃特征。如果我们对哪些非活跃特征可能(因被抑制而)与模型的补全相关有假设,就可以把它们纳入归因图。不过,这样做多少会削弱我们方法论的一大主要优势——它支持探索性的、无需假设的分析。
这就引出了如下挑战:如何在数千万个非活跃特征中找出我们感兴趣的那些?我们似乎想知道,哪些特征在某种意义上本可以“反事实地活跃”(counterfactually active)。在实体识别示例中,我们通过比较成对的提示来识别这些反事实活跃特征——每对提示分别包含已知或未知的实体(Michael Jordan 或“Michael Batkin”)——然后聚焦于每对中至少一个提示上活跃的特征。我们预计,这种对比提示对(contrastive pairs)策略将成为未来许多电路分析的关键。不过,我们也对开发更无监督的方法来识别关键的被抑制特征感兴趣。一种可能是做特征消融实验,并考察那些距离活跃“只差一次消融”的非活跃特征集合。
有人可能会认为,转向全局电路分析就能避开这些问题。然而,似乎仍有一个深层挑战横亘在前。我们需要一种过滤掉干涉权重的方法,而利用特征共现来做这件事颇有诱惑力。但这些策略会漏掉重要的抑制性权重——即一个特征持续阻止另一个特征激活的情形。这可以看作局部归因分析中非活跃特征相关挑战在全局电路层面的对应物。
图的复杂性¶
可解释性的基本挑战之一,是找到能够管理理解复杂计算所需认知负荷的抽象与接口。37 我们的方法论在设计中尽可能降低理解电路时的认知负荷。例如:
- 特征稀疏性意味着归因图中的节点更少。
- 我们对图进行剪枝,让分析者能够只关注其中最重要的组成部分。
- 我们的界面(UI)设计得让图的浏览尽可能流畅。
- 我们使用并不严谨的“超节点”(supernode)抽象,将相关特征临时归组在一起。
尽管采取了这些措施,我们的归因图仍然相当复杂,理解它们需要大量的时间和精力,原因有很多:
- 即使在剪枝流程之后、且提示相当短的情况下,图通常仍包含数百个特征和数千条边。
- 我们感兴趣的概念通常分散在多个特征之上。
- 每个特征都从许多其他特征接收大量微小的输入,让人难以简洁地概括“是什么导致了这个特征激活”。
- 特征之间常常通过多条长度不同、甚至符号不同的路径相互施加影响!
因此,很难把我们的图揭示出的机制提炼成一个简洁的故事。正因如此,我们呈现的案例必然是简化后的叙述——即使归因图所捕捉到的对模型计算的有限理解,也未能完整呈现。我们希望,改进替代模型的训练、更好的抽象、更精细的剪枝以及更好的可视化工具相结合,能在未来帮助缓解这一问题。
抽象层级不当的特征¶
随着稀疏编码模型作为从模型中提取可解释特征的技术日益流行,许多研究者记录了这种方法的种种缺点(例如见 \cite{sharkey2025open,kantamneni2025sparse,wu2025axbench,chanin2024absorption,till2024true})。一个值得注意的问题是特征分裂(feature splitting)\cite{bricken2023monosemanticity,turner2024sensitivity}:所发现的特征在某种意义上过于具体。这还会引发一个相关的问题——特征吸收(feature absorption)\cite{chanin2024absorption}:高度具体的特征会从更通用的特征那里抢走功劳,在后者身上留下空洞(从而产生诸如“除纽约和洛杉矶以外的美国城市”这样的特征)。
作为特征分裂的一个具体例子,回想一下,本文的许多示例中我们都强调了“说出 X”(say X)特征——这类特征促使模型输出某个特定的词元(组)。但我们还注意到,这样的特征数量众多,这表明它们各自实际上代表着更具体的东西。例如,我们设计了十二个提示,Claude 3.5 Haiku 都以 “during” 一词补全它们,然后测量是否有任何特征在这全部提示上都激活(一个真正的“说出 ‘during’”特征理应如此)。事实上并不存在这样的特征——任何单个特征都只在部分提示上触发。此外,特征的通用程度似乎随跨层转码器(cross-layer transcoder)规模的增大而降低。
也许每个单独的特征都代表某种可解释的东西——例如,可能促使人们说出 “during” 一词的各种性质不同的语境。然而,我们常常发现,我们所关心的抽象层级与我们在特征中发现的层级并不一致。使用更小的跨层转码器或许有助于缓解这个问题,但也会让我们捕捉到更少的模型计算。
在本文中,我们经常以临时(ad-hoc)的方式绕过这个问题:手动将含义相关的特征归组为归因图中的“超节点”。虽然这项技术已被证明相当有用,但手动步骤劳动密集,且很可能丢失信息。它还使研究机制在提示之间的泛化程度变得困难,因为同一相关特征类别的不同子集可能在不同的提示上激活。
我们预计,解决这个问题需要我们认识到:可解释的概念存在于不同的抽象层级,而我们在不同时期可能对不同层级感兴趣。像稀疏自编码器(sparse autoencoder, SAE)和(跨层)转码器这样的稀疏编码方法是一种“扁平”的工具,但我们可能需要的是一种层级化变体,让不同抽象层级的特征能够以可解释的方式共存。
最近已有几位作者提出了稀疏自编码器的“套娃”(Matryoshka)变体,或许有助于解决这一问题 \cite{nabeshima2024matryoshka,bussmann2024matryoshka}。其他研究者则提出了事后统一相关特征的方法——“元稀疏自编码器”(meta-SAE)\cite{bussmann2024meta}。
理解全局电路的困难¶
本文主要聚焦于归因图,它展示的是特定提示上特征与特征之间交互的信息。然而,像我们这样基于转码器的方法有一个理论优势:它们给出特征之间与提示无关的全局权重。这使我们能够估计替代模型的“连接组”(connectome),并了解它所采用的、适用于许多不同输入的通用算法(尽管不一定是底层模型本身的算法)。这种方法已经取得了一些成功——例如,在配套论文的拒绝(Refusals)一节中,我们可以看到“有害请求”特征的全局输入由各种不同的具体危害类别组成。在本文中,我们深入研究了与算术相关的特征的全局权重,例如发现“说出一个以 5 结尾的数字”特征会从“6 + 9”特征、“7 + 8”特征等处接收输入。
然而,在大多数情况下,我们发现全局的特征-特征连接相当难以理解。原因可能主要有两个:
-
干涉权重——由于特征以叠加方式表示,为了学习特征之间有用的权重,模型必然产生虚假的“干涉权重”——即特征之间那些说不通、对模型性能也无用的连接。这些虚假权重对模型性能的损害不大,因为它们的效应很少会“累积”到真正改变模型输出的程度。例如,我们有时会看到这样的特征:它看起来明显是一个“说出 15”的特征,但其 logits 输出中的前几名却包含许多看似无关的词(“gag”、“duty”、“temper”、“dispers”)。我们认为这些 logits 连接与模型行为基本无关:当这个特征激活时,“duty”几乎不可能是合理的补全,因此上调它的 logits 几乎不会有导致它被采样到的风险。不幸的是,这让全局权重变得非常难以理解!这一现象同样适用于特征-特征权重(参见§ 加法中的全局权重)。
-
由注意力介导的交互——从我们的跨层转码器得到的全局特征-特征权重,描述的是特征之间不经过任何注意力层的直接交互。然而,还存在由注意力头介导的特征-特征权重。这可以类比卷积神经网络中的情形:其中的特征通过多组权重相互关联,分别对应不同的位置偏移(进一步的讨论见此处)。
我们的归因图边是直接权重与这些注意力介导权重的加权组合。我们基本的全局权重概念完全没有考虑这些交互。要做到这一点,一种方式是计算由每一个可能的注意力头介导的全局权重。然而,这有两个局限:(1) 要让这种方法有用,我们需要一种方式来理解不同头选择注意力位置的机制(参见§ 局限:缺失的注意力电路);(2) 它没有考虑由头的组合介导的交互 \cite{nelhage2021mathematical}。解决这一问题很可能需要扩展我们的字典学习方法,以学习可解释的注意力特征或替代头(replacement head)。
机制忠实性¶
我们的跨层转码器经过训练,用于模仿底层模型每一层的激活。然而,即使它能精确重建模型的激活,也无法保证它是通过相同的机制做到的。例如,即使跨层转码器在训练分布上达到了 0 均方误差(MSE),它也可能学到了与底层模型根本不同的输入/输出函数,从而在分布外输入上产生很大的重建误差。我们希望这一问题能通过以下两点得到缓解:(1) 在广泛的数据分布上训练;(2) 强制替代模型重建底层模型逐层的激活,而不仅仅是其输出。尽管如此,我们无法保证替代模型学到了相同的机制——我们称之为机制忠实性(mechanistic faithfulness)——因此只能转而进行事后验证。
在本文中,我们使用扰动实验(抑制与激发特征)来验证归因图所提示的机制。在我们呈现的案例研究中,我们通常能够验证特征产生了我们预期的效果(无论是对模型输出,还是对其他特征)。然而,我们所提供的验证程度非常粗糙。我们通常一次性扰动多个特征(“超节点”),并检查它们对其他特征或 logits 输出的方向性影响。此外,我们通常会遍历进行扰动的层,并采用产生最大效果的层。原则上,我们的归因图作出的预测远比这类干预所能检验的粒度更细。理想情况下,我们应该能够准确预测在任意层扰动任意特征对任意其他特征的影响。
在§ 附录:验证替代模型中,我们尝试更全面地量化预测此类扰动结果的准确率,发现对扰动下游几层内的效应有相当好的预测能力,而对许多层之后的效应,预测能力就差得多了。这表明,虽然我们的电路描述在非常粗的粒度上可能是机制上准确的,但在提升其对底层模型的忠实性方面仍有很大的改进空间。
我们对尝试直接优化机制忠实性的方法持乐观态度,也乐于探索能自然地学到更忠实解的其他字典学习架构。
讨论¶
我们逆向工程神经网络的方法有四个基本步骤:将网络分解为组件、为这些组件提供描述、刻画组件如何通过交互产生行为,以及验证这些描述。38 每一步都需要做出若干选择,这些选择有的更严谨、有的不那么严谨;一种方法的威力,最终取决于它在多大程度上产生关于模型行为的有效假设。
在本文中,我们训练了带稀疏特征的跨层转码器来替换 MLP 块(分解),用特征所激活的数据集示例来描述特征(描述),用归因图刻画特征在特定提示上的交互(交互),并用因果引导干预验证假设(验证)。
我们相信,我们做出的某些选择是稳健的,成功的分解方法会做出类似的选择,或者找到其他方式来应对它们所解决的底层问题:
- 我们使用学习到的特征而非神经元。虽然神经元的最高激活往往可解释,但较低的激活则不然。原则上,可以对神经元激活设置阈值,将其限制在这个可解释的区间内;然而我们发现,在那个层级上对神经元设阈值对模型行为的损害,比转码器或 CLT 严重得多。这意味着,相对于设阈值的神经元,训练出的替代层可以在可解释性、L0 和 MSE 上实现帕累托改进。神经元集合是固定的。(尽管如此,神经元可以为研究提供起点,而无需任何额外计算成本,例如见 \cite{meng2024monitor}。)
- 我们使用转码器而非残差流稀疏自编码器。虽然残差流稀疏自编码器可以分解模型的潜在状态,但它们无法自然延伸去分解模型的计算步骤。关键之处在于,转码器特征跨越 MLP 层,并通过残差流与其他层的转码器特征线性交互。相比之下,稀疏自编码器特征之间的交互则被非线性的 MLP 所阻隔。
- 我们使用跨层转码器而非逐层转码器。我们假设 \cite{lindsey2024crosscoders},不同的 MLP 层可能协作实现单一的计算步骤(“跨层叠加”);最极端的例子是,许多层共同放大同一个早期层的特征,使它仍然大到足以影响后面的层。跨层转码器(CLT)将这些合并为一个特征。我们找到了这一现象在实践中确实发生的证据,具体表现为路径长度相对图影响力的帕累托改进。
- 我们使用线性直接效应计算特征-特征交互,而非非线性归因或消融。关于“显著性图”或通过非线性神经网络进行归因的文献已经很多(包括消融、路径积分梯度 \cite{sundararajan2017axiomatic} 和 Shapley 值(例如 \cite{lundberg2017unified}))。即使在非线性情境下最严谨的功劳分配方案,也难免有些棘手。由于我们的目标是清晰地推理机制,我们构建的设置使得上一层特征与下一层特征预激活之间的直接交互是条件线性的;也就是说,一旦我们冻结问题的某些部分(注意力模式和归一化分母),它们就是线性的。这把问题分解为两部分:一部分我们可以用严谨的方式从机制上理解,另一部分则留待将来理解 \cite{nelhage2021mathematical}。同样关键的是,我们早先决定使用转码器——这是实现这一线性直接效应性质的前提。3940
我们还做了其他一些出于方便、或是作为迈向更通用解决方案第一步的选择:
- 我们合并了注意力路径。 归因图中的每条边,都是一对特征在所有可能的直接交互路径上的直接交互之和。其中一些路径主要流经残差流,另一些则流经注意力头。在本文中,我们并不打算区分这两类路径。这会丢掉大量有趣的结构——因为如果某个头是我们能够理解的东西(比如后继头 \cite{gould2023successor} 或归纳头 \cite{olsson2022context}),那么到底是哪些头中介了某次交互,这件事本身可能就很有价值。4142
- 我们忽略了 QK 电路。 为了得到线性的特征-特征交互,我们遵循 Framework \cite{nelhage2021mathematical} 的做法,把对 transformer 的理解拆成两部分。首先,我们研究在给定某个注意力头或某组注意力头(即"OV 电路")的条件下,特征与特征之间如何交互。但这留下第二个问题:注意力头为什么会注意到不同的片段(即"QK 电路")。在本文中,我们不尝试回答这后半部分。
- 训练跨层转码器时,我们只使用了稀疏性惩罚和重构损失。 尽管我们的最终目标是找出带有稀疏且可解释的边的电路,但在一个对底层模型具有机制忠实性的替代模型中,我们并没有针对这些目标中的任何一个进行显式训练。
尽管如此,我们目前的方法已经在配套论文中产出了有趣且经过验证的机制,涉及规划、多语言结构、幻觉、拒绝等多个方面。
我们期待,训练式可解释替代模型范式的进步,将带来图相关指标的定量提升,以及可被清晰解读的模型行为数量上的定性提升。这一过程可能是渐进式的:对跨层转码器(CLT)及相关注意力处理方法的渐进改进,会带来电路识别的渐进改进;也可能出现一种截然不同的分解方法,在大规模机制发现上胜过我们。无论如何,我们都希望进入这样一个时代:分解方法与"生物学"结果之间形成清晰的飞轮——在具体模型研究中浮现的结构启发分解方法的创新,而分解方法的创新又把更多模型行为带入光明之中。
尾声:加法的启示¶
加法是模型执行的最简单行为之一;正因它结构如此清晰,我们能够精确刻画每个特征在整个问题域上的活动。这让我们省去了一个困难步骤:盯着数据集样本,试图辨别某个特征在做什么、它与在类似语境中活跃的其他特征有何区别。由此,我们揭示出 Haiku 3.5 使用的一系列启发式规则("说个以 5 结尾的数"、"说个 50 左右的数"、"说个以 51 开头的数")——这些规则此前已被 Nikankin \cite{nikankin2024arithmetic} 识别出来——以及一组查找表特征:它们把满足特定条件的输入对(比如两个末位分别为 6 和 9 的加数)连接到满足相应输出后果的求和特征(比如产生一个以 5 结尾的和)。
然而,即便在这样更简单的场景中,仅凭原始数据集样本给这些特征打标签时,我们也犯了不少错误——比如,因为看到某个 _6 + _9 特征在上下文中后面跟着的内容,就误以为它本身就是一个 sum = _5 特征。我们还难以区分不同尺度的低精度特征,也难以区分那些真的只对有限输入敏感的特征,与那些只是因为在数据集中这类输入出现频率很高而显得敏感的特征。那么,当面对几十种不同程度的拒绝特征时,情况又会糟糕多少!如果我们想以如今的跨层转码器(CLT)似乎已经使之成为可能的分辨率来理解问题,就必须在比算术更模糊的领域中做出更精确的特征区分——无论借助特征几何,还是借助超人级的自动可解释性方法。
正因为加法是如此清晰的问题,我们还能看到特征之间如何相互连接、构建出并行的通路:从依赖输入的简单启发式,生发出与输出相关的更复杂启发式;从 Nikankin 识别的"启发式袋(Bag of Heuristics)",走向"启发式图(Graph of Heuristics)"。虚拟权重展示了这种计算结构:成组的查找表特征组合成不同模与尺度的求和特征,这些求和特征再组合成更精确的求和特征,最终给出输出。在"更模糊"的自然语言样本中,我们很可能把不同深度的特征所扮演的诸多角色混为一谈,笼统归入诸如"未知实体"、"有害请求"或"大数的概念"这样的总类目——而这些特征实际上各司其职;在那里,很可能正发生着错综复杂的信息聚合与变换,只是以我们今天的理解还无法看清。
相关工作¶
尽管机制可解释性是一个年轻的领域,它却发展迅速。若要了解开放问题与现有方法的全景,我们推荐 Sharkey 等人最近的综述 \cite{sharkey2025open}。更广阔的视角可见于机制可解释性及相关主题的最新综述(如 \cite{rauker2023toward,bereska2024mechanistic,ferrando2024primer,mueller2024quest})。
在之前的论文中,我们已经讨论过本工作所依托的一些基础性主题;这里不再复述,而是请读者参阅我们此前对这些主题的讨论。这些主题包括:
- 可解释特征的存在性(如 \cite{mikolov2013efficient,karpathy2015visualizing,cammarata2020curve};参见此前讨论)
- 注意力头分析(如 \cite{voita2019analyzing,jones2017tensor2tensor};参见此前讨论),
- Bertology(如 \cite{rogers2020primer};参见此前讨论),
- 可解释性界面(如 \cite{olah2018the,vig2019multiscale};参见此前讨论),
- 解耦(如 \cite{bengio2013representation};参见此前讨论),
- 压缩感知(如 \cite{donoho2006compressed,ganguli2012compressed};参见此前讨论),
- 稀疏字典学习(如 \cite{olshausen1997sparse,elad2010sparse};参见此前讨论),
- 叠加理论(如 \cite{goh2016decoding,arora2018linear};参见此前讨论),
- 神经编码与分布式表征理论(如 \cite{thorpe1989coding};参见此前讨论)
- 激活引导(如 \cite{radford2015unsupervised,turner2023activation};参见此前讨论)。
接下来的两节将聚焦于我们在机制可解释性中常用的两个不同阶段 \cite{olah2020zoom}:先识别特征,再分析它们形成的电路。之后,我们将把目光转向神经网络"生物学"方面的过往工作。
特征发现方法¶
电路发现的一个根本挑战,是找到合适的分析单元 \cite{sharkey2025open}。网络的自然组成部分——注意力头和神经元——由于叠加 \cite{elhage2022superposition,olah2023distributed} 而缺乏可解释性,因此识别更好的分析单元成为该领域的核心问题。
稀疏字典学习是一项历史悠久的技术,最初由神经科学家开发,用于分析神经记录数据 \cite{olshausen1997sparse}。近期工作 \cite{yun2021transformer,bricken2023monosemanticity,cunningham2023sparse,gao2024scaling,rajamanoharan2024jumping,templeton2024scaling} 将稀疏自编码器(SAE)\cite{ng2011sparse,frey2014topk} 用作一种可扩展的解决方案:通过学习分解语言模型表征的字典来应对叠加。尽管 SAE 已成功扩展到前沿模型 \cite{gao2024scaling,templeton2024scaling},研究人员也指出了若干方法论上的局限,包括特征收缩 \cite{wright2024feature}、特征吸收 \cite{chanin2024absorption,bussmann2024meta}、缺乏规范化 \cite{leask2025sparse,kissane2024saes,paulo2025sparse}、特征解读的自动化 \cite{bills2023language,paulo2024automatically,heap2025sparse},以及在下游分类与引导任务上表现不佳 \cite{kantamneni2025sparse,wu2025axbench}。
具体到电路分析,SAE 并非最优,因为它们分解的是表征而非计算。转码器(transcoder)\cite{dunefsky2024transcoders,marks2024dictionary,templeton2024predicting,ge2024automatically} 通过从非线性组件的输入预测其输出来弥补这一局限。像这样跨越非线性,可以直接计算成对特征交互,而无需依赖穿过中间非线性的归因或消融。
字典学习方法的空间很大,我们仍对探索这一空间、解决方法论问题的各项工作充满热情。近期工作探索了各类架构修改,如多层特征学习 \cite{lindsey2024crosscoders,lawson2024residual}、添加跳跃连接 \cite{paulo2025transcoders}、融入梯度信息 \cite{olmo2024features}、引入更强的层级归纳偏置 \cite{nabeshima2024matryoshka,bussmann2024matryoshka},以及借助专家混合 \cite{mudide2024efficient} 进一步提高计算效率。社区还研究了替代性训练协议,以学习尊重下游激活的字典 \cite{braun2025identifying}、减少特征收缩 \cite{rajamanoharan2024improving,wright2024feature},并让下游计算交互变得稀疏 \cite{farnik2025jacobian}。为衡量这类方法论进展,学界已开发出不少评估字典学习方法的基准与标准化评估协议 \cite{makelov2024towards,huang2024ravel,karvonen2025measuring,chaudhary2024evaluating,wu2025axbench,karvonensaebench,karvonen2024evaluating}。我们认为,基于电路的指标将是字典学习评估的下一个前沿。
除字典学习之外,还有若干提取计算单元的替代性无监督方法在小规模场景中取得了初步成功,包括把激活变换到局部交互基 \cite{bushnaq2024local,bushnaq2024using},以及开发基于归因的参数分解 \cite{braun2025interpretability}。
电路发现方法¶
定义。 纵观文献,"电路"一词被用来指代许多不同的东西。Olah 等人 \cite{olah2020zoom} 提出的定义是:神经网络的一个子图,其中节点是激活空间中的方向,边是它们之间的权重。随着时间的推移,文献的某些部分放宽了这一定义,它常被用来泛指网络组件的子图,其边权重由某种归因或干预计算得出 \cite{hohman2019summit,wang2022interpretability,conmy2023towards}。
电路方法与定义的差异体现在几个维度上:
- 分析单元是否全局可解释?(例如,比较单语义特征与一个在数据分布上做着许多不同事情的完整注意力头。)
- 电路本身(即边的连接关系)是一种全局描述,还是一个局部有效的归因图?抑或是别的什么?
- 边是否可解释?(例如,边是由线性归因计算得出,还是由复杂的非线性干预得出?)
- 该方法能否自然地应对叠加?
我们认为,电路研究的北极星,是呈现这样一个对象:由全局可解释的单元构成,以可解释的边相连,且这些边全局有效。本文尚未达到这一目标——我们只提供了一个局部有效的归因图。
人工分析。 早期的电路发现主要靠人工,需要特定的假设和量身定制的验证方法 \cite{cammarata2020curve,nelhage2021mathematical,olsson2022context,wang2022interpretability,nanda2023progress}。因果中介分析 \cite{vig2020investigating}、激活修补 \cite{meng2022locating,zhang2023towards,heimersheim2024use}、路径修补 \cite{wang2022interpretability,goldowsky2023localizing} 和分布式对齐搜索 \cite{geiger2024finding,wu2023interpretability} 是在直接分析中精炼假设、隔离因果通路最常用的技术。不过,这些技术通常无法提供单元之间可解释(即线性)的边权重。
自动分析。 Conmy 等人 \cite{conmy2023towards} 通过开发递归修补流程,在给定感兴趣任务时自动找出组件子图,从而将这些分析自动化。然而,修补分析计算开销很大,每一步都需要一次前向传播。这促使了归因修补 \cite{nanda2023patching,syed2023attributionpatching} 的出现——一种利用梯度近似干预效果的更高效方法。此后围绕归因修补出现了大量后续工作,包括改进梯度近似 \cite{kramar2024atpstar,hanna2024have,zhang2025eap}、将该技术适配到视觉模型 \cite{rajaram2024automatic}、以及融入位置信息 \cite{haklay2025position}。文献中研究的其他技术还包括学习式掩码技术 \cite{cao2021low,davies2023discovering,bhaskar2025finding}、电路探测 \cite{lepori2023uncovering}、离散化 \cite{o2024sparse} 和信息流分析 \cite{ferrando2024information,katz2023visit}。这些自动化方法的目标大多是隔离重要的模型组件(即层、神经元、注意力头)及其相互交互,但它们并不解决这些组件的解读问题。
不过,借助稀疏字典学习提供的更好的计算分析单元,本文与其他近期论文 \cite{dunefsky2024transcoders,ge2024automatically,marks2024sparse,he2024dictionary} 正回归到发现可解释组件之间连接的道路上。具体而言,我们的工作与 Dunefsky 等人 \cite{dunefsky2024transcoders} 及 Ge 等人 \cite{ge2024automatically} 最为相似:他们也使用转码器,在带停止梯度的情况下计算逐提示的归因图,同时研究与输入无关的全局权重。我们的工作不同之处在于:使用跨层转码器(crosscoder)来吸收冗余特征,使用更具全局性的剪枝算法,引入误差节点 \cite{marks2024sparse},并使用更强大的可视化套件以支持更深入的定性分析。这些工作在精神上更接近 Olah 等人 \cite{olah2020zoom} 提出的原始电路愿景,但它们继承了提示特定的量(如注意力模式),这限制了它们的通用性。
注意力电路。 transformer 中的注意力机制给 Olah 等人 \cite{olah2020zoom} 那种基于权重的电路分析带来了挑战。Elhage 等人 \cite{nelhage2021mathematical} 提出将注意力层分解为控制注意力模式的非线性 QK 组件和控制输出的线性 OV 组件。通过冻结 QK(例如针对某个特定提示),由注意力中介的转码器特征-特征交互就变成线性的。这正是本文与 Dunefsky 等人 \cite{dunefsky2024transcoders} 采用的方法。也有人尝试在注意力输出上训练 SAE \cite{kissane2024attncirc,marks2024sparse,he2024dictionary},以及把特征乘进键矩阵和查询矩阵来解释注意力模式 \cite{ge2024automatically}。
替代模型。 我们的替代模型概念,在精神上与因果抽象 \cite{geiger2021causal,geiger2023causal} 和代理模型 \cite{wu2023causal,shah2024decomposing} 的过往工作相似。这些方法都试图学习一个可解释的图模型,使其对底层的黑箱模型保持忠实。不过,这些技术通常需要任务规格说明或其他形式的监督——而我们的替代模型则完全以无监督方式学习。
电路评估。 因果擦除 \cite{chan2022causal} 被提出作为一种早期的、有原则的评估方法,通过保持行为的重采样消融来评估解读质量。Shi 等人 \cite{shi2025hypothesis} 将评估电路假设的标准形式化,聚焦于行为保持、局部性和极小性,并在 transformer 模型中的合成电路与被发现电路上应用了这些检验。不过,Miller 等人 \cite{miller2024transformer} 对现有的忠实性指标提出了重要质疑,发现它们对消融方法中看似无关紧要的改动高度敏感。
电路生物学与现象学¶
除了方法之外,许多工作还进行了深入的案例研究,揭示了有趣的模型现象学。例如,以下对象都经历过透彻的电路分析:
- 玩具模型中的算术 \cite{nanda2023progress,zhong2023clock,chughtai2023toy,stander2023grokking,li2024fourier}
- Python 文档字符串 \cite{heimersheim2023circuit}
- 间接宾语识别 \cite{wang2022interpretability}
- 计算大于运算符 \cite{hanna2023does}
- 多项选择 \cite{lieberum2023does}
- 代词性别 \cite{vig2020investigating,mathwin2023identifying,chintam2023identifying}
- 上下文学习 \cite{kharlapenko2025scaling}
不断增长的案例研究催生了进一步的后续研究,探讨这些组件在其他任务中的使用方式 \cite{merullo2023circuit,mondorf2024circuit}。此外,Tigges 等人 \cite{tigges2024llm} 发现,这些电路分析中有许多在不同训练阶段和规模下保持一致。在这些分析之前,还有一长串利用注意力模式分析和探针(probing)来研究模型“生物学”的“Bertology”研究(参见综述 \cite{rogers2020primer})。
脚注¶
参考文献¶
- [meng2022locating]: Meng, Kevin, Bau, David, Andonian, Alex, Belinkov, Yonatan, “Locating and editing factual knowledge in gpt”, arXiv preprint arXiv:2202.05262, 2022
- [wang2022interpretability]: Wang, Kevin, Variengien, Alexandre, Conmy, Arthur, Shlegeris, Buck, Steinhardt, Jacob, “Interpretability in the wild: a circuit for indirect object identification in gpt-2 small”, arXiv preprint arXiv:2211.00593, 2022
- [conmy2023towards]: Conmy, Arthur, Mavor-Parker, Augustine, Lynch, Aengus, Heimersheim, Stefan, Garriga-Alonso, Adri{`a}, “Towards automated circuit discovery for mechanistic interpretability”, Advances in Neural Information Processing Systems, 2023
- [cammarata2020thread]: Cammarata, Nick, Carter, Shan, Goh, Gabriel, Olah, Chris, Petrov, Michael, Schubert, Ludwig, Voss, Chelseagur, Egan, Ben, Lim, Swee Kiat, “Thread: Circuits”, Distill, 2020
- [arora2018linear]: Arora, Sanjeev, Li, Yuanzhi, Liang, Yingyu, Ma, Tengyu, Risteski, Andrej, “Linear algebraic structure of word senses, with applications to polysemy”, Transactions of the Association for Computational Linguistics, 2018
- [goh2016decoding]: Gabriel Goh, “Decoding The Thought Vector”, 2016
- [elhage2022superposition]: Elhage, Nelson, Hume, Tristan, Olsson, Catherine, Schiefer, Nicholas, Henighan, Tom, Kravec, Shauna, Hatfield-Dodds, Zac, Lasenby, Robert, Drain, Dawn, Chen, Carol, Grosse, Roger, McCandlish, Sam, Kaplan, Jared, Amodei, Dario, Wattenberg, Martin, Olah, Christopher, “Toy Models of Superposition”, Transformer Circuits Thread, 2022
- [bricken2023monosemanticity]: Bricken, Trenton, Templeton, Adly, Batson, Joshua, Chen, Brian, Jermyn, Adam, Conerly, Tom, Turner, Nick, Anil, Cem, Denison, Carson, Askell, Amanda, Lasenby, Robert, Wu, Yifan, Kravec, Shauna, Schiefer, Nicholas, Maxwell, Tim, Joseph, Nicholas, Hatfield-Dodds, Zac, Tamkin, Alex, Nguyen, Karina, McLean, Brayden, Burke, Josiah E, Hume, Tristan, Carter, Shan, Henighan, Tom, Olah, Christopher, “Towards Monosemanticity: Decomposing Language Models With Dictionary Learning”, Transformer Circuits Thread, 2023
- [cunningham2023sparse]: Cunningham, Hoagy, Ewart, Aidan, Smith, Logan, Huben, Robert, Sharkey, Lee, “Sparse Autoencoders Find Highly Interpretable Model Directions”, arXiv preprint arXiv:2309.08600, 2023
- [gao2024scaling]: Gao, Leo, la Tour, Tom Dupr{\'e}, Tillman, Henk, Goh, Gabriel, Troll, Rajan, Radford, Alec, Sutskever, Ilya, Leike, Jan, Wu, Jeffrey, “Scaling and evaluating sparse autoencoders”, arXiv preprint arXiv:2406.04093, 2024
- [rajamanoharan2024jumping]: Rajamanoharan, Senthooran, Lieberum, Tom, Sonnerat, Nicolas, Conmy, Arthur, Varma, Vikrant, Kram{\'a}r, J{\'a}nos, Nanda, Neel, “Jumping ahead: Improving reconstruction fidelity with jumprelu sparse autoencoders”, arXiv preprint arXiv:2407.14435, 2024
- [dunefsky2024transcoders]: Dunefsky, Jacob, Chlenski, Philippe, Nanda, Neel, “Transcoders find interpretable LLM feature circuits”, Advances in Neural Information Processing Systems, 2025
- [marks2024dictionary]: Marks, Samuel, Karvonen, Adam, Mueller, Aaron, “dictionary_learning Github Repository”, Github, 2024
- [templeton2024predicting]: Templeton, Adly, Batson, Joshua, Jermyn, Adam, Olah, Chris, “Predicting Future Activations”, 2024
- [lindsey2024crosscoders]: Lindsey, Jack, Templeton, Adly, Marcus, Jonathan, Conerly, Thomas, Batson, Joshua, Olah, Christopher, “Sparse Crosscoders for Cross-Layer Features and Model Diffing”, 2024
- [marks2024sparse]: Marks, Samuel, Rager, Can, Michaud, Eric J, Belinkov, Yonatan, Bau, David, Mueller, Aaron, “Sparse Feature Circuits: Discovering and Editing Interpretable Causal Graphs in Language Models”, arXiv preprint arXiv:2403.19647, 2024
- [ge2024automatically]: Ge, Xuyang, Zhu, Fukang, Shu, Wentao, Wang, Junxuan, He, Zhengfu, Qiu, Xipeng, “Automatically identifying local and global circuits with linear computation graphs”, arXiv preprint arXiv:2405.13868, 2024
- [nelhage2021mathematical]: Elhage, Nelson, Nanda, Neel, Olsson, Catherine, Henighan, Tom, Joseph, Nicholas, Mann, Ben, Askell, Amanda, Bai, Yuntao, Chen, Anna, Conerly, Tom, DasSarma, Nova, Drain, Dawn, Ganguli, Deep, Hatfield-Dodds, Zac, Hernandez, Danny, Jones, Andy, Kernion, Jackson, Lovitt, Liane, Ndousse, Kamal, Amodei, Dario, Brown, Tom, Clark, Jack, Kaplan, Jared, McCandlish, Sam, Olah, Chris, “A Mathematical Framework for Transformer Circuits”, Transformer Circuits Thread, 2021
- [nanda2023factualrecall]: Nanda, Neel, Rajamanoharan, Senthooran, Kramár, János, Shah, Rohin, “Fact Finding: Attempting to Reverse-Engineer Factual Recall on the Neuron Level”, 2023
- [batson2024easy]: Batson, Joshua, Chen, Brian, Jones, Andy, “Using Features For Easy Circuit Identification”, 2024
- [nikankin2024arithmetic]: Yaniv Nikankin, Anja Reusch, Aaron Mueller, Yonatan Belinkov, “Arithmetic Without Algorithms: Language Models Solve Math With a Bag of Heuristics”, 2024
- [kantamneni2025trig]: Subhash Kantamneni, Max Tegmark, “Language Models Use Trigonometry to Do Addition”, 2025
- [zhou2024pre]: Zhou, Tianyi, Fu, Deqing, Sharan, Vatsal, Jia, Robin, “Pre-trained large language models use fourier features to compute addition”, arXiv preprint arXiv:2406.03445, 2024
- [kissane2024attention]: Kissane, Connor, robertzk, Conmy, Arthur, Nanda, Neel, “Sparse Autoencoders Work on Attention Layer Outputs”, 2024
- [henighan2023superposition]: Henighan, Tom, Carter, Shan, Hume, Tristan, Elhage, Nelson, Lasenby, Robert, Fort, Stanislav, Schiefer, Nicholas, Olah, Christopher, “Superposition, Memorization, and Double Descent”, Transformer Circuits Thread, 2023
- [miller2024transformer]: Miller, Joseph, Chughtai, Bilal, Saunders, William, “Transformer circuit faithfulness metrics are not robust”, arXiv preprint arXiv:2407.08734, 2024
- [gao2020pile]: Leo Gao, Stella Biderman, Sid Black, Laurence Golding, Travis Hoppe, Charles Foster, Jason Phang, Horace He, Anish Thite, Noa Nabeshima, Shawn Presser, Connor Leahy, “The Pile: An 800GB Dataset of Diverse Text for Language Modeling”, 2020
- [zheng2023lmsyschat1m]: Lianmin Zheng, Wei-Lin Chiang, Ying Sheng, Tianle Li, Siyuan Zhuang, Zhanghao Wu, Yonghao Zhuang, Zhuohan Li, Zi Lin, Eric. P Xing, Joseph E. Gonzalez, Ion Stoica, Hao Zhang, “LMSYS-Chat-1M: A Large-Scale Real-World LLM Conversation Dataset”, 2023
- [lindsey2024evals]: Lindsey, Jack, Cunningham, Hoagy, Conerly, Tom,, Templeton, Adly, “Interpretability Evals for Dictionary Learning”, 2024
- [olsson2022context]: Olsson, Catherine, Elhage, Nelson, Nanda, Neel, Joseph, Nicholas, DasSarma, Nova, Henighan, Tom, Mann, Ben, Askell, Amanda, Bai, Yuntao, Chen, Anna, Conerly, Tom, Drain, Dawn, Ganguli, Deep, Hatfield-Dodds, Zac, Hernandez, Danny, Johnston, Scott, Jones, Andy, Kernion, Jackson, Lovitt, Liane, Ndousse, Kamal, Amodei, Dario, Brown, Tom, Clark, Jack, Kaplan, Jared, McCandlish, Sam, Olah, Chris, “In-context Learning and Induction Heads”, Transformer Circuits Thread, 2022
- [feng2023language]: Feng, Jiahai, Steinhardt, Jacob, “How do language models bind entities in context?”, arXiv preprint arXiv:2310.17191, 2023
- [sharkey2025open]: Sharkey, Lee, Chughtai, Bilal, Batson, Joshua, Lindsey, Jack, Wu, Jeff, Bushnaq, Lucius, Goldowsky-Dill, Nicholas, Heimersheim, Stefan, Ortega, Alejandro, Bloom, Joseph, others, “Open Problems in Mechanistic Interpretability”, arXiv preprint arXiv:2501.16496, 2025
- [kantamneni2025sparse]: Kantamneni, Subhash, Engels, Joshua, Rajamanoharan, Senthooran, Tegmark, Max, Nanda, Neel, “Are Sparse Autoencoders Useful? A Case Study in Sparse Probing”, arXiv preprint arXiv:2502.16681, 2025
- [wu2025axbench]: Wu, Zhengxuan, Arora, Aryaman, Geiger, Atticus, Wang, Zheng, Huang, Jing, Jurafsky, Dan, Manning, Christopher D, Potts, Christopher, “AXBENCH: Steering LLMs? Even Simple Baselines Outperform Sparse Autoencoders”, arXiv preprint arXiv:2501.17148, 2025
- [chanin2024absorption]: Chanin, David, Wilken-Smith, James, Dulka, Tom{\'a}{\v{s}}, Bhatnagar, Hardik, Bloom, Joseph, “A is for absorption: Studying feature splitting and absorption in sparse autoencoders”, arXiv preprint arXiv:2409.14507, 2024
- [till2024true]: Till, Demian, “Do sparse autoencoders find "true features"?”, 2024
- [turner2024sensitivity]: Turner, Nicholas L, Jermyn, Adam, Batson, Joshua, “Measuring feature sensitivity using dataset filtering”, 2024
- [nabeshima2024matryoshka]: Nabeshima, Noa, “Matryoshka Sparse Autoencoders”, 2024
- [bussmann2024matryoshka]: Bussmann, Bart, Leask, Patrick, Nanda, Neel, “Learning Multi-Level Features with Matryoshka SAEs”, 2024
- [bussmann2024meta]: Bussmann, Bart, Pearce, Michael, Leask, Patrick, Bloom, Joseph, Sharkey, Lee, Nanda, Neel, “Showing SAE Latents Are Not Atomic Using Meta-SAEs”, 2024
- [meng2024monitor]: Meng, Kevin, Huang, Vincent, Chowdhury, Neil, Choi, Dami, Steinhardt, Jacob, Schwettmann, Sarah, “Monitor: An AI-Driven Observability Interface”, 2024
- [sundararajan2017axiomatic]: Sundararajan, Mukund, Taly, Ankur, Yan, Qiqi, “Axiomatic attribution for deep networks”, arXiv preprint arXiv:1703.01365, 2017
- [lundberg2017unified]: Lundberg, Scott M, Lee, Su-In, “A unified approach to interpreting model predictions”, Advances in neural information processing systems, 2017
- [gould2023successor]: Rhys Gould, Euan Ong, George Ogden, Arthur Conmy, “Successor Heads: Recurring, Interpretable Attention Heads In The Wild”, 2023
- [rauker2023toward]: Räuker, Tilman, Ho, Anson, Casper, Stephen, Hadfield-Menell, Dylan, “Toward transparent ai: A survey on interpreting the inner structures of deep neural networks”, 2023 IEEE Conference on Secure and Trustworthy Machine Learning (SaTML), 2023
- [bereska2024mechanistic]: Bereska, Leonard, Gavves, Efstratios, “Mechanistic Interpretability for AI Safety--A Review”, arXiv preprint arXiv:2404.14082, 2024
- [ferrando2024primer]: Ferrando, Javier, Sarti, Gabriele, Bisazza, Arianna, Costa-juss{`a}, Marta R, “A Primer on the Inner Workings of Transformer-based Language Models”, arXiv preprint arXiv:2405.00208, 2024
- [mueller2024quest]: Mueller, Aaron, Brinkmann, Jannik, Li, Millicent, Marks, Samuel, Pal, Koyena, Prakash, Nikhil, Rager, Can, Sankaranarayanan, Aruna, Sharma, Arnab Sen, Sun, Jiuding, others, “The quest for the right mediator: A history, survey, and theoretical grounding of causal interpretability”, arXiv preprint arXiv:2408.01416, 2024
- [mikolov2013efficient]: Mikolov, Tomas, Chen, Kai, Corrado, Greg, Dean, Jeffrey, “Efficient estimation of word representations in vector space”, arXiv preprint arXiv:1301.3781, 2013
- [karpathy2015visualizing]: Karpathy, Andrej, Johnson, Justin, Fei-Fei, Li, “Visualizing and understanding recurrent networks”, arXiv preprint arXiv:1506.02078, 2015
- [cammarata2020curve]: Cammarata, Nick, Goh, Gabriel, Carter, Shan, Schubert, Ludwig, Petrov, Michael, Olah, Chris, “Curve Detectors”, Distill, 2020
- [voita2019analyzing]: Voita, Elena, Talbot, David, Moiseev, Fedor, Sennrich, Rico, Titov, Ivan, “Analyzing multi-head self-attention: Specialized heads do the heavy lifting, the rest can be pruned”, arXiv preprint arXiv:1905.09418, 2019
- [jones2017tensor2tensor]: Jones, Llion, “Tensor2tensor transformer visualization”, 2017
- [rogers2020primer]: Rogers, Anna, Kovaleva, Olga, Rumshisky, Anna, “A primer in bertology: What we know about how bert works”, Transactions of the Association for Computational Linguistics, 2020
- [olah2018the]: Olah, Chris, Satyanarayan, Arvind, Johnson, Ian, Carter, Shan, Schubert, Ludwig, Ye, Katherine, Mordvintsev, Alexander, “The Building Blocks of Interpretability”, Distill, 2018
- [vig2019multiscale]: Vig, Jesse, “A multiscale visualization of attention in the transformer model”, arXiv preprint arXiv:1906.05714, 2019
- [bengio2013representation]: Bengio, Yoshua, Courville, Aaron, Vincent, Pascal, “Representation learning: A review and new perspectives”, IEEE transactions on pattern analysis and machine intelligence, 2013
- [donoho2006compressed]: Donoho, David L, “Compressed sensing”, IEEE Transactions on information theory, 2006
- [ganguli2012compressed]: Ganguli, Surya, Sompolinsky, Haim, “Compressed Sensing, Sparsity, and Dimensionality in Neuronal Information Processing and Data Analysis”, Annual Review of Neuroscience, 2012
- [olshausen1997sparse]: Olshausen, Bruno A, Field, David J, “Sparse coding with an overcomplete basis set: A strategy employed by V1?”, Vision research, 1997
- [elad2010sparse]: Elad, Michael, “Sparse and redundant representations: from theory to applications in signal and image processing”, 2010
- [thorpe1989coding]: Thorpe, Simon J., “Local vs. Distributed Coding”, Intellectica, 1989
- [radford2015unsupervised]: Radford, Alec, Metz, Luke, Chintala, Soumith, “Unsupervised representation learning with deep convolutional generative adversarial networks”, arXiv preprint arXiv:1511.06434, 2015
- [turner2023activation]: Alexander Matt Turner, Lisa Thiergart, David Udell, Gavin Leech, Ulisse Mini, Monte MacDiarmid, “Activation Addition: Steering Language Models Without Optimization”, 2023
- [olah2020zoom]: Olah, Chris, Cammarata, Nick, Schubert, Ludwig, Goh, Gabriel, Petrov, Michael, Carter, Shan, “Zoom In: An Introduction to Circuits”, Distill, 2020
- [olah2023distributed]: Olah, Christopher, “Distributed Representations: Composition & Superposition”, 2023
- [yun2021transformer]: Yun, Zeyu, Chen, Yubei, Olshausen, Bruno A, LeCun, Yann, “Transformer visualization via dictionary learning: contextualized embedding as a linear superposition of transformer factors”, arXiv preprint arXiv:2103.15949, 2021
- [templeton2024scaling]: Templeton, Adly, Conerly, Tom, Marcus, Jonathan, Lindsey, Jack, Bricken, Trenton, Chen, Brian, Pearce, Adam, Citro, Craig, Ameisen, Emmanuel, Jones, Andy, Cunningham, Hoagy, Turner, Nicholas L, McDougall, Callum, MacDiarmid, Monte, Freeman, C. Daniel, Sumers, Theodore R., Rees, Edward, Batson, Joshua, Jermyn, Adam, Carter, Shan, Olah, Chris, Henighan, Tom, “Scaling Monosemanticity: Extracting Interpretable Features from Claude 3 Sonnet”, Transformer Circuits Thread, 2024
- [ng2011sparse]: Ng, Andrew, others, “Sparse autoencoder”, CS294A Lecture notes, 2011
- [frey2014topk]: Alireza Makhzani, Brendan J. Frey, “k-Sparse Autoencoders”, CoRR, 2013
- [wright2024feature]: Wright, Benjamin, Sharkey, Lee, “Addressing Feature Suppression in SAEs”, 2024
- [leask2025sparse]: Leask, Patrick, Bussmann, Bart, Pearce, Michael, Bloom, Joseph, Tigges, Curt, Moubayed, Noura Al, Sharkey, Lee, Nanda, Neel, “Sparse Autoencoders Do Not Find Canonical Units of Analysis”, arXiv preprint arXiv:2502.04878, 2025
- [kissane2024saes]: Kissane, Connor, Krzyzanowski, Robert, Nanda, Neel, Conmy, Arthur, “Saes are highly dataset dependent: A case study on the refusal direction”, Alignment Forum, 2024
- [paulo2025sparse]: Paulo, Gon{\c{c}}alo, Belrose, Nora, “Sparse Autoencoders Trained on the Same Data Learn Different Features”, arXiv preprint arXiv:2501.16615, 2025
- [bills2023language]: Bills, Steven, Cammarata, Nick, Mossing, Dan, Tillman, Henk, Gao, Leo, Goh, Gabriel, Sutskever, Ilya, Leike, Jan, Wu, Jeff, Saunders, William, “Language models can explain neurons in language models”, 2023
- [paulo2024automatically]: Paulo, Gon{\c{c}}alo, Mallen, Alex, Juang, Caden, Belrose, Nora, “Automatically interpreting millions of features in large language models”, arXiv preprint arXiv:2410.13928, 2024
- [heap2025sparse]: Heap, Thomas, Lawson, Tim, Farnik, Lucy, Aitchison, Laurence, “Sparse Autoencoders Can Interpret Randomly Initialized Transformers”, arXiv preprint arXiv:2501.17727, 2025
- [lawson2024residual]: Lawson, Tim, Farnik, Lucy, Houghton, Conor, Aitchison, Laurence, “Residual Stream Analysis with Multi-Layer SAEs”, arXiv preprint arXiv:2409.04185, 2024
- [paulo2025transcoders]: Paulo, Gon{\c{c}}alo, Shabalin, Stepan, Belrose, Nora, “Transcoders Beat Sparse Autoencoders for Interpretability”, arXiv preprint arXiv:2501.18823, 2025
- [olmo2024features]: Olmo, Jeffrey, Wilson, Jared, Forsey, Max, Hepner, Bryce, Howe, Thomas Vin, Wingate, David, “Features that Make a Difference: Leveraging Gradients for Improved Dictionary Learning”, arXiv preprint arXiv:2411.10397, 2024
- [mudide2024efficient]: Mudide, Anish, Engels, Joshua, Michaud, Eric J, Tegmark, Max, de Witt, Christian Schroeder, “Efficient dictionary learning with switch sparse autoencoders”, arXiv preprint arXiv:2410.08201, 2024
- [braun2025identifying]: Braun, Dan, Taylor, Jordan, Goldowsky-Dill, Nicholas, Sharkey, Lee, “Identifying functionally important features with end-to-end sparse dictionary learning”, Advances in Neural Information Processing Systems, 2025
- [rajamanoharan2024improving]: Rajamanoharan, Senthooran, Conmy, Arthur, Smith, Lewis, Lieberum, Tom, Varma, Vikrant, Kram{\'a}r, J{\'a}nos, Shah, Rohin, Nanda, Neel, “Improving Dictionary Learning with Gated Sparse Autoencoders”, arXiv preprint arXiv:2404.16014, 2024
- [farnik2025jacobian]: Farnik, Lucy, Lawson, Tim, Houghton, Conor, Aitchison, Laurence, “Jacobian Sparse Autoencoders: Sparsify Computations, Not Just Activations”, arXiv preprint arXiv:2502.18147, 2025
- [makelov2024towards]: Makelov, Aleksandar, Lange, George, Nanda, Neel, “Towards principled evaluations of sparse autoencoders for interpretability and control”, arXiv preprint arXiv:2405.08366, 2024
- [huang2024ravel]: Huang, Jing, Wu, Zhengxuan, Potts, Christopher, Geva, Mor, Geiger, Atticus, “Ravel: Evaluating interpretability methods on disentangling language model representations”, arXiv preprint arXiv:2402.17700, 2024
- [karvonen2025measuring]: Karvonen, Adam, Wright, Benjamin, Rager, Can, Angell, Rico, Brinkmann, Jannik, Smith, Logan, Mayrink Verdun, Claudio, Bau, David, Marks, Samuel, “Measuring progress in dictionary learning for language model interpretability with board game models”, Advances in Neural Information Processing Systems, 2025
- [chaudhary2024evaluating]: Chaudhary, Maheep, Geiger, Atticus, “Evaluating open-source sparse autoencoders on disentangling factual knowledge in gpt-2 small”, arXiv preprint arXiv:2409.04478, 2024
- [karvonensaebench]: Karvonen, A, Rager, C, Lin, J, Tigges, C, Bloom, J, Chanin, D, Lau, YT, Farrell, E, Conmy, A, Mc-Dougall, C, others, “SAEBench: A comprehensive benchmark for sparse autoencoders, December 2024”, URL https://www. neuronpedia. org/sae-bench/info
- [karvonen2024evaluating]: Karvonen, Adam, Rager, Can, Marks, Samuel, Nanda, Neel, “Evaluating Sparse Autoencoders on Targeted Concept Erasure Tasks”, arXiv preprint arXiv:2411.18895, 2024
- [bushnaq2024local]: Bushnaq, Lucius, Heimersheim, Stefan, Goldowsky-Dill, Nicholas, Braun, Dan, Mendel, Jake, H{\"a}nni, Kaarel, Griffin, Avery, St{\"o}hler, J{\"o}rn, Wache, Magdalena, Hobbhahn, Marius, “The local interaction basis: Identifying computationally-relevant and sparsely interacting features in neural networks”, arXiv preprint arXiv:2405.10928, 2024
- [bushnaq2024using]: Bushnaq, Lucius, Mendel, Jake, Heimersheim, Stefan, Braun, Dan, Goldowsky-Dill, Nicholas, H{\"a}nni, Kaarel, Wu, Cindy, Hobbhahn, Marius, “Using degeneracy in the loss landscape for mechanistic interpretability”, arXiv preprint arXiv:2405.10927, 2024
- [braun2025interpretability]: Braun, Dan, Bushnaq, Lucius, Heimersheim, Stefan, Mendel, Jake, Sharkey, Lee, “Interpretability in Parameter Space: Minimizing Mechanistic Description Length with Attribution-based Parameter Decomposition”, arXiv preprint arXiv:2501.14926, 2025
- [hohman2019summit]: Hohman, Fred, Park, Haekyu, Robinson, Caleb, Chau, Duen Horng Polo, “SUMMIT: Scaling Deep Learning Interpretability by Visualizing Activation and Attribution Summarizations”, 2019
- [nanda2023progress]: Nanda, Neel, Chan, Lawrence, Lieberum, Tom, Smith, Jess, Steinhardt, Jacob, “Progress measures for grokking via mechanistic interpretability”, arXiv preprint arXiv:2301.05217, 2023
- [vig2020investigating]: Vig, Jesse, Gehrmann, Sebastian, Belinkov, Yonatan, Qian, Sharon, Nevo, Daniel, Singer, Yaron, Shieber, Stuart, “Investigating gender bias in language models using causal mediation analysis”, Advances in neural information processing systems, 2020
- [zhang2023towards]: Zhang, Fred, Nanda, Neel, “Towards best practices of activation patching in language models: Metrics and methods”, arXiv preprint arXiv:2309.16042, 2023
- [heimersheim2024use]: Heimersheim, Stefan, Nanda, Neel, “How to use and interpret activation patching”, arXiv preprint arXiv:2404.15255, 2024
- [goldowsky2023localizing]: Goldowsky-Dill, Nicholas, MacLeod, Chris, Sato, Lucas, Arora, Aryaman, “Localizing model behavior with path patching”, arXiv preprint arXiv:2304.05969, 2023
- [geiger2024finding]: Geiger, Atticus, Wu, Zhengxuan, Potts, Christopher, Icard, Thomas, Goodman, Noah, “Finding alignments between interpretable causal variables and distributed neural representations”, Causal Learning and Reasoning, 2024
- [wu2023interpretability]: Wu, Zhengxuan, Geiger, Atticus, Icard, Thomas, Potts, Christopher, Goodman, Noah, “Interpretability at scale: Identifying causal mechanisms in alpaca”, Advances in neural information processing systems, 2023
-
[nanda2023patching]: Nanda, Neel, “Attribution Patching: Activation Patching At Industrial Scale”, 2023
-
[syed2023attributionpatching]: Syed, Aaquib, Rager, Can, Conmy, Arthur, “Attribution Patching Outperforms Automated Circuit Discovery”, arXiv preprint arXiv:2310.10348, 2023
- [kramar2024atpstar]: Kramár, János, Lieberum, Tom, Shah, Rohin, Nanda, Neel, “AtP*: An efficient and scalable method for localizing LLM behaviour to components”, arXiv preprint arXiv:2403.00745, 2024
- [hanna2024have]: Hanna, Michael, Pezzelle, Sandro, Belinkov, Yonatan, “Have faith in faithfulness: Going beyond circuit overlap when finding model mechanisms”, arXiv preprint arXiv:2403.17806, 2024
- [zhang2025eap]: Zhang, Lin, Dong, Wenshuo, Zhang, Zhuoran, Yang, Shu, Hu, Lijie, Liu, Ninghao, Zhou, Pan, Wang, Di, “EAP-GP: Mitigating Saturation Effect in Gradient-based Automated Circuit Identification”, arXiv preprint arXiv:2502.06852, 2025
- [rajaram2024automatic]: Rajaram, Achyuta, Chowdhury, Neil, Torralba, Antonio, Andreas, Jacob, Schwettmann, Sarah, “Automatic discovery of visual circuits”, arXiv preprint arXiv:2404.14349, 2024
- [haklay2025position]: Haklay, Tal, Orgad, Hadas, Bau, David, Mueller, Aaron, Belinkov, Yonatan, “Position-aware Automatic Circuit Discovery”, arXiv preprint arXiv:2502.04577, 2025
- [cao2021low]: Cao, Steven, Sanh, Victor, Rush, Alexander M, “Low-complexity probing via finding subnetworks”, arXiv preprint arXiv:2104.03514, 2021
- [davies2023discovering]: Davies, Xander, Nadeau, Max, Prakash, Nikhil, Shaham, Tamar Rott, Bau, David, “Discovering variable binding circuitry with desiderata”, arXiv preprint arXiv:2307.03637, 2023
- [bhaskar2025finding]: Bhaskar, Adithya, Wettig, Alexander, Friedman, Dan, Chen, Danqi, “Finding transformer circuits with edge pruning”, Advances in Neural Information Processing Systems, 2025
- [lepori2023uncovering]: Lepori, Michael A, Serre, Thomas, Pavlick, Ellie, “Uncovering intermediate variables in transformers using circuit probing”, arXiv preprint arXiv:2311.04354, 2023
- [o2024sparse]: O'Neill, Charles, Bui, Thang, “Sparse autoencoders enable scalable and reliable circuit identification in language models”, arXiv preprint arXiv:2405.12522, 2024
- [ferrando2024information]: Ferrando, Javier, Voita, Elena, “Information flow routes: Automatically interpreting language models at scale”, arXiv preprint arXiv:2403.00824, 2024
- [katz2023visit]: Katz, Shahar, Belinkov, Yonatan, “VISIT: Visualizing and interpreting the semantic information flow of transformers”, arXiv preprint arXiv:2305.13417, 2023
- [he2024dictionary]: He, Zhengfu, Ge, Xuyang, Tang, Qiong, Sun, Tianxiang, Cheng, Qinyuan, Qiu, Xipeng, “Dictionary Learning Improves Patch-Free Circuit Discovery in Mechanistic Interpretability: A Case Study on Othello-GPT”, arXiv preprint arXiv:2402.12201, 2024
- [kissane2024attncirc]: Connor Kissane, Robert Krzyzanowski, Arthur Conmy, Neel Nanda, “Attention Output SAEs Improve Circuit Analysis”, Alignment Forum, 2024
- [geiger2021causal]: Geiger, Atticus, Lu, Hanson, Icard, Thomas, Potts, Christopher, “Causal abstractions of neural networks”, Advances in Neural Information Processing Systems, 2021
- [geiger2023causal]: Geiger, Atticus, Ibeling, Duligur, Zur, Amir, Chaudhary, Maheep, Chauhan, Sonakshi, Huang, Jing, Arora, Aryaman, Wu, Zhengxuan, Goodman, Noah, Potts, Christopher, others, “Causal abstraction: A theoretical foundation for mechanistic interpretability”, arXiv preprint arXiv:2301.04709, 2023
- [wu2023causal]: Wu, Zhengxuan, D’Oosterlinck, Karel, Geiger, Atticus, Zur, Amir, Potts, Christopher, “Causal proxy models for concept-based model explanations”, International conference on machine learning, 2023
- [shah2024decomposing]: Shah, Harshay, Ilyas, Andrew, Madry, Aleksander, “Decomposing and editing predictions by modeling model computation”, arXiv preprint arXiv:2404.11534, 2024
- [chan2022causal]: Chan, Lawrence, Garriga-Alonso, Adrià, Goldwosky-Dill, Nicholas, Greenblatt, Ryan, Nitishinskaya, Jenny, Radhakrishnan, Ansh, Shlegeris, Buck, Thomas, Nate, “Causal scrubbing, a method for rigorously testing interpretability hypotheses”, AI Alignment Forum, 2022
- [shi2025hypothesis]: Shi, Claudia, Beltran Velez, Nicolas, Nazaret, Achille, Zheng, Carolina, Garriga-Alonso, Adri{`a}, Jesson, Andrew, Makar, Maggie, Blei, David, “Hypothesis testing the circuit hypothesis in LLMs”, Advances in Neural Information Processing Systems, 2025
- [zhong2023clock]: Zhong, Ziqian, Liu, Ziming, Tegmark, Max, Andreas, Jacob, “The clock and the pizza: Two stories in mechanistic explanation of neural networks”, Advances in neural information processing systems, 2023
- [chughtai2023toy]: Chughtai, Bilal, Chan, Lawrence, Nanda, Neel, “A toy model of universality: Reverse engineering how networks learn group operations”, International Conference on Machine Learning, 2023
- [stander2023grokking]: Stander, Dashiell, Yu, Qinan, Fan, Honglu, Biderman, Stella, “Grokking group multiplication with cosets”, arXiv preprint arXiv:2312.06581, 2023
- [li2024fourier]: Li, Chenyang, Liang, Yingyu, Shi, Zhenmei, Song, Zhao, Zhou, Tianyi, “Fourier circuits in neural networks and transformers: A case study of modular arithmetic with multiple inputs”, arXiv preprint arXiv:2402.09469, 2024
- [heimersheim2023circuit]: Heimersheim, Stefan, Janiak, Jett, “A circuit for Python docstrings in a 4-layer attention-only transformer”, Alignment Forum, 2023
- [hanna2023does]: Hanna, Michael, Liu, Ollie, Variengien, Alexandre, “How does GPT-2 compute greater-than?: Interpreting mathematical abilities in a pre-trained language model”, Advances in Neural Information Processing Systems, 2023
- [lieberum2023does]: Lieberum, Tom, Rahtz, Matthew, Kram{\'a}r, J{\'a}nos, Nanda, Neel, Irving, Geoffrey, Shah, Rohin, Mikulik, Vladimir, “Does circuit analysis interpretability scale? evidence from multiple choice capabilities in chinchilla”, arXiv preprint arXiv:2307.09458, 2023
- [mathwin2023identifying]: Mathwin, Chris, Corlouer, Guillaume, Kran, Esben, Barez, Fazl, Nanda, Neel, “Identifying a preliminary circuit for predicting gendered pronouns in gpt-2 small”, URL: https://itch.io/jam/mechint/rate/1889871, 2023
- [chintam2023identifying]: Chintam, Abhijith, Beloch, Rahel, Zuidema, Willem, Hanna, Michael, Van Der Wal, Oskar, “Identifying and adapting transformer-components responsible for gender bias in an English language model”, arXiv preprint arXiv:2310.12611, 2023
- [kharlapenko2025scaling]: Dmitrii Kharlapenko, Stepan Shabalin, Fazl Barez, Neel Nanda, Arthur Conmy, “Scaling Sparse Feature Circuits For Studying In-Context Learning”, 2025
- [merullo2023circuit]: Merullo, Jack, Eickhoff, Carsten, Pavlick, Ellie, “Circuit component reuse across tasks in transformer language models”, arXiv preprint arXiv:2310.08744, 2023
- [mondorf2024circuit]: Mondorf, Philipp, Wold, Sondre, Plank, Barbara, “Circuit Compositions: Exploring Modular Structures in Transformer-Based Language Models”, arXiv preprint arXiv:2410.01434, 2024
- [tigges2024llm]: Tigges, Curt, Hanna, Michael, Yu, Qinan, Biderman, Stella, “LLM circuit analyses are consistent across training and scale”, arXiv preprint arXiv:2407.10827, 2024
-
另一种方法是研究粗粒度模型组件(如整个 MLP 模块和注意力头)的作用 \cite{meng2022locating,wang2022interpretability,conmy2023towards}。这种方法确实识别出了这些组件在特定行为中扮演的有趣角色,但大型组件在整个数据分布上扮演着大量互不相关的角色,因此我们寻求更细粒度的分解。 ↩
-
我们沿用神经科学中“特征检测器”(feature detectors)与机器学习中“特征学习”(feature learning)的传统来使用“特征”(feature)一词。近期一些文献使用“潜变量”(latent)一词,指模型潜在空间中的特定向量。我们认为“特征”能更好地捕捉这些元素所扮演的计算角色,因此用它来描述转码器(transcoder)神经元比用 SAE 解码器向量更为贴切。 ↩
-
特征与特征之间的直接交互是线性的,因为转码器特征“跨越”(bridge over)了 MLP 的非线性、取代了它们的计算,还因为我们冻结了其余的非线性:注意力模式和归一化分母。值得注意的是,严格来说,我们的意思是:某个特征的预激活相对于更早特征的激活值是线性的。
冻结注意力模式是一种标准做法,它将理解 transformer 的过程分为两步:理解给定注意力模式下的行为,以及理解模型为何注意那些位置。A Mathematical Framework \cite{nelhage2021mathematical} 对注意力模型深入探讨了这种方法,该文还讨论了将其推广到 MLP 层——这本质上就是本文采用的方法。需要注意的是,以这种方式把“理解注意力模式”单独拆解出来,会导致 § 局限性:注意力电路缺失 中指出的注意力相关问题。不过,我们随后也可以采用 Framework 所用的相同解法,即研究 QK 电路。 ↩ -
除 CLT 之外的其他架构也可用于电路分析,但我们凭经验发现这种方法效果很好。 ↩
-
18L 在第 0 层没有 MLP,因此我们的 CLT 有 17 层。 ↩
-
我们使用随机采样的一组提示和目标词元(token),只保留模型预测正确但置信度低于 80% 的那些(以过滤掉“无聊”的词元)。 ↩
-
这与函数 \(f\) 在点 \(a\) 处的泰勒近似在精神上类似:两者在 \(a\) 的某个邻域内局部一致,但随着你逐渐远离,行为就会分道扬镳。 ↩
-
由于存在“Caps Lock”词元,实际的目标词元是“dag”。为便于阅读,我们在此处及全文其余部分将该词元写作大写形式。 ↩
-
我们随意选择了这个阈值。经验表明,在我们研究的情形中,捕获 95% 的概率所需的 logits 不到三个。 ↩
-
或者,\(w_{s \rightarrow t}\) 是 \(t\) 的预激活关于源特征激活值的导数,局部替换模型中的所有非线性处都施加了停止梯度(stop-gradient)。 ↩
-
也就是说,我们的模型忽略“QK 电路”,但捕捉“OV 电路”。\cite{nelhage2021mathematical} ↩
-
我们有时会以自动化可解释性流水线给出的标签为起点,但总体而言发现人工标签更可靠。 ↩
-
它们位于受影响节点的下游,因此可能受到间接影响。 ↩
-
关于我们为何选择负向引导而不是消融该特征的讨论,参见 § 未解释方差与引导因子的选择。 ↩
-
对每个被修补的超级节点,我们选择能对 logit 产生最大抑制效果的末端层范围。 ↩
-
注意,我们在该实验中使用了较大的引导因子。相关讨论参见 § 未解释方差与引导因子的选择。 ↩
-
我们使用“calc:”前缀,因为 18L 在带此前缀的问题上表现要好得多。对 Haiku 3.5 而言这个前缀并非必需,但为了在后续章节中进行直接比较,我们仍然保留它。 ↩
-
在分析过程中,我们可视化 [0, 999] 上的效应。这对于理解前 100 个数字词元之外的效应(例如预测 95 mod 100 的特征)很重要,但为简洁起见,我们只展示 [0, 99]。 ↩
-
悬停时,你可以看到低精度查找表特征(low precision lookup table features)与中等精度求和特征(moderate precision sum features)在精度上的变异性。 ↩
-
与本文其他章节一样,这些标签是我们人工标注的。 ↩
-
用 \(f_{pre}\) 表示 \(x\) 的预激活。则 \(f_{pre}(x + y) + f_{pre}(z + w) = f_{pre}(x + w) + f_{pre}(y + z)\)。如果左侧两项均为正,那么右侧至少有一项为正。 ↩
-
具体来说,中间信息就是操作数个位相加所得的个位数字,以及两个 20 多(20s)的数之和的近似量级。 ↩
-
注意力直连项也可以用虚拟权重来表示:把各种解码器向量依次乘以一系列注意力头的 OV,再乘以一个编码器。不过在具体提示上,这些项会同时被源特征激活值和注意力模式缩放,这使得对它们的分析更加复杂。 ↩
-
在 § 附录:更多特征上的干涉权重 中观察更大样本的特征时,我们同样能看到干涉权重。 ↩
-
它只表示残差直连分量,不包含注意力直连分量。 ↩
-
注意,这些权重不可能为 0,因为那样也会把 TWERA 置为 0。 ↩
-
我们无法保证 CLT 特征是拆分计算的最简约方式;我们那些较次要、大致呈周期性的特征更难解释,它们有可能是表征周期性方面的产物(artifact)。 ↩
-
在 § 附录:更多特征上的数字输出权重 中,我们展示了 9_ 和 95_ 特征对所有 [0,999] 范围内数字预测的输出权重图。我们还展示了一个促进“简单数字”的杂项特征:小数、100 的倍数,以及 360 等少数突出的数字。 ↩
-
一条途径是考虑提示族(families of prompts),并将某一族内所有提示中都出现的特征排除在考虑范围之外(但参见 \cite{miller2024transformer})。 ↩
-
我们让训练步数随特征数量按比例扩展,因此性能提升反映的是两种扩展形式的结合——详见 § 附录:CLT 实现细节。 ↩
-
具体来说,我们遍历一系列标量阈值;对每个阈值,我们都会把所有激活值低于该阈值的神经元钳制(clamp)为 0。在计算指标和绘制图表时,我们只考虑高于阈值的神经元。 ↩
-
我们选择的阈值大致位于神经元获得与我们最小字典相近的自动化可解释性分数的位置,参见上图。 ↩
-
如果存在多个 logit 节点,我们按 logit 概率对各行加权求平均。 ↩
-
我们用未剪枝图中嵌入的总影响力对影响力分数进行归一化。这个归一化因子恰好等于替换分数(replacement score),我们将在下一节定义它。 ↩
-
误差累积对扰动效应方向的忠实度有逐渐恶化的影响;扰动效应方向在各 CLT 规模下大体一致,但随着字典规模增大,忠实度有略微下降的迹象。误差累积对扰动幅度的影响则可能是灾难性的,字典越大影响越严重。我们怀疑,局部替换模型缺少归一化分母,正是其扰动效应幅度与底层模型偏差如此之大的原因——即便扰动效应方向显著相关时也是如此。 ↩
-
其他解释也是可能的,尤其是那些不经过
tokens following "B"的来自"B"的直达路径——一种替代解释是,模型可能使用“绑定 ID 向量”(binding ID vector)\cite{feng2023language} 将"B"词元与"1945"及其邻近词元归为一组,并借此从最后一个词元位置直接回指"B"词元——关于这类机制的更多细节,参见 Feng & Steinhardt \cite{feng2023language}。 ↩ -
关于逆向工程哲学的详细描述,参见 Sharkey 等人 \cite{sharkey2025open}。 ↩
-
在非线性情境下进行功劳归因是一个难题。核心挑战无法简单地一笔勾销,我们有必要追问:复杂性究竟被我们隐性地推到了哪里?它可能去了三个地方。第一——也是最好的选项——非线性交互变成了归因图中的多步路径,从而可以以可解释的方式加以推理。其次,相当一部分复杂性必然进入了被冻结的组件,被分解成一些我们在此未尝试解决、但至少知道仍然存在的独立问题。但还有一个糟糕的选项:其中一部分复杂性可能被我们的 CLT 以机制上不忠实的捷径简化掉了——用通常正确的线性近似来逼近 MLP 计算。 ↩
-
我们的设置允许在全局语境下建立一些类似的、有原则可循的线性交互概念,但现在我们必须考虑不同路径上的交互具有不同的权重——例如,由注意力头 H 介导的特征 A 与特征 B 之间的交互是什么?这一点在 § 全局权重 中讨论。Framework 论文还在附录中讨论了这些一般性的概念问题。 ↩
-
在此分析由某个头介导的全局权重可能很有意思。例如,归纳头可能系统性地把“I'm X”特征转移到“say X”特征;后继头(successor head)可能系统性地把“X”特征映射为“X+1”特征。 ↩
-
当然,并非所有头都像归纳头或后继头那样各自有趣。我们可以猜想,注意力头的叠加中隐藏着更多类似归纳与后继的“注意力特征”。如果能够揭示它们,故事可能会丰富得多。 ↩