论文精读

精读:把 off-policy 专家数据 MCMC 投影成 on-policy 数据

用分块 Metropolis-Hastings 把专家轨迹在保持语义等价的前提下推回基座的高似然区,再喂给一字未改的 SFT。本专栏逐项对账后发现:31.7pp 的总增量里 MCMC 只占 14.8%,四张表没有一张全列第一,除 MATH500 外所有「胜过 on-policy 基线」的差都在 |z|<1.7,且附录 C.2 把 MH 换成了贪婪爬升,恰好绕开了 Proposition 3 依赖的平稳分布

论文: Finetuning with Sampling: SFT Learns Better Than You Think
作者: Aayush Karan, Sitan Chen, Yilun Du
arXiv: 2610.02140
SFT MCMC 信息投影 on-policy 数据 灾难性遗忘 后训练 数据工程 cs.LG

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.” —— 摘要

主要贡献:

  1. 把「off-policy 数据 on-policy 化」写成一个有唯一解的优化问题(Definition 2 + Proposition 1):在所有条件支撑落在等价类 C\mathcal C 上的分布里,与基座 pp 的 KL 最小者是 pC(x)∝p(x)⋅1(x∈C)p_{\mathcal C}(\mathbf x)\propto p(\mathbf x)\cdot\mathbf 1(\mathbf x\in\mathcal C),即基座自身在「正确轨迹」上的条件分布,作者称之为信息投影(Csiszár, 1975)。
  2. Proposition 2 的可实现化:用信息保持的 proposal κC\kappa_{\mathcal C} 跑 MH、目标取 pp,等价于用任意 proposal 跑 MH、目标取 pCp_{\mathcal C}。这一步把「必须能从 pCp_{\mathcal C} 直接采样」这个不可实现的条件卸掉了。
  3. Proposition 3 的单调性:每多跑一步 MH,数据生成策略与基座的 KL 不增,于是「采样步数」成为一条可以砸算力换 on-policy 程度的轴。
  4. Algorithm 1 的分块实现:按块大小 BB 逐段推进,每段内用 κC\kappa_{\mathcal C} 重采样后缀并按似然比接受,绕开整条序列重生成的不可行开销。
  5. 三个任务域的实证:化学(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 方法详解

目标分布:不是「更像基座」,而是「在正确集合里最贴近基座」

设 C\mathcal C 是与专家轨迹语义等价的轨迹集合(数学与化学看最终答案,医疗由 GPT-5-mini 判内容等价)。PC\mathcal P_{\mathcal C} 是所有条件支撑在 C\mathcal C 上的分布族。原数据集来自某个任意的 q∈PCq\in\mathcal P_{\mathcal C},SFT 最小化 Eq[−log⁡p]\mathbb E_q[-\log p],这个 qq 可以离 pp 任意远。论文要的是 PC\mathcal P_{\mathcal C} 里离 pp 最近的那一个:

pC:=arg⁡min⁡π∈PCKL(π∥p)p_{\mathcal C}:=\arg\min_{\pi\in\mathcal P_{\mathcal C}}\mathrm{KL}(\pi\|p)

Proposition 1 给出闭式解:就是 pp 在 C\mathcal C 上的条件化。证明只用到 KL(π∥p)=KL(π∥pC)−log⁡Z\mathrm{KL}(\pi\|p)=\mathrm{KL}(\pi\|p_{\mathcal C})-\log Z,其中 Z=∑x∈Cp(x)Z=\sum_{\mathbf x\in\mathcal C}p(\mathbf x) 与 π\pi 无关。这一步的实质是把「挑一条正确轨迹」从任意分布收紧为「按基座自己的偏好在正确轨迹里挑」——信息量不变,只改挑选的权重。

论文自己点明了拒绝采样就是 pCp_{\mathcal C} 的平凡采样器,而本文瞄准的恰恰是拒绝采样不可行的那一段:基座根本生成不出正确轨迹。这一段正是 RL 零信号、纯 SFT 又最容易崩的区间。

采样器:分块 MH + 信息保持 proposal

直接在整条序列上跑 MH 不可行(每次迭代要重新生成全长序列),且高维下混合极慢。Algorithm 1 按块推进:第 kk 块先用 κC\kappa_{\mathcal C} 自回归地初始化,再在该块内跑 NMCMCN_{\text{MCMC}} 次「随机选截断点 mm → 用 κC\kappa_{\mathcal C} 重采样 mm 之后的后缀 → 按似然比接受」。

proposal κC\kappa_{\mathcal C} 是全文唯一与专家轨迹发生接触的部件,构造相当工程化:随机截短当前候选,把截断后的部分轨迹连同专家轨迹 τ\tau 一起塞进 prompt,让基座模型续写。这借用基座本身的 in-context 指令跟随能力来保证「续出来的仍然正确」,即 Definition 3 要求的信息保持性。

按论文公式 (9),代价是

Ecost=∣D∣⋅NMCMC∑k=1⌈T/B⌉kB2≈∣D∣⋅NMCMCT24B\mathbb E_{\text{cost}}=|\mathcal D|\cdot N_{\text{MCMC}}\sum_{k=1}^{\lceil T/B\rceil}\frac{kB}{2}\approx|\mathcal D|\cdot\frac{N_{\text{MCMC}}T^2}{4B}

与基线方法的区别

路线代表动的是哪一层
改目标迁就数据Wu et al. (2025) 重要性权重、Zhu et al. (2025) 加 KL 项损失函数
把专家数据送进 rolloutUFT / 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
化学 QwenSFT0.6180.5200.597
化学 QwenRewrite SFT(k=0)0.6130.5580.597
化学 QwenOPSD(on-policy)0.6180.5680.597
化学 QwenSampling SFT0.6600.5860.597
数学 Qwen-3BGRPO0.4570.4140.422
数学 Qwen-3BUFT0.4700.4210.422
数学 Qwen-3BSampling SFT0.4950.4200.422
数学 Qwen-3BSampling SFT + RL0.5450.4300.422
医疗 QwenOPSD0.4660.5010.597
医疗 QwenSampling SFT0.4580.5160.597
化学 OlmoOPSD0.5970.6000.601
化学 OlmoSampling SFT0.5830.6170.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,是四张表里唯一真正「零遗忘」的一张。

再把这些差换算成两样本比例的 zz(化学测试集 600 题、MATH(3,4,5) 测试集 1024 题、MATH500 按 500 题、医疗评测 1000 题;GSM8K 按标准测试集 1319 题估):

对比差zz
化学 vs OPSD(n=600)+4.2pp1.52
MATH(3,4,5) vs UFT(n=1024)+2.5pp1.13
MATH500 vs GRPO(n=500)+26.9pp8.89
MATH500 vs OPSD(n=500)+25.0pp8.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 基线」的差都落在 ∣z∣<1.7|z|<1.7,医疗与 Olmo 化学两处方向还是负的。

消融实验关键发现

论文没有独立的 ablation 小节,消融散在图 5(kk 扫描)、附录 B(跨模型错配 + 50/50 混合)与附录 C.1(保持率)里:

  • kk 扫描:k∈{0,2,4,6,8,10}k\in\{0,2,4,6,8,10\},KL 单调下降、微调后精度趋势向上。k=0k=0 就是「让基座用自己的话重写一遍专家数据」,这条臂在表 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 系数」,调参空间大、可解释性差。本文先在 PC\mathcal P_{\mathcal C} 上定出 KL 最小解 pCp_{\mathcal C},再证明 MH 每步都朝它单调靠近,工程近似放在后面谈。这条路的好处是:即便实现有偏差,也有一个明确的理论靶子可以对账。

二、Proposition 2 是全文最聪明的一步。 「目标取 pCp_{\mathcal C} + 任意 proposal」换成「目标取 pp + 信息保持 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 化学四处相对最强基线的差均在 ∣z∣<1.6|z|<1.6,其中两处为负;唯一越过 z=2z=2 的是 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 比 κC(x∣x′)/κC(x′∣x)\kappa_{\mathcal C}(\mathbf x\mid\mathbf x')/\kappa_{\mathcal C}(\mathbf x'\mid\mathbf x) 和 min⁡{1,⋅}\min\{1,\cdot\} 的随机化。⇒ 这条链不再以 pCp_{\mathcal C} 为平稳分布,Prop 3 证明里用的 Ψ(pC)=pC\Psi(p_{\mathcal C})=p_{\mathcal C} 不成立,图 5 的单调 KL 下降是经验曲线而不是定理覆盖的现象。方向性后果也变了:贪婪爬升是 mode-seeking,它会越过信息投影、落进 C\mathcal C 内的高似然模式,得到比 pCp_{\mathcal C} 更贴基座、熵更低的数据。全文 ablation 零命中,这一处没有任何消融。

四、4–6% 的样本越过了 C\mathcal C,且直接进了训练集。 附录 C.1 把 boosted 数据集的准确率当「proposal 信息保持性」的验证,反向读就是漏检率:化学 5.67%(Qwen)/ 6.06%(Olmo)、数学 4.67%、医疗 4.14%。Definition 1 要求 π\pi 的条件支撑完全落在 C\mathcal C 上,Prop 2 要求 κC\kappa_{\mathcal C} 信息保持,两个前提都只是近似成立,这 4–6% 的错误轨迹没有任何过滤就参与 SFT。医疗域的 C\mathcal C 由 GPT-5-mini 判定,评测侧的评分器也是 GPT-5-mini,训练侧判定与评测侧判定同源。

五、代价被写成了「一次性」,但没有墙钟。 代入论文公式 (9)(B=32B=32、T=1856T=1856、NMCMC=10N_{\text{MCMC}}=10):每条轨迹 269,120 tokens,是轨迹自身长度的 145 倍;三个数据集分别是 0.48B / 2.21B / 5.30B tokens 的纯采样开销,训练侧 token 量只有 ∣D∣⋅T|\mathcal D|\cdot T(医疗约 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 实践启示

可以借鉴的技术:

  1. 0 阶改写先做起来。 MCMC 全套只贡献 14.8% 的新任务增量、42.4% 的遗忘修复;「把专家轨迹和截断候选一起塞进 prompt 让基座重写一遍」这一步几乎零成本,先跑它,看收益够不够,不够再上 MH。
  2. 把「数据分布与基座的 KL」当成一条可调旋钮。 图 5 的 kk 扫描给出了 KL 与下游精度的单调关系。即使不做 MCMC,也可以用「重写轮数 / 采样温度 / 拒绝采样阈值」做同一件事,并把 KL 与下游指标画在一张图上定 operating point。
  3. 正确性约束要显式过滤,不能靠 proposal 的自觉。 本文的 4–6% 漏检直接进了训练集。工程实现上应当在接受后加一道校验,并把「校验通过率」作为数据集的一等公民指标上报。
  4. 换基座必须重做 boosting。 57.33% 那个数字是硬证据。数据管线要把「boosted for 〈基座 hash〉」写进数据集版本号。
  5. 成本按 NMCMCT2/(4B)N_{\text{MCMC}}T^2/(4B) 预算。 增大 BB 能线性降本,代价是分辨率下降;本文选 B=32B=32 是偏保守的一侧。数据量大时先估这个数,再决定要不要全量 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 化」作为语料的一个维度入库,避免跨模型错配。

相关精读