SkillFactory: Self-Distillation for Learning Cognitive Behaviors¶
会议: ICLR 2026
OpenReview: https://openreview.net/forum?id=ttMLNXBWKY
代码: https://github.com/Zayne-sprague/SkillFactory (有)
领域: LLM推理
关键词: 认知技能, 自蒸馏, 冷启动SFT, GRPO, 推理泛化
一句话总结¶
SkillFactory 用基座模型自己采样的对错解 + 自我反思,重排成带 <sample>/<reflect>/<verdict> 标签的"银级"轨迹做 SFT,给模型预装"验证—重试"等认知技能,再用 GRPO 强化——不依赖更强教师模型,就能让 RL 后的模型在更难任务变体和跨域任务上更强、更抗遗忘。
研究背景与动机¶
领域现状:现代推理大模型(o1、DeepSeek-R1 等)之所以强,很大程度上来自它们会用一套"认知技能"——系统性搜索解空间、验证自己的输出、失败后换个方法重试。已有工作(Gandhi et al. 2025)发现:只要基座模型已经"隐隐"会这些技能,再用 RL(如 GRPO)就能把它们放大。
现有痛点:问题是,如果基座模型压根没展现某种技能,RL 也无从强化。要补上这些技能,现有三条路都有硬伤——(1) 纯 RL 稀疏奖励只能激发基座里"已潜在"的技能,跨任务泛化时根本不稳;(2) 从更强模型蒸馏(如用 R1 的轨迹做 SFT)需要先有一个更强的教师,且常常只在蒸馏数据所在的域内有效;(3) 定向数据构造(continual pre-training、ICL、MCTS rollout)要么要外部强模型、要么要大量定制数据。
核心矛盾:大家默认"SFT 阶段任务解得越好 = RL 后越强",于是拼命让 SFT 模型多对几道题。但作者发现这个假设是错的——RL 前的高准确率并不蕴含 RL 后的高准确率,真正重要的是 SFT 有没有把"该用什么技能、在哪用"这套结构先装进去,而不是把任务本身学到最好。
本文目标:在不借助更强教师模型的前提下,把"验证 + 重试"这类认知技能在 RL 之前就灌进模型,作为 RL 的良好起点(warm start),让 RL 后在更难变体、跨域任务上都更稳。
切入角度:既然基座模型自己采样时偶尔就会冒出隐式的验证、重试,那就把它自己产出的对解、错解、反思收集起来,按"技能的格式"重新拼装成轨迹——哪怕这些"银级"轨迹本身解题不完美,只要结构对,就足以给 RL 打底。
核心 idea:用模型自己的采样自蒸馏出带显式标签的"试错—反思—重试—成功"轨迹做 SFT 冷启动,只学结构不求解对,再用 GRPO 校准技能的使用时机。
方法详解¶
整体框架¶
SkillFactory 是一条三段式流水线:数据构造 → SFT → RL。输入是一个带标准答案的任务数据集 \(D_T=\{(q_i,a_i)\}\) 和一个基座模型 \(M\);输出是一个经过 RL、会显式使用验证/重试技能的推理模型。
关键在第一段"数据构造":对每道题,先让基座模型多次采样得到一堆解题尝试 \(y\)(有对有错),再让同一个基座模型对每个 \(y\) 写反思 \(r\) 并给出"对/错"判决(verdict);然后把这些 (解, 反思) 对按"几次失败 + 最后一次成功"的顺序重排,包上 <sample>/<reflect>/<verdict>/<answer> 标签并加上"让我再想想"之类的衔接语,拼成一条结构化训练轨迹。SFT 阶段只让模型学会这套结构(不指望准确率上升),最后 GRPO 用稀疏的"答对/答错"奖励校准技能该在何时何处使用。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["题目 q + 标准答案 a"] --> B["基座模型自采样<br/>多 prompt × 16 = 64 个解"]
B --> C["自我反思生成<br/>判决 verdict 与对错一致才保留"]
C --> D["银级轨迹重排<br/>失败在前 + 末位必为正确解"]
D --> E["结构 SFT<br/>只学技能格式不求解对"]
E --> F["GRPO 强化<br/>稀疏对错奖励校准技能使用"]
F --> G["推理模型<br/>自发采样→反思→重试→成功"]
关键设计¶
1. 自采样银级数据:用模型自己的对错解换掉强教师
这一步直接针对"蒸馏需要更强教师"的痛点。对每道题 \(q_i\),作者用 4 个不同的思维链提示 \(P_{solve}\)、每个采 16 条,得到 \(N_{sample}=64\) 个解 \(Y\);每个解用 <answer> 标签里的内容做抽取,定义 \(\text{correct}(y,a_i)=\mathbb{1}[\text{extract}(y)=a_i]\) 来打对错标签。注意对解和错解都要保留——错解是教模型"自我纠错"必不可少的素材。这些轨迹被作者称作"silver"(银级而非金级):单看解题它们并不完美,但它们提供的是技能的结构样板。这跟蒸馏的根本区别在于:蒸馏是从一个更强模型学新知识、新策略,而这里完全是把同一个模型的产出"换种摆法"喂回去,因此天花板不受外部模型限制,也不会把模型拉去过拟合教师的领域。
2. 自我反思 + 判决过滤:让验证信号可靠
光有对错解还不够,模型要学会的是"看着一个解判断它对不对"。作者用反思提示 \(P_{reflect}\) 让基座模型对每个解 \(y\) 写一段批判性反思 \(r\),并要求用 <verdict>...</verdict> 标签给出"Correct/Incorrect"判决。每个解采 4 条反思,但只保留判决与真实对错一致的那些,即满足 \(\text{verdict}(r)=\text{correct}(y,a_i)\) 的反思。这一步是质量闸门:如果让模型把"明明错了却说对"的反思也学进去,验证技能就成了噪声。过滤后得到的反思集 \(R\),保证了 SFT 看到的每一次"验证"都是判对的,从而把可靠的验证行为印进模型——分析表里验证 F1 普遍 >0.8 正是这一过滤的回报。
3. 轨迹重排算法:把碎片拼成"试错—成功"的完整故事
最后要把零散的 (解, 反思) 对组装成一条像样的推理轨迹(算法 1)。作者把对/错对分成 \(Y^+\) 和 \(Y^-\),对每条轨迹:先采 \(n^+\le L_{max}\) 个正确对、\(n^-\in[0,n^+-1]\) 个错误对;把"除最后一个正确对之外的全部对"打乱(\(\text{shuffle}(T^-\cup T^+[1{:}n^+{-}1])\)),再把保留的那个正确对追加到末尾,确保 \(\text{trace}=\dots\cup\{T^+[n^+]\}\) 总是以正确解收尾。这样每条轨迹都呈现"尝试→反思→(错了就)重试→最终成功"的形态。重排顺序很关键:消融显示,如果轨迹内部不做这种有序排布(No Sample Order),验证器在跨域任务上的准确率会明显下降——结构本身,而不只是内容,才是技能能否泛化的决定因素。
损失函数 / 训练策略¶
SFT 阶段在银级轨迹上做标准监督微调,作者明确不期望此阶段准确率上升,目标只是给 RL 找一个更好的起点。RL 阶段用现成的 GRPO,奖励是基于答案正确性的二元稀疏奖励,与各 baseline 共用同一套 GRPO 配置。Countdown 实验训练上下文长度 4,096、评测 16,384;OpenThoughts 实验在 1k/10k 行 SFT 数据上微调 Qwen2.5-7B-Instruct。
实验关键数据¶
两大设置:(1) 只在 Countdown-3arg 上做 SFT+RL,评测更难的 4–6 arg 变体及一系列跨域任务(易→难 + OOD 泛化);(2) 在 OpenThoughts 子集上训练,评测 GPQA/AIME25/AMC/Math500(复杂数学推理)。基座覆盖 Qwen2.5-1.5B/7B-Instruct 与 Olmo-3-7B。
主实验¶
Countdown-3arg 训练、跨难度/跨域评测(Qwen2.5-1.5B-Instruct,Overall 为综合平均):
| 方法 | Countdown | Mult | CSQA | GSM8k | Overall |
|---|---|---|---|---|---|
| 基座 Qwen2.5-1.5B | 1.9 | 29.8 | 55.7 | 59.2 | 27.3 |
| RL-Only | 15.8 | 24.4 | 62.6 | 67.7 | 31.9 |
| R1 Distill → GRPO | 21.2 | 37.1 | 63.8 | 72.9 | 35.9 |
| SkillFactory → GRPO | 25.1 | 35.0 | 60.8 | 68.2 | 35.7 |
关键对照:在最难的 Countdown 变体上 SkillFactory→GRPO 拿到 25.1%,比次强的 R1 Distill→GRPO(21.2%)高 +3.9,比 RL-Only 高 9.3 个点;综合分 35.7 与依赖强教师的 R1 蒸馏(35.9)几乎打平——但 SkillFactory 全程不需要任何更强模型。
OpenThoughts 训练、复杂数学评测(Qwen2.5-7B,Overall 平均):
| 方法 | AMC | Math500 | Overall |
|---|---|---|---|
| RL Only | 33.5 | 59.1 | 38.0 |
| QwQ distill 10k | 36.5 | 58.6 | 42.5 |
| SkillFactory 1k | 37.5 | 64.6 | 42.1 |
| SkillFactory 10k | 35.2 | 61.9 | 40.6 |
SkillFactory 仅用 1k SFT 数据就逼近 QwQ 蒸馏 10k(42.1 vs 42.5),并在 AMC、Math500 这两个未被 OpenThoughts 显式针对的基准上反超蒸馏。
消融实验¶
| 配置 | 现象 | 说明 |
|---|---|---|
| SkillFactory(完整) | CD-3arg 验证 F1 0.96/0.92 | 对/错两类判决都准 |
| w/o 轨迹内部有序(No Sample Order) | OOD 验证 F1 下降(如 Letter CD 0.34→0.22) | 重排结构对跨域泛化是必需 |
Budget Forcing(推理时加 <sample> 触发) |
Countdown +5.3(17.5→22.8) | 内置技能让模型能吃下更长上下文 |
关键发现¶
- "SFT 解得好 ≠ RL 后强"被证伪:R1 Distill 的 SFT 准确率(11.7%)远高于 SkillFactory(2.8%),但 RL 后关系反转,SkillFactory→GRPO 反超。说明给 RL 装"对的技能结构"比把任务学到最好更重要。
- 数据多反而略降:SkillFactory 从 1k→10k OpenThoughts 数据,综合分从 42.1 掉到 40.6——核心技能早早就学会了,多喂 SFT 数据没有像蒸馏那样带来新策略/新知识。
- 抗遗忘 / 抗回退:RL 后的 SkillFactory 在 OOD 任务(CSQA、GSM8k)上比 RL 后的纯基座更不易灾难性遗忘;纯 RL 在 OOD 上常退化成短输出或退化输出。
- 验证确实在用且可靠:分析表显示错误类 F1 普遍 >0.8(错解被正确否决),且反思次数随任务难度上升(CD-4arg 多于 CD-3arg),证明技能是真用而非装饰。
亮点与洞察¶
- "只学结构、不求解对"是反直觉但有效的训练哲学:把 SFT 的目标从"提高准确率"重新定义成"安装技能脚手架",等于把 cold-start 问题拆成"先装结构、再由 RL 校准时机",绕开了对强教师的依赖。
- 自蒸馏闭环天然抗过拟合教师域:因为数据全来自基座自己,技能不会被绑定到某个外部模型擅长的领域,这正是它在 OOD 上比蒸馏更稳的根因。
- 判决过滤 + 末位必正确这两个小约束很关键:前者保证学到的验证可靠,后者保证每条轨迹是"会成功的试错"而非"放弃",可迁移到任何"易验证难求解"的搜索类任务(NP 风格任务)。
- Budget Forcing 复用:内置的
<sample>标签让推理时简单追加触发词就能"再想一轮",还能把陷入循环的退化输出打断,是一个几乎零成本的推理扩展接口。
局限与展望¶
- 作者坦言部分任务(如 Letter Countdown)表现差主要受模型规模所限——小模型本身分不清"是不是英文单词",并非方法失效。
- 实验最大规模到 7B,是否在更大模型、更复杂多步推理上仍保持"少量 SFT 即可"的优势未验证。
- 银级轨迹的质量受基座采样能力上限约束:如果基座连隐式技能都几乎不出现,自采样可能凑不出足够的对解/有效反思。
- 当前只聚焦"验证"和"重试"两类技能,能否用同一范式装入更复杂的认知行为(如分解、回溯到特定步)是自然的延伸方向。
相关工作与启发¶
- vs 蒸馏(R1 Distill / QwQ):他们从更强教师学轨迹做 SFT,SFT 准确率高但绑定教师域、需要强模型;本文用基座自身产出,SFT 准确率低却在 RL 后追平甚至反超,且更抗遗忘、不需教师。
- vs STaR:STaR 也是自蒸馏,但只收集正确输出来训练;本文刻意保留错解 + 反思来教自我纠错,在更难的 Countdown 变体上 STaR 几乎无增益(RL 后甚至低于基座),而 SkillFactory 拿到最高分。
- vs 纯 RL(RL-Only):纯 RL 只能放大基座里已潜在的技能,跨任务泛化不稳、OOD 易退化成短输出;本文先用结构 SFT 把技能装进去再 RL,跨域更稳。
- vs BOLT / ASTRO 等定向数据构造:思路相近(都想 RL 前装技能),但本文强调数据完全来自基座、且揭示"结构"而非"内容"才是技能一致泛化的关键。
评分¶
- 新颖性: ⭐⭐⭐⭐ "自采样银级轨迹 + 只学结构"的冷启动范式,把"SFT 解得好≠RL 后强"讲透
- 实验充分度: ⭐⭐⭐⭐ 两大设置、三种基座、易→难/OOD/复杂数学全覆盖,含验证 F1 与长度分布分析
- 写作质量: ⭐⭐⭐⭐ 动机推导清晰,Algorithm 1 把数据构造写得可复现
- 价值: ⭐⭐⭐⭐ 给"无强教师也能装认知技能"提供了简单可落地的配方,对中小模型推理尤其实用