SPPO:别再逼Critic逐token猜了——序列级建模一招解决长链推理信用分配

用PPO训推理模型,Critic跟瞎子一样——一条推理链动辄几千token,到头才给个0或1的奖励,Critic得从尾巴倒推每一步的"贡献",结果就是:该强化的没强化,该惩罚的没惩罚。GRPO倒是不用Critic了,但一个prompt得采样8条链来做基线估计,训练速度直接砍到1/8。ACL 2026这篇SPPO论文,把推理重新建模成序列级上下文赌博机,一个标量价值函数替代逐token打分,单样本就能跑,效果还比GRPO高1分。

核心摘要

SPPO将LLM推理从token级MDP重构为序列级上下文赌博机——整条推理链是一个原子动作,奖励是整体的对错,Critic只估计"这道题你有多大概率做对"这一个标量。优势函数 \(A = R - V(s_p)\) 直接把结果奖励减去基线期望,一把撒给链上所有token。1.5B Critic对齐7B Policy,内存省12.8%,AIME24从41.25拉到52.29,训练速度5.9倍于GRPO。思路简洁,效果扎实,但只适用于有可验证结果的任务。

PPO训推理的"尾部效应":信用分配彻底崩了

先说清楚标准PPO在长链推理上到底出了什么问题。

标准PPO的Critic对每个token位置估计一个价值 \(V(s_t)\),然后用GAE算出逐token的优势 \(\hat{A}_t\)。短文本没问题,但推理链一长,事情就变味了——论文管这叫 "尾部效应"

Figure 1: 尾部效应分析

看这张图就明白了:Critic在序列的前半段根本分不清哪条链最终会做对、哪条会做错,\(V(s_t)\) 在正确和错误轨迹上几乎重叠。只有到了尾部,Critic才恍然大悟——"哦,这条做对了"。但这时候GAE的折扣机制已经把优势信号衰减得差不多了。

更坑的是反过来的情况:错误轨迹的中间步骤,Critic也给很高的价值,因为这些步骤"看起来像对的"。结果就是:信用分配基于token位置而非语义贡献,该惩罚的中间错误步骤没被惩罚,该强化的关键推理步骤也没被强化。

PPO在7B模型上的表现就说明了这个问题——AIME24虽然从41.25涨到了45.20,但AMC23从79.38涨到85.31后就不稳定了,论文提到PPO基线在消融实验中500步就崩了。

GRPO的隐式赌博机:歪打正着

GRPO不用Critic,改为同一个prompt采样N条链,用组内均值做基线。DeepSeek-R1用的就是这招。看起来是省了Critic的内存,但论文发现了一件有意思的事:GRPO的优势函数天然在做上下文赌博机建模

Figure 2: GRPO优势函数可视化

论文通过伯努利假设推导了GRPO的优势函数:

\[Adv(s_p, a) = \begin{cases} \sqrt{\frac{1-\hat{p}(s_p)}{\hat{p}(s_p)}} & \text{若 } R=1 \\ -\sqrt{\frac{\hat{p}(s_p)}{1-\hat{p}(s_p)}} & \text{若 } R=0 \end{cases}\]

这里 \(\hat{p}(s_p)\) 是该prompt的估计通过率。看这张图:当题目很难(\(\hat{p}\) 很低),做对了给个大大的正优势,做错了只给个小惩罚;当题目简单(\(\hat{p}\) 很高),做错了给个大惩罚,做对了只给小奖励。这不就是上下文赌博机的难度自适应缩放嘛!

GRPO歪打正着地绕开了token级信用分配的问题——它压根不区分链内各token的贡献,所有token共享同一个序列级优势。但代价也很明显:你得采样8条链才能估计 \(\hat{p}(s_p)\),计算开销直接8倍。

SPPO:把隐式变显式,一个标量搞定

SPPO的思路直截了当:既然GRPO的成功暗示推理就是个上下文赌博机问题,那就别绕弯子了,直接显式建模。

序列级上下文赌博机

