残差恢复测量的关键细节:Last Token 位置而非注入位置
看到了什么现象?
阅读 Hahami (2025) 的开源代码(mechinterp.py 的 experiment_4_residual_tracking 函数),发现残差恢复测量有一个之前忽略的关键细节:所有测量都发生在 last token 位置,而非注入位置。
具体来说,代码中(约第 248 行):
1 | storage[layer_idx] = hidden_states[:, -1, :].detach().clone() |
注入发生在句子 token(比如位置 50-60),但 cosine similarity 和 projection 测量的是 last token(位置 ~200)的残差流变化。
为什么这重要?
这完全改变了对"残差恢复"的理解。之前的分析(方向收敛假说)假设测量的是注入位置的残差,推导了 LayerNorm 0-齐次性如何导致方向收敛。但如果测量的是 last token 的残差,那机制就不同了。
这篇文章解决什么问题?
修正对残差恢复实验的理解,区分两种不同的衰减机制。
实际的信号传播路径
Hahami 实验中的信号路径
1 | 句子 token (位置 50-60) ← 注入发生在这里 |
三个阶段
- 注入阶段 (Layer l_inject):扰动 δ 被添加到句子 token 的残差中
- 路由阶段 (Layer l_inject+1 onwards):attention heads 将扰动信号从句子 token 路由到 last token
- 衰减阶段 (后续层):last token 的残差中,扰动信号逐渐消散
之前的错误理解
之前分析的是"注入位置的残差如何方向收敛"——这当然也在发生,但 Hahami 的 Figure 5 测量的不是这个。Figure 5 测量的是扰动信号经过 attention routing 到达 last token 后的衰减。
对方向收敛假说的影响
Last token 的残差恢复涉及两个机制
-
注入位置的恢复:句子 token 的残差
h_inject在后续层趋向于h_baseline(方向收敛、LayerNorm 归一化) -
路由信号的稀释:即使注入位置的扰动还存在,last token 通过 attention 接收的信号在后续层中被其他 token 的信息"稀释"
哪个是主导机制?
Hahami 论文的 attention 实验(Experiment 2,Figure 3)给出了线索:
- Layer 3(注入后 1 层):100% 注意力定位准确率——说明扰动信号此时对 attention 模式有强烈影响
- Layer 4-8:67%-97% 准确率——信号逐渐减弱但仍然可检测
- Layer 20-31:37% 准确率——信号大幅衰减但仍高于 20% 基线
这暗示注入位置的恢复是主导因素——如果扰动在注入位置已经消失,attention heads 就无法检测到它。
Norm Ratio 数据的确认
代码中的计算(第 268-270 行)
1 | norm_i = r_i.norm().item() |
代码中的绘图(三面板图)
代码 create_comprehensive_plots 创建了三面板图:
- Panel A: Cosine similarity
- Panel B: Norm ratio (标注为 “Activation Norm Change”)
- Panel C: Projection
图片尺寸 5355×1455(宽高比 ~3.68:1),除以三面板 = 每面板 1785×1455,合理。
论文 caption 的不完整描述
论文 Figure 5 caption 只提到"(Left) Cosine similarity… (Right) Projection…",但图实际包含三面板。Norm ratio 面板可能是中间面板但 caption 跳过了描述。
从图中观察到的 Norm Ratio 数据
直接查看仓库中生成的三面板图(figures/mechinterp_exp4_residual.png),Panel B “Activation Norm Change” 显示:

- Layer 0-1:Norm ratio ≈ 1.0(注入前)
- Layer 2-4:Norm ratio 骤降至 ~0.92(注入后立即)
- Layer 5-15:Norm ratio 在 0.975-1.025 范围内震荡,有恢复趋势但不稳定
- Layer 15-30:Norm ratio 基本稳定在 ~1.0 附近,但仍有微小偏差
关键结论:Norm ratio ≠ 1——注入后 last token 的范数确实发生了变化(先下降再恢复),支持方向收敛假说的预测 1。但恢复速度比 cosine similarity 更快,说明范数变化可能不是主要信号载体。
三个度量的对比(来自同一图)
| 度量 | 注入后变化 | 恢复速度 | 最终值 |
|---|---|---|---|
| Cosine similarity | 从 1.0 降至 ~0.7 | 缓慢(~20层恢复) | ~0.99 |
| Norm ratio | 从 1.0 降至 ~0.92 | 较快(~10层恢复) | ~1.0 |
| Projection | 从 0 升至 ~0.6 | 快速(~10层衰减) | ~0.0 |
解读:
- Cosine similarity 的恢复最慢——说明方向偏差是最持久的信号
- Norm ratio 恢复较快——说明范数变化是暂态的
- Projection 衰减最快——说明在注入方向上的信号快速消散
这个模式与 LayerNorm 的 0-齐次性一致:
- 0-齐次性直接消除径向(范数)变化 → Norm ratio 快速恢复
- 但切向(方向)变化不被 0-齐次性消除 → Cosine similarity 恢复慢
- 注入方向上的特定投影比整体方向偏差消散更快 → Projection 最快衰减
理论修正
修正前的框架
残差恢复 = LayerNorm 的方向收敛 + 切向扰动分散(注入位置的局部效应)
修正后的框架
残差恢复(Hahami Figure 5 测量的)= attention routing 后,last token 残差的去扰动化
这涉及:
- 注入位置的局部恢复(LayerNorm 方向收敛 — 之前的分析仍然成立)
- attention routing 中的信号稀释(多个 token 竞争 attention)
- last token 残差的 LayerNorm 归一化
对内省窗口的启示
内省窗口不仅由"注入位置的残差恢复速率"决定,还受"attention routing 效率"影响:
- 早期注入(L0-L5):扰动有足够多的层来通过 attention 路由到 last token,并在 mid-layer 整合
- 晚期注入(L15+):即使扰动在注入位置还在,也没有足够的层来完成 routing + integration
验证方向
- 分离两个机制:分别测量注入位置和 last token 的残差恢复,看哪个衰减更快
- 检查 Norm ratio 数据:下载
exp4_residual_tracking.pt,检查 norm_ratio_mean 是否 ≠ 1 - 关注 attention routing 效率:如果在 last token 的 cosine similarity 恢复比注入位置更快,说明 routing 稀释是主要因素
批判性反思
为什么之前忽略了测量位置?
因为论文文本说"cosine similarity between perturbed and baseline residual streams"——没有明确说在哪个位置。直到读了代码才发现是 last token。这是一个方法论细节,但对理论解释至关重要。
这篇发现改变了什么?
- 之前的 LayerNorm 方向收敛分析仍然对注入位置成立
- 但 Hahami Figure 5 显示的恢复动态是复合效应:局部恢复 + routing 稀释
- 方向收敛假说需要更谨慎的表述
局限
- Norm ratio 数据是从图中目视读取的,精确值需要从
exp4_residual_tracking.pt文件中提取 - 对"routing 稀释"机制的理解还是推测性的
- 三个度量的恢复速度差异还需要更严谨的量化分析
关键引用
- Hahami (2025) 开源代码 —
code/experiments/mechinterp.py - Detecting the Disturbance — Hahami et al. 2025
- 方向收敛假说 — 之前的分析,仍对注入位置成立
最后更新: 2026-03-16 21:35
核心发现: Hahami Figure 5 测量的是 last token 的残差恢复,不是注入位置。这意味着残差恢复是复合效应:注入位置的局部恢复 + attention routing 信号稀释。代码确认了 Norm ratio 被计算并存储在三面板图中。