一文讲透 OPD:为什么它不是“抄老师答案”,而是在学生真实犯错路径上纠偏?

发布时间:2026/7/7 15:09:01
一文讲透 OPD:为什么它不是“抄老师答案”,而是在学生真实犯错路径上纠偏? 摘要很多人第一次接触 OPD也就是 On-Policy Distillation同策略蒸馏时很容易被 KL、top-k、full-vocab、sampled-token 这些技术细节绕进去。但如果只盯公式反而会错过 OPD 真正有价值的地方。OPD 的核心不是“学生模型模仿老师模型”而是学生模型先按照自己的当前能力生成答案然后老师模型在学生真实生成出来的路径上进行纠偏。这和传统 SFT、普通 KD 有本质区别。SFT 更像让学生背标准答案普通 KD 更像让学生模仿老师的输出分布而 OPD 更像真实教学学生先自己做题老师在它真正出错的位置告诉它应该如何调整。本文用尽量直观的方式讲清楚 OPD 到底在优化什么以及 sampled-token、top-k、full-vocab、forward KL、reverse KL、DeepSeek V4 多专家蒸馏之间到底是什么关系。关键词大模型、LLM、知识蒸馏、OPD、On-Policy Distillation、SFT、RL、KL 散度、DeepSeek、模型训练一、先不要从公式理解 OPD很多技术文章讲 OPD一上来就会讲 KL 散度、k1/k2/k3、top-k、full-vocab。这些当然重要但对于刚开始理解 OPD 的人来说最应该先抓住的不是公式而是它背后的训练逻辑。普通 SFT 的训练方式是给模型一份标准答案让模型学习在标准答案前缀下继续生成。问题在于模型真实推理时前面的内容并不一定是标准答案而是它自己生成出来的内容。这就产生了一个非常关键的问题训练时模型看到的是“正确前缀”推理时模型看到的是“自己生成的前缀”。这两个状态是不一样的。举个例子。标准答案可能是第一步分析题意第二步列公式第三步计算。但学生模型自己推理时可能第一步就写成我先猜一个答案然后再解释。这时候如果模型从来没有在这种“自己写歪了的前缀”上接受过训练它就很容易一路错下去。所以 OPD 的价值就出现了。OPD 不是让学生模型只学习老师走过的正确路径而是让学生模型先自己走然后老师模型在学生真实走出来的路径上纠偏。一句话理解OPD 的本质是让学生模型在自己真实会遇到的状态上接受老师监督。这也是它能够缓解 exposure bias 的关键原因。二、OPD 和 SFT、普通 KD 到底有什么区别我们可以用一个非常简单的比喻来理解。SFT 像什么老师给你一份标准答案你照着背。普通 KD 像什么老师不仅给答案还告诉你每一步哪些词更可能。OPD 像什么你自己先做题哪怕做错也没关系老师就在你真实写出来的过程中一步一步告诉你哪里该加强、哪里该压低下一步哪些选择更合理。所以 OPD 的核心差异不只是“老师有没有给监督信号”而是监督信号发生在什么位置。SFT 和普通 KD 通常更多发生在数据集路径上也就是 off-policy。OPD 则发生在学生模型自己生成的路径上也就是 on-policy。这就是 OPD 最关键的地方prefix 必须来自 student 自己的 rollout。prefix 可以简单理解为当前 token 前面的上下文。不同训练方法的区别可以这样看prefix 来源代表方法本质数据集答案SFT / 普通 KDoff-policy老师生成teacher-generated KD仍偏 off-policy学生生成OPDon-policy真正的 OPD一定要让学生自己先生成然后老师在学生生成出来的 prefix 上提供监督信号。三、OPD 真正优化的是什么很多人会误以为 OPD 还是在优化“答案是否像老师”。其实不是。OPD 真正优化的是学生模型在真实推理状态下的行为分布。它的过程大概是学生模型先生成回答形成一串 student prefix老师模型在这些 prefix 上给出分布信号学生模型根据老师信号更新自己的策略。所以OPD 不是简单让学生模仿老师答案而是让学生在自己真实会走到的状态里把自己的 token 分布拉向老师的 token 分布。这和 SFT 的差异非常大。SFT 是你照着标准答案学。OPD 是你自己先做老师在你真实犯错的位置纠正你。这也是为什么 OPD 更像真实教学而不是简单复制。四、老师到底给什么信号理解 OPD一定要搞清楚 teacher signal也就是老师模型到底给学生什么监督信号。常见可以分成三类类型老师给什么优点缺点sampled-token只评价学生刚采样出来的 token成本低信号太少方差高top-k给出老师最看好的 K 个 token 分布稳定性更好有截断偏差full-vocab给整个词表分布信息最完整成本极高用教学比喻来说sampled-token OPD 是老师只批改你刚写出来的一个字。top-k OPD 是老师告诉你这里最推荐的几个候选字。full-vocab OPD 是老师把所有可能字的完整评分表都给你。所以这三者的本质区别不是名字不一样而是每一步 teacher 给 student 的信息量不同。sampled-token 最便宜但信号最薄。full-vocab 信息最完整但工程成本非常高。top-k 则是一个比较现实的工程折中。五、为什么 sampled-token OPD 容易不稳定sampled-token OPD 听起来很自然学生写一个 token老师评价这个 token。但问题是它的信息太少。假设学生在某一步生成了一个错误 token老师只告诉它这个 token 不太好。但老师没有告诉学生那么更好的选择是什么这就导致 sampled-token OPD 只知道“哪里不好”但不一定知道“应该往哪里改”。它有几个典型问题。第一单 token 信号太稀疏。一个 token 的 logprob gap 很容易被标点、格式词、特殊 token 干扰。第二student prefix 太偏时teacher 的下一个 token 判断也未必可靠。如果学生前面已经胡说八道了那么老师在这个错误上下文里给出的下一个 token 概率也不一定代表整条回答质量。第三tokenizer 不一致会制造假错误。同一个语义不同模型的 tokenizer 切法可能不同。如果只看 sampled-token就容易把切词差异误判成语义差异。所以 sampled-token OPD 最大的问题是便宜但信号太薄越长的推理任务越容易不稳定。六、为什么 top-k OPD 更适合普通团队起步top-k OPD 的思路很简单不要只看学生刚采样出来的 token而是看老师最推荐的 K 个 token。这样老师不只是说你这个词不好。而是说在这个位置我认为这些候选 token 更合理它们的概率大概是这样分布的。这比 sampled-token 稳定得多。尤其在长推理、Agent、多步骤任务里top-k 有几个明显优势信息量比 sampled-token 大成本比 full-vocab 小很多能减少单 token 噪声可以缓解梯度不稳定更接近 teacher 的局部思维模式。所以从工程实践角度看普通团队如果想尝试 OPD最现实的起点通常不是 sampled-token也不是 full-vocab而是top-k reverse KL OPD。sampled-token 太薄full-vocab 太贵top-k 往往是性价比最高的中间路线。七、KL 方向决定学生模型“怎么学老师”讲 OPD 时KL 方向也很关键。简单来说不同 KL 方向会影响学生模型学习老师的方式。KL 方向倾向适合场景forward KL覆盖老师的多种可能开放生成、多样性任务reverse KL收缩到老师最可靠路径数学、代码、工具调用、推理任务JSD折中兼顾稳定和多样性forward KL 更像尽量学全老师的所有风格。reverse KL 更像只学老师最可靠、最有把握的路径。这点非常重要。如果我们训练的是开放式写作模型希望它有多样性那么 forward KL 会更自然。但如果训练的是数学、代码、Agent、工具调用模型我们通常不希望模型“自由发挥”而是希望它走一条更稳定、更可靠的路径。所以这类任务通常更适合 reverse KL。一句话总结reverse KL 更适合推理型任务因为它会让学生模型向老师模型的高置信路径收缩。八、DeepSeek V4 的重点不是“用了 OPD”而是“多专家 full-vocab OPD”原文中提到 DeepSeek V4 的一个关键点它不是 sampled-token OPD也不是普通 top-k OPD而是在学生生成轨迹上做多教师 full-vocab reverse KL distillation。这里最重要的不是“OPD”这个词而是三个组合多教师学生生成轨迹full-vocab reverse KL。所谓多教师可以理解为先训练多个领域专家模型比如数学专家、代码专家、Agent 专家、指令跟随专家等。每个专家都在自己的领域里经过强化训练能力更强。然后再让一个通用 student 自己 rollout多个 expert teacher 在 student 的生成路径上提供分布监督。这样做的目的不是让 student 背某一个 expert 的答案而是把多个 expert 的能力吸收到一个统一模型里。这其实非常适合“专家能力合并”这个场景。更高级的是 full-vocab。full-vocab 意味着老师不是只告诉学生某几个 token 怎么选而是把整个词表层面的判断都提供出来。这当然信息最完整但工程代价也极高。所以 DeepSeek V4 这类方案的核心价值并不只是“用了 OPD”而是用强工程能力把多个专家模型的完整分布判断蒸馏进一个统一的通用模型。这不是普通小团队轻易可以完整复现的路线但它给了一个非常清晰的方向先用 SFT / RL 训练领域专家再用 OPD 把专家能力合并回 general model。九、teacher 不是越强越好还要看学生能不能学得动很多人做蒸馏时有一个误区只要 teacher 越强蒸馏效果就越好。但 OPD 里不是这么简单。OPD 成功还取决于一个非常关键的因素teacher 和 student 的 thinking pattern 是否对齐。也就是说在同一个 prefix 下teacher 和 student 的 top-k token 是否有足够重叠entropy 是否接近行为分布是否处在一个 student 能理解、能吸收的范围内。如果 teacher 和 student 的思维模式差太远就可能出现几个问题teacher 给的分布 student 接不住student 被硬拉到陌生模式loss 下降了但实际能力不一定提升严重时甚至可能退化。所以好的 teacher 不是单纯 benchmark 分数高而是要满足两个条件既比 student 有新增能力又和 student 有足够相似的思维接口。这点对实际 AI 项目也很有启发。不是随便找一个最强模型当老师就行而是要找一个学生模型能学得动、路径能对齐、能力又确实更强的 teacher。十、OPD 不能替代 RL还有一个非常重要的边界要说清楚OPD 是能力迁移不是能力发现。RL 的价值在于让模型探索新策略发现新的解法路径。OPD 更擅长的是把已有 teacher 或 expert 的能力迁移给 student。所以合理的 pipeline 不是用 OPD 替代 RL。更合理的是用 RL / verifier 训练 expert再用 OPD 把 expert 能力蒸馏回 general model。可以理解成先有 base model按领域训练多个 expert每个 expert 通过 SFT RL 增强再用多教师 OPD 合并最后得到统一的 general model。所以 OPD 更像 post-training 里的 glue。它的作用是把多个专家能力粘合回一个统一模型而不是凭空创造新能力。十一、最后用 5 句话总结 OPD第一句OPD 的本质是让模型在自己真实会遇到的状态上接受老师监督。第二句sampled-token、top-k、full-vocab 的差别本质是 teacher 每一步给多少信息。第三句reverse KL 更适合推理、代码、工具调用因为它让 student 收缩到 teacher 的可靠路径。第四句OPD 成功不只看 teacher 强不强还要看 teacher 和 student 的思维模式能不能对齐。第五句OPD 不能替代 RL它更适合把 RL 训练出来的专家能力合并回通用模型。结语如果只从公式看 OPD很容易把它理解成一种复杂版知识蒸馏。但从训练逻辑看OPD 的真正价值在于它让老师不再只站在标准答案路径上教学而是走到学生真实犯错的路径上教学。这也是它和 SFT、普通 KD 最大的区别。SFT 是背答案。KD 是模仿老师。OPD 是学生先自己做老师再在真实轨迹上纠偏。从大模型训练角度看这种方式更接近真实推理状态也更适合用于专家模型能力合并。所以理解 OPD 时不要只记住 sampled-token、top-k、full-vocab 这些名词。真正要记住的是OPD 不是让学生模型抄老师答案而是让老师模型在学生真实会走到的路径上把学生一步步拉回更可靠的行为分布。