论文精读

精读:SP³O 与 PPO critic 的价值压平

PPO 的 critic 在一条响应内部几乎不区分各步价值:论文把成因拆成隐式方差惩罚与时间相关冗余更新,只改一行监督位置就把 Qwen3-4B 的数学平均拉高近 8 分。

论文: Rethinking Critic Learning in PPO: Understanding and Mitigating Value Flattening
作者: Yizhuo Li, Jianhao Yan, Yun Luo, Zhi Wang, Futing Wang, Rong-Xi Tan, Kanghui Tian, Ganqu Cui, Ning Ding, Peilin Zhao, Yafu Li, Yu Cheng
arXiv: 2609.18708
PPO critic 价值函数 信用分配 GRPO RLVR 后训练 稀疏监督

1 论文概览

一句话总结:PPO 的 critic 在一条响应内部几乎不区分各步的价值高低——论文把这种现象命名为 Value Flattening,将成因拆成「同一终端回报在所有位置复用带来的隐式方差惩罚」与「相邻状态高度相关造成的冗余更新」,给出的解法只有一处改动:把价值损失从每个 token 收回到三个彼此拉开的位置。

核心问题:在 terminal-only reward、γ=λ=1\gamma=\lambda=1 的标准 PPO 配置下,一条响应里的所有状态共用同一个采样回报 R(τ)R(\tau) 做回归目标。论文用策略自身重复采样得到的蒙特卡洛价值做参照,检查 critic 究竟学到了什么。

“state values, estimated from multiple Monte Carlo continuations, change sharply across intermediate states while critic predictions remain comparatively flat.”(Abstract)

真实状态价值在相邻推理步之间剧烈跳变,critic 的预测曲线却近乎一条平线。critic 保住了响应之间的差异,丢掉了响应内部的差异,后者正是 token 级信用分配赖以成立的前提。

主要贡献

  1. 命名并刻画 Value Flattening。在 Qwen3-4B-Base 的 PPO 训练中,跨检查点、对正确与错误响应均成立;在随机 FrozenLake 上复现,且随状态空间增大而加剧。
  2. 两层归因。其一是方差惩罚——把 MSE 损失按响应均值与响应内偏差做恒等分解,第二项直接惩罚响应内的预测方差;其二是时间相关——相邻状态只差一个 token,表征与梯度高度对齐,稠密监督把近似相同的更新重复成百上千次。
  3. SP³O。actor 目标、rollout 流程、回报目标一律不动,只改「哪些状态吃价值损失」。
  4. 理论附录把 critic 误差拆成响应均值项与响应内项,给出有限 batch 下 actor 梯度误差的精确分解。
  5. 实验覆盖 Qwen3-4B/8B-Base、DAPO-Math-17k、7 个数学基准与 6 个 OOD 基准,与 PPO、GRPO 对照。

2 方法详解

2.1 先造一把尺子:策略条件下的 MC 价值

要论断 critic 平不平,得先知道不平的参照长什么样。论文对每个中间状态固定上文、独立采样 KK 条续写,取终端回报均值:

V^MCπ(st)=1K∑k=1KGt(k),τt(k)∼π(⋅∣st)\hat{V}^{\pi}_{\mathrm{MC}}(s_t)=\frac{1}{K}\sum_{k=1}^{K}G_t^{(k)},\qquad \tau_t^{(k)}\sim\pi(\cdot\mid s_t)

在二值终端奖励下,这个量就是「当前策略从该状态出发的成功率」。附录 A.1 的采样协议相当舍得:64 条响应 × 19 个中间锚点,每个锚点起 128 条续写,按 64 条一批加码至多 256 条,直到 95% Wilson 置信区间半宽 ≤0.04 才停。

2.2 方差惩罚:一条恒等式

对长度为 TT 的响应,记 vt=Vϕ(st)v_t=V_\phi(s_t)、vˉ=T−1∑tvt\bar v = T^{-1}\sum_t v_t,终端奖励为 RR:

1T∑t=1T(vt−R)2=(vˉ−R)2+1T∑t=1T(vt−vˉ)2\frac{1}{T}\sum_{t=1}^{T}(v_t-R)^2=(\bar v-R)^2+\frac{1}{T}\sum_{t=1}^{T}(v_t-\bar v)^2

