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 遗忘更少

  1. 前向 KL vs 反向 KL: SFT 前向 KL(覆盖新分布 → 牺牲旧能力);RL 反向 KL(仅在已探索区域更新)。但即使移除 KL 惩罚,RL 仍抗遗忘。
  2. 稀疏更新 vs 密集更新: SFT 对每个 token(含风格 token)施加均匀监督;RL 具有数据依赖的正则化 + 更稀疏的参数更新。
  3. 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 软化回归。

相关笔记