把推理从token级MDP重新定义为序列级上下文赌博机:

  • 状态:只有静态提示 \(s_p\)
  • 动作:整条推理链 \(a_{seq} = (y_1, \dots, y_T)\) 视为一个原子动作
  • 奖励\(R \in \{0, 1\}\),整条链对或错
  • 时间视界\(H=1\)

不再强迫Critic把稀疏结果分解成逐token的噪声信号,直接优化基于提示的条件期望序列奖励。

Figure 3: SPPO整体框架

优势函数:一个公式说清楚

\[A(s_p, a) = R - V_\phi(s_p)\]

就这么简单。\(R\) 是二值奖励,\(V_\phi(s_p)\) 是Critic估计的"这道题你能做对的概率"。模型自信但做错了(\(V\) 高但 \(R=0\)),\(A\) 大负,狠狠惩罚;模型不确定但做对了(\(V \approx 0.5\)\(R=1\)),\(A\) 约0.5,温和强化。这比GRPO的优势缩放更直观——直接就是"超出期望多少"。

关键来了:这个标量优势均匀传播到序列中所有token。正确链的每一步同等强化,错误链的每一步同等惩罚。乍一看有点粗暴——凭什么中间某个错误步骤也要被强化?但反过来想,token级Critic在长链上根本分不清哪步对哪步错,强做区分只会引入更多噪声。不如承认"我们不知道哪步贡献大",用序列级信号至少保证方向是对的。

价值函数:BCE训练,不用GAE

Critic的训练也很简洁,直接用二元交叉熵:

\[L_V(\phi) = -\mathbb{E}[R \log V_\phi(s_p) + (1-R) \log(1 - V_\phi(s_p))]\]

不需要GAE、不需要时序差分、不需要长序列的折扣回报估计。Critic只需要学会一件事:这道题你大概能做对吗?标量可解性估计远比逐token推理简单,所以Critic可以用更小的模型。

解耦Critic:1.5B教7B做事

这大概是SPPO最反直觉的发现:1.5B的Critic配7B的Policy,效果反而最好

在7B实验中,SPPO用7B Critic拿到58.11分,换成1.5B Critic反而涨到58.56。小Critic为什么更好?论文的解释是:标量可解性估计不需要推理链级别的细粒度建模,小模型够用了,而大Critic可能过拟合或引入不必要的噪声。内存方面,1.5B+7B的配置比7B+7B节省12.8%。

实验结果:单样本5.9倍速,效果还高一截

数学推理基准

1.5B模型的结果:

方法 AIME24 AIME25 AMC23 MATH Minerva Avg
Base Model 27.50 21.67 71.56 83.73 20.35 44.96
PPO 27.50 20.83 70.63 81.38 19.89 44.06
ReMax 31.67 25.42 71.88 84.38 20.40 46.74
RLOO 30.42 21.67 72.81 84.10 21.73 46.15
GRPO (N=8) 30.00 26.25 73.13 83.88 22.15 47.08
SPPO 34.17 25.83 74.38 83.78 22.15 48.06

7B模型的结果更有说服力:

方法 AIME24 AIME25 AMC23 MATH Minerva Avg
Base Model 41.25 26.67 79.38 87.20 27.94 52.49
PPO 45.20 35.42 85.31 88.48 27.80 56.44
ReMax 49.38 31.25 86.56 90.28 27.99 57.09
RLOO 46.67 32.50 86.88 90.35 28.72 57.02
GRPO (N=8) 47.08 35.00 86.25 90.15 28.74 57.44
SPPO 50.83 35.00 86.25 90.13 28.35 58.11
SPPO + Small Critic 52.29 34.58 87.19 89.88 28.86 58.56

几个值得注意的点:

  • PPO在1.5B上竟然比Base Model还差(44.06 vs 44.96),直接证明token级信用分配在长链上确实是负优化
  • SPPO在7B+Small Critic配置下AIME24达到52.29,比Base涨了11分
  • MATH和Minerva上各方法差距不大,说明这些基准可能已经接近1.5B/7B模型的能力天花板

训练效率:5.9倍加速

Figure 5: 训练效率对比