“The second term is the empirical variance of the predictions and directly penalizes their variation within that response.”(§4.2)

第一项把响应均值拟合到采样回报;第二项是预测值的经验方差,直接压平响应内部的起伏。这条分解是恒等式,不含近似,是全文最硬的一块。

微妙之处在于:这个惩罚本身不算「错」。当每个位置的目标都是同一个 RR 时,MSE 意义下的最优解本来就是所有位置输出同一个数。论文真正指出的是——critic 被要求拟合的是 E[R∣response]\mathbb{E}[R\mid\text{response}],诊断参照用的却是 E[R∣state]\mathbb{E}[R\mid\text{state}],两者是不同量。附录 A.2 用 baseline 不变性承认了这一点,正文仍把它定性为 failure mode。

2.3 时间相关:冗余更新

LLM 的状态是「已生成的 token 序列」,相邻状态只差一个 token,几乎完全重叠。取价值头 Vϕ(st)=w⊤htV_\phi(s_t)=w^\top h_t,位置 tt 的梯度是 gt(w)=2(Vϕ(st)−R)htg^{(w)}_t=2(V_\phi(s_t)-R)h_t:表征相近、残差同号的位置会产生高度对齐的梯度。Figure 3b 测了三件事——隐状态对齐度、梯度对齐度、更新能量 Ei=TiΔv‾i 2/∑tΔvi,t2E_i=T_i\overline{\Delta v}_i^{\,2}/\sum_t\Delta v_{i,t}^2 全训练期维持高位,梯度余弦相似度随 token 间距增大而下降。

“Selecting fewer positions restricts the per-response variance penalty to their predicted values and is designed to reduce redundant updates from temporally correlated states.”(§4.3)

两条归因合起来读,稀疏化为什么有用就有更准的说法:稀疏不会消掉方差惩罚,它只是把惩罚挪到表征差异大的位置上。在相邻位置压平很便宜——一次参数更新就能一并压低几百个共享表征的预测;在彼此拉开的位置压平很贵。 论文式(18)的注释点到了对称的另一半——「correcting within-response error requires the state-level Jacobians to differ across states」。

2.4 SP³O

LVSP3O(ϕ)=1∑τ∈B∣I(τ)∣∑τ∈B∑t∈I(τ)(Vϕ(st)−G^t)2\mathcal{L}_V^{\mathrm{SP^3O}}(\phi)=\frac{1}{\sum_{\tau\in\mathcal{B}}|\mathcal{I}(\tau)|}\sum_{\tau\in\mathcal{B}}\sum_{t\in\mathcal{I}(\tau)}\bigl(V_\phi(s_t)-\hat G_t\bigr)^2

默认 I(τ)\mathcal{I}(\tau) 取响应相对位置 0.3 / 0.6 / 0.9;响应长度 ≥6144 token 时补一个 0.95。critic 仍在每个位置出值,GAE 照常消费全部位置的价值,被改的只有损失项的位置集合。

2.5 与相邻路线的区别

路线做法代价
GRPO / RLOO / DAPO不训 critic,用组内相对回报响应内无区分
VinePPO用 MC 续写直接估中间状态价值做信用分配每个被评估状态都要额外 rollout
PPO(本文基线)全位置稠密价值监督方差惩罚 + 冗余更新
SP³O只在少量拉开的位置做价值监督只改监督位置

论文在相关工作里点了 VinePPO,实验里没有这一臂。

3 实验结果

3.1 主结果

数学(avg@32,7 个基准,%):

模型方法AIME24AIME25AIME26AMC23MATH500MinervaOlympiadAvg
Qwen3-4B-BasePPO17.5019.9014.6961.8070.1542.8236.3537.60
GRPO17.1916.1910.1063.8378.2145.7143.6239.26
SP³O23.0223.5422.0869.9283.7947.9348.6845.57
Qwen3-8B-BasePPO30.2125.1023.3372.1986.3348.8153.5648.50
GRPO28.5022.0422.7073.8285.2652.0650.9847.91
SP³O33.9128.0227.3975.0087.3347.4054.5050.51

OOD(avg@4,6 个基准)平均:4B 上 PPO 51.95 / GRPO 56.44 / SP³O 59.28;8B 上 64.38 / 64.91 / 66.37。

