OpenAI 迈出关键一步:LLM 黑盒不再是盲盒
最近OpenAI又OpenAI(开源)了新的研究成果。【AI大模型教程】
尽管大模型能力飞速提升,但我们对它们的内部机制知之甚少。比如:
- GPT-4 为什么会写代码?
- 它怎么判断该用单引号还是双引号?
- 它怎么知道列表嵌套了几层?
这些问题,我们无法直接回答。因为大模型的神经元激活模式复杂,不直接对应人类概念。这种现象被称为叠加(superposition)——多个概念压缩在同一个神经元里,导致可解释性极其困难。
用“稀疏”逼出“可解释”
OpenAI 团队提出了一种全新范式:
训练权重稀疏的 Transformer 模型,让模型自己学会“模块化”表达概念,从而提取出人类可理解的电路。
他们不是去“破解”现有模型,而是从头训练一个更容易解释的模型,然后用它作为“显微镜”,去理解更复杂的模型。
方法概览:三步走
整体设置的示意图。先训练权重稀疏模型。然后,对于精选的一套简单行为中的每一项,将模型剪枝至执行任务所需的节点子集。通过将节点剪枝至其在预训练分布上的平均激活值来消融节点。
| 步骤 | 内容 | 目的 |
|---|---|---|
| ① 训练稀疏模型 | 权重稀疏(L0 正则)+ 激活稀疏(AbsTopK) | 强制模型只用少数神经元完成任务 |
| ② 剪枝电路 | 针对每个任务,剪枝出最小子图 | 提取“任务专用电路” |
| ③ 验证电路 | 用“mean ablation”验证电路是否必要且充分 | 确保电路是“忠实”的 |
关键结果 1:稀疏模型电路比稠密模型小 16 倍
在相同预训练损失下,稀疏模型的任务电路比稠密模型小 16 倍,且更容易定位。
关键结果 2:电路真的“看得懂”
他们手动解读了多个任务的电路,发现:
✅ 示例 1:字符串闭合任务(single vs double quote)
- 0.mlp 层:两个神经元分别检测“是否有引号”和“是单引号还是双引号”
- 10.attn 层:用这两个信息作为 key/value,完成字符串闭合
整个电路只用 12 个节点、9 条边,人类可读、可验证。
✅ 示例 2:列表嵌套深度计数(bracket counting)
- 2.attn 层:检测“[” token,计算上下文平均值 → 得到嵌套深度
- 4.attn 层:用阈值判断是否需要输出“]]”
他们甚至能用这个理解构造对抗样本:在长列表前加干扰注释,误导模型误判嵌套深度!
✅ 示例 3:变量类型追踪(set vs string)
- 两步注意力机制:
- 把变量名复制到
set()或""token - 再用这个 token 的值作为 key,回传给最终 token
这种“两步查表”机制,人类程序员也会这么写。
关键结果 3:稀疏模型能“桥接”稠密模型
他们提出 bridge 方法:
训练一个稀疏模型 + 桥接器(encoder/decoder),让它模仿稠密模型的行为。
然后,在稀疏模型上做“可解释干预”(比如改变引号类型),再通过桥接器映射回稠密模型,发现:
稠密模型的行为也被成功改变了!
这意味着:稀疏模型不仅是“玩具”,还能用来理解真实模型。
关键结果 4:模型越大,越可解释
在固定稀疏度(L0)下,模型越大,电路越小、能力越强。
这表明:** scaling 不仅提升能力,也提升可解释性**。
局限性:还不能解释 GPT-4
| 问题 | 说明 |
|---|---|
| 训练成本高 | 稀疏模型训练比稠密模型慢 100~1000 倍 |
| 规模有限 | 目前只到数千万参数,远小于 GPT-4 |
| 电路复杂 | 复杂任务的电路仍有上千条边,人工解读困难 |
| 非单语义 | 某些神经元仍“多任务共用”,未完全摆脱叠加 |
未来方向
OpenAI 提出两条路线:
✅ 路线 1:打造“模型生物”
训练一系列可解释的稀疏模型,从 GPT-1 规模到 GPT-3 规模,研究它们的电路 motifs(重复结构),为理解大模型提供“解剖图谱”。
✅ 路线 2:聚焦关键行为
不解释整个模型,只解释关键行为(如欺骗、拒绝、目标追求),训练稀疏桥接模型,用于安全审计。
OpenAIhttps://github.com/openai/circuit_sparsity/Weight-sparse transformers have interpretable circuitshttps://cdn.openai.com/pdf/41df8f28-d4ef-43e9-aed2-823f9393e470/circuit-sparsity-paper.pdf