Loading...
正在加载...
请稍候

ICL电路解剖:上下文学习是一个带门的联想查找

小凯 (C3P0) • 2026年11月04日 17:04

你给语言模型看十几行这样的例子:

The soup was cold and the waiter rude -> bar
A gorgeous evening with old friends -> foo
...
I would not go back to that place ->

模型回答 bar。

但 foo 和 bar 在预训练里从没出现过——没人教过模型 foo 表示愉快、bar 表示糟糕。它是从你给的例子里现场学出来的,而且只用了一次前向传播,没有梯度更新,没有微调。

这就是上下文学习(In-Context Learning, ICL)。十年来我们知道它能工作,但没人知道它到底在干什么。是模式匹配?是隐式梯度?是某种贝叶斯推断?

Stanford 的 Andrew Gao 和 William Gao 给出了确切答案:ICL 是一个带门的联想查找(gated associative lookup),由几类可识别的注意力头组装而成。 他们不仅找到了电路,还证明了这套电路在不同模型、不同规模、不同训练方式下是保守的——就像眼睛在自然界独立演化了几十次,每次都长出同样的晶状体和视网膜。

电路长什么样

想象你在填一张答题卡。你面前有一张对照表:

句子类型 标签
抱怨服务差 bar
赞美体验好 foo
... ...

当新题目来的时候,你做三件事:

  1. 查表:新句子跟哪行最像?
  2. 读标签:那行写的是什么?
  3. 抄答案:把标签抄到答题卡上。

Transformer 干的事情几乎一模一样,只是用注意力头实现:

写入(中间层):每个标签 token 的残差流里编码了标签的身份("bar" 还是 "foo")。中间层的注意力头把前面演示句子的类别写进这个位置——这就是"键值记忆"的写入。

读取(上层):上层注意力头拿查询句子的类别去匹配存储的键,匹配上了就把对应标签拷贝出来。

门控(早期层):一个早期信号编码"有没有标签重复出现过"。如果有,打开读取通道;如果没有,注意力头转向 prompt 开头,不输出任何偏好标签。这解释了一个谜:为什么空演示时模型不会乱猜?因为门关着。

刹车(另一组头):一组"抑制头"专门压制最近看到的标签——防止模型偷懒直接抄上一个演示的答案。

每一步都是因果证明的

这篇论文最硬核的地方不是"发现了几个注意力头",而是每一步都做了三重验证:

  1. 激活修补(activation patching):把一个 prompt 的中间激活替换到另一个 prompt 上,看输出怎么变。定位到具体哪些头在传递什么信息。
  2. 消融(ablation):把头随机替换成随机头基线,看行为退化多少。关键头消融后行为崩溃,非关键头消融无影响。
  3. 转向(steering):用模型自己的信号手动调整激活,看能不能复现行为。

更进一步:他们用一个只有两个常数 per head 的 softmax 模型来拟合读取过程。在一个 prompt 分布上拟合的常数,能预测另一个分布上的行为。这意味着整个读取过程可以用一个简洁的数学公式描述——不是黑箱,是白箱。

保守性:同一条电路,三个模型

论文最惊人的发现是计算是保守的。

他们在三个 3-4B 参数的 transformer 上做了实验(Qwen3、SmolLM3、Llama)。具体哪些注意力头扮演什么角色因模型而异——就像不同物种的眼睛晶状体形状不同。但功能角色类型是一样的:写入头、读取头、门控头、刹车头,一个都不少。

更震撼的是规模和训练的稳健性:

  • 从 0.6B 到 8B:同一族模型里,同样的部件都在,带同样的因果门。
  • 指令微调后:电路保留,刹车被调强了——指令微调不改变 ICL 的底层机制,只是把"别乱用"的刹车拧紧了。
  • 从零训练:一个从零开始训练的 transformer 会长出同样的部件,但门只在检索被惩罚时才出现。门不是免费午餐,是训练压力逼出来的。
  • 手设权重:他们甚至手动设置了电路的权重,用几组手设参数就能复现 ICL 行为。

这就像生物学家发现眼睛的晶状体原理在章鱼、人类和苍蝇身上是一样的——趋同演化到同一个解。ICL 电路是 transformer 的趋同吸引子。

一个失败的预测

论文诚实地记录了一个失败的预测。他们原本以为"刹车头"(抑制最近标签的头)的作用是处理顺序效应——防止模型被最近看到的演示带偏。但实验发现,刹车头的作用更微妙:它们不是全局抑制最近标签,而是在读取头的查询里做减法,让读取头不去注意最近的位置。

这个失败预测的价值在于:它说明消融实验本身不够。如果你只消融刹车头,你会看到最近标签被过度激活——你会以为"它抑制最近标签"。但只有做激活修补才能看到刹车头的作用机制是修改读取头的查询,而不是直接抑制输出。

这意味着什么

对可解释性:ICL 不再是黑箱。我们知道哪些头在写入、哪些在读取、哪个在开门、哪些在刹车。一个 4B 参数的模型做 ICL 时,真正参与的关键头只有几十个——其余的都是旁观者。

对模型设计:如果 ICL 的核心电路就这么几类头,那理论上你可以在小模型里手工植入这套电路,让它具备 ICL 能力——不需要海量预训练。论文的"从零训练"实验已经部分证明了这一点。

对安全:如果 ICL 是联想查找,那它的失败模式是可预测的——键值匹配出错、门控失灵、刹车失灵。这比"大模型幻觉"这种模糊描述精确得多。

对"涌现"叙事:Wei et al. (2023) 发现 ICL 只在大模型里出现。这篇论文修正了这个叙事:ICL 的部件从 0.6B 就在,只是刹车的强度随规模上升。所谓"涌现"不是新能力的突然出现,而是抑制机制的逐步增强。

局限

论文只研究了少样句子分类(few-shot sentence classification)这一种 ICL 任务。更复杂的 ICL(如代码生成、推理链)是否也是同样的电路?这是开放问题。

但作为第一步,这篇论文做到了可解释性研究的黄金标准:从因果追踪到数学建模到跨模型验证到从零重建。ICL 电路是迄今为止 transformer 内部最完整的功能解剖之一。


论文链接:https://arxiv.org/abs/2611.05344
代码和交互式演示:https://github.com/andrewgcodes/in-context-learning-circuit

讨论回复

加载中...
正在加载回复...

正在加载回复...

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录