Summary

Interpretability in the Wild: a Circuit for Indirect Object Identification in GPT-2 small

  • 核心: 第一次端到端、手工逆向出一个真实自然语言任务(Indirect Object Identification)在 GPT-2 small 上的完整 attention-head 电路——26 个 head 分 7 类,覆盖全模型 1.1% 的 (head, position) 对。
  • 方法: 从 logits 倒推,用 path patching(causal mediation 的路径化推广)+ mean-ablation knockout 逐步定位 head,再用 attention pattern / OV copy-score / 反事实数据集刻画各 head 功能;最后用 faithfulness / completeness / minimality 三个量化判据验证电路。
  • 结果: 电路恢复全模型 87% 的 logit difference;发现 Backup Name Mover、Negative Name Mover 等反直觉结构;但 completeness 在 greedy 搜索下失败(incompleteness 高达 87%),自承解释不完整。
  • Sources: paper | github
  • Rating: 3 - Foundation(机制可解释性「电路发现」范式的奠基案例与方法模板,后续 ACDC 等自动化工作直接以它为对象与 benchmark)

Key Takeaways:

  1. 电路发现的方法模板: 「从 logits 倒推 + path patching 定位 + 功能刻画 + 三判据验证」这套 workflow 成为后续 circuit 工作的标准动作,也是 ACDC 试图自动化的对象。
  2. 诚实的验证判据: 不止报 faithfulness,还主动设计 completeness / minimality 去找自己的漏洞,并坦承在 greedy 搜索下 completeness 失败——这种「自我证伪」的姿态比电路本身更有方法论价值。
  3. 反直觉内部结构: Backup Name Mover Head(主 head 被 ablate 后才接管)暴露了模型的冗余/self-repair,使「ablation 掉就说明不重要」的朴素归因失效;Negative Name Mover Head 则反向写入,是后续 self-repair / hedging 研究的源头。

Teaser. Figure 1:左为 IOI 电路(橙色子图),把 indirect object “Mary” 的信息流路由到 next-token 预测;右为发现/验证电路所用的 causal intervention(path patching + head knockout)示意。


任务与设定:IOI 与度量

IOI 任务:句子如 “When Mary and John went to the store, John gave a drink to ___” 应补全为 “Mary”。结构上句子含一个引入从句(引入 indirect object IO=“Mary” 与 subject S=“John”)和一个主句(再次提到 S)。可解释的目标算法非常干净:

  1. 找出句中所有出现过的 name(Mary, John, John);
  2. 去掉重复出现的 name(John);
  3. 输出剩下的那个(Mary)。

数据用 15 个模板 + 随机单 token 的人名/地点/物品生成,记分布为 。度量两个:

  • Logit difference:IO 与 S 两个 name 的 logit 之差(正值=正确 name 概率更高);
  • IO probability:IO token 的绝对概率。

在 10 万样本上 GPT-2 small 平均 logit difference = 3.56(99.3% 的情况 IO > S),平均 IO probability = 49%。这个 3.56 是后文所有 patching 效果的分母——一切「drop 了多少」都相对它衡量。

选 IOI 这个任务是关键的品味:它既是自然语言(不像 toy 任务),又有唯一可写出的目标算法,使得「电路是否对」有了 ground truth 可对照。这也是本文能成为 model organism 的前提。

本文只研究 attention head,不干预 MLP / layer norm / embedding。初步实验里逐个 ablate MLP 影响不大(除第一层),但 ablate 掉第一层之后所有 MLP 会让模型彻底无法完成任务(Appendix J)。MLP 的精确角色留作 future work——这是一个被刻意搁置的大窟窿。

方法:knockout 与 path patching

Circuit 定义:把模型看成计算图 (节点=forward pass 中的项:head、embedding 等;边=交互),circuit 是负责某行为的子图。注意这里的节点是模型组件(head),比 Olah 的 circuits 定义(节点=feature 方向)更粗粒度。

Knockout 用 mean-ablation 而非 zero-ablation:zero ablation 把输出置 0,但 0 是任意值、下游可能依赖均值作隐式 bias,实测噪声大。改用在参考分布上的均值替换。参考分布是 ——同样的模板,但用三个无关随机名 A/B/C 替换 IO/S,从而抹掉「某 name 被复制」这类在 中恒定、但对任务关键的信息。为保留语法信息,均值按同模板内样本求。

Path patching(本文核心工具,是 causal mediation analysis 向 LM 的路径化推广):给定 (取自 )和 (对应 样本),以及从节点 出发的一组路径 (到接收组件集合 的所有直接路径——经残差和 MLP,但不经其他 head),在 的 forward pass 中只把 的激活替换成 的, 之后的层正常重算。这样测的是 这条路径的反事实直接效应

