第 20 · 可解释性 · 9 min
模型内部到底在做什么?
电路、多义神经元、Sparse Autoencoders。Anthropic 与 DeepMind 如何打开黑盒。
一个能跑的黑盒
一个 700 亿参数的 LLM,是一个我们能训练、能评估、能部署的对象——但并不真的理解它。我们知道它学到了哪些权重。我们知道这些权重实现了某种东西。我们不知道是什么。
很长一段时间里,这件事似乎并不重要。能跑就行。但随着 LLM 开始做出有现实后果的决定——医疗代码、自主智能体、内容审核——一个问题变得迫切:我们能不能打开这个盒子?
这就是**机制可解释性(mechanistic interpretability)**的目标。它不是从外部描述模型在做什么的学科(那是基准测试),而是试图对藏在神经元里的算法做逆向工程。
本章的小词汇表
正式开始之前,先列出我们会遇到的术语。后面会逐一展开——这张表只是一根扶手,让你不至于走丢。
| 术语 | 一句话 |
|---|---|
| Feature | 模型激活中反复出现的模式,往往可以与某个人类概念对应起来。 |
| Polysemantic(多义) | 一个会在多个不相关概念上激活的神经元。在 LLM 里这是常态。 |
| Monosemantic(单义) | 只对一个可识别概念响应的"feature"。这是我们追求的目标。 |
| Superposition(叠加) | 网络通过把概念叠加起来,编码出比神经元数量更多的概念。 |
| Circuit(电路) | 网络中实现某个特定功能的子图。 |
| SAE(Sparse Autoencoder) | 把激活分解为单义 feature 的技术。 |
| Steering(操控) | 通过放大或抑制某个 feature 来改变模型的行为。 |
问题:多义性神经元
如果你能打开一个 Transformer,盯着某个具体的神经元看,你也许会期望找到"那个识别狗的神经元"或"那个会做加法的神经元"。现实要混乱得多。
LLM 里的一个神经元通常是多义的(polysemantic):它会在好几个不相关的概念上激活。同一个神经元可能对提到狗、对过去时动词、对开放式的法语问题、对 HTML 标签都强烈响应。为什么?因为网络要表示的概念远比它拥有的神经元多——所以它把这些概念**叠加(superpose)**起来。
这种叠加现象(Elhage 等人,2022)是一个关键发现。它解释了为什么放大一个神经元来观察几乎从来不会得到一个可解释的信号。
解法:Sparse Autoencoders
如果概念在神经元里是叠加在一起的,那么观察它们的正确基底就不是神经元空间——而是另一个、更大的空间,其中每一维都对应一个单独的概念。
这就是 Sparse Autoencoders(SAE,稀疏自编码器)的核心想法。我们学习一个从模型内部激活到一个大得多的空间(往往大 10 倍或 100 倍)的投影,加上一个稀疏性约束:每次只允许少数几个维度激活。这就迫使网络把每个激活表示成少数几个**可解释 features(特征)**的组合。
Anthropic 在 2024 年发表了一篇标志性的论文(《Scaling Monosemanticity》),把这种技术应用到了 Claude 3 Sonnet 上。他们抽取出了数百万个 features,其中一些非常震撼:一个对应金门大桥概念的 feature、一个对应代码 bug 的、一个对应阿谀奉承的、一个对应背叛的。这些 features 是单义的(monosemantic)——每一个都对应一个唯一可识别的概念。
自己探索一下
把鼠标悬停在神经元上,可以看到它对什么激活。很多神经元会响应彼此看似无关的多个概念——这就是多义性。Sparse Autoencoders 把这些激活分解成人类可解释的 features,是机制可解释性的基础。
挑一个 feature,看看它在不同段落里会在哪些 Token 上亮起来。你会注意到,某些 feature(比如否定或专有名词)跨越语言和上下文——它们是模型抽象出来的稳健概念。
电路:涌现的算法
在 features 之外,可解释性研究还会研究电路(circuits):网络里实现某个特定功能的子图。有点像在一颗微处理器里识别出执行加法的那一小块子电路。
最著名的例子是 induction head(归纳头),由 Anthropic 在 2022 年发现(Olsson 等人)。它是一种通常出现在 Transformer 中间层的机制,实现了一条简单的规则:如果模型先前在上下文里见过模式 AB,现在又看到了 A,它就会预测 B。
这是上下文学习(in-context learning)的一种原始形式。在这个电路出现之前,模型不会利用上下文里的重复。它出现之后,模型会突然变得强得多——而这个转折恰好与 few-shot 基准上的一次跳跃同时发生。
还有几个电路被识别出来:
- Induction heads —— 复制上下文里的模式
- Bracket completion —— 对嵌套括号做出一致的闭合
- Indirect object identification —— 解析"Marie 把书给了 Paul"→"给她"指的是 Marie
- Feature suppression —— 一个会在某些上下文里关掉某个 feature 的 head
每一个电路都是网络在训练中自己发现的小算法。
为什么这对安全至关重要
可解释性不只是科学好奇心。对许多研究者来说,它是认真对齐强大模型的最有希望的路径。
如今我们靠 RLHF 和微调来对齐:我们改造了可观测的输出,但不知道模型是真的内化了一种价值观,还是只是表面上配合。如果我们能识别出比如负责欺骗行为的 feature 和电路、负责道德推理的 feature 和电路,我们就有了一个稳得多的抓手。
Anthropic 已经展示了,你可以直接**操控(steer)**一个模型:通过人为放大"金门大桥"那个 feature,他们让 Claude 着了金门大桥的迷——它对任何问题都会扯到这座桥上。这是一个好玩的演示,但同样的机制原则上可以让我们外科手术式地移除一种危险行为,而不损坏其他部分。
当前的局限
机制可解释性是一门年轻的学科。困难是真实存在的:
- **规模。**在 Claude 3 上跑的 SAE 抽取出了 3400 万个 features。把它们一个一个标注、命名、理解,是一项巨大的工程。
- **完整性。**我们找到了一些 features。我们也漏掉了一些。还有多少重要的概念逃过了我们的检测?
- **组合性。**单独理解一个 feature 是可行的。理解 50 个 feature 怎么互动产生一种行为,则要难得多。
- **泛化性。**在 GPT-2 上找到的一个 feature 不会机械地迁移到 Claude 或 Llama。每个模型都是它自己的黑盒。
但发表的节奏在加速。Anthropic、DeepMind、EleutherAI、OpenAI、Apollo Research、Goodfire、Transluce——一整批团队正围绕这些问题成形。
如果我们想把越来越重要的决定托付给越来越强大的模型,我们需要的就不止是让它们通过一场考试。我们需要往里面看。
更新于