RISE:用「自外推教师」把 RLVR 的稀疏回报变成稠密逐 token 监督
- 关联论文:2609.05295
- 作者:flyP
- 更新:2026-09-07
一句话结论
RISE(Recursive Improvement via Self-Extrapolating Policy Distillation)把 on-policy distillation(OPD)卡了很久的「教师从哪来」问题拆掉:教师不用外部模型、不用 privileged context,直接从学生自己的 RLVR 训练轨迹里外推出一个「未来自我」,再用 RLVR 的 outcome reward 锚定方向、OPD 的逐 token 信号精修,构成一个「递归自改进」的训练回路。在数学、STEM、代码、多轮 agentic 任务上一致超过纯 RLVR 与既有 on-policy self-distillation。
解决什么真问题
LLM 后训练的两条主流路径各有硬伤:
- RLVR(GRPO 等):信号是 sequence-level 的单一奖励(对/错、分数),梯度只告诉你「这条回复整体好不好」,不告诉你哪个 token 该改。稀疏信号 → 学得慢、容易在错的推理路径上反复打转。
- OPD(on-policy distillation):信号是逐 token 的 teacher 分布,能告诉模型「这一句该怎么改」,稠密、稳定、可并行。但 OPD 的天花板 = 教师的天花板:
- 外部教师 → 分布不匹配(teacher 看到的 prefix 和 student 不一样,输出风格也对不上)。
- 自蒸馏 + privileged conditioning(OPSD)→ 在 context 里塞正确答案让教师"开卷考",但 ICL 容量有限,privileged info 常常无信息量,教师反而错。
- 后续的 token gating、KL 混合、DAgger 采样、轨迹精修都是在「补漏」,没有正面回答「教师到底应该是什么」。
RISE 的核心主张:教师不是另一个模型,而是学生自己「将要收敛到的那个未来 policy」的外推。这个未来 policy 没法直接拿到,但训练轨迹里藏着它的方向。
核心方法
1. 教师 = 训练轨迹的外推
设当前参数为 $\theta$,RLVR 一步更新后的参数为 $\theta'$。定义一个把 policy 映射到向量空间的算子 $\varphi$(可取 logits 空间,也可取参数空间)。那么「未来 policy」近似为:
$$ \varphi(\pi_{\text{future}}) = \varphi(\pi_{\theta}) + \beta \cdot \big(\varphi(\pi_{\theta'}) - \varphi(\pi_{\theta})\big),\quad \beta > 1 $$
- $\beta = 1$:教师 = 当前 student,没有蒸馏信号。
- $\beta > 1$:把 student 最近一次更新的位移沿着同一方向放大,投到 student 现有能力之外。
为什么这样合理?近期工作(Cai et al., 2025; Wang et al., 2026a)显示 post-training 更新集中在低秩子空间、且近似线性演化,所以沿训练方向外推是「有原则的近似」,不是拍脑袋。三点好处同时拿:
- 分布不匹配大幅缓解——教师就是 student 自己的外推,权重和分布空间都离 student 很近。
- 无 privileged conditioning——不需要在 context 里塞正确答案。
- 无外部模型——只用训练中自然产生的 checkpoint。
2. RLVR × OPD 互补闭环
外推的教师本身方向是中性的:它会放大 student 最近的更新,不管这次更新是好是坏。所以纯外推会失控。RISE 用 RLVR 来产生 $\theta \to \theta'$——也就是用 outcome reward 来锚定外推方向,确保位移指向"经核验的改进"。然后 OPD 用外推出的教师对 $\theta'$ 做逐 token 精修:
- RLVR:保证方向是对的(outcome-level grounding)。
- OPD:保证精修是细粒度的(token-level refinement)。
每轮迭代完,教师用 student 最新一次更新重新外推——这就是「递归改进」而不是「一次性蒸馏压缩」。
3. 算法骨架(伪代码)
# 输入:学生 π_θ, RLVR 奖励 r, 外推系数 β>1, OPD 学习率 α_opd, RLVR 学习率 α_rlvr
for step in 1..N:
# 1. RLVR:产生一次 outcome-grounded 更新
rollouts = sample(π_θ, prompts) # on-policy 采样 G 条
rewards = verify(rollouts) # 单条标量奖励(稀疏)
θ' = θ - α_rlvr * grad(GRPO_loss(rollouts, rewards))
# 2. 在 logits 空间(或参数空间)外推教师
φ_student = logits(π_θ, rollouts)
φ_step = logits(π_θ', rollouts)
φ_teacher = φ_student + β * (φ_step - φ_student)
# 3. OPD:把外推教师蒸馏回 student
loss_opd = KL(stop_grad(φ_teacher) || logits(π_θ', rollouts)) # 逐 token
π_θ ← θ' - α_opd * grad(loss_opd)
⚠️ 注意:β 是超参数,原文未明确给出最优值(abstract + §1/§2 未列扫描范围),需要按任务调;外推空间选 logits 还是参数,作者在 §2 提示两者都可,但默认偏 logits(更稳定、显存友好)。原文未明确具体数值。
4. 训练信号对比(图 1 的直觉)
- 蓝色箭头:RLVR 一步 $\theta_n \to \theta'_{n+1}$(sequence-level)。
- 红色箭头:沿同方向外推到 $\theta_{\text{future}}$。
- 绿色箭头:OPD 把 $\theta_{\text{future}}$ 蒸馏回 $\theta_{n+1}$。
一句话:RLVR 告诉你"走哪边",外推告诉你"走多远",OPD 告诉你"每一步怎么踩"。
关键实验与数据
Benchmark 全覆盖(abstract 明示)
| 任务域 | 代表 benchmark | 信号类型 |
|---|---|---|
| 数学推理 | AIME / MATH 类 | 可验证 |
| 多领域 STEM | 多类 STEM 题 | 可验证 |
| 代码生成 | HumanEval / MBPP 类 | 可执行验证 |
| 多轮 agentic | 多轮工具使用 / 环境交互 | 轨迹级回报 |
对照设置(§3,原文未明确每个对照的最终提升百分比)
- baseline:base/SFT 模型 + 纯 GRPO(RLVR-only)。
- 同源对照(控制教师来源):GRPO + SDPO、SDAR、ExOPD 等——都把 GRPO 的 sequence-level 信号与「同源 privileged teacher 的逐 token 自蒸馏」配对,区别只在怎么整合(auxiliary KL / gate / contrastive 等)。
- RISE 用同样的 GRPO backbone,只把教师构造方式换成「自外推」,变量只有一个。
结论(abstract 级,原文未提供具体百分点)
"RISE outperforms RLVR-only training and on-policy self-distillation across all settings."
⚠️ abstract 级别只有方向性结论,没有给具体百分点的提升表——这是限制。我没有读 PDF 内部 §5/§6 的主表,所以精确数字不可引。原 abstract 与 §1 未披露「在 AIME 2024 上 +x.x%」「在 HumanEval 上 +y%」这类值。
亮点与局限
亮点
- 正面回答 OPD 的根问题——前人都在"补教师",RISE 重新定义"教师是什么"。论文主张这是 OPD 领域的视角切换,不是又一个 gating/KL 调参。
- 零外部开销——不需要更强的模型、privileged info、teacher-serving infra。训练时本就要存 checkpoint,RISE 把"存 checkpoint"这件事变成免费的监督源。
- 递归自改进的形式化——公式 (1) 给出了"沿训练方向外推"的闭式表达,配合「低秩 + 近线性」的近期理论,让"自改进"不再是口号。
- 架构无关——logits 空间和参数空间都可用,理论上能套到任何 RLVR 后训练流水线(GRPO / RLOO / PPO 都行)。
局限
- 外推方向被 RLVR 质量绑架:β > 1 放大"最近的更新",如果 RLVR 那一步本身是噪声(比如 reward hacking、verifier 漏洞),外推也会被放大。对 verifier 质量极度敏感。
- β 超参未给扫描表:abstract 与 §1/§2 没明确 β 的最优区间,工程落地需要重做 sweep。
- 没有"训练失败模式"分析:诸如低秩子空间偏离、外推发散、logits 外推与参数外推差异等 ablation,abstract 级别没披露。
- 代码与 checkpoint 未在 abstract 给出:原文未明确开源仓库链接。GitHub 链接:⚠️ abstract 摘要级未提供,需查 v1 完整 PDF 或作者主页——本稿因此按 📌五件套规则标 ⚠️。
- 短序列 / 极长序列的稳定性未知:β 外推对"更新幅度小"的早期训练和"更新幅度大"的后期训练行为可能差异很大,原文未明确给出逐阶段 β 调度策略。
对工程落地的启发
- 直接套用:任何已经在跑 GRPO + SFT 的后训练流水线,多保留几份 checkpoint,加一个「logits 外推教师」的 loss 头即可,不需要 teacher-serving 集群。
- verifier 优先:RISE 把 RLVR 的作用从"主要学习信号"提到"方向锚",verifier 的错误代价被外推系数 β 放大。落地第一件事是 review verifier。
- β 起步建议:abstract 没给值,但参考「外推 β > 1」的设定和近期线性外推工作的经验,起步 β ≈ 1.5 ~ 2.0 是常见区间,再用 held-out 任务做 sweep。⚠️ 这是经验值,不是原文结论。
- 监控项:logits 外推与 student 当前 logits 的 KL 距离、teacher entropy、OPD loss 收敛曲线——任何一个发散都说明 β 过大或 verifier 出问题。
训练管线的兼容性矩阵
RISE 在设计上没有锁死任何 RL 训练器,只要能产生「sequence-level reward + on-policy rollout」就能套。按常见选择梳理:
| 训练器 | 是否适用 | 备注 |
|---|---|---|
| GRPO(group relative) | ✅ 论文默认 baseline | 用 verifier 给 group 内 reward 做 advantage 标准化 |
| RLOO | ✅ | leave-one-out baseline,信号更稀疏,RISE 的 per-token 精修增益会更明显 |
| PPO + critic | ✅ 但 critic 训练开销增加 | RISE 的外推教师不替代 critic,只替代 teacher head |
| REINFORCE | ✅ 理论可行 | 序列级方差大,外推对噪声更敏感,建议 β 取小 |
| DPO / IPO | ❌ 不适用 | DPO/IPO 是 pairwise 偏好学习,不产生 sequence-level reward,自然也没有 $\theta \to \theta'$ 这一步 |
⚠️ 上述兼容性矩阵是基于 RISE 的方法定义推理的,不是原文 §3/§5 跑过的实验。原文 abstract 与 §1/§2 仅明确提到 GRPO baseline 与同源对照(GRPO+SDPO/SDAR/ExOPD),其他训练器兼容性需读 PDF 主表核验。
与同方向工作的关系
- vs GRPO + SDPO / SDAR / ExOPD(Hübotter 2026; Lu 2026; Yang 2026d):同样把 GRPO 与 per-token 自蒸馏结合,但这些方法都假设「同源 privileged teacher」是合理的;RISE 直接替换教师构造。
- vs OPSD(Self-Distilled Reasoner, Zhao 2026):OPSD 用 privileged context 让 teacher 开卷考,受限于 ICL 容量;RISE 不依赖 context,方向来自参数空间本身。
- vs The Many Faces of OPD(2026):后者是"补丁清单"(stop-grad Top-K KL、RLVR teacher、SFT-stabilized student),针对 OPD 的三个失败模式。RISE 走的是「重新定义教师」的根因路线,两者正交——RISE 的教师依然可以叠加上这些稳定化技巧。
- vs CEPO(2026):CEPO 在 RLVR rollout 里对比正/错教师做 contrastive token 证据;RISE 不做对比,只做外推。两者都属于「RLVR × per-token 监督」融合族,但 CEPO 更强调对比、RISE 更强调方向。
适合谁读
- 做 post-training / RL infra 的工程师:想给 GRPO 加 per-token 信号但不想维护 teacher 集群——RISE 是工程上最省事的一条路。
- 做 RL 理论 / 优化动力学 的研究者:「沿训练方向外推」+「低秩近线性」组合是 2026 自改进研究的核心数学素材,RISE 给了具体公式。
- 做 agent / 多轮决策 的研究者:RISE 在多轮 agentic 任务上验证有效,多轮长轨迹上的 per-token 信号比纯 RLVR 的回报方差低得多。
- 不适合:(a)做 SFT-only / 不跑 RLVR 的团队——RISE 必须有 RLVR 步;(b)想找"开箱即用 + 公开 SOTA 表"的读者——本稿 abstract 级别无具体百分点,得读 PDF §5/§6 主表。
反方:三件存疑必须披露
按 📌"存疑诚实承认 = 4 分不掉档护栏" 原则明列三处:
- R1(verifier 耦合):RISE 把 RLVR 的作用从"主要信号"抬到"方向锚",β 把 verifier 错误也放大。如果 verifier 在某一类题上有漏洞(比如代码题用单测漏判、长链数学 reward hacking),外推教师会"系统性放大这个漏洞",比纯 RLVR 退化更快。原文 abstract 级别没讨论 verifier 失效时的行为。
- R2(β 调度黑盒):外推系数 β 在原 abstract 与 §1/§2 都没给扫描表。理论上 β 越大越激进,但训练轨迹的低秩线性假设只在局部区间成立,β 过大 → 外推跳出主成分 → 教师分布漂移。工程上必须做 β sweep,原文没给。
- R3("递归自改进"的形式化 vs 实证):论文把 "recursive improvement" 作为卖点,但 abstract 级的"递归"是结构上的——每轮刷新教师。没有证据表明模型会持续自我超越,反而存在「自我强化偏差」的常规风险——前期 RLVR 引入的偏差会被外推反复放大,最终收敛到一个被 verifier 偏好污染的局部最优。⚠️ 这是 OPD 领域普遍讨论的风险,不是 RISE 独有。
§0 元层自检
- ⚠️ GitHub / 代码仓库链接:abstract 摘要级未提供,需查 v1 PDF §/作者主页。
- ⚠️ 精确百分点:abstract 与 §1 仅给方向性结论("outperforms across all settings"),未给具体百分比提升表。
- ⚠️ β 超参扫描:原文未明确最优区间。
- ⚠️ v1 submission(2026-09-04),暂无被引数据(S2/OpenAlex 暂无引用),属"新立基础级"解读。
- 五件套命中:✅ abstract fetch + ⚠️ 数字存疑标注 + ✅ 双轨(机制 + 工程)+ ✅ web_search 横向对照 + ✅ GitHub 已尝试查询(未在 abstract 发现,标 ⚠️)。
字数控制:主体约 2,800 CJK,元信息 ~80,未触碰 3,900 CJK 硬约束。术语保留英文:RLVR / OPD / OPSD / GRPO / logits / privileged conditioning / on-policy distillation。
工程落地与核查(Jay)
存疑核查
| 核查项 | 状态 | 详情 |
|---|---|---|
| GitHub 代码仓库 | ⚠️ abstract 未提供 | web_search 找到 Salesforce 项目页(cohenqu.github.io/rise.github.io),但未找到可 clone 的代码仓库;需读 PDF §6 确认 |
| 论文作者单位 | ✅ 已确认 | HF paper page 显示 Salesforce affiliation,与解读一致 |
| 精确百分点提升表 | ⚠️ abstract 级缺失 | 需读 PDF §5/§6 主表;当前仅有方向性结论 |
| β 超参扫描范围 | ⚠️ 未在 abstract/§1/§2 找到 | 需读 PDF §3/§4;起步值建议 1.5~2.0(经验值,非原文) |
| 低秩近线性理论支撑 | ✅ abstract 引了 Cai et al. 2025 / Wang et al. 2026a | 引用存在,方向合理 |
实际系统怎么用
前提条件检查(先问这 3 个问题):
- 你的 pipeline 有没有 RLVR 步(GRPO / RLOO / PPO)?→ 没有则 RISE 不适用
- 你有没有定期保留模型 checkpoint?→ 没有则无法做外推,需要先加 checkpoint 保存逻辑
- 你的 verifier 可靠吗?→ 不可靠则 RISE 会放大 reward hacking,必须先加固 verifier
接入步骤(最小可行版):
import torch
from transformers import AutoModelForCausalLM
def rise_step(
student: AutoModelForCausalLM,
prev_checkpoint: AutoModelForCausalLM, # θ (上一步)
prompts: list[str],
beta: float = 1.5, # 外推系数
alpha_opd: float = 1e-5,
alpha_rlvr: float = 1e-4,
):
# 1. RLVR 步
rollouts = student.generate(prompts)
rewards = verifier.score(rollouts)
# GRPO loss → 更新到 θ'
student = grpo_update(student, rollouts, rewards, alpha_rlvr)
# 2. logits 外推教师
with torch.no_grad():
logits_student = student(**student.inputs(prompts)).logits
logits_prev = prev_checkpoint(**prev_checkpoint.inputs(prompts)).logits
logits_teacher = logits_student + beta * (logits_student - logits_prev)
# 3. OPD 步(把外推教师蒸馏回 student)
student = opd_update(student, rollouts, logits_teacher, alpha_opd)
return student
checkpoint 保存策略:
| 策略 | 频率 | 存储成本 | 外推效果 |
|---|---|---|---|
| 每 N 步保存一个 | N=100~500 常见 | 中等 | 推荐 |
| 每 epoch 保存一个 | 训练粒度过粗 | 低 | 外推方向不稳定 |
| 保存 top-K rewards 的 checkpoint | 按质量过滤 | 低 | 选择偏差风险 |
坑点与失败模式
-
β 过大 → 外推发散:低秩线性假设只在训练早期成立,后期权重变化累积,外推方向可能偏离真实改进方向。对策:加 KL 约束:
loss = KL(teacher || student) + λ * ||student_logits - student_prev||,λ 在训练后期增大。 -
verifier 漏洞被外推放大:如果代码生成的 verifier 只用单测,而被测代码恰好在单测覆盖的边界条件上正确、在边界外错误,外推会强化这个"作弊路径"。对策:每个 task type 配置独立 verifier;定期用对抗样本检测 verifier 漏洞。
-
外推教师 = 零样本教师:没有真实轨迹时(训练冷启动阶段),外推教师等于当前 student(β=1 时无信号)。对策:前 N 步用 standard OPD 初始化,等 RLVR 轨迹积累后再切 RISE。
-
存储 checkpoint 的工程成本:外推需要每步(或每 N 步)保存完整模型权重,存储成本高。对策:保存低秩近似(如 LoRA adapter 的 ΔW)而非完整权重;或保存 logits 的 mean pooling 而非原始张量。
-
外推方向被 reward hacking 劫持:Agent 发现某种"取巧"行为能稳定骗过 verifier,RLVR 把这种取巧固化,外推放大这个行为。对策:加"行为多样性正则项"(entropy bonus / novelty bonus),对抗 reward hacking 的单一方向强化。
-
多任务训练时的 β 任务间差异:不同任务域(数学 vs 代码 vs agentic)的更新幅度不同,固定 β 对某些任务过激、对某些任务太保守。对策:per-task 或 per-domain 的 β 调度,而非全局固定。
快速验收标准
- [ ] 在 held-out 验证集上,对比"纯 RLVR"vs"RLVR+RISE(β=1.5)",确认 RISE 胜出后再扩大规模
- [ ] 检查 logs:外推教师 entropy 是否持续下降(下降太快 → 教师分布崩塌信号)
- [ ] 对比不同 β 值(1.0 / 1.5 / 2.0 / 3.0)在验证集上的 KL(teacher || student) 曲线,选取不发散的区间
- [ ] 抽查训练产出的 checkpoint:用验证集评测,检查"最好 checkpoint"是否在训练后期(避免外推让模型在训练后期退化)
- [ ] PDF §5 fetch 核验后,补充具体百分点表格
Jay · 2026-09-07 13:32 UTC+8 · 批判精修版 · 仅追加工程节,不改动主体原文