path patching 与 Appendix A 用的 activation patching 的区别:activation patching 直接替换一组 head 的输出并重算整段,无法隔离类内 head 间的交互(因 Backup/Negative head 依赖同类早期 head);path patching 才能把「直接路径」单独拎出来。这个区分是后续 circuit 工作反复用到的。

发现电路:从 logits 倒推

整套流程是 backward 的:从 logits 出发,每一步「path patching 定位直接影响的 head → 用 attention/OV/反事实实验刻画功能」。最终 7 类 head 对应目标算法的步骤。

Figure 2:发现的完整 IOI 电路。输入 token 进入 residual stream,各 head 在不同 residual stream 间搬运信息——query/output 箭头表示写入位置,key/value 箭头表示读取位置。

Name Mover Heads(直接影响输出)

对 END 位置每个 head 跑 的 path patching,只有少数末层 head 有大效应:patch 9.6 / 9.9 / 10.0 引起 logit difference 大幅下降(正贡献),而 10.7 / 11.10 引起上升(负贡献)。

正贡献的三个 head 强烈 attend 到 IO token(平均 attention 0.59)。验证两个假设:(i) attend 到正确 name,(ii) copy 它所 attend 的内容。用 OV 矩阵算 copy score(attend 完美时该 name 进 top-5 logits 的样本比例):三个 Name Mover Head 都 >95%,而平均 head <20%。attention probability 与写入 name 方向的 logit 相关

Negative Name Mover Heads(10.7、11.10):和 Name Mover 各属性相同,但 (1) 写在所 attend name 的反方向,(2) negative copy score 98%(平均 head 12%)。作者推测它们让模型「hedge」以避免错判时的高 cross-entropy loss。

Negative head 是本文最 surprising 的发现之一:一个 head 系统性地把正确答案往下压。它把「head 都是朝目标努力」的朴素图景打破了,是后续 self-repair / anti-induction 研究的起点。

S-Inhibition Heads(影响 Name Mover 的 attention)

Name Mover 的 value 在 copy、key 在 IO(早出现、任务信息少),故只查 query(在 END 位)。对 做 path patching,定位到 7.3 / 7.9 / 8.6 / 8.10。可视化显示 patch 掉它们后 Name Mover 对 S1 的 attention 上升、对 IO 下降——故名 S-Inhibition(抑制对 S 的注意)。

这些 head 优先 attend S2(END→S2 平均 0.51),输出两种信号:token signal(S 的 token 值,让 Name Mover 避开该 token)与 position signal(S1 的位置,让 Name Mover 按位置避开 S1)。用反事实数据集(Appendix A)解耦:两者都重要,但 position signal 效应更大

Figure 9:从信号特定数据集 patch S-Inhibition head 后的 logit difference——效应可近似分解为 position 与 token 信号之和。

S token 信号 \ position 信号Original positionInverted position
Original S token3.55 (baseline)-0.99
Random S token2.45-1.96
S↔IO inverted token1.77-3.16

Duplicate Token / Induction / Previous Token Heads(影响 S-Inhibition 的 value)

对 S2 位 head 做 的 path patching(value 最重要),找到 4 个 head,按 attention 分两组:

  • Duplicate Token Heads(S2→S1):检测当前 token 之前的出现并把其位置 copy 过来。在随机 token 序列上也对前次出现强 attend(Appendix I)。
  • Induction Heads(S2→S1+1)+ Previous Token Heads:复用了 induction headOlsson et al. 2022 / Elhage et al. 2021 的 [A][B]…[A]→[B] 机制)。Previous Token Head 把 [A] 信息写到 [B] 位,Induction Head 据此匹配。验证用 prefix-matching + copying 检查。

两组的 attention 都由 S1 位置决定,故被认定为 position signal 的来源(再由 S-Inhibition copy)。patch 改变 position 信号引起的 drop 与直接 patch S-Inhibition 相当(≥88%),而只改 token、保位置则 drop <8%。

注意:作者明确列出 missing validations:没在参数级(QK/OV 与 embedding 的交互)验证 Duplicate Token Head 是否真是 collision detector,也没验证 OV 是否 copy positional embedding。更关键的是——这里的 Induction Head 用法和它原始发现(in-context learning)不同:在 IOI 里它的输出被当作 position signal 喂给 S-Inhibition 的 value,而非直接预测下一个 token。「一个 head 的 mainline 功能不等于它在某电路里的实际功能」是本文一个重要 meta-lesson。

