精读:把 off-policy 专家数据 MCMC 投影成 on-policy 数据
用分块 Metropolis-Hastings 把专家轨迹在保持语义等价的前提下推回基座的高似然区,再喂给一字未改的 SFT。本专栏逐项对账后发现:31.7pp 的总增量里 MCMC 只占 14.8%,四张表没有一张全列第一,除 MATH500 外所有「胜过 on-policy 基线」的差都在 |z|<1.7,且附录 C.2 把 MH 换成了贪婪爬升,恰好绕开了 Proposition 3 依赖的平稳分布
1 论文概览
一句话总结:给一批 off-policy 专家轨迹套一个分块 Metropolis-Hastings 采样器,让它们在保持「语义等价」的前提下逐步滑向基座模型自己的高似然区,再把变换后的数据喂给一个一字未改的 SFT。
核心问题:后训练要在「引入新能力」和「保住旧能力」之间取平衡。RL 是 on-policy 的,泛化好、遗忘少,代价是模型自己采样,遇到做不出的难题就没有奖励方差、也就没有信号;SFT 能用 off-policy 的专家数据,代价是分布离基座太远,梯度更新又大又不稳定,泛化差、遗忘重。过去的桥接办法(重要性权重、加 KL 项、把专家数据塞进 RL 的 rollout)都在改目标函数去迁就数据。这篇把箭头反过来:目标函数原封不动,改数据分布去迁就学习者。
“However, rather than modifying the learning objective to accommodate this data, we instead tailor the data distribution to better suit the learner.” —— 摘要
主要贡献:
- 把「off-policy 数据 on-policy 化」写成一个有唯一解的优化问题(Definition 2 + Proposition 1):在所有条件支撑落在等价类 上的分布里,与基座 的 KL 最小者是 ,即基座自身在「正确轨迹」上的条件分布,作者称之为信息投影(Csiszár, 1975)。
- Proposition 2 的可实现化:用信息保持的 proposal 跑 MH、目标取 ,等价于用任意 proposal 跑 MH、目标取 。这一步把「必须能从 直接采样」这个不可实现的条件卸掉了。
- Proposition 3 的单调性:每多跑一步 MH,数据生成策略与基座的 KL 不增,于是「采样步数」成为一条可以砸算力换 on-policy 程度的轴。
- Algorithm 1 的分块实现:按块大小 逐段推进,每段内用 重采样后缀并按似然比接受,绕开整条序列重生成的不可行开销。
- 三个任务域的实证:化学(SciKnowEval L-3,2400 题)、数学(MATH 3–5 级,9254 题)、医疗(HuatuoGPT-o1,19704 条),跨 Qwen2.5-7B-Instruct / Qwen2.5-3B / Olmo-3-7B-Instruct 三个基座,对上 SFT、Rewrite SFT、OPSD、GRPO、UFT 五条基线。
2 方法详解
目标分布:不是「更像基座」,而是「在正确集合里最贴近基座」
设 是与专家轨迹语义等价的轨迹集合(数学与化学看最终答案,医疗由 GPT-5-mini 判内容等价)。 是所有条件支撑在 上的分布族。原数据集来自某个任意的 ,SFT 最小化 ,这个 可以离 任意远。论文要的是 里离 最近的那一个:
Proposition 1 给出闭式解:就是 在 上的条件化。证明只用到 ,其中 与 无关。这一步的实质是把「挑一条正确轨迹」从任意分布收紧为「按基座自己的偏好在正确轨迹里挑」——信息量不变,只改挑选的权重。
论文自己点明了拒绝采样就是 的平凡采样器,而本文瞄准的恰恰是拒绝采样不可行的那一段:基座根本生成不出正确轨迹。这一段正是 RL 零信号、纯 SFT 又最容易崩的区间。
采样器:分块 MH + 信息保持 proposal
直接在整条序列上跑 MH 不可行(每次迭代要重新生成全长序列),且高维下混合极慢。Algorithm 1 按块推进:第 块先用 自回归地初始化,再在该块内跑 次「随机选截断点 → 用 重采样 之后的后缀 → 按似然比接受」。
proposal 是全文唯一与专家轨迹发生接触的部件,构造相当工程化:随机截短当前候选,把截断后的部分轨迹连同专家轨迹 一起塞进 prompt,让基座模型续写。这借用基座本身的 in-context 指令跟随能力来保证「续出来的仍然正确」,即 Definition 3 要求的信息保持性。
按论文公式 (9),代价是
与基线方法的区别
| 路线 | 代表 | 动的是哪一层 |
|---|---|---|
| 改目标迁就数据 | Wu et al. (2025) 重要性权重、Zhu et al. (2025) 加 KL 项 | 损失函数 |
| 把专家数据送进 rollout | UFT / Liu et al. (2025)、Qu et al. (2026) | RL 的采样分布 |
| 自蒸馏(特权信息造教师) | OPSD / Shenfeld et al. (2026) | 学习目标 + 教师构造 |
| 本文 | projection sampling | 数据集本身,损失函数零改动 |
这个定位是本文最有价值的地方:它把「on-policy 化」从算法层挪到了数据层。数据层的好处是可复用——同一批 boosted 数据可以喂给任何 SFT,也可以当 RL 的初始化;坏处是它对基座是绑定的,附录 B 用实验确认了这一点。
3 实验结果
主要指标
三张主表(Qwen2.5-7B-Instruct 化学 / Qwen2.5-3B 数学 / Qwen2.5-7B-Instruct 医疗)加附录的 Olmo-3-7B-Instruct 化学,核心数字如下(新任务列 + 先验能力宏平均):
| 表 | 算法 | 新任务 | 先验 Avg | 基座先验 Avg |
|---|---|---|---|---|
| 化学 Qwen | SFT | 0.618 | 0.520 | 0.597 |
| 化学 Qwen | Rewrite SFT(k=0) | 0.613 | 0.558 | 0.597 |
| 化学 Qwen | OPSD(on-policy) | 0.618 | 0.568 | 0.597 |
| 化学 Qwen | Sampling SFT | 0.660 | 0.586 | 0.597 |
| 数学 Qwen-3B | GRPO | 0.457 | 0.414 | 0.422 |
| 数学 Qwen-3B | UFT | 0.470 | 0.421 | 0.422 |
| 数学 Qwen-3B | Sampling SFT | 0.495 | 0.420 | 0.422 |
| 数学 Qwen-3B | Sampling SFT + RL | 0.545 | 0.430 | 0.422 |
| 医疗 Qwen | OPSD | 0.466 | 0.501 | 0.597 |
| 医疗 Qwen | Sampling SFT | 0.458 | 0.516 | 0.597 |
| 化学 Olmo | OPSD | 0.597 | 0.600 | 0.601 |
| 化学 Olmo | Sampling SFT | 0.583 | 0.617 | 0.601 |
正文引用的增量全部能对上:化学相对基座 +31.7pp、相对 OPSD +4.2pp;数学 MATH 硬题 +18.0pp、AMC +14.4pp、GSM8K +20.3pp、MATH500 +33.7pp;医疗相对 vanilla SFT 在先验能力上 +16.3pp。
与最强基线的逐列对比
把「Sampling SFT 是否该列第一」逐列数一遍,四张表没有一张是全列第一:
- 化学 Qwen:Chemistry 0.660、MMLU 0.692、GPQA 0.303、AMC 0.374 四项第一;MATH500 0.670 输给 OPSD 的 0.716(−4.6pp),GSM8K 0.891 输给 OPSD 的 0.901(−1.0pp)。
- 数学 Qwen-3B:MATH500 0.582 大幅第一(比最好的 RL 基线 GRPO 高 +26.9pp);AMC 0.277 输 UFT 的 0.293,GSM8K 0.782 输 GRPO 的 0.808,MMLU 0.651 输 UFT 的 0.653。先验宏平均 0.420 低于 UFT 的 0.421,数学任务上「遗忘最少」这条站不住。Chemistry 保留列 0.266 是全表倒数第二,只比 vanilla SFT 的 0.222 高。
- 医疗 Qwen:新任务 0.458 输 OPSD 的 0.466;MMLU 0.523 是全表最低,连 vanilla SFT 的 0.614 都比它高 9.1pp。
- 化学 Olmo:新任务 0.583 输 OPSD 的 0.597;先验宏平均 0.617 反超基座 0.601,是四张表里唯一真正「零遗忘」的一张。
再把这些差换算成两样本比例的 (化学测试集 600 题、MATH(3,4,5) 测试集 1024 题、MATH500 按 500 题、医疗评测 1000 题;GSM8K 按标准测试集 1319 题估):
| 对比 | 差 | |
|---|---|---|
| 化学 vs OPSD(n=600) | +4.2pp | 1.52 |
| MATH(3,4,5) vs UFT(n=1024) | +2.5pp | 1.13 |
| MATH500 vs GRPO(n=500) | +26.9pp | 8.89 |
| MATH500 vs OPSD(n=500) | +25.0pp | 8.20 |
| 医疗 vs OPSD(n=1000) | −0.8pp | −0.36 |
| 化学 Olmo vs OPSD(n=600) | −1.4pp | −0.49 |
| GSM8K vs GRPO(n=1319) | −2.6pp | −1.65 |
除 MATH500 一列外,其余所有「胜过 on-policy 基线」的差都落在 ,医疗与 Olmo 化学两处方向还是负的。
消融实验关键发现
论文没有独立的 ablation 小节,消融散在图 5( 扫描)、附录 B(跨模型错配 + 50/50 混合)与附录 C.1(保持率)里:
- 扫描:,KL 单调下降、微调后精度趋势向上。 就是「让基座用自己的话重写一遍专家数据」,这条臂在表 1 里是 Rewrite SFT。
- 跨模型错配:把针对 Olmo-3-7B 做过 boosting 的数据喂给 Qwen2.5-7B-Instruct,化学精度掉到 57.33%,比 vanilla SFT 的 61.8% 还低 4.47pp。
- 50/50 混合:一半 boosted + 一半原始数据,化学 62.14%。
- 信息保持率:boosted 数据集的准确率,化学 94.33%(Qwen)/ 93.94%(Olmo)、数学 95.33%、医疗 95.86%。
4 个人分析
亮点
一、把「数据挑人」这件事写出了唯一解。 之前 bridging SFT 与 RL 的工作基本是「在损失上加一项权重或 KL 系数」,调参空间大、可解释性差。本文先在 上定出 KL 最小解 ,再证明 MH 每步都朝它单调靠近,工程近似放在后面谈。这条路的好处是:即便实现有偏差,也有一个明确的理论靶子可以对账。
二、Proposition 2 是全文最聪明的一步。 「目标取 + 任意 proposal」换成「目标取 + 信息保持 proposal」,把不可计算的示性函数从目标里挪进了 proposal 的支撑里。代价是把正确性约束的实现责任全推给了 prompt,这一点下面要还回来。
三、Appendix B 的错配实验比主表更能说明机制。 57.33% 这个数字证明「boosted」不是一个数据的绝对属性,而是相对于某个基座的属性。这直接反驳了「蒸馏数据可以跨模型复用」的直觉,对数据工程是硬约束:数据资产与基座绑定,换基座要重做。
局限性
一、增量分解:采样这一步只占 14.8%。 化学任务上基座 0.343 → Sampling SFT 0.660,总增量 31.7pp。拆开看:vanilla SFT 就拿到 27.5pp(占 86.8%),SFT → Rewrite 是 −0.5pp,Rewrite → Sampling(10 步 MCMC)只有 +4.7pp(占 14.8%)。先验能力侧更明显:总遗忘 7.7pp 里,「0 阶改写」这条不含任何 MCMC 的廉价臂修复了 3.8pp(57.6%),MCMC 那 10 步修复 2.8pp(42.4%)。⇒ 拿走修复效果大头的,是「让基座自己重写一遍」,不是 MCMC。
二、headline 的统计支撑压在一列上。 化学、MATH(3,4,5)、医疗、Olmo 化学四处相对最强基线的差均在 ,其中两处为负;唯一越过 的是 MATH500。而 MATH500 恰恰是 Qwen2.5-3B 基座最弱的一列(0.245),也是 UFT 与 GRPO 提升最小的一列(+8.7pp / +6.8pp)。收益高度集中在「基座弱、专家数据强」的那一档:GSM8K 上基座已能拿 0.579,Sampling SFT 相对基座的增益(+20.3pp)反而低于 GRPO(+22.9pp)。
三、附录 C.2 把 MH 换成了贪婪爬升,而 Proposition 3 依赖精确 MH。 完整实现每次迭代要两次前向(生成候选 + 估计反向转移概率),论文为省一次前向,把接受准则改成「候选似然比当前高就换」。这一改丢掉了 proposal 比 和 的随机化。⇒ 这条链不再以 为平稳分布,Prop 3 证明里用的 不成立,图 5 的单调 KL 下降是经验曲线而不是定理覆盖的现象。方向性后果也变了:贪婪爬升是 mode-seeking,它会越过信息投影、落进 内的高似然模式,得到比 更贴基座、熵更低的数据。全文 ablation 零命中,这一处没有任何消融。
四、4–6% 的样本越过了 ,且直接进了训练集。 附录 C.1 把 boosted 数据集的准确率当「proposal 信息保持性」的验证,反向读就是漏检率:化学 5.67%(Qwen)/ 6.06%(Olmo)、数学 4.67%、医疗 4.14%。Definition 1 要求 的条件支撑完全落在 上,Prop 2 要求 信息保持,两个前提都只是近似成立,这 4–6% 的错误轨迹没有任何过滤就参与 SFT。医疗域的 由 GPT-5-mini 判定,评测侧的评分器也是 GPT-5-mini,训练侧判定与评测侧判定同源。
五、代价被写成了「一次性」,但没有墙钟。 代入论文公式 (9)(、、):每条轨迹 269,120 tokens,是轨迹自身长度的 145 倍;三个数据集分别是 0.48B / 2.21B / 5.30B tokens 的纯采样开销,训练侧 token 量只有 (医疗约 36.6M)。全文 wall-clock、GPU-hour、throughput 零命中,只留了一句 “projection sampling only incurs a one-time cost”。
六、50/50 混合的收益严重次线性。 62.14% 落在 SFT 61.8% 与 Sampling 66.0% 之间,线性插值是 63.9%:掺入一半 boosted 数据只兑现了 0.34pp,占其独立收益 4.2pp 的 8.1%。⇒ 收益不是按数据量累积的,它要求整批数据同分布。
七、pass@k 缺一条 vanilla SFT 臂。 图 4 只画了 base、OPSD、ours 三条曲线,用它论证「学到的不是 sharpening」。vanilla SFT 在 Olmo 化学上已把 0.328 提到 0.567,缺少的正是这条对照。零 pass rate 涨到 67.2% / 53.1% 那批题,无法据此归因到采样。
八、两张 Qwen 表的基座 Avg 列与它的五列对不上。 基座行 MMLU 0.687 / GPQA 0.253 / AMC 0.422 / MATH500 0.734 / GSM8K 0.918 的宏平均是 0.6028,表内写的是 0.597,化学表与医疗表同现这 0.58pp 差。正文的「先验损失只有 −1.10pp」按 0.597 算;按重算的 0.6028 口径是 −1.68pp。其余各行重算误差都在 ±0.06pp 内。
九、没有 Limitations 小节。 全文 limitation 只出现在引言里形容 RL 的那一句,作者没有系统陈述方法的适用边界。上面第一、三、四、五条都属于论文自己没写、但能从它的表和附录里推出来的部分。
对大模型领域的影响
本文真正有价值的不是「SFT 打赢了 RL」这个结论,而是把「数据分布要不要迁就学习者」从一个调参问题变成了一个可优化、可证明、可计价的对象。过去数据工程讨论的是「挑哪些样本」,这篇文章加了一维:挑完之后还要不要搬,搬到离基座多近。这条轴与 RL 正交——它是训练前的预处理,产出的东西可以给 SFT、可以给自蒸馏当教师、也可以给 RL 当 warmup 初始化(表 1 里 Sampling SFT + RL 就是四张表的最强档)。
对正在做「用强模型造数据喂弱模型」的团队,本文给了一条比 rejection sampling 更省的路子:不用等基座生成正确解,从专家数据出发往回走即可。附录 B 也把这条路的天花板写清楚了——boosted 数据是与基座绑定的一次性资产,不是可复用的语料。
5 实践启示
可以借鉴的技术:
- 0 阶改写先做起来。 MCMC 全套只贡献 14.8% 的新任务增量、42.4% 的遗忘修复;「把专家轨迹和截断候选一起塞进 prompt 让基座重写一遍」这一步几乎零成本,先跑它,看收益够不够,不够再上 MH。
- 把「数据分布与基座的 KL」当成一条可调旋钮。 图 5 的 扫描给出了 KL 与下游精度的单调关系。即使不做 MCMC,也可以用「重写轮数 / 采样温度 / 拒绝采样阈值」做同一件事,并把 KL 与下游指标画在一张图上定 operating point。
- 正确性约束要显式过滤,不能靠 proposal 的自觉。 本文的 4–6% 漏检直接进了训练集。工程实现上应当在接受后加一道校验,并把「校验通过率」作为数据集的一等公民指标上报。
- 换基座必须重做 boosting。 57.33% 那个数字是硬证据。数据管线要把「boosted for 〈基座 hash〉」写进数据集版本号。
- 成本按 预算。 增大 能线性降本,代价是分辨率下降;本文选 是偏保守的一侧。数据量大时先估这个数,再决定要不要全量 boosting。
潜在应用场景:
- 难例域的能力注入:基座在目标域 pass rate 接近 0、RL 拿不到信号、纯 SFT 又崩的场景,是本文瞄准的核心区间(数学 MATH500 一列 +33.7pp 就出自这里)。
- 持续学习 / 多阶段后训练:每加一个新域就对新增数据做一次针对当前 checkpoint 的 boosting,用遗忘换新增能力的比率会比 vanilla SFT 好看得多。
- 自蒸馏的教师构造:结论段自己点出,MCMC 过程可以直接从初始蒸馏轨迹诱导出一个与学生 KL 更近的教师分布,更新更稳。
- RL 冷启动:表 1 的 Sampling SFT + RL 是四张表的最强档(MATH500 0.652、GSM8K 0.830),用 boosted 数据做 warmup 再上 GRPO,比从基座直接 RL 高一大截。
- 数据资产治理:把「针对某基座做过 on-policy 化」作为语料的一个维度入库,避免跨模型错配。
相关精读
- 本篇把本专栏连续三十期的主线又挪了一格:此前二十九期回答的是「挑哪些 token、挑哪些轨迹、信用按哪套口径记账、信号被消费时已经旧了多少」,这一期问的是在目标函数一字不改的前提下,把数据本身搬到离基座多近,改的是数据分布而不是学习目标或损失。以下按专栏顺序回溯,最近一期是 GMC-GRPO。
- 精读:GMC-GRPO——把重要性比从逐条裁剪换成整组收缩
- 精读:SCAPO——用「扰动下不动」给 token 记一笔负账
- 精读:ARCUS——prompt 的选择也有一条弧
- 精读:把中间那一步的信号从模型里搬进环境——用沙箱回滚跑出免费过程奖励
- 精读:把特权信息从损失搬到采样器——多轮 agent 里自蒸馏为什么会崩
- 精读:OC-GRPO 与离上下文重要性校正
- 精读:不跑 RL,先把新奖励的结果预测出来
- 精读:给 token 级信用一个唯一解,然后把它求和掉
- 精读:把后训练配方本身当成果,再逐阶段对账
- 精读:STAR-E——按惊讶度给 token 重加权 advantage
- 精读:按梯度可估性给 token 分配蒸馏监督
- 精读:TrimSFT——按 logit 间隔剪掉 SFT 里的低信息 token
- 精读:ESFT 与端点 SFT 对中段推理链的裁剪
- 精读:把中间状态的价值估计整体消掉
- 精读:ActObs——把被 mask 掉的那 45% 观察 token 重新纳入损失
- 精读:SP³O——一条响应里只给三个位置价值监督
- 精读:教师引导的课程 RLVR——把解不出的题变成可解的题
- 精读:DataFlex-RL 与均匀采样的替代策略
- 精读:NGU 与 RL 里的马太效应
- 精读:按排序可分辨性做 RLVR 数据联合工程
- 精读:模型与外壳共演化时的同策略校正
- 精读:OPD-then-RL——顺序摆信号胜过同 step 混信号
- 精读:One-Shot OPD 与状态覆盖吸收率
- 精读:Compile by Training——把 LLM 降级为构建期依赖
- 精读:Terminal-Universe——轨迹反向造环境
- 精读:OPSA——无教师的同策略自适应
- 精读:SPADE——把优化对象从轨迹上移到生成器
- 精读:DART-SD——标注单元从轨迹换成状态图