M58:最小 Activation 干预:从观察到 Replacement / Ablation
Activation 干预是在模型前向计算中捕获某个内部张量,再将其置零、替换或修补,比较干预前后的输出以测试一个局部因果假设。
内容类型:预习教材(不代表已完成)
日期:2026-10-20
阶段:P1 · AI Model Engineering 90
周次:W9 · 机制可解释性、推理与 verifier
节奏:周二最小实现
状态:教材已备;学习未完成
标签:activation、attention、ablation、activation-patching、causal-intervention
一句话定义
Activation 干预是在模型前向计算中捕获某个内部张量,再将其置零、替换或修补,比较干预前后的输出以测试一个局部因果假设。
学习目标
- 能区分 hook 观察、ablation、replacement 与 activation patching。
- 能设计原始、干预、随机/位置对照三组最小实验。
- 理解输出变化必须同时检查目标特异性和一般性能破坏。
核心知识
观察 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 不同,才形成较有意义的局部证据。
最小练习或观察步骤
- 选择 tiny model、一个 clean 输入和仅改动一个 token 的 corrupted 输入。
- 定义目标指标,如正确 token 与错误 token 的 logit difference,而不只看最终字符串。
- 用 hook 捕获一个明确层/位置的 activation,记录 shape 和语义位置。
- 做一次 ablation 或把 clean activation patch 到 corrupted run。
- 加入至少一个对照:随机层、相邻位置、随机向量或等范数替换。
- 同时检查目标 logit 与一般输出损失/流畅性代理。
- 将结果写成“此干预在这些样例上支持/不支持某局部作用”;未运行则只保留设计。
常见误区
- 捕获到了 activation 就认为知道其语义。
- 置零造成模型普遍损坏,却解释成目标机制被删除。
- 只测一个 prompt 和一个层,挑最显著结果。
- patch 后最终 token 相同就忽略 logits 与其他行为变化。
- 把局部因果效应描述为完整算法或人类式推理过程。
金融 / Web3 / 文档场景连接
可用合成文档测试模型是否依赖金额位置、证据编号或地址前缀,但干预对象是模型内部状态,不代表现实字段本身合法或应被用于决策。若发现模型依赖敏感字段,仍需用数据、策略与外部审计处理。
自检问题
- hook 观察与 activation patching 的证据强度有何不同?
- 为什么置零可能制造分布外状态?
- 一个有效干预至少需要什么对照?
- 目标 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 输入:
- 干预层、位置与张量:
- 目标指标与对照:
- 实际观察(未运行可留空):
- 当前结论强度: