返回 M01~M90 教材库
M58 · 预习教材教材已备 ≠ 学习已完成

M58:最小 Activation 干预:从观察到 Replacement / Ablation

Activation 干预是在模型前向计算中捕获某个内部张量,再将其置零、替换或修补,比较干预前后的输出以测试一个局部因果假设。

2026-10-20activation、attention、ablation、activation-patching、causal-intervention

内容类型:预习教材(不代表已完成)
日期:2026-10-20
阶段:P1 · AI Model Engineering 90
周次:W9 · 机制可解释性、推理与 verifier
节奏:周二最小实现
状态:教材已备;学习未完成
标签:activation、attention、ablation、activation-patching、causal-intervention

一句话定义

Activation 干预是在模型前向计算中捕获某个内部张量,再将其置零、替换或修补,比较干预前后的输出以测试一个局部因果假设。

学习目标

  1. 能区分 hook 观察、ablation、replacement 与 activation patching。
  2. 能设计原始、干预、随机/位置对照三组最小实验。
  3. 理解输出变化必须同时检查目标特异性和一般性能破坏。

核心知识

观察 hook只读取 attention、residual stream 或 MLP activation,不改变 forward,因此提供相关证据。

Ablation将组件输出置零、均值替换或删除,询问“没有这部分会怎样”。置零可能产生训练分布外状态;均值替换通常更温和,但仍不是天然干预。

Replacement用另一输入或基线样例的 activation 替换当前 activation。若清洁输入与受损输入只差目标因素,可以测试该内部状态是否携带恢复行为的信息。

Activation patching常在 clean/corrupted 对中使用:先记录 clean activation,再把它补到 corrupted run 的特定层/位置,观察目标 logit 是否恢复。它比可视化更接近因果,但结果依赖 corruption 设计与评价指标。

注意力权重、head 输出、MLP 输出和 residual stream 是不同干预对象。仅把 attention map 设零不一定等于删除 head,因为 value 与输出投影也参与计算。

机制/推导

设模型输出指标为 s(f(x)),内部组件为 h_l(x)。干预模型可写:

f_do(x; h_l←h*)

因果效应的教学估计为 Δ=s(f_do)-s(f_original)。要判断特异性,还应比较非目标指标、随机层/位置干预和多个样例。若所有干预都让输出崩坏,说明组件可能只承担一般计算,不能证明它编码目标概念。

“恢复比例”也需要基线:clean score、corrupted score、patched score。只有 patched 朝 clean 方向变化,且随机 patch 不同,才形成较有意义的局部证据。

最小练习或观察步骤

  1. 选择 tiny model、一个 clean 输入和仅改动一个 token 的 corrupted 输入。
  2. 定义目标指标,如正确 token 与错误 token 的 logit difference,而不只看最终字符串。
  3. 用 hook 捕获一个明确层/位置的 activation,记录 shape 和语义位置。
  4. 做一次 ablation 或把 clean activation patch 到 corrupted run。
  5. 加入至少一个对照:随机层、相邻位置、随机向量或等范数替换。
  6. 同时检查目标 logit 与一般输出损失/流畅性代理。
  7. 将结果写成“此干预在这些样例上支持/不支持某局部作用”;未运行则只保留设计。

常见误区

  • 捕获到了 activation 就认为知道其语义。
  • 置零造成模型普遍损坏,却解释成目标机制被删除。
  • 只测一个 prompt 和一个层,挑最显著结果。
  • patch 后最终 token 相同就忽略 logits 与其他行为变化。
  • 把局部因果效应描述为完整算法或人类式推理过程。

金融 / Web3 / 文档场景连接

可用合成文档测试模型是否依赖金额位置、证据编号或地址前缀,但干预对象是模型内部状态,不代表现实字段本身合法或应被用于决策。若发现模型依赖敏感字段,仍需用数据、策略与外部审计处理。

自检问题

  1. hook 观察与 activation patching 的证据强度有何不同?
  2. 为什么置零可能制造分布外状态?
  3. 一个有效干预至少需要什么对照?
  4. 目标 logit 恢复为何仍不是完整机制证明?

专业课程对齐

  • 必读 ARENA 的 mechanistic interpretability、activation patching 与 ablation 练习,关注 clean/corrupted run、hook point、logit-difference metric 和对照。
  • 精读 PyTorch Tutorials 中 module forward hooks、tensor operations 与 inference mode 主题,确认捕获、clone、替换 activation 时的 device/dtype/shape。
  • 选读 Stanford CS224N 的 probing/interpretability 课题,作为相关方法与干预方法的对照。

深入学习提示

顺序为 ARENA 实验设计→PyTorch hook 实现→CS224N 方法边界。先定义 clean/corrupted 只改一个因素,以 correct-vs-wrong logit difference 为指标,再做 clean activation 补入 corrupted run;同时做随机层、相邻位置或等范数替换对照。代码要记录 hook 的精确 module 路径、tensor shape 和 patch slice,并检查非目标 logits 是否全面崩坏。行为输出变了不等于机制已被证明;反例是置零造成分布外损坏,却被解释为定位到了目标概念。

学后填写区

  • Clean / corrupted 输入:
  • 干预层、位置与张量:
  • 目标指标与对照:
  • 实际观察(未运行可留空):
  • 当前结论强度:
学完后,请把自己的理解、练习结果和仍不确定的问题写入文末“学后填写区”,再到唯一进度账本更新状态。预先阅读后续教材不会自动增加完成数。