Esc
输入关键词开始搜索
News

深度解读:SPPO——把推理 RL 重构为序列级上下文赌徒问题,比 GRPO 快 5.9 倍

深度解读:SPPO——把推理 RL 重构为序列级上下文赌徒问题,比 GRPO 快 5.9 倍

PPO 的 critic 在推理任务上有一个致命的”尾部效应”。SPPO 的解法:别在 token 级别做价值估计了,整条序列只需要一个标量。

1. 一句话定性

SPPO 是对 LLM 推理强化学习的一次理论清理:它证明推理任务的 MDP 可以合法地坍缩为单步决策问题(上下文赌徒),在此框架下自然推导出序列级值函数,既避免了 PPO 逐 token critic 的”尾部效应”,又消除了 GRPO 对多样本的依赖——最终实现更好的性能、更快的训练、更低的显存。

2. 核心问题

PPO 的”尾部效应”(Tail Effect)

标准 PPO 用一个逐 token 的 critic 网络来估计每个位置的状态值,然后计算优势函数(advantage)指导策略更新。但在推理任务中,这个设计存在一个系统性缺陷:

  • 推理序列的奖励只在最后一步给出(答对/答错),中间 token 没有信号
  • Critic 在序列尾部拟合唯一的奖励信号,产生过拟合
  • 过拟合的 critic 给出的值估计趋近真实奖励 → 优势函数趋近零 → 策略梯度消失
  • 结果:PPO 在长推理序列上”学不动”

GRPO 的隐式洞察

DeepSeek 的 GRPO 绕开了 critic 问题,用组内相对排名替代值估计。SPPO 的作者发现了一个关键洞察:GRPO 的优势计算隐式地将问题建模为上下文赌徒(contextual bandit)——但 GRPO 自身并未明确这一理论连接,也因此保留了一些不必要的设计选择(如 N=8 的多样本要求)。

3. 方法

3.1 理论框架:序列级上下文赌徒(SL-CB)

SPPO 的核心理论贡献是将推理任务的 MDP 合法地简化为 H=1 的上下文赌徒问题

  • 上下文(Context): 问题 prompt sps_p
  • 动作(Action): 完整推理序列 aa(一次性生成,视为单步决策)
  • 奖励(Reward): 序列末尾的二值或标量奖励 RR

在这个框架下:

Vϕ:Sp[0,1]V_\phi: \mathcal{S}_p \to [0, 1]

值函数 VϕV_\phi 只依赖 prompt 状态,输出一个标量,使用 BCE(二元交叉熵)损失训练。这与 PPO 的逐 token critic 形成根本区别——不再需要为每个中间 token 估计值。

3.2 优势函数:全序列统一

A(sp,a)=RVϕ(sp)A(s_p, a) = R - V_\phi(s_p)

优势值在序列的所有 token 上完全相同——因为值函数只与 prompt 相关,与生成过程无关。这消除了 PPO 尾部效应的根源。

3.3 策略优化:标准 PPO Clip + 序列级优势

策略更新使用标准的 PPO clipped objective,唯一的区别是优势函数换成了上述序列级版本。这意味着 SPPO 的工程实现只需修改 critic 和优势计算,策略网络和更新规则完全复用。

3.4 关键消融:为什么不是”PPO + BCE”?

一个自然的问题:能不能在标准 PPO 框架下只把 critic 的损失函数换成 BCE?

实验给出了明确的否定:PPO+BCE 失败。原因是仅换损失函数不改变 critic 的输入结构——它仍然在逐 token 级别工作,尾部效应依然存在。必须同时改变建模框架(SL-CB)才能解决问题。

4. 关键结果

4.1 推理基准性能

模型规模SPPOGRPOPPO提升
1.5B48.0647.0844.06+0.98 vs GRPO, +4.0 vs PPO
7B58.5657.4456.44+1.12 vs GRPO, +2.12 vs PPO

绝对值差距不大(~1 分),但在这些高度优化的基准上,1 分的稳定提升已经有意义。

4.2 效率对比:速度与显存

指标SPPO 优势
训练速度5.9× faster vs GRPO(N=1 单样本 vs N=8 多样本)
VRAM 占用−12.8%(7B 策略 + 解耦 1.5B critic vs 7B 策略 + 7B critic)

5.9× 的加速来自 SPPO 只需 N=1 采样(每个 prompt 生成一条序列即可计算优势),而 GRPO 需要 N=8 组内采样做相对排名。这在大规模训练中是决定性的效率差异。

12.8% VRAM 节省来自 critic 解耦——SPPO 的序列级 critic 可以用比策略网络小得多的模型(如 7B 策略配 1.5B critic),因为它只需要学习 prompt → 期望奖励的映射,不需要建模完整的生成过程。

4.3 长推理任务(RLVR Benchmark)

在需要长序列推理的任务上,SPPO 成功而 PPO 完全停滞(训练曲线平坦)。这直接验证了尾部效应假说——PPO 的 critic 在长序列上彻底失效,而 SPPO 的序列级优势不受序列长度影响。

5. 局限与开放问题

  1. 仅验证推理任务: SL-CB 框架的假设是”奖励只在序列末尾给出”——对于多轮对话、工具调用等需要中间奖励的场景,框架需要扩展。
  2. 性能提升绝对值不大: ~1 分的提升可能在统计波动范围内。SPPO 的主要优势在效率而非绝对性能——但效率提升(5.9×)是决定性的。
  3. 与 Dr. GRPO 等变体的对比缺失: GRPO 家族已有多个改进变体(如 Dr. GRPO、Group GRPO),SPPO 只与原始 GRPO 对比。
  4. 超大模型验证不足: 仅在 1.5B 和 7B 上验证,70B+ 模型上尾部效应是否同样严重、SPPO 是否依然有效,需要进一步实验。

6. 为什么重要

对 RL for Reasoning 的理论贡献

SPPO 做了一件很多后续工作忽略的事情:先搞清楚理论框架,再做工程优化。通过证明推理任务可以合法地建模为上下文赌徒,它为后续一系列改进(更好的 critic 架构、更高效的采样策略)提供了正确的理论基础。

GRPO 的实用替代方案

GRPO 是当前推理 RL 的事实标准,但 N=8 的采样要求在大规模训练中是沉重的计算负担。SPPO 的 N=1 采样 + 解耦 critic 方案在保持(甚至略超)GRPO 性能的同时,将计算成本降低到六分之一——对于资源受限的团队(如学术实验室)尤其有价值。

对 PPO 失效原因的诊断

尾部效应的发现和严格验证(通过 PPO+BCE 消融实验排除了简单解释)为 RL for LLM 社区提供了一个清晰的诊断:PPO 在推理任务上的表现不佳不是超参数问题,而是建模框架问题

7. 给动动的一句结论

SPPO 可能是今年最有实用价值的 RL 推理优化论文之一——不是因为它在基准上赢了多少分(1 分),而是因为它说清楚了 PPO 为什么不行(尾部效应)、GRPO 为什么行(隐式赌徒模型),然后给出了一个更干净、更快、更省显存的解法。做推理 RL 的团队应该认真考虑把 GRPO 换成 SPPO。


信源: