方法详细拆解:SFT / RL / OPD

从数学原理、梯度行为、遗忘机制到工业实践,逐一对三种后训练方法进行拆解。


一、SFT(Supervised Fine-Tuning,监督微调)

数学形式

SFT 在固定数据集 上最小化交叉熵损失:

等价于最小化模型分布与经验目标分布之间的前向 KL 散度:

梯度行为

每个 token 获得均等的梯度信号,不论该 token 是推理关键步骤还是风格填充词:

灾难性遗忘机制

  1. 均匀压力: 所有 token 一律接受梯度更新,没有优先级区分
  2. 无距离约束: 前向 KL 不限制模型分布与起始分布的距离
  3. 全分布覆盖: 为匹配目标分布 ,模型可能丢弃 支持之外的模式(即原有能力)
旧分布 P₀               目标分布 Q
  /|\                    /|\
 / | \    前向 KL      / | \
/  |  \  ==========>  /  |  \
   |                    |   |
 旧模式被覆盖           新模式被引入

优势与局限

优势局限
实现简单,收敛稳定灾难性遗忘
可以利用海量离线数据测试时分布失配
计算效率高(无需在线采样)泛化差(复合误差)

二、RL(Reinforcement Learning,强化学习)

数学形式

使用策略梯度方法(如 REINFORCE)在 on-policy 样本上优化:

其中 通常是二元奖励(0/1), 控制 KL 惩罚强度。

REINFORCE + 二元奖励 = Rejection Sampling

时:

  1. 从当前策略采样 个 response:
  2. 筛选 的样本
  3. 在正样本上做加权监督学习

这等价于 rejection sampling,收敛到的策略为:

反向 KL 的隐式作用

RL 的反向 KL 属性来自 on-policy 采样本身,而非显式 KL 惩罚:

  • 模型只能在自己的分布中采样 → 正样本自然聚集在当前分布附近
  • 更新方向朝向”最近的可行策略”
  • 移除显式 KL 惩罚后,on-policy 采样仍提供隐式正则化

稀疏更新模式

SFT 更新:  ████████████████████  (每个 token 均匀更新)
RL 更新:   ██      ████    ██    (仅在正样本的 token 上更新)

正样本比例通常很低(如 pass@1 ≈ 0.1-0.3),意味着大部分采样结果被丢弃 → 稀疏的参数更新 → 更少的分布偏移。

优势与局限

优势局限
遗忘少(隐式 KL 约束)信号稀疏(二元奖励信息少)
泛化好(状态分布匹配)需要在线采样(计算开销大)
不依赖教师质量信用分配困难
可突破 SFT 上限训练不稳定(策略梯度方差大)

三、OPD(On-Policy Distillation,On-Policy 蒸馏)

数学形式

学生模型 在自己的前缀上接收教师 的分布监督:

关键差异:前缀 学生生成(on-policy),而非来自教师的数据集。

OPSD 变体(On-Policy Self-Distillation)

OPSD 是 OPD 的一种特例,教师 = 学生 + 参考答案前缀:

其中:

  • 参考答案前缀 :给教师提供正确的”起点”,学生在此基础上自由生成
  • Per-token clipping: 防止 KL 在某些 token 上过大
  • Style token 掩码: 排除风格/格式 token,仅对内容 token 进行蒸馏

为什么 OPD 学生能超越教师

SFT:     教师数据 → 学生模仿(学生只在教师分布中学习)
OPD:     学生探索 → 教师在学生路径上指导(教师适应学生分布)
  1. 前缀由学生产生: 教师看到的是学生实际遇到的分布,而非教师自己的分布
  2. KL 保留丰富信息: 教师分布包含不确定性、替代方案、风格偏好
  3. 模式坍缩可能有利: 围绕正确方向收缩分布 → 性能提升
  4. 教师质量上限较低: 实验表明 SFT 教师和 RL 教师产出的 OPD 学生表现相似

优势与局限

