小模型的错误是大模型的宝藏:CritICL 如何用失败模式实现弱到强迁移
一个反直觉的发现
先说一个可能颠覆你认知的实验事实:
Qwen2.5-1.5B(15 亿参数的小模型)在数学推理题上犯的错误,和 Qwen2.5-72B(720 亿参数的大模型)犯的错误,在分布上高度一致。
不是"有点像",是 归一化频率的相关性达到 0.95 以上。小模型最容易在哪类题上栽跟头,大模型也在同一类题上最容易出错——只是绝对错误率低一些。
这意味着什么?意味着 同一个模型家族里,弱模型和强模型共享同一套"失败模式"。弱模型不是随机犯错,它犯的错是结构化的、可预测的,而且这种结构在模型放大后依然存在。
CritICL 的核心洞察就来自这个发现:既然失败模式是跨尺度共享的,那就可以用小模型的失败来给大模型当避坑指南。
从"弱到强"的三条路径
"弱到强泛化"(Weak-to-Strong Generalization, W2SG)不是新概念。已有方法大致分三条路径:
1. 在线监督:让弱模型实时给强模型当裁判,对每个输入产生中间指导。问题是推理开销大,且弱模型的直接输出质量不稳定。 2. 重复采样:让强模型自己多次生成,投票选最好的。Consistency@5、Consistency@7 就是这种思路。问题是 token 消耗线性增长。 3. 外部验证:用更强的模型(比如 GPT-4)当裁判。问题是成本高,且引入了外部依赖。
CritICL 走了第四条路:离线从小模型的错误中提取结构化失败模式,在线时用这些模式指导大模型的 prompt 构造。不增加在线推理次数,不需要外部裁判,只多了一点点 prompt 长度。
CritBank:把错误变成可检索的知识库
CritICL 的第一步是构建 CritBank——一个"失败博物馆"。
收集过程:取一组小模型(比如 Qwen2.5-1.5B/3B/7B),让它们做一批训练题(GSM8K + MATH,共 15k 题),每道题生成 5 个回答。收集所有错误回答。
标注过程:用 GPT-4o-mini 对每个错误回答生成两部分内容——最多 5 个失败模式标签(比如"计算错误""公式误用""逻辑跳步")和一段自然语言批评(指出具体哪里错了、为什么错)。
聚类去重:失败模式标签可能有噪声和冗余,用聚类方法合并相似标签,得到一组代表性的失败模式。
最终 CritBank 的每条记录是:(题目, 错误回答, 失败模式标签集合, 批评文本)。这是一个可检索的结构化知识库——给定一个失败模式,就能找到所有相关的错误案例和批评。
两种使用方式:动态 vs 静态
有了 CritBank,怎么用它帮大模型?CritICL 提供两种策略。
#### CritICL-dynamic:因题而异
对于每道新题,先让目标大模型预测自己可能犯哪些错误(最多 5 个失败模式标签),然后从 CritBank 中检索对应的批评案例,拼接到 prompt 里作为 in-context 示例。
这就像考试前先看一眼"这类题最容易犯的错"清单,然后带着警觉做题。
#### CritICL-static:因模型而异
不为每道题单独预测,而是提前为每个模型家族构建一个"失败模式画像"——统计这个家族的小模型们最常犯的 Top-T 种错误,统一检索对应的批评案例作为 in-context 示例。
这就像给某个学生发一份"你这类学生最容易犯的错"的通用复习指南。
两种策略的效果差异不大(static 略好一点,59.2% vs 58.7%),但 static 更简单——不需要在线预测失败模式,推理开销更低。
数据说话:效果与效率
在 Qwen2.5-72B-Instruct 上,CritICL-static 的综合 Pass@1 准确率达到 59.2%,超过了 Consistency@5(59.0%)和所有其他基线。最高提升幅度达 13.4%(在 AIME25 上从 23.3% 提升到 24.6%,在 AMC23 上从 25.4% 提升到 26.5%)。
更关键的是 效率优势。在 MATH 数据集上用 Qwen2.5-32B 测试:
| 方法 | 生成次数 | 输入 token | 输出 token | 总 token |
|---|---|---|---|---|
| Consistency@5 | 5 | 3321 | 1493 | 4814 |
| Consistency@7 | 7 | 3364 | 2076 | 5440 |
| LLM-as-Judge | 6 | 4794 | 1671 | 6465 |
| CritICL-static | 1 | 3472 | 296 | 3768 |
用更少的计算获得更好的效果,这在推理时扩展(inference-time scaling)领域是罕见的。大多数方法都是用更多计算换更多准确率,CritICL 反其道而行之。
为什么有效:失败模式的跨尺度一致性
CritICL 的核心实验不是性能数字,而是 Figure 2:失败模式分布的跨尺度一致性。
在 Qwen 家族中,从 1.5B 到 3B 到 7B 到 32B 到 72B,每个模型的失败模式分布(归一化频率)高度相似。最常犯的错误类型排名几乎一样,只是大模型的绝对错误率更低。
Llama 家族也一样:1B、3B、8B、70B 的失败模式分布高度一致。
但跨家族就不一致了——Qwen 和 Llama 的失败模式分布有明显差异。
这说明什么?说明 失败模式是模型架构和训练数据的产物,不是参数量的产物。同一家族的模型共享相同的"认知盲区",只是大模型在同一个盲区里栽跟头的概率低一些。
这让我想到一个类比:人类认知心理学里的 认知偏差。确认偏差、锚定效应、可得性启发式——这些偏差在儿童和成人身上都存在,只是成年人在同一个偏差上犯错的概率低一些。不是大人克服了偏差,而是大人的"基础准确率"更高,但偏差的结构没变。
CritICL 做的事,相当于给大模型一份"认知偏差清单":你可能会在以下几类问题上犯错,这是别人犯过的错和错误分析,带着这份清单去做题。
深层启示:分工比统一更有效
CritICL 的设计哲学是 分工:小模型负责犯错(生成失败案例),前沿 LLM 负责分析(生成批评),大模型负责受益(用批评提升自己)。每个角色做自己最擅长的事。
这和"让大模型自己给自己当裁判"(Self-Reflection)或"让大模型多次生成再投票"(Consistency)形成对比。后两者的逻辑是 统一——一个模型干所有事。CritICL 的逻辑是 分工——不同规模的模型扮演不同角色。
分工比统一更有效,这个道理在人类社会组织里已经被验证了几千年。CritICL 把它搬到了模型推理的场景里。
开源代码
论文已开源,代码仓库:https://github.com/umwyf/CRITICL
仓库包含 CritBank 构建脚本、CritICL-dynamic 和 CritICL-static 的推理代码,以及完整的实验复现流程。
局限与展望
CritICL 目前主要在数学推理上验证。虽然论文展示了在科学推理上的初步扩展,但在代码生成、逻辑推理、开放域问答等场景的效果还有待验证。
另一个潜在问题是 CritBank 的构建成本。需要用多个小模型生成回答、用 GPT-4o-mini 标注失败模式和批评——这个过程不便宜。虽然是一次性离线成本,但对于资源有限的研究者来说可能是个门槛。
更深远的问题是:失败模式一致性是否会随训练数据的变化而消失? 如果未来的模型用了完全不同的训练数据,跨尺度的失败模式一致性可能不再成立。CritICL 的有效性建立在一个经验事实之上——同家族模型共享失败模式——但这个事实的深层原因(架构?数据?训练目标?)还没有被完全解释。
结语
CritICL 做了一件很优雅的事:它把"弱模型的错误"从一种需要消除的噪声,转化为一种可以利用的资源。这种思维转换的价值超出了具体的性能提升。
在 AI 研究越来越追求"更大更强"的今天,CritICL 提醒我们:小模型不是大模型的劣化版本,而是大模型的"错误预言家"。它们用自己的失败,照亮了大模型的认知盲区。
这或许是弱到强泛化的真正含义——不是让弱模型变强,而是让弱模型的弱点成为强模型的铠甲。
---
*本文基于 arXiv:2608.27455(CritICL,2026 年 8 月)撰写。论文作者来自 NSF 资助的推理时改进研究项目。代码已开源:https://github.com/umwyf/CRITICL*