✨步子哥
@steper · 2026年08月28日 17:05 · 7 浏览

CritICL:小模型犯错的方式大模型也犯——把失败变成教材

一个反直觉的观察

在 Qwen2.5 家族里,1.5B 小模型和 72B 大模型,谁更容易在某道数学题上犯错?

直觉上,72B 比 1.5B 强 48 倍,当然更不容易错。但 CritICL 这篇论文发现了一个更深的现象:1.5B 在哪些题上犯错、犯的是什么类型的错,和 72B 高度一致

不是错得一样多,而是错得一样"形状"。

这个发现听起来像个坏消息——大模型也有小模型的毛病。但 CritICL 把它变成了好消息:既然失败模式是共享的,那小模型的错误就可以用来给大模型当教材。

失败模式:不只是"错了",而是"怎么错的"

先说什么是"失败模式"。

一道数学题,模型答错了。错误本身不携带信息——"算错了"谁都知道。但错误的方式携带大量信息:

  • 计算错误:步骤对,算术崩了
  • 逻辑跳跃:跳了一步关键推理
  • 公式误用:用了相似但不正确的公式
  • 条件遗漏:漏看了题目里的某个约束
  • 过度推广:把特殊情形的结论推广到一般
  • 终止失败:推理没结束就输出了答案
这些是"失败模式"——错误的类型标签。CritICL 团队构建了一个叫 CritBank 的数据集,包含问题、小模型的错误回答、错误对应的失败模式标签、以及针对每种失败模式的批评(critique)。

批评不是泛泛的"你错了",而是"你在这一步犯了公式误用,正确公式应该是 X"。像老师批改作业,不是打叉,是写批注。

CritICL 的两个变体:动态与静态

有了 CritBank,怎么用?CritICL 提出两种方式。

CritICL-dynamic:输入感知的失败模式预测

对每道新题,先让小模型试一下。根据小模型的错误模式,预测大模型在这道题上可能犯什么错。然后从 CritBank 里检索对应失败模式的批评,塞进大模型的上下文里。

流程是:新题进来 → 小模型试错 → 预测失败模式 → 检索对应批评 → 大模型带着批评答题。

这像什么?像一个有经验的考生,做题前先翻一遍自己以前错过的同类题,提醒自己"上次在这里栽过,这次注意"。

CritICL-static:全局失败模式

更简单的版本:不用针对每道题预测,直接用全局最常见的失败模式对应的批评,作为通用提示。

效果稍差但更便宜——不需要在线跑小模型,直接用一个固定的批评集合。

为什么有效:失败模式的跨尺度一致性

CritICL 的核心假设是:同一模型家族里,小模型和大模型共享失败模式分布

论文在 §4.1 验证了这个假设。在 Qwen2.5 家族(1.5B、3B、7B、32B、72B)里,小模型最常犯的错和大模型最常犯的错高度相关。1.5B 爱犯"公式误用",72B 也爱犯"公式误用";1.5B 在哪类题上犯"逻辑跳跃",72B 也在哪类题上犯。

这个一致性是 CritICL 成立的基础。如果失败模式不跨尺度,小模型的错误对大模型就没指导意义。

为什么会有这种一致性?论文没给理论解释,但直觉上:同一家族的模型用同样的架构、同样的数据配方训练,学到的"盲区"自然相似。大模型只是在小模型的盲区上叠加了一层修正,但盲区本身没消失。

实测:12.9% 的提升,更少的 token

在 Qwen2.5-32B 和 72B 上测试,任务包括 GSM8K、MATH、AMC、AIME:

  • CritICL-dynamic:最高提升 12.9%
  • CritICL-static:最高提升 13.4%
和 test-time scaling 方法(多次采样、self-consistency、外部验证)相比,CritICL 在准确率上持平或更好,但 token 消耗显著更低。

原因反直觉:CritICL 增加了输入长度(塞进了批评),但减少了输出长度。因为模型带着"避坑指南"答题,不需要反复试错,一次就能给出更对的结果。总 token 反而更少。

这和"分工比统一更有效"的原则一致——小模型负责找坑,大模型负责填坑,比大模型自己反复试更高效。

跨家族迁移:意外的好消息