优势局限
遗忘少(on-policy 属性)需要在线采样
信号密集(逐 token KL)教师偏差可能传导
泛化好(状态分布匹配)计算开销高于 SFT
可超越教师信用分配仍不够精细
结合 RL 和蒸馏优点OPSD 依赖参考答案质量

四、工业流水线

标准流水线

flowchart LR
    A[预训练<br/>Pretrain] --> B[SFT<br/>监督微调]
    B --> C[RL<br/>强化学习]
    C --> D[OPD<br/>On-Policy 蒸馏]
    D --> E[最终模型]

    style A fill:#e1f5fe
    style B fill:#fff3e0
    style C fill:#fce4ec
    style D fill:#e8f5e9
    style E fill:#f3e5f5

各阶段作用

阶段作用特点
预训练构建基础语言能力分布大规模无监督学习
SFT建立指令遵循能力离线数据,可能引入遗忘
RL提升推理/任务解决能力On-policy,保持分布接近
OPD融合多专家能力,软化回归On-policy 蒸馏,最终稳定化

行业实践

GLM 5 / DeepSeek V4 模式:

RL 训练多个专家 → OPD 融合 → 最终模型
  • RL 阶段可能训练多个专家(数学专家、代码专家等)
  • OPD 作为最终融合阶段,杂交各专家能力
  • 最终模型常超越单个 RL 教师

MiMo-V2 Flash 模式:

  • 数学/代码推理:偏好 RL(需要精确的逐步推理)
  • 创意写作/知识:偏好蒸馏(需要丰富的分布信息)
  • 根据不同能力域选择不同后训练策略

完整流水线的 Mermaid 图

flowchart TB
    subgraph 预训练阶段
        A[大规模预训练<br/>Base Model]
    end

    subgraph SFT阶段
        B[指令数据 SFT<br/>建立指令遵循]
    end

    subgraph RL阶段
        C1[RL 专家 1<br/>数学推理]
        C2[RL 专家 2<br/>代码生成]
        C3[RL 专家 3<br/>其他领域]
    end

    subgraph OPD阶段
        D[OPD 融合<br/>多专家蒸馏]
    end

    subgraph 部署
        E[最终统一模型]
    end

    A --> B
    B --> C1
    B --> C2
    B --> C3
    C1 --> D
    C2 --> D
    C3 --> D
    D --> E

    style A fill:#e1f5fe,color:#000
    style B fill:#fff3e0,color:#000
    style C1 fill:#fce4ec,color:#000
    style C2 fill:#fce4ec,color:#000
    style C3 fill:#fce4ec,color:#000
    style D fill:#e8f5e9,color:#000
    style E fill:#f3e5f5,color:#000

作者推荐策略

实用方案: 先用 SFT 将模型极端专业化(不担心遗忘),再用 OPD 把专业能力”蒸馏回”通用基础模型。流程:

基础模型 → SFT(过度训练,最大化专项能力)→ OPD(恢复通用能力 + 保留专项能力)

这比直接精细平衡 SFT 数据配比更实用:先走极端,再软化回归。


五、三种方法终极对比表

维度SFTRLOPD
目标分布固定外部数据集经验分布隐式:教师分布(on-policy 前缀)
数据来源离线,预先收集On-policy,在线采样On-policy,在线采样
KL 方向前向 KL(mode-covering)反向 KL(mode-seeking)前向 KL(但 on-policy 约束)
遗忘程度
泛化能力差(分布失配)
更新密度密集(每个 token 均匀)稀疏(仅正样本)密集(on-policy 区域内)
信用分配Token 级均匀标量奖励(最稀疏)Token 级 KL(较丰富)
计算效率高(无采样开销)低(需在线采样)中(需在线采样)
训练稳定性低(策略梯度方差)中高(KL 匹配稳定)
教师依赖强(数据质量决定上限)无教师依赖中等(教师质量影响有限)
信号丰富度中(one-hot 目标)低(标量奖励)高(全分布 KL)

相关笔记