4B 上 SP³O 对 PPO 是 13 战 13 胜(7 个数学列 + 6 个 OOD 列全胜),对 GRPO 12 胜 1 平。8B 上变成 11 胜 2 负:Minerva 47.40 低于 GRPO 的 52.06、低于 PPO 的 48.81;ARC-C 93.13 低于 PPO 的 93.84;MMLU-Pro 65.83 低于 GRPO 的 66.27。

3.2 诊断侧证据

  • 与 MC 值对比的 profile MSE 在 30% / 60% / 90% 进度处分别降 36% / 11% / 21%。
  • 响应内隐状态矩阵的有效秩中位数从 4.33 升到 5.63。
  • 响应 AUC(用响应均值预测终端成败)与响应内方差占比双升——稠密 PPO 是拿后者换前者,SP³O 两条都要。
  • 在线训练里,SP³O 的 within-iteration actor 更新变化更小,验证准确率与 rollout 奖励在早期阶段之后维持更高,响应长度也更长。

3.3 消融

监督密度(Figure 7):K∈{3,4,8}K\in\{3,4,8\} 都高于更稠密的配置与标准 PPO,K=3K=3 最高,K=16K=16 与 K=64K=64 大幅回落,重新贴近稠密基线。

锚点位置(Table 3,K=3K=3):

配置Acc. (%)
PPO 基线(稠密)37.60
Random36.59
0.2 / 0.5 / 0.844.65
0.3 / 0.6 / 0.945.57

尾锚(Table 5):去掉尾部锚点后精度从 45.57 掉到 44.10,重复率从 1.12% 涨到 18.33%。

4 个人分析

4.1 亮点

把「critic 学到了什么」变成可测量的问题。 以往 PPO 的 critic 只能靠 value loss、explained variance 这类自我参照的指标监控。论文引入策略条件下的 MC 价值作外部参照,等于给 critic 装了一把独立于训练目标的尺子。

方差惩罚那条分解是恒等式。 不依赖分布假设,也不需要「网络容量足够」这类前提。这类干净归因在 RL 论文里不多见。

有效秩与 AUC 的对读设计得好。 单看响应 AUC 上升,无法排除「critic 只是把响应级信号学得更好」;把 AUC 与响应内方差占比画成散点,就能看出稠密 PPO 是在做交换、SP³O 是在做扩张。

4.2 消融证明方法名命错了变量

把 Table 3 的四行按顺序相减,得到一个与论文叙事不太一致的分解:

  • 稠密 → 随机稀疏(只去密度,不管间距):−1.01
  • 随机稀疏 → 固定且靠后(0.2/0.5/0.8):+8.06
  • 再把三个锚点各挪后 10%(0.3/0.6/0.9):+0.92

稀疏化本身是负贡献。 随机取 3 个点同样消掉了绝大多数相邻冗余(3 个均匀随机点的期望间距接近 T/4T/4),它没涨,反而略低于稠密基线。论文提的两条归因,被自家 Table 3 判掉了一条。真正值钱的是放在哪,不是放几个。方法叫 SParse Proximal Policy Optimization,可「稀疏」这个轴贡献 −1.01,间距与位置贡献 +8.98。

剩下的两种读法用现有消融分不开:其一是固定位置把压平压力集中在少数相对位置上,其余位置从来不挨损失;其二是靠后位置的终端回报本来就是更好的价值估计——0.9 处剩余随机性小,RR 与 VπV^\pi 接近;0.05 处 RR 几乎不含该状态的信息,稠密监督在那里拟合的是噪声。要分开,缺一条「稀疏但整体靠前」的臂(例如 0.05/0.1/0.15)。

顺着往下读还有一层:Figure 9 的说明写「later-state coverage is generally beneficial」,0.3/0.6/0.9 又比 0.2/0.5/0.8 好 +0.92。把「靠后更好」推到极限就是「只监督尾部」,这与本专栏第十期 TrimSFT 的结论(按 logit gap 只保留中间带)方向相反。两篇论文问的是同一个问题,给出的答案相反。

4.3 增益随规模衰减近 4 倍,8B 上按题量加权只剩 +0.75

摘要写「consistently improve the learned policy across model sizes」。两个尺寸摆在一起看:

