这篇论文没有修改 SFT objective。它先处理数据:把一条正确但远离 base-model distribution 的 expert trajectory,多次切开并重写 suffix,保留 base model 更容易生成的版本,再做普通 SFT。论文把理想目标写成 information projection,并用 Metropolis-Hastings 解释;公开代码则采用了更直接的 greedy likelihood ascent。
Q1. 为什么不直接对 expert traces 做 SFT?
正确数据仍可能不适合当前模型学习,因为它的 token sequence 对这个模型来说过于 off-policy。
普通 SFT 把 expert response 当成唯一目标,无论 base model 原本会如何表达。模型为拟合一条低概率 trajectory 可能发生较大的参数更新,并把新任务的表述方式覆盖到旧能力上。on-policy RL 与 self-distillation 通常更稳定,因为训练样本来自当前 policy 附近;代价是 hard examples 很难得到成功 rollout。
作者的选择是保留 SFT,但先用 base model 重写数据。expert solution 仍放在 proposal prompt 里提供 privileged information;生成出的 suffix 则来自 base model。因此候选 response 可以同时保持答案内容,并更接近 student 的语言分布。
Q2. 它与 RL、self-distillation 和 weighted SFT 有什么区别?
这篇论文把“如何靠近 learner”放在训练前的数据生成阶段。
| 方法 | expert information 怎样进入 | 改变什么 | hard task 的限制 |
|---|---|---|---|
| Vanilla SFT | 直接拟合 expert trajectory | 不改 objective,不改数据 | 数据可能离 student distribution 很远。 |
| Importance-weighted / KL SFT | 仍使用原始 expert data | 修改 loss 或增加 KL | 需要可靠 importance ratio 或 regularization。 |
| GRPO / UFT | expert trace 可作为 rollout 的 privileged context | 用 reward 做 on-policy update | 基础模型仍可能难以产生可训练的成功组。 |
| OPSD | base model 在 privileged context 下形成 teacher | self-distillation | 每次训练需要 teacher distribution 或 rollouts。 |
| Sampling SFT | expert solution 约束 proposal | 先变换 data distribution,再做普通 SFT | 需要昂贵的 sampling,并依赖语义保持。 |
MCMC for LLMs 也不是这篇论文第一次提出。已有工作用 MCMC tilt 到 external reward 或 sharpened reasoning distribution;这里的区别是从 off-policy expert data 出发,目标产物随后用于 finetuning,而不是只改善 inference-time samples。
Q3. 从目标分布到公开代码,算法到底做了什么?
论文给出一个严格的目标分布和 MH 推导,实验代码采用更激进的近似。两者必须分开讲。
固定一个 query,并令 C 表示所有与 expert trajectory 信息等价的 responses。理想目标是:
也就是把 base model 的分布限制在正确集合 C 内。论文的 Algorithm 1 从 expert trajectory 开始,逐 block 扩展 response。每次 MCMC update 随机选择切分点,把当前 prefix、原题和完整 expert solution 一起交给 base model,让它重写 suffix。理论算法应按 target density 与正反 proposal probabilities 构造 Metropolis-Hastings acceptance probability。
公开实现实际接受什么?
# official boost_sci.py / boost_math.py
target_log_prob_prop = get_logprobs_vLLM(p, question, prop)
if target_log_prob_prop[0] > target_log_prob_cur[0]:
gen = prop
target_log_prob_cur = target_log_prob_prop
get_logprobs_vLLM 返回 response tokens 在 base model 下的平均 log probability。代码只在 proposal 更高时替换当前 response,没有计算 κ(x|x') / κ(x'|x),也没有按 acceptance probability 随机接受下降 proposal。因此公开实现更接近 greedy hill-climbing。Appendix C.2 把它称为近似,并说明这样做是为了少一次反向 proposal 的 forward pass。
这处差别影响理论边界:论文关于 MH stationary distribution 和逐步逼近 p_C 的结论属于理想 kernel,不能直接当作公开代码的保证。Figure 5 只能说明在作者的 chemistry experiment 中,随着 update 次数增加,估计 KL 降低且 accuracy 上升。
真实 case:Appendix A 的 chemical equation
`CO₂ + H₂O → C₃H₆O₃ + O₂`
- 来源:论文 Appendix A 发布了 original 与 boosted response;生成逻辑对应公开 `boost_sci.py`。
- 输入:问题要求配平方程并保持 reactants/products 顺序。expert solution 给出正确系数和 reasoning。
- proposal:代码随机选一个 token index,把当前 prefix 与完整 expert solution 放进 chemistry prompt,重新生成剩余 suffix。
- 接受:只有 proposal 的 base-model average log probability 高于当前 response 才被保留。
- 输出检查:生成结束后,chemical-equation grader 比较方程,写入 `is_correct`。
- 公开结果:Appendix 中的 boosted response 保持了正确配平,但论文没有发布这个样本逐轮被接受或拒绝的 trace。
公开脚本会把 is_correct 写进 row,随后无条件把整条 record 追加到 JSONL。README 说这些输出可以转换为 SFT prompt/response,却没有说明是否先过滤 is_correct=0。论文报告最终 boosted dataset 的正确率在 93.94% 到 95.86% 之间,所以 information preservation 在实现中是经验比例,不是严格条件。
另一个小问题是脚本接受 --seed 参数,却固定执行 random.seed(0);传入其他 seed 不会改变 Python 的随机切分序列。
Q4. 实验结果能支持多强的结论?
Sampling SFT 在 Qwen chemistry 与 math 上表现较好,也保留了更多旧能力;medical 和 Olmo 结果说明它并未在所有任务上超过 on-policy baseline。
| 实验 | Sampling SFT | 最相关 baseline | 怎么读 |
|---|---|---|---|
| Qwen2.5-7B chemistry | 66.0 | SFT 61.8;OPSD 61.8 | new-task accuracy 高 4.2 points;prior average 58.6,接近 base 59.7。 |
| Qwen2.5-3B math average | 53.4 | GRPO 45.7;UFT 45.2 | Sampling SFT 高 7.7 / 8.2 points;再接 RL 可到 56.7。 |
| Qwen2.5-7B medical | 45.8 | OPSD 46.6 | new-task accuracy 低 0.8;prior average 51.6 高于 OPSD 50.1。 |
| Olmo-3-7B chemistry | 58.3 | OPSD 59.7 | new-task accuracy 低 1.4;prior average 61.7 为表中最高。 |
一个支持作者机制解释的 control 是跨模型数据错配:用 Olmo-boosted data 训练 Qwen,chemistry 只有 57.33%,低于 vanilla SFT 的 61.8%;把 Qwen-boosted 与 original data 各混一半,得到 62.14%,落在 vanilla SFT 与完整 Qwen Sampling SFT 之间。它说明 boosted data 的效果依赖目标 base model,不只是把 expert answer 改写得更流畅。
不过,全部结果都是单次 point estimate。论文没有 multi-seed、confidence interval,也没有把 sampling compute 与所有 baselines 的总生成成本放在同一张表里。medical correctness 还依赖 GPT-5-mini judge,因此 0.8 point 的差异不宜过度解读。
Q5. 这条路线下一步应该怎样验证?
最需要的实验是把 exact sampler、greedy approximation 和简单 rewrite 放在同一 compute budget 下比较。
第一组对照应实现论文里的完整 acceptance ratio,至少在较短 sequences 上验证 empirical stationary distribution。第二组保留当前 higher likelihood only 规则。第三组直接生成多个 conditioned rewrites 后取 likelihood 最高者。三组固定 proposal calls 与 token budget,才能判断 MCMC structure 是否真的贡献了额外效果。
数据方面,应明确 SFT 前是否过滤 is_correct=0,并同时报告过滤前后样本数、任务覆盖与最终 accuracy。若保留错误 rows,就需要解释它们为何仍属于 C;若过滤,则数据生成成本和 selection bias 都会改变。
最后,应该发布 boosted datasets、accepted proposal traces 与 checkpoints,并补 multi-seed。当前仓库只包含 chemistry/math generation 与 evaluation scripts,没有 medical generation pipeline,也没有仓库 license。
Q6. 最终应该怎样评价这篇论文?
data shaping 值得继续研究,实验显示它能改善新任务准确率与旧能力保留之间的折中;“MCMC 保证”与 released algorithm 之间仍有明显缺口。
这篇论文适合做 post-training、distillation 与 data curation 的读者。我的判断是:idea 比当前实证更成熟。它给出了一个清楚的问题表述,也展示了几组有说服力的结果;下一步若能把 exact target、approximate sampler 与 released data 对齐,研究价值会更扎实。
主要来源:论文 v1 全文与附录、官方仓库 revision 6d3e9f0bfaa98dcca534247dd35dc1b33dd8c428。代码检查日期:2026-10-06。仓库未发布 boosted datasets、training checkpoints 或 medical generation pipeline。
留言