跳到正文

08 模型内部:表示、特征与可解释性

原始课件:model_inside (v12).pptx(90 页)

1. 为什么研究模型内部

只观察输入和输出,无法回答模型为何得到某个答案、知识存在哪里,以及安全行为是否真实存在。可解释性研究试图把黑盒模型拆成可观察、可干预的内部变量和计算路径。

课件采用三种互补视角:

  1. 表示视角:某个神经元、方向或特征表示什么。
  2. 因果视角:改变内部变量是否会改变输出。
  3. 电路视角:多个层、注意力头和前馈网络如何协作完成计算。

相关结论通常只能在特定模型、任务和干预范围内成立,不能直接把相关性当成完整解释。

2. 单个神经元与分布式表示

早期研究常寻找“某个神经元对应某个概念”,例如与人物、语法或情绪相关的激活。常用方法包括:

  • 收集激活最高的输入并观察共同语义。
  • 用线性探针预测标签。
  • 将神经元置零或放大,测试输出变化。

课件用“Trump neuron”和“祖母神经元”说明局部语义相关性,但也强调大型模型更常见的是分布式表示:一个概念由多个单元共同表示,一个单元也可能同时参与多个概念。

这就是多义性(polysemanticity),也是直接给单个神经元贴标签容易误导的原因。

3. 中间层方向与激活操控

3.1 差分方向

若收集模型在两类输入上的中间激活,计算均值差,就能得到一个可能代表某种行为的方向。例如:

  • 拒答方向:安全请求与危险请求的激活差异。
  • 谄媚方向:同意用户与坚持事实的激活差异。
  • 真实性方向:真实陈述与错误陈述的激活差异。

在推理时将该方向加到激活上,或从激活中减去它,可以观察行为是否改变。这类方法称为 activation steering。

相关研究:

3.2 局限

  • 方向可能依赖提示模板和数据选择。
  • 改变一个方向可能同时影响多个行为。
  • 可控输出不等于找到模型真实的因果机制。
  • 方向在不同层、不同模型和不同语言之间可能不稳定。

4. 稀疏自编码器(SAE)

大型模型的残差流包含大量叠加特征,单个神经元难以解释。稀疏自编码器尝试把高维激活 xx 分解为少量可激活特征:

xWdecf ⁣(Wencx+b).x \approx W_{\mathrm{dec}} f\!\left(W_{\mathrm{enc}}x+b\right).

其中 ff 通过稀疏约束让每个输入只激活少数特征。

训练后可以检查每个特征最高激活的文本,观察它是否对应代码、人物、语法、情绪或安全模式。Anthropic 对 Claude 的研究和 Gemma Scope 都展示了 SAE 在不同规模模型上的可解释特征分析。

SAE 的核心价值是把“混在一起的表示”转换为更容易命名和干预的特征;但特征质量依赖 SAE 结构、稀疏程度、层位置和解释者判断。

5. 从相关到因果:消融与补丁

5.1 消融

将某个神经元、注意力头、特征或层置零,再比较输出变化。若移除后特定行为下降,可以得到必要性证据;但单个组件可能被其他组件冗余替代。

5.2 激活补丁

在两个输入之间交换某层或某位置的激活:

  1. 运行“正确答案”输入,记录中间激活。
  2. 运行“错误答案”或对照输入。
  3. 把选定位置的激活替换成第一条运行的值。
  4. 观察输出是否恢复。

activation patching 可以定位信息在哪一层、哪个位置被计算,但成本较高,且需要精心设计对照输入。

6. 电路与机制

电路研究试图回答“哪些组件以什么顺序合作”。

课件还介绍 IOI(Indirect Object Identification)等受控任务,因为简单任务更适合验证机制假设。复杂开放任务通常存在多条等价路径,完整电路恢复仍然困难。

7. 读取模型的内部语言

7.1 Logit lens

Transformer 每层都有残差流。把中间层残差直接通过最终归一化和输出矩阵映射到词表,可以观察该层“倾向预测什么”。这就是 logit lens。

Interpreting GPT: The Logit LensTuned Lens 展示了从中间表示读取预测的方式。它可以帮助定位知识和答案逐层形成的位置,但中间表示不一定已经满足最终层的坐标变换,直接解码可能产生误导。

7.2 FFN 的键值记忆

前馈网络可以近似理解为“键—值”存储:输入模式激活某些键,输出对应的值。相关研究包括 Transformer Feed-Forward Layers Are Key-Value MemoriesKnowledge Neurons

这种解释有助于定位事实关联,但真实模型还会通过注意力、残差和多层组合共同完成知识检索。

8. Patchscope 与跨提示解码

Patchscope 把一个提示中的隐藏表示,放到另一个更容易解释的模板或上下文中,再观察语言模型的输出。这样可以让模型用自然语言“翻译”自己的内部状态。

方法流程:

  1. 在源输入中提取目标层、位置的表示。
  2. 将表示注入目标提示的对应位置。
  3. 用目标提示诱导模型描述、分类或展开该表示。
  4. 与直接探针和因果干预结果交叉验证。

它能读取比单一词表投影更丰富的概念,但结果仍是模型生成的解释,需要外部实验验证。

9. 建议的可解释性实验规范

  • 同时报告相关性结果和干预结果。
  • 使用多个提示模板、随机种子和任务实例。
  • 先在受控任务上验证,再外推到真实对话。
  • 对 SAE 特征做重复性、稀疏性和重构误差分析。
  • 记录干预的副作用,不只展示目标行为变化。
  • 将内部解释与模型编辑、对齐回归和安全测试结合。

10. 重要方法与研究索引

方法 核心问题 对应研究
激活相关分析 找到与概念或行为相关的单元 神经元可视化、探针研究
消融实验 判断组件是否对行为必要 神经元、注意力头和层消融
激活操控 用表示方向改变行为 Representation Engineering
稀疏自编码器 将叠加表示分解为稀疏特征 Gemma Scope
激活补丁 定位因果信息流 Attribution Patching
电路发现 组合多个组件解释机制 Automated Circuit Discovery
Logit lens 读取中间层预测倾向 Logit Lens
Patchscope 用另一个提示解码内部表示 Patchscope

11. 本章结论

  1. 可解释性需要表示、因果和电路三个层次共同验证。
  2. 大模型表示通常是分布式和多义的,不能迷信单个神经元标签。
  3. SAE、激活补丁和电路发现提高了可解释性,但都不能替代行为层面的验证。
  4. 内部方向可以暂时控制拒答、真实性和谄媚等行为,但控制成功不等于机制已被完全理解。

你可能还想看