一个反直觉的实验
假设你手头有两个模型:一个 1.5B 的小模型,跑完强化学习(RL)后 AIME 2024 得分从 28.5 涨到 51.3;另一个 7B 的大模型,啥也没干就已经 56.7 分了。现在你想让大模型变得更强。
最直觉的做法是:让大模型去模仿小模型 RL 后的策略。但结果会让你大跌眼镜——大模型分数不升反降,从 56.7 掉到 50 左右。
这就是 Direct On-Policy Distillation(Direct-OPD)论文一开头展示的"翻车现场"。作者来自清华 AIR 和字节跳动 Seed 团队,他们发现了一个看似矛盾、实则深刻的事实:弱模型的最终策略是个糟糕的老师,但弱模型在 RL 中发生的"变化方向"却是个好老师。
为什么直接模仿弱老师会翻车
想象一个刚学会解二次方程的初中生(弱模型 RL 后),你让一个已经会微积分的高中生(强模型)去模仿初中生的所有解题习惯。结果不是高中生学会了更扎实的代数,而是高中生开始放弃微积分,改用初中生的因式分解去解所有题目。
问题出在哪?弱模型的最终策略 π_T 是一个"混合物"——它既包含 RL 带来的改进(比如更会分步推理),也包含弱模型本身的能力限制(比如词汇量小、知识面窄、容易在长推理中跑偏)。当你让强模型去模仿这个混合物时,你同时把"改进"和"限制"都灌进去了。如果强模型本来就已经超过了弱模型,这些"限制"反而会拖后腿。
论文用一张图说清了这件事:R1-Distill-7B 起始分 56.7,已经高于 JustRL-1.5B 老师的 51.3,但标准 on-policy distillation(OPD)硬是把它拉到了 50 附近。
关键洞察:转移"变化量"而非"最终状态"
Direct-OPD 的核心思路可以用一句话概括:不要转移老师变成了什么样,要转移老师朝哪个方向变了。
具体怎么做?作者拿出弱模型 RL 前的 checkpoint π_{T_ref} 和 RL 后的 checkpoint π_T,计算两者的对数比:
这个 Δ_T 就是"RL 让弱模型更倾向于生成什么、更不倾向于生成什么"的方向信号。RL 鼓励的 token,Δ 为正;RL 抑制的 token,Δ 为负。弱模型本身的偏好被减掉了,剩下的纯粹是"RL 带来的变化"。
这个减法为什么重要?因为它恰好对应着 KL-regularized RL 的闭式解。在 KL 正则化 RL 中,最优策略满足 π* ∝ π_ref · exp(r/β),反过来就有 r = β · log(π*/π_ref)。也就是说,一对 checkpoint 之间存储的 RL 监督信号,可以直接从策略比中读出来——不需要重新跑 RL,不需要训练 reward model,甚至不需要知道原来的 reward 是什么。
这和 DPO(Direct Preference Optimization)是同一个恒等式的不同用法。DPO 是从偏好数据中拟合策略,Direct-OPD 是从已有策略对中反向读出 reward 信号。一个向前,一个向后,用的是同一块数学基石。
实验结果:4 小时 8 卡 vs 一周 32 卡
Direct-OPD 的实验结果可以用一张表说清:
| 模型 | AIME24 起点 | + Direct-OPD | 提升 |
|---|---|---|---|
| Qwen3-1.7B | 48.3 | 62.4 | +14.1 |
| Qwen3-4B | 72.5 | 77.6 | +5.1 |
| R1-Distill-7B | 56.7 | 63.1 | +6.4 |
换句话说,在固定 RL 步数下,"小模型跑 RL + Direct-OPD 转移"比"大模型直接跑 RL"更划算。小模型是更便宜的"RL 实验场",在它身上发现的有效改进方向,可以低成本地迁移到大模型上。
作者还测试了第二个 teacher pair(Nemotron-1.5B → QuestA-Nemotron-1.5B),来自完全不同的训练流水线和数据源,结果依然有效。这说明 Direct-OPD 不是某个特定 teacher 的巧合,而是"RL 变化量"本身就是一个可迁移的信号。
一个精妙的自适应控制器
Direct-OPD 有一个容易被忽略但很关键的工程细节:α 系数的自适应控制。
问题是这样的:Δ_T 的尺度由 teacher 的 reward 尺度和 KL 预算 β 决定,这两个量在 teacher 训练完之后就固定了,但从 checkpoint 对里无法恢复。学生模型的 KL 系数 α 需要和这个未知尺度匹配,但没法预先校准。
作者的解决方案非常轻量:在每次迭代前,计算 batch 内学生加权的 teacher shift 均值 r̄_m,根据它的符号调整 α:
- r̄_m > 0(teacher RL 在学生当前访问的状态上平均是鼓励的)→ 提高 α,抑制过度放大
- r̄_m < 0(teacher RL 在学生当前状态上平均是抑制的)→ 降低 α,让梯度信号更自由地把学生推离被抑制的 token
这篇论文的深层贡献
Direct-OPD 不只是一个新的 distillation 方法,它重新定义了"弱到强"迁移的范式:
1. 从"转移策略"到"转移 reward":传统蒸馏转移的是 teacher 的输出分布,Direct-OPD 转移的是 teacher 在 RL 中学到的 reward 信号。这个视角的转换意味着任何跑过 RL 的 checkpoint 对都是一个潜在的"reward 来源"。
2. 小模型的新角色:小模型不再只是"能力较弱的模型",它是"RL 的廉价实验场"。你不需要它最终变得多强,你只需要它在 RL 中发现一个有用的改进方向。
3. RL 的可复用性:RL 一直被认为是一次性的——每个新模型都要从头跑。Direct-OPD 把 RL 的成果变成了一个可转移的信号,一次 RL 跑出来的 checkpoint 对可以反复用于不同的 student。
4. "变化量"比"状态量"更本质:这可能是最深的洞察。一个系统的最终状态包含了它的历史和约束,但只有变化量才纯粹地反映了"什么改进是有效的"。这个道理不仅适用于 RL 蒸馏,也适用于很多迁移学习场景。
局限与展望
论文诚实地讨论了局限:Direct-OPD 的效果依赖于 teacher 的 RL shift 和 student 的状态分布有足够的重叠。如果 teacher 的 RL 改进集中在 student 根本不会访问的状态上,转移就会失效。作者识别了 response length 和 KL 条件作为信号可靠性的关键指标。
另一个值得追问的问题是:如果多个独立 teacher 的 policy shift 可以组合(论文 Section 3.3 探索了 sequential composition),那么是否存在更优的并行组合方式?这让人联想到集成方法中 base learner 的多样性理论——也许不同 teacher 的 shift 越不相关,组合收益越大。
开源资源
论文项目页面:https://bytedtsinghua-sia.github.io/Direct-OPD/ 代码仓库:https://github.com/BytedTsinghua-SIA/Direct-OPD