通过特征交互追踪注意力计算
来自 Transformer Circuits Thread · 期号 2025-07-31
摘要
Transformer 的注意力机制一直是个黑箱:我们知道注意力头在哪些位置之间传递信息,但不知道它为什么选择那些位置。 Anthropic 的研究者提出了一种方法,把注意力分数拆解成 query 侧和 key 侧特征之间的交互,称为 QK 归因。这补上了他们之前归因图方法的一块缺口——之前只能解释 MLP 层的计算,现在注意力层也能拆开了。 几个案例验证了已知机制(归纳头、反义词查找、多选题),也发现了新东西:模型会用「一致/不一致头」来检查陈述是否自洽,即使在简单 prompt 里,注意力回路也同时运行着多条并行的启发式策略。 本文是方法介绍,附了开源代码。
深读
导读 Anthropic 团队提出了一种名为 QK 归因的方法,将注意力机制的计算拆解为 query 侧和 key 侧特征之间的交互,从而补上了他们此前归因图方法中缺失的关键一环。对于研究 Transformer 可解释性、特别是想理解注意力头为何选择特定位置的从业者,本文提供了可操作的分析工具和开源代码,并通过多个案例展示了该方法如何揭示模型内部的并行启发式策略。 关键信息 - 方法核心:注意力分数(softmax 前)是残差流在 query 和 key 位置的双线性函数,可分解为特征对之间的点积之和。 - 案例验证了已知机制:归纳头(induction heads)中 query 侧的“X”特征与 key 侧的“preceded by X”特征交互;反义词查找中 key 侧特征标记目标词,供 query 侧“opposite”特征定位。 - 新发现:模型使用“一致/不一致头”(concordance/discordance heads)来检查陈述的自洽性。 - 新发现:即使在简单 prompt 中,注意力回路也同时运行多条并行的启发式策略,例如归纳 prompt 中核心归纳机制与通用的“关注名字”机制共存。 - 实现策略:通过在每层残差流上训练稀疏自编码器(SAE)来“检查点”注意力路径,避免跨层多头路径的指数级组合问题。 - 开源代码已随文发布。 逐节讲解 问题:归因图缺失注意力计算 此前基于跨层转录器(cross-layer transcoder)的归因图只能解释 MLP 层的计算,因为转录器只在同一上下文位置内读写信息。注意力层跨位置传递信息,但归因图通过冻结注意力模式(将其视为常数线性操作)来绕过解释,导致两个关键信息缺失:一是无法知道哪些(序列的)注意力头参与了某条边,二是无法解释每个头注意力模式的机制来源,即 QK 电路如何产生该模式。作者指出,对于许多 prompt,这种缺失使得归因图几乎无用。 高层策略 核心思路分为两步。第一,解释注意力模式的来源:注意力分数是残差流在 query 和 key 位置的双线性函数,因此若将残差流分解为特征分量的和,注意力分数可重写为 query 侧和 key 侧特征对之间的点积之和,称为 QK 归因。第二,解释注意力头如何参与归因图:为归因图的每条边记录每个注意力头的贡献程度(称为“头负载”,head loadings),这需要每层都有特征表示来“检查点”注意力路径,避免跨层多头路径的指数级增长。 QK 归因的计算 假设已在每层残差流上训练了稀疏自编码器(SAE)。注意力分数可展开为 query 侧和 key 侧特征激活的乘积之和,加上偏置项和残差项。将这些项按大小排序后,每条项都是一个 query 侧与 key 侧分量的交互,可在交互式 UI 中悬停查看特征可视化。一个局限是该方法不直接解释注意力模式本身…