被你的模型视为“约束性判例”的 Few-Shot 示例
用户提交了一个问题。你的模型生成了一个答案,这个答案以一种非常具体的方式“自信地出错”:格式完美,推理结构严密,并且出现了一个特定的限定词——这个限定词完全不适用于这个问题——它出现的位置,恰好是你系统提示词(system prompt)中示例三出现类似限定词的地方。这既不是幻觉,也不是提示词注入。模型只是精确地执行了示例教它的操作,尽管这些示例原本并非为了涵盖这个问题。
这就是 Few-Shot 提示主动诱发的故障模式,而大多数评估套件(eval suites)在结构上对此是视而不见的。你的示例并不是“优秀范式”的中立演示。它们是判例法(case law)。模型通过表面 token 选择最匹配的项,并将该先例——包括其限制条件——应用到眼前的任何案例中。
更深层的问题在于,促成上下文学习(in-context learning)的同一机制本身——即模型识别并延续提示词中模式的能力——正是将错误的先例绑定到错误查询上的机制。你无法在不关闭上下文学习的情况下关闭对先例的遵循。你只能塑造哪些内容被匹配,以及哪些内容被泛化。
为什么模型会根据表面 token 绑定到示例
机械层面的原理已有充分研究。注意层(attention layers)中的归纳头(induction heads)会扫描上下文,寻找当前 token 之前出现的记录,并复制上次紧随其后的内容。当提示词包含带标签的示例——“输入:X,输出:Y”——且用户查询与 X 共享显著的 token 时,归纳回路会增加生成接近 Y 的内容的概率。这正是使 Few-Shot 提示生效的同一电路;并没有单独的“使用此示例”开关。
最近的机制可解释性(mechanistic interpretability)研究表明,归纳头对于 Few-Shot 上下文学习中的抽象模式识别是必不可少的——消融它们会导致从业者使用 Few-Shot 提示处理的那些结构化任务性能暴跌。它们虽然不是唯一的机制,但是最易于理解的机制,且其故障模式最像“这个查询让模型想起了那个示例,于是现在的答案就被塑造成了那个示例答案的样子”。
从经验上看,对表面形式的绑定在一定程度内会随着示例数量的增加而增强,随后会急剧恶化。一项关于“过度提示”(over-prompting)的 2025 年研究发现,在当前的前沿大语言模型(LLMs)中,加入过多的特定领域示例可能会降低性能——而且最优示例数量因模型而异,且通常出人意料地低。其他研究表明,当示例超过大约四个后,大模型就开始对示例的表面形式产生过拟合,并失去泛化能力。那种“示例越多,泛化越好”的直觉,在示例对提示词作者停止产生用处之前就已经失效了。
同样的文献还发现,提示词的格式选择——空格、定界符、分隔 token、标签的大写形式——在开源模型的分类任务中,能让准确率波动高达 76 个百分点。模型并不是按照你编写示例的方式在阅读它们。它是将示例视为 token 序列,并将用户查询作为 token 序列与这些序列进行匹配。你以为在示例中编码了语义意图,但从模型的角度来看,这只是它所匹配的众多表面特征中的一个特征。
导致回归问题被发布的评估覆盖范围缺口
大多数评估套件的构建方式与大多数文档的构建方式类似:每个示例都说明一个典型案例。评估案例会紧密匹配提示词中的每个示例,再加上一组不匹配任何示例的预留案例。但真正重要的部分——即那些虽然匹配某个示例的表面特征,但共享另一个示例的意图的案例——在套件中并不存在。这是因为构建套件的工程师考虑的是输入的覆盖范围,而不是先例检索的覆盖范围。
其结果是一个奖励模型做错事的测量循环。如果评估集主要由与提示词内示例紧密匹配的案例组成,那么一个激进地对这些示例进行模式匹配的模型将获得高分。如果回归表现为“模型将最接近的示例视为约束性先例”,你的评估将无法察觉,因为每个评估案例都恰好接近一个示例。这种回归在统计上是不可见的,直到用户提交了一个处于两个示例之间缺口地带的查询——而到那时,答案已经发布了。
在评估层面的解决方法是 添加一个对抗切片(adversarial slice),它具有一个显著属性:每个输入必须共享一个示例的显著表面 token,以及另一个不同示例的意图。这个切片上的得分能告诉你模型是在根据实质内容还是表面特征来应用先例。如果你没有这个切片,你就没有针对 Few-Shot 先例过度扩张的评估;你只有针对模型是否能复制已展示示例的评估。
这也是为什么“我们通过了评估并发布”本身并不能证明系统有效。评估只能证明模型在评估所衡量的指标上表现良好。覆盖范围的盲点就是认证的盲点。除非评估包含了表面特征与意图背离的“近似错误”(near-miss)样本对,否则认证只能说明“模型擅长模式匹配示例”——这是一个关于模型行为的陈述,而不是关于该行为是否能在真实流量中产生正确答案的陈述。
为对抗性覆盖而非清晰度筛选示例
- https://arxiv.org/abs/2509.13196
- https://arxiv.org/pdf/2407.07011
- https://arxiv.org/pdf/2310.11324
- https://arxiv.org/pdf/2507.22887
- https://arxiv.org/pdf/2302.11042
- https://arxiv.org/pdf/2501.15030
- https://learnprompting.org/docs/advanced/few_shot/k_nearest_neighbor_knn