指标4B SP³O−PPO8B SP³O−PPO衰减
数学 Avg(等权)+7.97+2.013.97×
数学 Avg(按题量加权)+11.00+0.7514.7×
OOD Avg(等权)+7.33+1.993.68×

换成相对口径更直观:以 RL 自身带来的增益(PPO−Base)为分母,4B 上 SP³O 的追加收益占 40.6%,8B 上只占 8.1%。

按题量加权的算法沿用本专栏惯例:AIME24/25/26 各 30 题、AMC23 40 题、MATH500 500 题(Minerva 272、OlympiadBench 675 为通行取值,论文未标注)。等权时三个 30 题的 AIME 共占 3/7 = 42.9% 权重,按题量只占 5.7%。这一次加权对论文是有利的——4B 对 PPO 从 +7.97 升到 +11.00,因为 MATH500 上 70.15→83.79 提了 13.64 分;8B 却塌到 +0.75。两点连不出趋势,但足以说明「跨规模一致」缺第三个尺寸。

(加权口径为本专栏推算,非论文数据。)

4.4 OOD 增益高度集中在两个基准

把 OOD 平均增益按列拆开(每列权重 1/6):

  • 4B 对 GRPO 的 +2.83 里,ZebraLogic(+1.10)与 MMLU-Pro(+0.81)合计占 67.6%;GPQA 完全持平(38.89 对 38.89),ARC-C 只 +0.01。
  • 8B 对 GRPO 的 +1.46 里,ZebraLogic(+0.68)与 BBH(+0.47)合计占 78.3%;MMLU-Pro 是负的(−0.07)。
  • 4B 对 PPO 的 +7.33 里,BBH(+2.64)与 ZebraLogic(+1.55)合计占 57.2%。

两个尺寸上唯一稳定贡献的列是 ZebraLogic-Grid。其余基准在 4B 与 8B 之间的贡献并不重合。

4.5 三处实验设计上的混淆

(1)尾锚消融一并改了两个变量。 在 K=3K=3 的配置下,「去掉尾部锚点」等价于把 KK 从 3 降到 2。+1.47 的精度增益既可读作「尾部覆盖重要」,也可读作「监督点从 2 增到 3」。缺一条「K=3K=3 但不覆盖尾部」(如 0.2/0.4/0.6)的对照。

(2)重复率没有基线。 18.33% → 1.12% 是全文最戏剧性的数字(16.37×),却放在附录,Table 5 只列了 SP³O 的两个变体。PPO 与 GRPO 的重复率全篇没有出现。没有这个基线,1.12% 是「修好了」还是「本来就低」无从判断。

(3)critic 的有效 batch 缩小约 2731 倍,学习率没动。 每个 rollout batch 是 512 条响应,按 8192 长度上限算,稠密监督下被监督的价值数约 419 万,SP³O 下只有 512 × 3 = 1536。附录 Table 4 的 critic 学习率 4×10−64\times10^{-6} 对两种配置相同。价值头的前向没省,actor 损失仍然驱动整个骨干的反向,省掉的只是被计入损失的位置数——算力的量级变化其实很小,真正变的是 critic 更新的统计量。论文没有报 critic 学习率扫描,也没有报价值损失曲线。

4.6 该做而没做的三条对照

γ,λ\gamma,\lambda 消融。 整篇分析的前提是 γ=λ=1\gamma=\lambda=1 时 G^t=R(τ)\hat G_t=R(\tau) 对所有 tt 成立。取 λ<1\lambda<1 或 γ<1\gamma<1 会让各位置的回归目标自然分化,这是最便宜的替代解法。附录 Table 4 列了 9 项超参,没有列 γ\gamma 与 λ\lambda,全文也没有这一臂。

拿 MC 值当 critic 目标。 论文为诊断采样了 15.5 万–31.1 万条续写(每个检查点,上限 1.28–2.55B token),这些正是能直接当回归目标的策略条件价值。它只被用来画图。相关工作点了 VinePPO 的做法,实验里没有这一臂。用 MC 目标训练当然贵,贵到什么程度、收益够不够,论文没有给出这笔账。

长度匹配。 Figure 6d 显示 SP³O 的响应比 PPO 更长。数学基准用 avg@32 评测,更长的 CoT 与更高的准确率机械相关。论文没有长度匹配的对照,也没有把长度数字列进任何表格。