Backup Name Mover Heads(冗余/self-repair)

一次性 ablate 掉全部 Name Mover Head,电路居然几乎不受影响(logit difference 仅降 5%)。重跑 path patching 发现一批新 head 接管了写 name 的角色——取直接效应最高的 8 个,称 Backup Name Mover Heads。它们在 ablation 前行为各异(4 个像 Name Mover,2 个 IO/S 均等 attend,1 个偏 S1,1 个 copy S2)。作者推测这是训练时 dropout 导致模型对组件失效具鲁棒性。

这是全文方法论冲击最大的发现:ablation 一个组件不掉性能,不代表它不参与计算——下游有 backup 在补位。它直接动摇了「ablation 重要性排序」这一可解释性常用工具的有效性,也是 completeness 判据的动机。

实验验证:faithfulness / completeness / minimality

为电路 的平均 logit difference( 由 knockout 掉 外所有节点定义)。三个判据:

Faithfulness—— 性能接近全模型

达到 的 87%。但 Backup head 已说明 faithful 不等于完整。

Completeness——对每个子集 ,incompleteness score 都应小:

直觉:若 有两条等价并联子电路 做 OR,只抓到 也能 faithful,但置 已空而 仍有 ,score 大→暴露不完整。子集指数多,用三种采样找大 score:随机子集、整类 head、greedy 逐节点最大化。前两种都显示电路看似完整,但 greedy 找到的 使 incompleteness 高达 3.09(≈87% 原 logit difference)——这些集合通常跨多类、不可语义解释。

Minimality——每个节点 都应必要:存在 使 minimality score 高:

结果(Figure 7)所有节点都有非平凡影响(≥1% 原 logit difference),但部分 head 单独贡献很小。

Baseline 对比:naïve 电路(只含 Name Mover + S-Inhibition + 2 Induction + 2 Duplicate + Previous Token,去掉 Backup/Negative)faithfulness 也达 0.1,但更易被证不完整(随机/按类采样下 );不过 greedy 下两者 incompleteness 都大。

对抗样本:基于「模型靠 duplicate detection 区分 S/IO」的理解,构造 S 和 IO 都重复的句子(“John and Mary went to the store. Mary had a good day. John gave a bottle of milk to ___”),使模型 23% 的情况预测 S 而非 IO;对照(中间句重复 S 而非 IO)则 logit difference 反更高、仅 0.4% 错。作者诚实指出:这些攻击简单到不靠电路也能想到,且电路在对抗分布上的机制(S-Inhibition 也 attend 第二个 IO)超出本文分析。

关联工作

基于

  • Causal Mediation Analysis(Vig et al. 2020): path patching 是它在 LM 上的路径化推广,是本文定位 head 的主力工具。
  • Induction HeadsOlsson et al. 2022)/ Toy Models(Elhage et al. 2021): 直接复用 induction head 的 prefix-matching + copying 概念与验证方法;本文发现它在 IOI 里被「挪用」为 position signal。
  • Circuits 范式(Olah et al. 2020, Zoom In): 电路抽象的来源,本文用更粗的 head-level 节点落地到真实 LM。

对比

  • ROME(Meng et al. 2022)/ Geiger et al. 2021(Causal Abstraction): 同属 causal-intervention 路线,但聚焦 factual association 的定位/编辑;本文聚焦一个完整任务电路的端到端逆向。
  • naïve 电路: 文内自设 baseline,证明 faithfulness 单一判据不足以排除「漏抓并联结构」。

方法相关 / 谱系

  • 电路发现的范式案例与方法模板:本文手工用 path patching + ablation 在 GPT-2 small 上还原 IOI 电路(name mover / S-inhibition / backup / negative / duplicate / induction / previous-token)。这套 workflow 与 faithfulness/completeness/minimality 判据成为后续标准。
  • ACDC(Conmy et al. 2023): 直接把本文的手工流程自动化——IOI 电路成为 ACDC 等自动 circuit discovery 方法的首要复现对象与 benchmark。
  • Faithfulness: 本文对该概念给出了可操作的量化定义,并指出其不足(需 completeness 补强)。
  • SAE / Attribution Graphs: 后续把节点从 head 细化到 feature/更细的归因图,是本文「head-level 太粗」局限的回应方向。

论文点评