CritICL 还做了一个意外实验:用 Qwen 家族小模型构建的 CritBank,能不能给 Llama 家族大模型用?

结果:可以,但效果不如同家族。跨家族迁移有部分效果,说明失败模式有一部分是通用的(数学推理的常见陷阱),有一部分是家族特定的(训练数据的偏置)。

这个结果对实际部署有意义:如果你没有同家族的小模型,用别家的小模型也能搭一个粗糙版 CritICL。

局限:依赖家族结构

CritICL 的硬约束是必须有同家族的小模型。如果你用的是闭源 API(比如 GPT-4、Claude),拿不到同家族小模型的内部状态,CritICL 就用不了。

另外,CritBank 的构建需要离线跑一次小模型,标注失败模式,生成批评。这是一次性成本,但不是零成本。论文在附录 F.1 估算了这个成本,结论是"可接受"——CritBank 构建一次,可以反复用。

更深的含义:失败是结构化的

CritICL 的真正贡献不是某个具体方法,而是一个认知:模型的失败不是随机的,是结构化的

这个结构化有两层:

1. 类型结构化:失败可以分类,每类有对应的修正方式 2. 尺度结构化:失败模式在同一家族里跨尺度一致

第一层让"批评"成为可能——如果失败是随机的,批评就没意义。第二层让"小模型教大模型"成为可能——如果失败模式不跨尺度,小模型的错误就只对小模型有用。

这两层合起来,把"失败"从"要避免的坏东西"变成了"可利用的信息源"。小模型不是大模型的廉价替代品,而是大模型的诊断器——它告诉你大模型会在哪里跌倒。

这和"评测盲区定律"形成互补:评测盲区定律说"不测的就是问题藏身处",CritICL 说"测出来的失败本身就是教材"。前者是警告,后者是机会。

论文与代码

  • 论文:https://arxiv.org/abs/2608.27455
  • HTML 版本:https://arxiv.org/html/2608.27455v1
  • 代码:https://github.com/umwyf/CRITICL
  • 协议:CC BY 4.0
---

CritICL 的故事让我想起一个老笑话:新手程序员写代码,bug 是敌人;资深程序员写代码,bug 是教材。CritICL 把这个道理用在了模型上——小模型的 bug 不是要藏起来的羞耻,而是给大模型备课的素材。失败模式跨尺度一致,意味着我们不需要等大模型犯错才发现问题,小模型已经提前把"这里会出问题"标出来了。

分工比统一更有效:小模型找坑,大模型填坑,比大模型自己摸索更省、更快。

暂无表态

想参与讨论或点赞?登录后使用完整功能

💬 讨论回复(1)
小凯 #1

去原文把账核了一遍。12.9 和 13.4 都在,分别记在 dynamic 和 static 名下。帖子说 static"效果稍差",原文的 up-to 数字正好反着:13.4 > 12.9。更有味道的是成本,Table 2 里 static 一次生成、3768 个 token;dynamic 两次、3897 个。又贵又聪明的输给了钉在墙上的错题本。这种时候,信息量多半在输的那边。

一致性我核的是 Table 4:1.5B 的失败分布对 72B,Spearman 0.79;3B,0.82;7B,0.84。小老师个头越大,跟大模型的盲区越像。跨家族那组也有数:Llama 的错题本教 Qwen-72B,均分 70.3,比裸 ICL 的 68.8 强,比同门的 71.6 差一截。别人家的错题集能用,隔层纱。论文自己管这组实验叫 preliminary,这个词用得老实。

同门为什么一起摔跤?论文没答,它只把分布摆给你看。我的猜测是同一家族吃同一份数据配方,缺哪种营养就缺在同一个地方。这个猜测论文没证,我也证不了。标注那头倒有个可用的数:人跟人分错误类型,一致性 0.86;GPT-4o-mini 跟人分,0.82。差得不多。bug 的物种边界是真的,不是标注员脑补出来的。

再算一笔账:答对一道题,证明一条路通;答错一道题,告诉你地板哪块是空的。前者一个信息,后者一整个信息集。错题本来就更值钱,CritICL 干的事,是给这批从来没人要的资产挂了个牌价。

暂无表态
合作

智谱 GLM-5 已上线

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

领取 2000万 Tokens