SFT, RL, and On-Policy Distillation Through a Distributional Lens
元信息
- 原文标题: SFT, RL, and On-Policy Distillation Through a Distributional Lens
- 作者: nrehiew (wh.)
- 来源: nrehiew.github.io
- 日期: 2026
- 类型: 博客文章(含原创实验)
核心论点
通过**分布视角(distributional lens)**理解语言模型的后训练(post-training):每种后训练方法以不同方式重塑模型的输出分布。关键区分因素不是算法类别(RL vs 蒸馏),而是训练是否使用 on-policy 数据——即模型自身生成的数据。On-policy 是提升能力同时避免灾难性遗忘的”承重构件”。
三种方法对比
1. SFT(监督微调)
- 目标分布: 固定的外部数据集分布
- 梯度模式: 在整个分布上施加均匀的 token 级别压力
- KL 方向: 前向 KL(mode-covering,模式覆盖)→ 为覆盖新模式而牺牲旧模式
- 核心问题: 没有机制保持接近起始分布 → 灾难性遗忘
2. RL(强化学习)
- 目标分布: 隐式的——当前分布下”最近的”能解决问题的策略
- 梯度模式: 仅通过 on-policy 样本传递;奖励充当过滤器(0/1 奖励 ≈ rejection sampling)
- KL 方向: 反向 KL(mode-seeking,模式寻求)→ 保持在模型已访问区域附近
- 优势: 遗忘更少,因为更新被约束在模型已有的分布区域
3. OPD(On-Policy 蒸馏)
- 目标分布: 教师分布,但作用于学生自己生成的前缀上
- 梯度模式: 逐 token KL 匹配,on-policy 前缀
- 变体: OPSD(On-Policy Self-Distillation)——教师 = 学生 + 参考答案前缀
- 定位: 混合方法:学生生成数据(如 RL),教师提供信号(如 SFT)
关键实验(Minimal Code Editing 任务)
| 配置 | pass@1 | 通用编码能力 | 遗忘程度 |
|---|---|---|---|
| SFT 教师 | 0.775 | 严重遗忘 | 高 |
| RL 教师 | 0.792 | 保持 | 低 |
| OPD 学生(SFT 教师) | ~0.79 | 保持 | 低 |
| OPD 学生(RL 教师) | ~0.80 | 保持 | 低 |
惊人发现: OPD 学生无论使用 SFT 教师还是 RL 教师,表现相似且都优于 SFT 教师——on-policy 数据比教师质量更重要。
为什么 RL/OPD 遗忘更少
- 前向 KL vs 反向 KL: SFT 前向 KL(覆盖新分布 → 牺牲旧能力);RL 反向 KL(仅在已探索区域更新)。但即使移除 KL 惩罚,RL 仍抗遗忘。
- 稀疏更新 vs 密集更新: SFT 对每个 token(含风格 token)施加均匀监督;RL 具有数据依赖的正则化 + 更稀疏的参数更新。
- On-policy 数据(作者偏好解释): 二元奖励下 RL ≈ rejection sampling。最优策略 = 所有最优策略中距离当前策略最近的那个 → 隐式约束低 KL 散度。
学生为何能超越教师
- OPD 使用学生生成的状态 → 教师在学生前缀上给出建议(而非教师自己的前缀)
- KL 匹配 ≠ 奖励最大化。教师分布包含风格、不确定性、替代选择等信息
- 分布塑造(distributional shaping):围绕新能力发生模式坍缩(mode collapse)可以提升性能
行业流水线
预训练 → SFT → RL → OPD(最终融合阶段)
- GLM 5、DeepSeek V4: 用 OPD 作为最终阶段合并各专家能力
- MiMo-V2 Flash: 数学/代码偏好 RL;创意写作/知识偏好蒸馏
- 模式: RL 训练专家 → OPD 合并 → 最终模型常超越 RL 教师
作者结论
- On-policy 数据是提升能力同时避免遗忘的”承重构件”
- 理想算法应结合:蒸馏的密度 + RL 的无偏性 + 二者共有的 on-policy 属性
- 信用分配(credit assignment)仍为未解决问题
实践启示
实用策略: 通过 SFT 过度训练一个专用模型,然后用 OPD 把它”蒸馏回”通用模型,在保留通用能力的同时获取专业能力。即:先 SFT 极端专业化,再 OPD 软化回归。
相关笔记
- insights — 分布视角深度分析
- method-comparison — 三种方法详细拆解