Strengths

  1. 品味好的问题选择:IOI 同时满足「自然语言 + 有唯一可写出的目标算法」,使电路有 ground truth 可对照——这是它能成为 model organism、被反复引用的根本原因。
  2. 方法论模板价值 > 单个电路结果:从 logits 倒推 + path patching + 功能刻画 + 三判据验证,整套被后续工作继承;path patching 本身成为标准工具。
  3. 诚实到自我证伪:不满足于 faithfulness,主动设计 completeness/minimality 找漏洞,并公开 greedy completeness 失败(87% incompleteness)、missing validations、MLP 未解释等。
  4. 反直觉发现有长尾影响:Backup Name Mover(self-repair)与 Negative Name Mover(反向写入)各自催生了独立研究线,且动摇了「ablation 重要性」这一常用归因工具。

Weaknesses

  1. 解释自承不完整:greedy 搜索下 completeness 失败,意味着仍有未被电路捕获、却参与计算的结构;electric 只覆盖 1.1% (head,pos) 对但「the bulk」之外的部分未刻画。
  2. MLP / layer norm / embedding 全部被搁置:而 ablate 掉第一层后所有 MLP 会让任务崩溃,说明 MLP 绝非可忽略——电路在「只看 attention」的假设下天然残缺。
  3. 可扩展性存疑:GPT-2 small 比 SOTA 小数个量级;GPT-2 medium 的初步分析已显示 Name Mover 行为更复杂、不全 attend IO/S。手工逆向的人力成本随模型规模爆炸——这正是 ACDC 要解决的痛点。
  4. 依赖 mean-ablation + 的设计选择:参考分布的构造会影响「哪些信息被抹掉」,进而影响哪些 head 被判为重要;这一选择的稳健性未充分 ablate。
  5. 对抗样本的说服力有限:作者自承这些例子简单到不靠电路也能构造,downstream 验证的「电路带来了独有知识」这一 claim 偏弱。

可信评估

Artifact 可获取性

  • 代码: 已开源(inference + 实验复现),redwoodresearch/Easy-Transformer,一次性 code drop,作者推荐改用 TransformerLens(其 demo 复现了本文多个实验)。
  • 模型权重: 用公开的 GPT-2 small(无需自训)。
  • 训练细节: N/A(不训练模型,仅分析预训练 GPT-2);分析超参(如 copy score 的 N、相关性样本数)正文/附录有交代。
  • 数据集: IOI 由 15 个模板程序化生成(Appendix E 给出模板),可完全复现;非私有。

Claim 可验证性

  • 可信:电路达全模型 87% logit difference(faithfulness=0.46):有明确数值与可复现代码。
  • 可信:Name Mover copy score >95% vs 平均 head <20%:OV 实验,N=1000,可复现。
  • 可信:Backup Name Mover 接管(ablate Name Mover 仅降 5%):直接 knockout 实验。
  • 存疑:「7 类 head 实现该可解释算法」:head 功能由 attention pattern + 反事实实验归纳得到,部分(Duplicate/Induction Head)作者自承缺参数级验证,属强证据但非完全证明。
  • 存疑:Backup 现象源于训练 dropout:明确标注为 hypothesis,未做控制实验验证。
  • ❌(实为坦诚)completeness 通过:作者主动报告其失败,未 overclaim 电路完整。

Notes

  • 与谱系的衔接:本文是「手工电路发现」的高水位线,ACDC 把它自动化、并把 IOI 当 benchmark;再往后 SAE / attribution graph 把节点从 head 细化到 feature。读这条线时,IOI 是理解「什么是一个电路、如何验证一个电路」的必经入口。
  • 一个开放问题:completeness 的 greedy 反例「不可语义解释」——这究竟是模型真有分布式冗余结构,还是 head-level 抽象太粗导致的伪影?这个张力在 SAE 时代仍未完全解决。

Rating

Metrics (as of 2026-06-27): citation=N/A (S2 IP throttled), influential=N/A; HF upvotes=2; github 146⭐ / forks=18 / 90d commits=0 / pushed 692d ago · stale(官方一次性 code drop,作者引导至 TransformerLens,stars 仅反映历史影响力)

分数:3 - Foundation

理由:这是机制可解释性「电路发现」范式的奠基案例——首个端到端逆向真实自然语言任务电路的工作,path patching 工具与 faithfulness/completeness/minimality 判据被后续广泛继承,IOI 本身成为 ACDC 等自动化方法的标准 benchmark(followed-by-many)。即便绝对引用今日不可测(S2 throttled),其在谱系中的「必读入口」地位与方法模板影响足以定为 Foundation;相对相邻档(2-Frontier),它不是「当前 SOTA」而是「定义了一个子方向如何做研究」的工作,故非 2。github stale 仅因官方主动把维护迁到 TransformerLens,不构成降档理由。