上一章《持续学习与遗忘》把「学新的会忘旧的」说透了,代价来自参数共享。
这一章正好接住:打开模型,看它里面在算什么。
很多人以为机械
| 比什么 | 看注意力图 | 机械可解释性 |
|---|---|---|
| 得到什么 | 一张权重热力图 | 一个具体的计算机制 |
| 能回答什么 | 「模型在看哪」 | 「模型怎么算出这个答案的」 |
| 根本问题 | 注意力权重只是中间产物,它经过后面十几层的
前馈网络和 |
它追踪的是从输入到输出的完整因果链 |
| 类比 | 看着一个人的眼动轨迹,猜他在想什么 | 把他的神经回路拆开,找出具体哪几个神经元在传递这个信号 |
早期有大量论文靠「
这说明那张好看的热力图只是巧合,不是机制。
「看起来合理」是所有
来源:Jain & Wallace 2019《Attention is not Explanation》;Serrano & Smith 2019《Is Attention Interpretable?》。
机械
把残差流想成一条公共传送带:第 1 层把一个方向放上去,后面每一层又往上传新的内容。 叠得越多,原来那个方向就越难认出来。
互动 · 同一个方向,走过 12 层之后还认得出来吗
| 工具 | 怎么做 | 能得到什么 | 局限 |
|---|---|---|---|
| 探针 Probe | 用一个线性分类器从激活里读出某个概念 | 能读出 → 信息确实在那 | 只能说「在那里」,不能说「在用」 |
| 激活修补 Activation Patching |
把某个位置的激活换成另一个输入的,看输出怎么变 | 因果关系。这是它和探针最本质的区别 | 要跑很多次前向;选哪些位置有组合爆炸 |
| 稀疏 |
把叠加在一起的激活分解成稀疏的特征方向 | 单个神经元解释不了的,SAE 能拆成单义特征 | 训练成本极高;拆出来的特征未必是模型真在用的 |
| 电路分析 Circuit Analysis |
逐层找出哪些组件对这个任务是必要的 | 一个完整的机制解释 | 只能在小模型上穷尽,规模一大就做不完 |
| Logit Lens | 把中间层的激活直接当最后一层,和词表里每个词比一遍 | 读出词表上的概率,看模型「中途在想什么」 | 只在后几层有意义,浅层的投影是乱的 |
相关性 ≠ 因果性。探针和 Logit Lens 给的是相关性;
激活修补给的是因果性——因为它真的动手改了东西,然后看结果会不会变。
任何
下面的探针是一个 16 维输入的逻辑回归,在 96 个样本上训练、32 个样本上测试。 数据里埋了一个「概念」,你要看探针能不能把它读出来。
互动 · 探针:读出信息 ≠ 模型在用信息
你会看到一种很危险的情况:探针准确率高达 95% 以上,但激活修补的效果是 0。
意思是:这个概念确实被编码在激活里,但模型做决策时根本没用它。
如果你只看探针准确率就下结论「模型在用这个概念做判断」,那就错了。
这就是为什么探针必须配合激活修补。
你偷看一个人的日记,发现里面写着「我觉得这家餐厅不好吃」。
这证明了这个想法在他脑子里(探针能读出来)。
但他最后有没有真的因为这条信息而不去那家餐厅吃?那是另一回事。
要验证后者,你得动手改掉他的记忆,然后看行为变不变——这就是激活修补。
这个类比管到「读出来 ≠ 用上」为止:人的记忆不是向量,改激活也不等于改记忆。
最自然的想法是:找一个神经元,看它对什么输入响应最强,就知道它在检测什么。
这个想法在真实的模型上基本是错的。原因是「叠加」(superposition)。
模型要表示的特征数量,远远多于它拥有的维度数(GPT-2 的激活只有 768 维, 却要表示上万个特征;Llama-2-70B 也只有 8192 维)。 怎么办?让特征方向不必互相垂直——在几千维空间里塞进成千上万个 「几乎但不完全正交」的方向。代价是它们会互相干扰,这就是叠加。 后果是任何一个神经元都同时响应好几个毫不相关的概念, 这种神经元叫多义神经元(polysemantic neuron)。
互动 · 12 个特征挤进 6 个维度,再用稀疏编码拆开
左起:① 神经元看到的 6 个
稀疏惩罚 λ 的权衡(这个曲线是真的算出来的)
这就是阶段 1 讲过的
这一章全部的内容都藏在这两张图里。左边 6 个数根本看不出是哪两个特征被激活; SAE 用「宽瓶颈(6 → 12)+ L1 稀疏」把它们拆成 12 个清清楚楚的位置, 再用 λ 平衡「拆得准」和「拆得少」。拖那个 λ 滑块,看它什么时候刚好恢复出 2 个。
前面两张图里真的跑了一遍 ISTA(近端梯度法:每步先沿梯度下降一小步,再把接近 0 的系数压成 0)。 它每轮迭代都在优化这一行:â = argmin(重构误差 + λ · 非零系数总量)—— 在「拼得像」和「用得少」之间找平衡。正式的三层公式卡在 数学那一节,那里每个符号都对着图上具体的一块。
盯住这两个量:‖x − D·a‖² 是「拼得像不像」,
‖a‖₁ 是「用了几个特征」。
‖a‖₁ 之所以能逼出稀疏,是因为它的等高线是菱形:
菱形有尖角,而尖角正好落在坐标轴上,所以最优解天然会把某些位置压成整零。
换成 ‖a‖₂(圆形等高线)就没这个效果。
这就是阶段 4 那章
这一节不是展望,是已经做出来的具体发现。 四条里,① 归纳头和 ② 事实回忆电路过了因果验证;③「知道和说出」只到「信息在那里」, ④ SAE 特征是不是模型真在用,是第 7 节要说的最大问号。
这是机械
| 层 | 它干什么 | 类比 |
|---|---|---|
| 第一个头 (前一层) |
对每个位置,找出「上一个和它相同的 token 在哪」 | 「上一集的这个演员」 |
| 第二个头 (归纳头) |
把那个位置后面一个词的内容搬过来 | 「那他下一句说了什么,接着说」 |
上下文学习(in-context learning)是 GPT-3 之后最神秘的能力—— 你给几个例子,模型就会做新任务,不用训练。 归纳头给了一个具体的机制解释:模型在做的,就是「照着前面的例子抄」。 训练中归纳头一成型,上下文学习的准确率就跳上去; 这条结论过了因果验证:把这个头消融掉,能力也跟着掉。
互动 · 一个真的「归纳头」:两层头合起来就是一次抄写
下面是真的两个注意力头:token 向量是真的随机向量,注意力权重是真的点积再 softmax 算出来的。 输入的 token 序列是 A B C D A B C,最后一个 C 就是提问位置。
「巴黎是法国的首都」这种事实,到底存在模型的哪里?答案是分工明确的三个环节:
| 环节 | 谁负责 | 做什么 |
|---|---|---|
| 定位 | 注意力头 | 把主语「巴黎」这个词的信息搬运到最后一个位置 |
| 提取 | 前馈层 MLP | 它其实是一张键值表—— 用「巴黎」当键,取出「法国」这个值 |
| 输出 | 最后的投影层 | 把提取到的内容变成词表上的概率 |
在 Transformer 那一章我们说过「注意力不存储知识,真正存知识的是前馈层,
它占了 2/3 的参数」。机械
这就是「找对了地方」的感觉。
互动 · 前馈层真的就是一张键值表
一个很反直觉的发现:模型经常知道正确答案,但输出了一个错误的答案。
证据是:在某些错误回答的样本上,如果你把某一层中编码了正确答案的激活「修补」回去,
模型立刻就会改口说对。
这意味着「幻觉」不完全是「不知道」——有时候是「知道但没说」。
这个区分对安全研究极其重要:前者需要补知识,后者需要改行为。
互动 · 把正确答案的激活「修补」回去
在大模型上训练 SAE 之后,研究者找到了大量单义、可命名的特征。几个真实的例子:
| 特征 | 它的行为 |
|---|---|
| 金门大桥 | 对「金门大桥」这个具体地点响应,跨语言、跨模态—— 中文、英文、图片都能触发同一个特征 |
| 代码里的错误 | 对不安全的代码、有 bug 的代码响应 |
| 谄媚 | 对「附和用户、而不是说出真相」的文本响应 |
| 讽刺 | 对反讽、阴阳怪气的表达响应 |
| 各种抽象概念 | 数学推理、语法错误、代码 bug、未公开的手写签名…… |
这些特征不是按「词」组织的,是按「意思」组织的: 一个「金门大桥」特征,中文、英文、文字、图片都会让它亮起来。 金门大桥这条还做过干预验证——把它调到最大,模型的话题就会全变成金门大桥。 不过这不等于「所有 SAE 特征都在被模型使用」:单个特征是不是真的在用,要一条条过因果验证 (第 7 节第三条)。
互动 · 机械
| 方法 | 核心手段 | 它回答的问题 |
|---|---|---|
| Probing 2016 | 线性分类器读激活 | 某个概念在不在激活里 |
| Logit Lens 2020 | 中间层激活直接投影到词表 | 模型中途倾向于输出什么 |
| Causal Tracing 2022 | 破坏 + 恢复激活,找出关键位置 | 事实存在哪、怎么被取出来 |
| Activation Patching 2022 | 换激活看输出变化 | 因果关系,而不是相关 |
| Induction Head 2022 | 找出实现「复制模式」的两层电路 | 上下文学习的机制基础 |
| Toy Models of Superposition 2022 | 用玩具模型研究特征怎么挤进更少的维度 | 为什么神经元是多义的 |
| 稀疏 |
把叠加的激活分解成单义特征 | 大规模提取可解释特征 |
| Attribution Graphs 2025 | 自动追踪一条完整的计算路径 | 把「电路分析」自动化 |
Causal Tracing 和 Activation Patching 是同一家族:前者问「关键位置在哪」, 后者问「改这里真的会改变输出吗」——一个找位置,一个验因果。
下面那个 λ 可以想成一颗约束球:λ 越大球越小,解越容易被挤到坐标轴上—— 这就是公式里 argmin 在几何上的样子。
动画 · 为什么 L1 会把答案按在坐标轴上
公式卡 · 每个符号管图上的哪一块
三个真实数字:GPT-2 small 约 85M 参数(12 层 × 768 维); SAE 字典通常是激活维度的 16~64 倍(768 → 12288 个特征槽起步), 自己的参数量往往和被解释的模型同一量级;训练最贵的一步是把几十亿 token 的激活从显存读出, 和《硬件与算力账本》里 KV Cache 是同一个瓶颈。
| 问题 | 说明 | 什么时候真的会痛 → 换什么 |
|---|---|---|
| ① 规模上根本做不完 | 70B 模型有 5120 个注意力头(80 层 × 64 头),逐个分析算不过来,只能抽样。 | 要保证「没有藏着的电路」时:抽样给不出这个保证 → 靠自动化归因图,现在仍不完整 |
| ② SAE 的训练成本极高 | 要为每一层单独训一个 SAE(各层激活分布不同,一个字典套不上所有层)。 | 算力/带宽有限时:只能挑几层做 → 想看全模型,先付一份和 |
| ③ 找到的「特征」未必是真的 | SAE 找到的只是一个数学上方便分解,未必是模型内部真正使用的单元。 就像你可以把一段音乐分解成傅里叶分量,但这不代表作曲家在按正弦波作曲。 | 拿 SAE 特征当解释、当安全依据之前:先做激活修补 → 改不动输出,它就只是方便分解 |
| ④ 可解释 ≠ 可控 | 就算你看懂了某个机制,也未必能安全地改掉它—— 在叠加的表示里,特征之间本来就是纠缠的 | 想直接删掉危险特征时:干预会牵动别的行为 → 逐条测副作用,不能一次删一串 |
| ⑤ 目前还不能作为安全保证 | 看到一部分机制,不等于掌握了全部。 一个模型可能在你看不到的地方藏着危险的电路。 | 要拿它给「模型安全」签字时:不能用「我没找到」推出「它没有」 → 现在只能当线索 |
互动 · 解释一个模型,要再花掉多少模型的钱
这是整个领域最大的方法论危险。SAE 的损失函数是「重构得好 + 稀疏」,
它优化的是这两个目标——不是「找到模型真正在用的特征」。
所以完全可能出现这种情况:SAE 找到了一个重构得很好、名字也起得很漂亮的特征,
但你做激活修补时发现改它对模型输出毫无影响。
这又回到了这一章开头那条分界线:相关性 ≠ 因果性。
任何 SAE 发现,最后都要过因果验证这一关。
同样的道理,第 5 节 ③「知道和说出是分开的」给的是相关性证据:从激活里读出了正确答案,
说明信息在那里,还不能推出模型会用——它也没过因果这一关。
回到第 4 节第二张图「稀疏惩罚 λ 的权衡」。 把中间那个 λ 滑块从最左拖到最右,慢慢拖。
你会看到那条曲线先下降、再上升,中间有个最低点。
而上方那个「恢复出的特征数」读数,会从 > 2 一路收敛到 = 2,
再掉到 < 2。
那个「刚好等于 2」的位置,就是「用 6 个维度装下 12 个特征」这件事成立的地方。 往左一点,压缩就漏了(噪声也被当成特征);往右一点,压缩就损了(真特征被压成 0)。
| 暗线 | 这一章的回答 |
|---|---|
| B 什么被牺牲了 | 可读性换容量。叠加在数学上比「一个神经元一个概念」更能表示稀疏特征(Toy Models 的核心结论), 所以「模型不可解释」不是工程没做好,是它在效率上做的一个理性选择。 |
| E 它假设了什么 | 假设这一章的一切推理都建立在一个没被证明的前提上:
「特征在激活空间里是线性方向」(线性表示假设)。 SAE 做的分解 x ≈ D·a 是一个纯线性操作,
它假定每个概念对应一个固定方向、可以线性叠加。如果模型其实用的是非线性编码,那 SAE 找出来的「特征」就是它自己的幻觉。 (另外还隐含假设「特征稀疏」——这两个假设合起来才让分解成立。) |
| F 违背了哪个直觉 | 「维度数 = 能装下的概念数」。 这是最符合常识的一条:6 个数字只能表达 6 个自由度,怎么可能装 12 个特征? 答案是可以,只要你允许它们互相干扰一点。 因为真实世界里 12 个特征几乎不会同时亮(稀疏), 所以「偶尔串台」的代价远小于「多装一倍的货」的收益。 这是全书最违反常识的结论之一——它推翻的是你从第 1 章就带着的那个默认假设。 |
它给下一章留了什么:还没看清它在算什么,下一章《递归自我改进》就要把决定权交给模型。
看注意力图不算解释,权重只是中间产物。 探针能读出信息、SAE 能拆开叠加,但只有激活修补给出因果。 在你能看懂一个系统之前,别把关键的事交给它。
上面讲的都是「够用」的版本。想往下挖,这里有三个入口—— 它们不是必修内容,是给想再往前走一步的读者准备的。