| # OPSD 论文讲解 — 用于 PPT 汇报 |
|
|
| **论文**: Self-Distilled Reasoner: On-Policy Self-Distillation for Large Language Models |
| **arXiv**: 2601.18734v3, 2026年3月 |
| **作者**: Siyan Zhao (UCLA), Zhihui Xie (HKU), Mengchen Liu, Jing Huang, Guan Pang, Feiyu Chen (Meta), Aditya Grover (UCLA) |
| **代码**: https://github.com/siyan-zhao/OPSD |
|
|
| --- |
|
|
| ## 一、解决什么问题 |
|
|
| LLM reasoning 的 post-training 有三条主流路线,各有硬伤: |
|
|
| | 方法 | 优点 | 痛点 | |
| |------|------|------| |
| | **SFT** | 信号密(每 token 都有 label) | Off-policy → exposure bias(训练分布≠推理分布) | |
| | **GRPO/RLVR** | On-policy → 无 exposure bias | 信号稀(整条序列只有 0/1 reward,所有 token 一视同仁) | |
| | **On-Policy Distillation** | On-policy + 信号密 | 需要额外的更大 teacher 模型 | |
|
|
| **OPSD 的目标**:能不能同时拿到 on-policy + dense signal + 不要外部 teacher? |
|
|
| --- |
|
|
| ## 二、核心思想(一句话) |
|
|
| > **同一个模型,给它不同的 context,就分裂出了 teacher 和 student。** |
|
|
| - **Student**:只看题目 x,生成答案 |
| - **Teacher**:看题目 x **+ 标准答案** y*(privileged information),评估 student 的答案 |
| |
| 两个角色共享同一份权重 p_θ,区别仅在于 prompt 里有没有标准答案。 |
| |
| --- |
| |
| ## 三、Figure 1 详解(主图,最重要) |
| |
| 这张图是整个方法的完整信号流,从左到右分 4 个区域: |
| |
| ``` |
| ┌─────────────┐ ┌──────────────────────────────────────┐ ┌─────────────────────┐ |
| │ Dataset │ │ On-Policy Self-Distillation │ │ Learning Objective │ |
| │ S={(x,y*)} │ │ │ │ │ |
| │ │ │ ┌─────────────┐ ┌─────────────────┐ │ │ Per-Token Divergence│ |
| │ x: Problem │──→│ │Student Prompt│ │ Teacher Prompt │ │──→│ │ |
| │ y*: CoT+Ans │ │ │ x only │ │ x AND y* │ │ │ D(P_T(·|x,y*,ŷ<n) │ |
| │ │ │ └──────┬──────┘ └───────┬─────────┘ │ │ || P_S(·|x,ŷ<n)) │ |
| │ 同一个 LLM │ │ ↓ ↓ │ │ │ |
| │ p_θ │ │ P_S(·|x) P_T(·|x,y*) │ │ 梯度仅流经 Student │ |
| │ │ │ │ │ │ │ 的 logits │ |
| │ │ │ ŷ ~ P_S(·|x) 评估 ŷ 上的 │ │ │ |
| │ │ │ ↑ on-policy 每个位置概率 │ │ │ |
| │ │ │ │ 采样生成 ↓ │ │ │ |
| │ │ │ └──── ŷ ──────→ P_T(·|x,y*,ŷ<n) │ │ │ |
| └─────────────┘ └──────────────────────────────────────┘ └─────────────────────┘ |
| ``` |
| |
| **四个关键步骤**(PPT 可用箭头动画逐步展示): |
| |
| 1. **数据准备**:从 reasoning dataset S={(x_i, y_i*)} 采样一对 (题目, 标准答案) |
| 2. **Student 生成 rollout**:Student prompt 只给题目 x,on-policy 采样生成 ŷ ~ p_S(·|x) |
| 3. **Teacher 评估 rollout**:Teacher prompt 同时给题目 x 和标准答案 y*,在 Student 生成的**同一条轨迹 ŷ** 上做一次 forward pass,得到每个位置的 teacher 概率分布 |
| 4. **计算 per-token divergence**:每个 token 位置 n,算 teacher 和 student 的概率分布距离 D(p_T || p_S),**梯度只通过 student 的 logits 反传** |
| |
| --- |
| |
| ## 四、Loss 公式拆解 |
| |
| ### 4.1 总 Loss |
| |
| ``` |
| L_OPSD(θ) = E_{(x,y*)~S} E_{ŷ~p_S(·|x)} Σ_{n=1}^{|ŷ|} D(p_T(·|x,y*,ŷ_{<n}) || p_S(·|x,ŷ_{<n})) |
| ``` |
| |
| - 外层期望:遍历数据集 |
| - 内层期望:student 自己 on-policy 采样(不是用标准答案!) |
| - 求和:遍历生成的每个 token 位置 |
| - D:可以是 Forward KL、Reverse KL、JSD 等(实验表明 **Forward KL 最好**) |
| |
| ### 4.2 信号怎么来的——直觉理解 |
| |
| 在每个 token 位置 n,teacher 和 student 看到的前缀相同(都是 ŷ_{<n}),但 teacher 额外知道标准答案。所以: |
| |
| - 如果 student 下一步要走偏,teacher(因为看过答案)会给出不同的概率分布 → **divergence 大** → 梯度大 → 重点学习 |
| - 如果 student 下一步选择正确,teacher 和 student 分布一致 → **divergence 小** → 几乎不更新 |
| |
| **这就是 dense signal 的来源:teacher 在每个 token 位置独立告诉 student "你这一步该怎么调"。** |
| |
| ### 4.3 Per-Token Pointwise KL Clipping |
| |
| 论文发现一个严重问题:**stylistic tokens(如换行、连接词)的 KL 远大于数学推理 token**。 |
| |
| ``` |
| Token 类型 │ 典型 KL 值 |
| ─────────────────┼────────── |
| 数学符号/数字 │ 0.02 ~ 0.1 |
| 推理连接词 │ 0.5 ~ 2.0 |
| 格式/风格 token │ 5.0 ~ 50.0 ← 主导了整个 loss! |
| ``` |
| |
| **修复:对每个 token-vocabulary entry 做 clipping** |
| |
| ``` |
| D_clip(p_T || p_S) = 1/|ŷ| Σ_n Σ_{v∈V} min(ℓ_{n,v}, τ) |
| ``` |
| |
| clip 掉极端大的值,防止风格 token 劫持训练信号。 |
| |
| --- |
| |
| ## 五、Figure 2:Teacher vs Student Prompt 对比 |
| |
| ``` |
| ┌─────────────────────────────────────────────────────┐ |
| │ Student Prompt (红色) │ |
| │ │ |
| │ Problem: Find the derivative of f(x) = 3x² + 2x - 5│ |
| │ at x = 2 │ |
| │ Answer: │ |
| └─────────────────────────────────────────────────────┘ |
| |
| ┌─────────────────────────────────────────────────────┐ |
| │ Teacher Prompt (绿色) │ |
| │ │ |
| │ Problem: Find the derivative of f(x) = 3x² + 2x - 5│ |
| │ at x = 2 │ |
| │ Here is a reference solution: │ |
| │ First find f'(x) = 6x + 2, then evaluate at x = 2:│ |
| │ f'(2) = 6(2) + 2 = 14 │ |
| │ After understanding the reference solution, │ |
| │ please try to solve this problem using your own │ |
| │ approach below: │ |
| │ Answer: │ |
| └─────────────────────────────────────────────────────┘ |
| ``` |
| |
| **关键细节**: |
| - Teacher **不生成** token,只做 prefill(forward pass) |
| - Teacher 的 prompt 里包含完整的标准答案 |
| - "rationalization" 是隐式的——teacher 看了答案后,自然会在每个位置给出更好的概率分布 |
| |
| --- |
| |
| ## 六、与 SFT / GRPO 的本质区别 |
| |
| ### 6.1 Table 1(论文核心对比表) |
| |
| | | SFT/Off-Policy | GRPO | On-Policy Distillation | **OPSD (Ours)** | |
| |---|---|---|---|---| |
| | On-Policy Data | ✗ | ✓ | ✓ | **✓** | |
| | Dense Learning Signal | ✓ | ✗ | ✓ | **✓** | |
| | Low Sampling Cost | ✓ | ✗ | ✗ | **✓** | |
| | No External Teacher | ✓ | ✓ | ✗ | **✓** | |
| |
| OPSD 是唯一四项全 ✓ 的方法。 |
| |
| ### 6.2 信号密度对比 |
| |
| ``` |
| SFT: 每个 token 有信号,但 ─────── 训练用别人的轨迹,推理走自己的轨迹 |
| (分布错位 → 越训越偏) |
| |
| GRPO: 自己的轨迹,但 ──────────── 2000 个 token 共享一个 0/1 reward |
| (信用分配失败 → 浪费样本) |
| rollout: [t1 t2 t3 ... t2000] → reward = 0 |
| ↑ ↑ ↑ ↑ |
| 全部受到相同惩罚 |
| |
| OPSD: 自己的轨迹 + ──────────── 每个 token 独立获得 teacher 反馈 |
| (精准 + 高效) |
| rollout: [t1 t2 t3 ... t2000] |
| ↑ ↑ ↑ ↑ |
| 各自不同的 KL divergence |
| ``` |
| |
| ### 6.3 采样效率对比(Figure 3 数据) |
| |
| | 指标 | OPSD | GRPO | |
| |------|------|------| |
| | 每题采样数 | **1 条** | 8 条 | |
| | 每条长度 | **1K tokens** | 16K tokens | |
| | 收敛步数 | **100 步** | 数百步 | |
| | 计算量差距 | **~100x 更省** | — | |
| |
| GRPO 还有 **reward diversity collapse** 问题(Figure 3 右图):当所有 8 条 rollout 全对或全错时,advantage = 0,梯度为零,白算了。100 步之后超过一半的 batch 处于这种状态。 |
| |
| --- |
| |
| ## 七、Algorithm 1 伪代码 |
| |
| ``` |
| Require: 推理数据集 S = {(x_i, y_i*)}; 语言模型 p_θ; divergence D (e.g., JSD_β) |
| |
| 1: Let p_S(·|x) 和 p_T(·|x,y*) 为同一模型在不同 conditioning 下的策略 |
| 2: while not converged do |
| 3: Sample minibatch B ⊂ S |
| 4: for all (x, y*) ∈ B do |
| 5: Sample on-policy response ŷ ~ p_S(·|x) |
| 6: Compute token-wise divergence along student rollout: |
| ℓ(x,y*) ← 1/|ŷ| Σ_n D(p_T(·|ŷ_{<n},x,y*) || p_S(·|ŷ_{<n},x)) |
| 7: Calculate loss L_OPSD(θ) ← 1/|B| Σ_{(x,y*)∈B} ℓ(x,y*) and update θ |
| ``` |
| |
| --- |
| |
| ## 八、实验结果 |
| |
| ### 8.1 数学推理 Benchmark(Table 2) |
| |
| | Method | AIME24 | AIME25 | HMMT25 | Average | |
| |--------|--------|--------|--------|---------| |
| | **Qwen3-8B** | | | | | |
| | Base (Instruct) | 75.8 | 65.6 | 43.9 | 61.8 | |
| | + SFT | 72.3 | 64.2 | 42.9 | 59.8 | |
| | + GRPO | 76.4 | 68.9 | **46.7** | 64.0 | |
| | **+ OPSD** | **77.8** | **70.8** | 45.8 | **64.8** | |
| | **Qwen3-4B** | | | | | |
| | Base (Instruct) | 74.9 | 66.4 | 42.2 | 61.2 | |
| | + SFT | 70.2 | 62.3 | 43.4 | 58.6 | |
| | + GRPO | 75.6 | 68.1 | 44.4 | 62.7 | |
| | **+ OPSD** | **76.4** | **68.3** | **46.1** | **63.6** | |
| | **Qwen3-1.7B** | | | | | |
| | Base (Instruct) | 51.5 | 36.7 | 23.1 | 37.1 | |
| | + SFT | 48.4 | 36.3 | 22.7 | 35.8 | |
| | + GRPO | 51.1 | 38.3 | 23.7 | 37.7 | |
| | **+ OPSD** | **57.2** | **43.9** | **29.2** | **43.4** | |
| |
| **关键观察**: |
| - SFT 在所有尺度上都**退步**了(因为 ground truth 的 reasoning 风格较简洁,SFT 模仿了风格但丢了推理能力) |
| - OPSD 在小模型(1.7B)上提升最大:+6.3 average,远超 GRPO 的 +0.6 |
| - GRPO 在某些 benchmark 上后期会 **collapse**(entropy 崩塌) |
| |
| ### 8.2 关键消融 |
| |
| **Divergence 目标**(Table 3, Qwen3-1.7B, AIME25): |
| |
| | Method | Base | Step 50 | Step 100 | |
| |--------|------|---------|----------| |
| | Forward KL(P_T ∥ P_S) | 36.7 | **43.9** | **41.1** | |
| | Reverse KL(P_S ∥ P_T) | 36.7 | 37.5 | 35.0 | |
| | JSD (β=0.5) | 36.7 | 36.9 | 39.0 | |
| |
| **Forward KL 一骑绝尘**。Reverse KL 和 JSD 几乎没有正向效果。 |
| |
| **Per-Token KL Clipping**(Figure 4):没有 clipping 的训练在 ~25 步后 collapse,有 clipping 稳定收敛。 |
| |
| **Generation Length**(Figure 5):1024 和 4096 对比,增加长度不一定更好。前期 token 对学习更关键(后期 token 因 student 前缀足够长,teacher 和 student 趋于一致)。 |
| |
| **Full-Vocab vs Sampled-Token Distillation**(Table 4): |
| |
| | Method Variant | AIME25 | HMMT25 | |
| |---|---|---| |
| | Full-vocabulary logit distillation | **84.1** | **60.0** | |
| | Sampled-token distillation | 82.1 | 57.3 | |
| |
| Full-distribution 一致更优,但内存开销更大。 |
| |
| --- |
| |
| ## 九、迁移到 Embodied 任务的问题分析 |
| |
| ### 9.1 问题现象 |
| |
| > "Embody 任务生成 JSON,非常结构化,被标准答案带偏了。OPSD 对表达风格的拟合特别严重,有点像 SFT。训练后模型不再回答结构化的轨迹预测,反而越来越说自然语言。" |
| |
| ### 9.2 根因分析 |
| |
| #### 根因 1:KL divergence 被格式 token 主导 |
| |
| 论文自己在 Table 5 和 Section 4.3.3 已经发现:**style tokens 的 KL 远大于 content tokens**。在数学推理中这只是需要 clip 的噪声,但在 JSON 输出场景中变成了致命问题: |
| |
| ``` |
| 数学推理场景: |
| content token (∫, x², =) → KL 小 |
| style token (换行, "so") → KL 大但被 clip → 影响有限 |
| |
| JSON 输出场景: |
| 结构 token ({, }, "action":) → 这些是 CONTENT 还是 STYLE? |
| 自然语言 token ("I think...") → teacher 偏好的表达方式 |
| |
| → OPSD 分不清结构 token 和风格 token |
| → 自然语言表达的 teacher 概率分布和标准答案的 JSON 格式分布差异巨大 |
| → 模型被拉向 teacher 的"自然语言 rationalization" 风格 |
| ``` |
| |
| #### 根因 2:Teacher 的 Privileged Information 方向错误 |
| |
| OPSD 的 teacher prompt 是:"看了标准答案后,用自己的方式解题"。在数学中,标准答案和 student 的输出是同一种"语言"(都是数学推导)。但在 embodied 中: |
| |
| ``` |
| 标准答案 y*: {"action": "pick", "target": [0.3, 0.5, 0.1], "gripper": "close"} |
| Student 输出: {"action": "pick", "target": [0.31, 0.48, 0.12], ...} |
| |
| Teacher 看了 y* 后的 "rationalization": |
| → Teacher 会倾向于用自然语言解释 WHY 这个动作合理 |
| → 而不是输出相似的 JSON |
| → 因为 teacher prompt 说 "please try to solve this problem using your own approach" |
| → 模型 "自己的方式" 就是用自然语言说话 |
| ``` |
| |
| **这就是看到的现象:模型越训越像在"说话"而不是"输出 JSON"。** |
| |
| #### 根因 3:OPSD 的信息泄漏问题(RLSD 论文证明) |
| |
| RLSD 论文(2604.03128)证明了 OPSD 有不可消除的信息泄漏: |
| |
| ``` |
| L_OPSD = L* + I(Y_t; R | X, Y_{<t}) |
| ``` |
| |
| 这个互信息项 I(Y_t; R | X, Y_{<t}) 驱动模型学习 "从 prompt 猜标准答案" 的 shortcut。在数学中这只是偶尔引用 "reference solution",但在 JSON 场景中: |
| - 标准答案 R 包含精确的坐标数值 |
| - 模型学会了 "从 prompt 推断应该输出什么格式" |
| - 当格式信号和内容信号冲突时,格式信号赢了 → **结构化输出退化为自然语言** |
| |
| ### 9.3 为什么数学不受影响而 Embodied 受影响 |
| |
| | 维度 | 数学推理 | Embodied JSON | |
| |------|---------|--------------| |
| | 输出格式 | 自由文本(数学推导) | 严格 JSON schema | |
| | 标准答案 vs Student 输出 | 同种语言(都是推导过程) | 不同语言(JSON vs 自然语言 rationalization) | |
| | style token 的影响 | 边缘(clip 即可) | 致命(格式本身就是 content) | |
| | Teacher rationalization 方向 | 和 student 输出方向一致 | 和 student 输出方向**正交** | |
| | 信息泄漏后果 | 偶尔引用 "reference" | 整体输出格式崩塌 | |
| |
| --- |
| |
| ## 十、可能的解决方向 |
| |
| 基于 OPD 知识体系中的最新进展: |
| |
| 1. **RLSD 替代 OPSD**(2604.03128):用环境 reward 控制**方向**,teacher log-ratio 只控制**幅度**。这样即使 teacher rationalization 风格不同,也不会拉偏输出格式。 |
| |
| 2. **格式 token masking**:在 KL 计算中,屏蔽 JSON 结构 token(`{`, `}`, `"action":` 等),只在 value 位置(坐标数值等)计算 divergence。 |
| |
| 3. **改用 ROPD(Rubric-based, 2605.07396)**:完全不用 logit 蒸馏,而是用 rubric 评分("轨迹是否到达目标?" "坐标误差是否小于阈值?")作为 reward。 |
| |
| 4. **SRPO 范式(2511.15605)**:用成功轨迹的 latent world model 表示作为 progress reward,完全绕过 teacher logit 的格式污染问题。 |
| |
| --- |
| |
| ## 附:关键论文索引 |
| |
| | 简称 | 全称 | arXiv | 核心贡献 | |
| |---|---|---|---| |
| | OPSD | Self-Distilled Reasoner | 2601.18734 | 同一模型自蒸馏,teacher 看 gt 答案。100 步超越 GRPO。 | |
| | RLSD | Self-Distilled RLVR | 2604.03128 | 证明 OPSD 泄漏理论根源,提出方向×幅度分离。 | |
| | ROPD | Rubric-based OPD | 2605.07396 | Rubric 替代 logits,黑盒兼容,10x 样本效率。 | |
| | SRPO | Self-Referential Policy Optimization | 2511.15605 | VLA 场景 self-referential RL,world model progress reward。 | |
| | Revisiting OPD | Failure Modes and Fixes | 2603.25562 | 三个 failure modes + Teacher top-K LSM 修复。 | |
| | Rethinking OPD | Phenomenology and Recipe | 2604.13016 | 两个成功必要条件 + progressive alignment 机制。 | |
| |