4.7 两点框架性问题

理论只给了上界。 附录 A.2 的式(15)用 Cauchy–Schwarz 把 ∥Δgmean∥\|\Delta g_{\text{mean}}\| 与 ∥Δgwithin∥\|\Delta g_{\text{within}}\| 分别界定为「critic RMSE × 对应 log-policy 梯度的 RMS 范数」。论文自己也注明:

“These are norm bounds; they do not by themselves assert that the error is determined by directional alignment.”(A.2)

上界证明了误差不会太大,没有证明误差确实大到影响训练。从「误差存在」跳到「误差有害」,中间靠的是实验,而实验部分全篇没有 seed 数、没有误差棒、没有显著性检验。Figure 7 只留下一句「the variance across runs is non-negligible」。

FrozenLake 的规模实验与欠拟合混淆。 论文「固定训练配置、增大迷宫尺寸」,观察到压平随状态空间加剧。配置不变意味着每个格子分到的更新量随规模下降,「更大的状态空间」与「更欠拟合」被绑在一起。要分离,需要在每个规模上把训练预算配平。

4.8 对领域的影响

GRPO 一类 critic-free 方法在近两年的 LLM RL 里占了上风,理由是省掉价值模型、少一套超参。这篇论文给的是另一条路:critic-free 不是唯一解,critic 的病灶可以定位、也能修。稀疏监督若在更大规模上站得住,「要不要 critic」这个问题的答案会往回摆一点。

对做 RL 基础设施的团队,更值得注意的也许是诊断方法本身:用策略条件下重复采样的 MC 价值当外部参照,可以给任何价值模型做体检,不限于 PPO。

5 实践启示

可以借鉴的技术

  • 一行改动,低迁移成本。 actor 目标、rollout、回报目标都不动,只改价值损失的位置掩码。已跑 PPO 的训练栈(论文代码基于 slime v0.2.4,Apache-2.0)加一个索引集合即可。
  • MC 价值体检。 哪怕不采纳 SP³O,把「策略条件 MC 价值 vs critic 预测」做成例行诊断也有价值。采样协议可直接抄附录 A.1:128 条起,按 64 条加码至多 256 条,Wilson 95% 半宽 ≤0.04 停止。
  • 锚点放靠后。 消融显示 0.3/0.6/0.9 优于 0.2/0.5/0.8,Figure 9 也指向「靠后覆盖更有利」。落地先试靠后的等间距锚点。
  • 给长响应补尾锚。 ≥6144 token 的响应补 0.95 锚点,换来 16 倍量级的重复率下降。做长 CoT 训练时,这一条比精度那一栏更有吸引力。

潜在应用场景

  • 长轨迹推理 RL:响应越长,稠密监督的冗余越严重,稀疏化的收益空间越大。
  • Agent 与多轮工具调用:一条轨迹里包含大量「环境返回」token,相邻状态重叠度比纯 CoT 更高。
  • 已有 critic 的在线 RL 服务:不需要重训 actor,价值模型侧的掩码可以热切换。

落地前要先补的账:论文没有 seed 与误差棒,KK、锚点位置、critic 学习率三者的交互也没有扫全。真要上生产,先在自己的栈上跑一遍 K∈{3,4,8}K\in\{3,4,8\} × 锚点位置 × critic 学习率的网格,别直接照抄 0.3/0.6/0.9。

参考文献

Li, Y., Yan, J., Luo, Y., Wang, Z., Wang, F., Tan, R.-X., Tian, K., Cui, G., Ding, N., Zhao, P., Li, Y., & Cheng, Y. (2026). Rethinking Critic Learning in PPO: Understanding and Mitigating Value Flattening. arXiv:2609.18708 [cs.LG]. 上海交通大学 / 上海人工智能实验室 / 西湖大学 / 南京大学 / 清华大学 / 香港中文大学 / 南洋理工大学.

相关精读

本专栏连续四十三期追问同一个命题——“训练信号到底该从哪儿来”。前十四期都在问「拿什么练、练多少、怎么摆」,本篇把同一把刀切进 RL 内部:一条响应里哪些位置配得上价值监督。它与 TrimSFT(按 logit gap 只保留中间带)给出方向相反的答案。