SPPO大约22小时达到峰值性能(均值约58),而GRPO (N=8) 和RLOO因为多样本生成瓶颈收敛慢得多。5.9倍加速的来源很直接:GRPO要生成8条链才够估计基线,SPPO只要1条。

消融实验:不是BCE的功劳,是建模方式的功劳

这组消融设计得挺关键。论文做了"PPO + BCE"的对照——把BCE损失塞进标准token级PPO框架,想验证到底是BCE损失本身带来的提升,还是序列级建模带来的。

Figure 4: 损失函数消融

结果很清楚:PPO + BCE跟标准PPO一样不稳定,500步就崩了。SPPO的效果来自序列级上下文赌博机建模——统一优势信号 \(A = R - V(s_p)\) 传播到所有token——而不是BCE损失本身。

这其实说明一个更深层的问题:PPO的不稳定性不是价值函数训练方式的问题,而是token级MDP分解在这个场景下根本不合适。你换什么损失函数去训Critic,只要还在逐token做信用分配,长链推理就会出问题。

Critic校准:保守但够用

Figure 7: 价值模型校准分析

Critic预测和真实难度的Pearson相关0.642,Spearman秩相关0.664——说明Critic确实能区分难题和简单题。但有个有趣的特征:真实难度呈双峰分布(很多题要么几乎必对要么几乎必错),Critic预测却是准正态分布,集中在0.6-0.7——Critic倾向于保守预测,不愿意给出极端概率。这其实不影响SPPO的效果,因为优势函数 \(A = R - V(s_p)\) 在极端情况下信号更强(模型非常自信但错了,惩罚更大),Critic的保守反而让训练更稳定。

RLVR控制任务:不只数学

论文还在5个经典控制任务(CartPole, MountainCar, Hopper, LunarLander, Pendulum)上做了验证,用稀疏结果奖励(\(\gamma=1.0\))。

Figure 8: RLVR基准结果

SPPO在Hopper和MountainCar上标准PPO直接崩了,SPPO稳定收敛;CartPole上SPPO样本效率更优。这说明序列级建模的优势不局限于语言推理——只要奖励是稀疏的、轨迹是长的,token级信用分配就会出问题

偏差-方差权衡:SPPO找到了甜点

把三个方法放在一起看:

方法 偏差 方差 采样数 训练速度
标准PPO 高(token级信用分配错误) N=1 受限于Critic
GRPO 高(蒙特卡洛结果噪声) N=8
SPPO (序列级建模) (学习标量V) N=1 5.9×加速

标准PPO的偏差来自token级信用分配的系统性错误——这不是估计噪声,是建模方式的根本问题。GRPO通过跳过token级分解消除了偏差,但组相对基线的方差很高,需要8条链平均才能压住。SPPO用学习的标量价值函数替代组均值,既有低偏差(序列级建模),又有低方差(学习的基线比蒙特卡洛估计稳定),还只要1条链。

说说局限

SPPO目前只适用于有可验证结果的任务——数学题、编程题这种能自动判对错的场景。对于开放式生成任务(比如写文章、对话),没有二值奖励信号,序列级赌博机建模就不好使了。

另外,"均匀传播优势到所有token"这个设计虽然在长链上比token级分配更稳,但确实是一种信息损失。如果未来能找到一种不依赖token级Critic但又能区分链内关键步骤的方法,可能会更进一步。

还有一个点值得琢磨:1.5B Critic比7B Critic效果更好,这到底是因为小模型更不容易过拟合标量估计任务,还是7B Critic和Policy之间的梯度干扰?论文没深入分析这个,但这对于实际部署选型很重要。

总结

SPPO的核心洞察其实就一句话:长链推理的信用分配问题,不是"怎么分"的问题,而是"不该分"的问题。token级Critic在稀疏奖励+长序列的设定下根本分不好,那就不分了——把整条链当原子动作,只估计prompt级别的成功概率。这个思路简洁、有效、省资源,5.9倍加速+最高平均分说明了一切。

代码已开源:https://github.com/sustech-nlp/SPPO


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我