Best-Practice Critic Optimization:让训练出来的 Critic 打赢分组采样

笔记日期: 2026-08-25 作者: Zhongzhu Zhou 阅读论文: How to Train a Critic Stably and Efficiently 论文作者: Penghui Qi, Xiangxin Zhou, Wee Sun Lee(新加坡国立大学;腾讯混元) arXiv: 2608.23566 状态: 预印本(cs.LG),2026 年 8 月

1. 这篇论文到底在问什么问题

过去两年,LLM 推理能力的强化学习几乎全面转向了”分组式”方法:对同一个 prompt 采样多条回复,比较它们的最终 reward,把比较结果转化成逐 token 的训练信号。GRPO 及其一系列后代(Dr. GRPO、DAPO、GSPO)都属于这个家族,原因也很直接——你完全不需要再训练第二个神经网络,“基线”直接从一组 rollout 的均值里算出来。历史上的另一条路——用学出来的价值函数(critic)做 PPO——之所以逐渐被冷落,是有具体原因的:在实践中,基于 critic 的 LLM 训练确实很脆弱。训练经常崩掉,超参数需要针对每个任务重新调,也没人能给出一份小巧、明确、可靠工作的配方。

这篇论文问的问题比”PPO 和 GRPO 谁更好”要精确得多:“基于 critic 的 LLM RL 是不是本质上就不稳定?还是说,不稳定只是大部分代码库都恰好共享的几个具体、可修的实现选择造成的假象?“作者给出的答案是后者,而且是用构造性的方式证明的。他们从一个刻意设计得很小但极具揭示性的失败场景出发——一个”sanity test”(合理性检验):用一个 1.5B 模型在一批它本来就已经能解出来的数学题上做微调,因此如果训练奖励达不到接近 100%,那责任就不能推给任务难度或模型容量,只能是优化配方本身出了问题。通过一次只改一个组件,观察这个 sanity test 成功还是失败,他们精确地分离出到底是哪些选择破坏了 critic 训练、哪些选择修复了它。最终得到的 Best-Practice Critic Optimization(BPCO),并不是一个新损失函数意义上的”新算法”,而是对现有几块积木的一次具体、有实证依据的重新组合——DPPO 裁剪、限幅的价值头、无偏的蒙特卡洛 critic 目标、不做归一化的优势、长度自适应的 GAE——外加一个真正新的想法:既然 critic 在训练结束后就会被丢弃,那它完全可以看到策略永远看不到的信息(参考答案、标准解答、评分细则),而且这种”特权信息”完全不会改变策略本身能看到什么。

如果你今天并不需要亲自调试某个 PPO 训练任务,为什么还要关心这篇论文?因为它的发现对整个领域有一个结构性含义:如果一个配置得当的 critic 能用单条 rollout 就匹配 GRPO 用八条、十六条 rollout 才能达到的样本效率,那么当前花在”多采样几条来凑一个分组基线”上的相当一部分算力,其实是在为一个实现层面的 bug 打补丁,而不是 critic-free RL 的某种根本性要求。这个断言比听起来的分量更重,值得仔细拆解——既要看每个修复背后的机制,也要看证据在哪些地方站得住、哪些地方还有延展空间。

需要提前说明的一点是:本篇论文并不是对 GRPO 类方法的否定,作者自己也引用了多篇 GRPO/DAPO/Dr. GRPO 的相关工作,并在实验中把它作为认真对待的基线,而不是稻草人。这篇笔记同样会尽量公平地呈现这一点——BPCO 在某些场景下(基础版 30B-A3B 模型)只是与分组基线持平,而非全面超越,这个细节在后文中会具体展开。

本篇笔记分三部分展开。首先是前置知识:PPO、GAE 和分组式优势估计到底在算什么,因为 BPCO 的每一处修复都是相对这个背景才有意义的。其次是这项受控研究本身,逐一走过六个组件,给出推导、它针对的失败模式、以及对应的伪代码。最后是更大规模的评测(更大数据集、300 亿参数级别的 MoE 模型、基于评分细则的 reward),以及一段独立的批判性分析。

2. 前置知识

2.1 LLM RL 里的信用分配问题

一个语言模型策略 πθ\pi_\theta 在给定 prompt xx 的条件下逐 token 生成回复 y=(y1,,yT)y = (y_1, \dots, y_T)。在每个解码步 tt,“状态”是前缀 st=(x,y<t)s_t = (x, y_{<t}),“动作”是下一个 token yty_t,而 reward 通常是稀疏且只在末尾出现的:整个生成完毕的回复 yy 只拿到一个标量 reward R(x,y)R(x, y)(比如数学题答对是 1,答错是 0),中间的每一步 reward 都是 0。这正是本论文中分组方法和 critic 方法共同针对的 outcome-reward 场景——这里没有人在假设逐 token 的 reward model。

核心的技术难题是信用分配(credit assignment):一条很长的回复里,哪些 token 应该为最终那个 0/1 结果获得表扬(正的优势)或承担责任(负的优势)?同一个终局 reward 完全可以和两种不同的逐 token 信号同时相容——你光看一次 rollout 根本判断不出到底是第 47 个 token 还是第 312 个 token 才是关键决策点。在不引入额外 reward 标注的前提下,估计一个有用的逐 token 优势基本只有两条通用路线:

  1. 分组相对比较——对同一个 prompt 采样若干条回复,用它们最终 reward 之间的差异作为训练信号。如果一个 prompt 的一组分数大多是 1,只有一个是 0,那个 0 分回复的所有 token 都会被整体压低。
  2. 价值函数自举——另外训练一个模型 Vϕ(st)V_\phi(s_t),用来预测从某个前缀出发未来 reward 的期望值,再用这个预测在相邻步之间的变化作为逐 token 优势信号。每个 prompt 只需要一条 rollout,因为”基线”来自价值函数,而不是来自其他 rollout。

这两种策略本质上都是在近似同一个理论量——优势函数 Aπ(st,at)=Qπ(st,at)Vπ(st)A^\pi(s_t, a_t) = Q^\pi(s_t, a_t) - V^\pi(s_t),衡量某个动作比策略从该状态出发的平均表现好多少。分组方法从来不去拟合 VπV^\pi 就近似出了这个量;critic 方法则直接拟合 VπV^\pi。本论文的全部贡献都落在第二条路线里:它不是要提出一种新的分组式估计器,而是要回答”如何让第二条路线真正好用”。

2.2 近端策略优化(PPO),精确表述

给定 prompt xx,令 μ\mu 为生成当前更新所用 rollout 的”行为策略”(大多数实现里 μ=πθold\mu = \pi_{\theta_{\text{old}}},即本次梯度更新前的策略快照)。定义位置 tt 处采样 token 的概率比:

ρt(θ)=πθ(ytst)μ(ytst).\rho_t(\theta) = \frac{\pi_\theta(y_t \mid s_t)}{\mu(y_t \mid s_t)}.

给定优势估计 A^t\hat{A}_t,PPO 的裁剪代理目标为:

LPPO(θ)=Et[min(ρt(θ)A^t, clip(ρt(θ),1ϵ,1+ϵ)A^t)].(1)L_{\mathrm{PPO}}(\theta) = \mathbb{E}_t\Big[\min\big(\rho_t(\theta)\hat{A}_t,\ \mathrm{clip}(\rho_t(\theta), 1-\epsilon, 1+\epsilon)\hat{A}_t\big)\Big]. \tag{1}

直觉上:如果 A^t>0\hat{A}_t > 0(这个 token 是”好”的),目标函数希望增大 ρt\rho_t,但一旦 ρt\rho_t 超过 1+ϵ1+\epsilon,裁剪就会取消继续增大它带来的收益——“min” 操作在这之后就把梯度直接砍掉了,于是一旦策略已经移动得足够远,更新就会停止。A^t<0\hat{A}_t < 0 时对称地处理。这就构造出一个信任域:任何一次 minibatch 更新都不能让某个 token 的概率在一步之内任意移动很远,这正是 PPO 用来维持稳定性的机制。

为什么这个具体的裁剪形式在 LLM 规模下会出问题。 裁剪边界 [1ϵ,1+ϵ][1-\epsilon, 1+\epsilon] 是一个比值边界,而不是绝对概率边界。设想两个 token:一个 μ(ytst)=0.9\mu(y_t\mid s_t) = 0.9,另一个 μ(ytst)=0.001\mu(y_t\mid s_t) = 0.001。同样是比值 ρt=1.2\rho_t = 1.2(正好卡在典型的 ϵ=0.2\epsilon=0.2 边界),对第一个 token 对应的绝对概率变化是 0.91.080.9 \to 1.08(因概率不能超过 1 被裁到接近 1,实际变化约为 0.1);对第二个 token 却是 0.0010.00120.001 \to 0.0012——绝对变化量小了 100 倍。在一个十万级以上词表里,绝大多数被采样的 token 概率本来就很低,所以基于比值的裁剪会系统性地允许高概率/常见 token 出现较大的绝对波动,同时几乎冻结低概率/罕见 token 的更新。这正是同一研究组在另一篇论文中提出的 Divergence Proximal Policy Optimization(DPPO)所针对的问题。

2.3 Divergence Proximal Policy Optimization(DPPO)

DPPO 保留了 PPO 裁剪目标的形式,但把比值边界替换成了采样 token 概率变化量的边界。本文使用的是二元全变差(binary total-variation)变体:

LDPPO(θ)=Et[min(ρt(θ)A^t, clip(ρt(θ), 1ϵμ(ytst), 1+ϵμ(ytst))A^t)].(2)L_{\mathrm{DPPO}}(\theta) = \mathbb{E}_t\left[\min\left(\rho_t(\theta)\hat{A}_t,\ \mathrm{clip}\left(\rho_t(\theta),\ 1 - \frac{\epsilon}{\mu(y_t\mid s_t)},\ 1 + \frac{\epsilon}{\mu(y_t\mid s_t)}\right)\hat{A}_t\right)\right]. \tag{2}

推导:为什么这等价于一个绝对概率约束。 把上裁剪边界写成 ρt1+ϵ/μ(ytst)\rho_t \le 1 + \epsilon/\mu(y_t\mid s_t)。两边同乘 μ(ytst)\mu(y_t\mid s_t)(为正,不等号方向不变):

ρt(θ)μ(ytst)μ(ytst)+ϵ.\rho_t(\theta)\, \mu(y_t\mid s_t) \le \mu(y_t\mid s_t) + \epsilon.

而根据 ρt\rho_t 的定义,ρt(θ)μ(ytst)=πθ(ytst)\rho_t(\theta)\,\mu(y_t\mid s_t) = \pi_\theta(y_t \mid s_t)。所以上裁剪边界就是 πθ(ytst)μ(ytst)+ϵ\pi_\theta(y_t\mid s_t) \le \mu(y_t\mid s_t) + \epsilon,下边界同理给出 πθ(ytst)μ(ytst)ϵ\pi_\theta(y_t\mid s_t) \ge \mu(y_t\mid s_t) - \epsilon。合起来:πθ(ytst)μ(ytst)ϵ|\pi_\theta(y_t\mid s_t) - \mu(y_t\mid s_t)| \le \epsilon——一个绝对概率偏移约束,对 μ=0.9\mu=0.9 的 token 和 μ=0.001\mu=0.001 的 token 性质完全一样。这正是论文所说的”给采样 token 一个共同的绝对概率阈值,而不是共同的比值阈值”。作者本可以采用的显而易见的替代方案——统一缩小 PPO 的 ϵ\epsilon 来控制低概率 token 的最坏情况爆炸——会过度限制高概率 token,因为更小的 ϵ\epsilon 会把所有 token 的绝对移动量都限制在同一个(更小的)值上;DPPO 用 1/μ(ytst)1/\mu(y_t\mid s_t) 对每个 token 分别做重新缩放,让高概率 token(因为它离 1 还有更多”空间”)可以按更大的比值移动,同时仍然把每个 token 的绝对移动量控制在 ϵ\epsilon 以内。

一个具体的数值例子。ϵ=0.2\epsilon = 0.2,这是 PPO 的常见默认值。对高概率 token μ(ytst)=0.9\mu(y_t\mid s_t) = 0.9,PPO 的比值裁剪允许 ρt[0.8,1.2]\rho_t \in [0.8, 1.2],即 πθ(ytst)[0.72,1.08]\pi_\theta(y_t\mid s_t) \in [0.72, 1.08](在 1 处截断)——绝对波动最多约 0.10.1。对低概率 token μ(ytst)=0.001\mu(y_t\mid s_t) = 0.001,同样的比值裁剪只允许 πθ(ytst)[0.0008,0.0012]\pi_\theta(y_t\mid s_t) \in [0.0008, 0.0012]——绝对波动仅为 0.00020.0002,比前者小了五百倍。而在 DPPO 下,同样名义上的 ϵ=0.2\epsilon = 0.2ϵ/μ(ytst)\epsilon/\mu(y_t\mid s_t) 逐 token 缩放:高概率 token 的有效比值边界变成 1±0.2/0.91±0.2221 \pm 0.2/0.9 \approx 1\pm 0.222(因为 μ\mu 本来就接近 1,与 PPO 差别不大);低概率 token 的有效比值边界则变成 1±0.2/0.001=1±2001 \pm 0.2/0.001 = 1\pm 200——比值范围看起来巨大,但乘回 μ=0.001\mu = 0.001 之后,对应的绝对概率窗口恰好和高概率 token 一样,都是 ±0.2\pm 0.2。正是这种数值上的不对称性,解释了为什么在词表巨大、绝大多数被采样 token 都处于低绝对概率区间的 LLM 里,PPO 和 DPPO 的实际裁剪行为会有如此大的差异。

论文自己的 sanity test(下文 3.1 节讨论)说明这不是一个装饰性差异:在尚未引入任何 critic 相关修复之前,仅仅把 PPO 换成 DPPO,就能把一个会崩溃的训练变成稳定的训练。这确立了 DPPO 作为固定基础,其余五个 BPCO 组件都是在这个基础上叠加的。

2.4 广义优势估计(GAE)与 critic 目标,逐步推导

对由行为策略 μ\mu 生成的 rollout,定义真实价值函数 Vμ(st)=Eμ[R(x,y)st]V^\mu(s_t) = \mathbb{E}_\mu[R(x,y) \mid s_t]——即给定目前为止已经生成的全部内容,最终 reward 的期望值。critic Vϕ(st)V_\phi(s_t) 是一个用来近似这个量的神经网络。令 ϕold\phi_{\text{old}} 表示仅用于构造目标值的、被冻结的 critic 参数快照(这种与当前正在更新的 ϕ\phi 的解耦是标准做法,避免单次更新过程中目标本身也在移动)。

第一步——TD 残差。 定义每个位置上的单步时序差分误差:

δt=rt+γVϕold(st+1)Vϕold(st).(3)\delta_t = r_t + \gamma V_{\phi_{\text{old}}}(s_{t+1}) - V_{\phi_{\text{old}}}(s_t). \tag{3}

直觉:rt+γVϕold(st+1)r_t + \gamma V_{\phi_{\text{old}}}(s_{t+1}) 是对 V(st)V(s_t) 的一次单步前瞻式重新估计(用下一个状态的 critic 值加上这一步真实观测到的 reward 做自举),而 δt\delta_t 衡量的是这个重新估计与 critic 在 sts_t 处自身当前预测之间的分歧程度。如果 critic 是完美的,δt\delta_t 在期望意义上处处为零。

第二步——指数加权求和(GAE)。 与其单独用 δt\delta_t(如果 γ\gamma 接近 1、时间跨度很长,单步估计方差会很大,因为它是一个原始的单步估计),或者单独用完整的蒙特卡洛回报(方差也很大,因为必须累积未来每一步的真实随机性),GAE 用一个几何加权在两者之间插值:

A^tGAE(λ)=l=0Tt(γλ)lδt+l.(4)\hat{A}_t^{\mathrm{GAE}(\lambda)} = \sum_{l=0}^{T-t} (\gamma\lambda)^l\, \delta_{t+l}. \tag{4}

其中 rt=0r_t = 0t<Tt < T,因为是 outcome-only reward),rT=R(x,y)r_T = R(x,y)Vϕold(sT+1)=0V_{\phi_{\text{old}}}(s_{T+1}) = 0(回复结束之后没有 reward)。折扣因子 γ\gamma 与追踪衰减参数 λ[0,1]\lambda \in [0,1] 共同控制偏差-方差权衡:λ=0\lambda = 0 退化为原始单步 TD 残差(方差低,但因 critic 误差而带来偏差);λ=1\lambda = 1 使这个求和发生”望远镜式”抵消——把几何级数展开,注意到 VϕoldV_{\phi_{\text{old}}} 项在中间两两抵消,只在边界处留下——最终得到 R(x,y)Vϕold(st)R(x,y) - V_{\phi_{\text{old}}}(s_t),即不含任何自举成分的纯蒙特卡洛优势(相对 VμV^\mu 无偏,但方差更高,因为它继承了整条采样后续路径的全部随机性)。

第三步——朴素的 critic 目标。 教科书式做法是用同一个 A^tGAE(λ)\hat{A}_t^{\mathrm{GAE}(\lambda)} 同时构造策略更新用的优势和 critic 自身的回归目标:

V^t(λ)=A^tGAE(λ)+Vϕold(st),LV(ϕ)=Et[(Vϕ(st)V^t(λ))2].(5, 6)\hat{V}_t(\lambda) = \hat{A}_t^{\mathrm{GAE}(\lambda)} + V_{\phi_{\text{old}}}(s_t), \qquad \mathcal{L}_V(\phi) = \mathbb{E}_t\Big[\big(V_\phi(s_t) - \hat{V}_t(\lambda)\big)^2\Big]. \tag{5, 6}

为什么这种朴素耦合是一个设计缺陷,而不仅仅是效率上的小问题。A^tGAE(λ)\hat{A}_t^{\mathrm{GAE}(\lambda)} 的定义代回公式 5:只要 λ<1\lambda < 1V^t(λ)\hat{V}_t(\lambda) 本身就会(通过 l>0l>0 项的 δt+l\delta_{t+l} 残差)包含 VϕoldV_{\phi_{\text{old}}} 成分。这意味着 critic 有一部分是在被训练去复现它自己先前的预测——一个自我参照的目标。一个 critic 完全可以在这个目标上表现得”拟合良好”(相对 V^t(λ)\hat{V}_t(\lambda) 的”解释方差”很高),仅仅因为它和自己上一轮的迭代结果保持接近,而完全不管这个迭代结果是否接近真实观测到的结局 R(x,y)R(x,y)。这正是论文在 3.3 节(下文”第三步”)中揭示的失败模式:相对自举目标的解释方差冲到接近 1,而策略明显不稳定——因为这个指标衡量的是”自洽性”,而不是”准确性”。

2.5 分组方法(GRPO / Dr. GRPO)作为对比基线

分组方法完全绕开 critic:对同一个 prompt xx 采样 GG 条回复 {y(i)}i=1G\{y^{(i)}\}_{i=1}^G。令 Ri=R(x,y(i))R_i = R(x, y^{(i)})μR,σR\mu_R, \sigma_R 为这组回复奖励的经验均值和标准差。GRPO 给回复 ii 中的每个 token 赋予相同的优势:

A^t,iGRPO=RiμRσR.(7)\hat{A}_{t,i}^{\mathrm{GRPO}} = \frac{R_i - \mu_R}{\sigma_R}. \tag{7}

Dr. GRPO 去掉了 σR\sigma_R 归一化(DAPO/Dr. GRPO 相关文献已经分别指出,这种归一化会按组内 reward 方差的大小重新加权不同 prompt——组内 reward 分布特别集中的 prompt 会得到被放大的梯度,即便它和另一个组内分布很分散的 prompt 本身信息量相当):

A^t,iDr.GRPO=RiμR.(8)\hat{A}_{t,i}^{\mathrm{Dr.GRPO}} = R_i - \mu_R. \tag{8}

这就是本论文第 4 节用来对比 BPCO 的基线。贯穿全文需要记住的一个结构性差异:分组方法需要对同一个 prompt 采样 GG 条 rollout 才能构造出一个优势估计(本文用于基线实验的 G=16G=16);而 critic 方法一旦训练完成,只需要 1 条。

另外值得注意的是,这些方法在“是否需要另外一个神经网络”这个维度上完全不同:分组方法(GRPO/Dr. GRPO)从头到尾只需要一个策略网络,代价是每个 prompt 需要多次 rollout;而 critic 方法(PPO、VC-PPO、VAPO、BPCO)都需要额外训练一个 critic 网络,但换来的是每个 prompt 只需 1 次 rollout。这个取舍在不同的硬件环境下会有不同的性价比——如果生成(rollout)是瓶颈(例如长文本自回归解码很慢),critic 方法的优势会更明显;如果训练时的前向/反向传播才是瓶颈,分组方法可能更具性价比——这正是第 6 节会详细讨论的计算量对等性问题。

3. 构建 BPCO:受控 sanity test 研究

3.1 让这篇论文有说服力的实验设计

在逐一讲解每个修复之前,先要注意到一个让这篇论文具备实证分量的实验设计选择。作者在 1,460 道初始模型就已经能解出来的数学题上微调 DeepSeek-R1-Distill-Qwen-1.5B。一个配置正确的 RL 配方,理应能把训练奖励推到接近 100%——如果做不到,那责任就只能归咎于优化配方本身,而不是任务难度、模型容量不足,或 reward 信号噪声太大。这和单元测试的逻辑一样:结果提前已知,任何偏差都是诊断性的。每次训练迭代使用 1,024 条轨迹,minibatch 大小 256(每次迭代 4 个优化器 minibatch),策略学习率 10610^{-6},critic 学习率 10510^{-5},共运行 1,500 次迭代。全程还监控一个留出指标——AIME 2025 avg@32(在一个真正困难的基准上,每题采样 32 次的平均准确率),用来捕捉过拟合:一个能把这 1,460 道题拟合得完美无缺、却把通用推理能力毁掉的配方,也算是一种失败,只是失败的方式不同。

作者一次只改一个组件,从标准 GAE、λ=1\lambda=1 的朴素 PPO 出发,之后每一步都保留之前所有的改动。这种”顺序消融”的设计,正是让论文能够作出因果性断言(“去掉 X 具体地修复了失败模式 Y”)、而不只是相关性断言(“最终配方比初始配方效果更好”)的关键。

3.2 第一步——用 DPPO 替换 PPO

什么会崩溃,为什么。 在朴素 PPO(λ=1\lambda=1)下,训练奖励先上升,然后在大约第 400 次迭代之后崩溃到接近零(图 1,蓝色曲线)。在其他条件完全不变的情况下,把目标函数换成 DPPO(公式 2),训练奖励能稳定爬升到接近 1.0,AIME 2025 avg@32 也随之稳步上升(绿色曲线)。这直接印证了 2.3 节的机制:在 λ=1\lambda=1 时,优势估计里不含任何自举 critic 误差(GAE 求和会望远镜式抵消为纯蒙特卡洛优势),所以崩溃的 PPO 训练和稳定的 DPPO 训练之间唯一的剩余差异就是裁剪规则本身——这是强有力的证据,说明比值裁剪对低概率与高概率 token 的不平等对待,即便优势信号本身无偏,也足以单独破坏训练稳定性。

Figure 1(对应原论文 Fig.1):sanity test 中 PPO 与 DPPO 的对比。\lambda=1 时,PPO 的训练奖励在初期上升后崩溃;DPPO 保持稳定。把 GAE 参数降到 \lambda=0.99 后 DPPO 也变得不稳定,暴露出对 critic 误差的敏感性。

为下文铺垫的压力测试。 作者接着在 DPPO 下把 λ\lambda 降到 0.99,观察到不稳定性再次出现(图 1 红色曲线)——一旦优势估计中含有任何自举 critic 预测,仅靠 DPPO 就不再足够,因为 critic 的近似误差 VϕVμV_\phi \ne V^\mu 会相对无偏的 λ=1\lambda=1 估计器给优势估计带来偏差。作者没有把这当作”永远用 λ=1\lambda=1“的理由(那样会牺牲 GAE 全部的方差降低作用),而是刻意把 λ=0.99\lambda=0.99 保留下来作为后续几步的压力测试:BPCO 剩余部分的设计目标,明确是让训练对自举 critic 误差保持鲁棒,而不是彻底避免自举本身。 这是一个重要的设计哲学:一个只在 λ=1\lambda=1 时才管用的配方,会牺牲 GAE 全部的方差降低收益,而这个收益在时间跨度越长时越重要。

3.3 第二步——把 critic 的价值预测限幅到 reward 范围内

问题所在。 标准的 critic 用一个线性头:Vϕ(st)=wh(st)+bV_\phi(s_t) = w^\top h(s_t) + b,其中 hh 是某个隐藏表示。没有任何约束能限制这个输出落在已知的回报范围内——对于 sanity test 里的二元 {0,1}\{0,1\} reward,一个线性头完全可能输出 888-8 这样的值(图 2 右侧面板,蓝色曲线),而这在数学上是绝不可能作为一个类伯努利回报的期望值出现的。这些极端预测会破坏训练奖励和 AIME 分数(图 2 左/中面板,蓝色曲线),即便第一步的 DPPO 在 λ=1\lambda=1 时已经证明是稳定的——之所以这里又不稳定了,是因为第二步的压力测试用的是 λ=0.99\lambda=0.99,重新把 critic 误差引入了优势估计,而这一次误差可以任意大,因为没有任何东西约束它的量级。

修复方案,附推导。[Rmin,Rmax][R_{\min}, R_{\max}] 为已知的 reward 范围(二元 reward 下是 [0,1][0,1]),zϕ(st)Rz_\phi(s_t) \in \mathbb{R} 为线性头的原始输出。由于 Vμ(st)=Eμ[R(x,y)st]V^\mu(s_t) = \mathbb{E}_\mu[R(x,y)\mid s_t] 是一个有界随机变量的期望,它本身必然落在 [Rmin,Rmax][R_{\min}, R_{\max}] 之内——这不是一个建模选择,而是关于有界变量期望的一个数学事实,只是标准线性头完全没有考虑到这一点。论文用一个缩放反正切函数来强制满足这个约束:

Vϕ(st)=Rmin+(RmaxRmin)(12+1πarctan(zϕ(st))).(9)V_\phi(s_t) = R_{\min} + (R_{\max} - R_{\min})\left(\frac{1}{2} + \frac{1}{\pi}\arctan\big(z_\phi(s_t)\big)\right). \tag{9}

为什么用反正切而不是比如 sigmoid? 两者都能把 R\mathbb{R} 映射到一个有界开区间,形状上也很相似。论文并没有明确解释这个选择相对 sigmoid 的理由,这一点值得在下文(第 6 节)指出——从经验上看,两者在这个用途上很可能表现几乎一样,因为都是光滑、单调、映射到 (Rmin,Rmax)(R_{\min}, R_{\max}) 的双射,饱和行为也相似;这个选择更可能是代码库既有惯例的结果,而不是经过对比之后的刻意结论。两者共有、也是真正重要的性质:(a) 映射是单调的,梯度信号能够保留(除了远端饱和区之外,几乎没有平坦区域,而饱和本身恰好反映了极端置信度);(b) 任何有限输入都映射到区间内部,永远不会精确碰到边界,因此平方误差损失的梯度总是良定义的;(c) 在 RminR_{\min}/RmaxR_{\max} 附近的渐近饱和意味着高置信度预测对应很小的梯度,这通常是我们希望的——你不希望一个巨大的梯度把一个已经近乎确定的预测推到一个不可能的取值之外。

在这个修复之后,图 2 显示限幅后的 critic(绿色)能稳定、单调地改善训练奖励和 AIME 曲线,基本恢复了第一步中 λ=1\lambda=1 时的稳定水平,而价值预测本身(右侧面板,绿色)也始终被钉在 [0,1][0,1] 之内。

Figure 2(对应原论文 Fig.2):把 critic 预测限幅到 reward 范围内的效果。无约束线性头(蓝色)输出的值远超出 [0,1](右侧面板),使训练奖励和 AIME 2025 avg@32 都变得不稳定;限幅后的价值(绿色)始终留在 reward 范围内,训练也随之稳定。

算法 1——限幅 critic 头(伪代码)。

算法 1:限幅到 Reward 范围的价值头
输入:隐藏表示 h(s_t),reward 边界 R_min、R_max,线性参数 (w, b)
1: z <- w^T h(s_t) + b                     # 原始无约束标量
2: u <- 0.5 + (1/pi) * arctan(z)           # 压缩到开区间 (0, 1)
3: V_phi(s_t) <- R_min + (R_max - R_min) * u
4: 返回 V_phi(s_t)

3.4 第三步——使用无偏的蒙特卡洛价值目标

诊断自我参照目标问题。 如 2.4 节所推导,只要 λ<1\lambda < 1,朴素 critic 目标 V^t(λ)\hat{V}_t(\lambda) 就会含有 VϕoldV_{\phi_{\text{old}}} 成分。论文追踪了一个”解释方差”诊断指标:

EV(Vϕ,V^)=1Var(V^tVϕ(st))Var(V^t).(10)\mathrm{EV}(V_\phi, \hat{V}) = 1 - \frac{\mathrm{Var}(\hat{V}_t - V_\phi(s_t))}{\mathrm{Var}(\hat{V}_t)}. \tag{10}

通常 EV1\mathrm{EV} \to 1 意味着拟合良好。但图 3(右侧面板)显示,相对自举目标 V^t(0.99)\hat{V}_t(0.99) 的解释方差迅速逼近 1,而训练奖励和 AIME(左/中面板)却依然不稳定——这直接从经验上印证了自我参照目标这一失败模式:critic 在拟合一个部分由自己最近预测组成的移动目标,因此这里的高 EV 分数意味着”与自身一致”,而不是”相对真实结局准确”。

修复方案——参照 VC-PPO 的解耦 GAE。 对策略优势和 critic 目标使用不同λ\lambda:策略侧继续保留 λπ=0.99\lambda_\pi = 0.99(保留方差降低效果),但 critic 自身的回归目标设为 λV=1\lambda_V = 1。在 γ=1\gamma=1、outcome-only reward 的条件下,把 λV=1\lambda_V=1 代入 GAE 求和,会像 2.4 节推导的那样发生望远镜式抵消:

V^t=A^tGAE(1)+Vϕold(st)=R(x,y).(11)\hat{V}_t = \hat{A}_t^{\mathrm{GAE}(1)} + V_{\phi_{\text{old}}}(s_t) = R(x,y). \tag{11}

这现在字面上就是观测到的最终结局——对于从 μ\mu 采样出的轨迹上任意前缀,都是 Vμ(st)V^\mu(s_t) 的一个真正无偏的蒙特卡洛样本,完全不依赖 VϕoldV_{\phi_{\text{old}}}可以推广到本文之外的关键洞察: 策略优势和 critic 自身的训练目标,并不需要用同一个 λ\lambda 来计算。把它们解耦,就能在为策略梯度保留低方差自举优势的同时,仍然让 critic 相对真实结局训练。修复之后,图 3 显示训练奖励/AIME 曲线都变稳定了,而 EV 指标现在是相对真实结局衡量的,也上升到了一个合理(而非虚假地接近 1)的水平。

Figure 3(对应原论文 Fig.6):长度自适应 GAE 的效果。固定 \lambda_\pi=0.99 拟合训练集最快(左),但其 AIME 2025 avg@32 在早期见顶后出现下降(中);使用 \alpha=0.4 的 LA-GAE 保留了大部分训练速度优势,同时避免了后期的下降,整体上优于两个固定 \lambda 极端方案。

为什么不干脆总是用 λπ=1\lambda_\pi = 1(彻底避免这个不匹配问题)? 这正是下文第 6 步(图 6)作者隐含测试的替代方案——它消除了不稳定性的风险,但经验上达到给定 reward 水平的速度更慢,因为纯蒙特卡洛优势每个样本的方差更高。解耦的做法是在两者之间取得两全,而不是二选一。

3.5 第四步——去掉批次内优势归一化

这个变换及其看似合理之处。 许多 PPO 实现会在策略更新前对每个训练批次内的优势做归一化:用批次均值 Aˉ\bar{A} 和标准差 σA\sigma_A

A~t=A^tAˉσA.(12)\tilde{A}_t = \frac{\hat{A}_t - \bar{A}}{\sigma_A}. \tag{12}

这个做法直觉上很有吸引力:无论原始 reward 的量级如何,它都能让有效学习率在整个训练过程中大致保持一致,这和监督学习中批归一化的作用类似。但论文认为,在策略接近收敛时,这个做法本质上是错的,值得完整地拆解这个论证。

为什么它在接近最优的策略下会出问题。 考虑一个已经接近收敛的策略:真实优势 AtA_t 的量级很小,方差也很小,因为已经没有太多改进空间了。一个行为良好的训练信号,此时应该同步收缩——更小的真实优势理应产生更小的策略更新,因为确实没有多少可学的东西了。但除以 σA\sigma_A 会主动破坏这一点:如果 σA0\sigma_A \to 0(这本来是策略接近收敛时诚实且理想的结果),归一化后的优势 A~t=(A^tAˉ)/σA\tilde{A}_t = (\hat{A}_t - \bar{A})/\sigma_A把纯粹的估计噪声重新缩放成单位量级的更新,完全不管真实信号本身有多小。于是策略会一直进行满量级的梯度更新,而这些更新几乎完全是采样噪声驱动的——恰恰是应该采取接近零幅度更新的时刻。还有一个次生问题:减去 Aˉ\bar{A} 可能会翻转那些真实优势为小正值、但恰好低于批次均值的样本的符号,主动地打压那些实际上略优于平均水平的行为——这对探索是一种腐蚀性的效应,因为它仅仅因为批次恰好落在那个位置,就惩罚了边际上”好”的行为。

经验验证。 图 4(右侧面板)显示,做了归一化之后,优势的取值范围在训练过程中不断增大(达到 40 到 60 的量级),而不是像预期那样随策略趋于收敛而收缩——这与期望的行为正好相反。不做归一化(使用原始 GAE 优势)时,取值范围在整个训练过程中都保持小而稳定。中间面板显示归一化还会增大在留出 AIME 指标上过拟合的风险,这与”接近收敛时噪声被放大”的机制是一致的——训练后期比预想中更激进的更新,会把策略推向对训练分布的过拟合。

作者拒绝的显而易见的替代方案,以及原因。 有人可能会想到保留归一化,但把 σA\sigma_A 下限截断,避免它趋近于零(这是别处常见的一种修法,比如在 reward 归一化里)——论文没有明确测试这个变体,这是一个值得指出的空白,但无论怎样对 σA\sigma_A 设下限,减去 Aˉ\bar{A} 带来的符号翻转问题依然会存在,所以单靠给 σA\sigma_A 设下限并不能完全解决论文所指出的问题。

3.6 第五步——给 critic 提供特权信息

核心观察。 critic 的输入没有理由必须和策略的输入一致。critic 只在训练期间存在,训练结束后就会被丢弃;而策略在部署时的行为完全由策略自身能看到的信息决定。这与多智能体强化学习中的”集中式训练、分布式执行”(centralized training with decentralized execution)思路是一致的——比如 StarCraft II 智能体中一个能看到完整游戏状态的训练时 critic,而每个单位的策略只能看到局部观测——只要真正被部署的东西仍然遵守其真实的输入约束,训练信号本身可以任意丰富。

把这个思路应用到 reward 相关信息上。q(x)q(x) 表示决定某个针对 prompt xx 的回复应该如何打分的信息——数学题的参考答案、一份官方的详细解答,或者开放式任务的评分细则。由于 q(x)q(x) 是 prompt xx 本身的确定性函数,它不可能改变真实的价值函数 Vμ(st)V^\mu(s_t)——理想的价值本来就已经隐含地是 xx 的函数,因为它取决于 reward 函数。特权信息真正改变的是这个价值对一个容量有限的 critic 来说有多容易被近似

Vϕμ(st,q(x))Eμ[R(x,y;q(x))st,q(x)].(13)V_\phi^\mu(s_t, q(x)) \approx \mathbb{E}_\mu[R(x,y;q(x)) \mid s_t, q(x)]. \tag{13}

直观地说:预测”这段部分推导会不会导向正确答案”,如果 critic 能直接看到正确答案,会比只能从前缀本身推断一切正确性要容易得多。而 rollout 策略完全不受影响——它从不看到 q(x)q(x),生成方式和没有特权信息的设置完全一样,部署时的行为也不会改变。

实验结果与一个重要的警示。 图 5 显示,以参考答案为条件的 critic 能同时实现更快的训练奖励提升和更高的解释方差——直接证明了特权输入确实让 critic 的回归问题变得更容易。但相对无特权版本,AIME 2025 验证曲线上升得更快,却更早见顶并随后下降——用论文自己的话说,“信息量更大的 critic 既能加速学习,也能加速过拟合”。这是本论文最重要的一处细致之处,作者也没有回避直接说出来:特权信息有用,但不是普遍有益的,它的收益取决于数据集规模相对模型容量的大小(这个具体实例用的是一个只有 1,460 道题的小型 sanity-test 数据集,恰恰是过拟合风险最高的场景)。

3.7 第六步——长度自适应 GAE

固定 λπ\lambda_\pi 的问题。 对于长度为 L=TL=T 的回复中位置 tt 处的一个 token,终局 TD 残差(即 GAE 求和中真正携带最终 reward 信息的那一项)的系数正比于 λπTt\lambda_\pi^{T-t}。对于一条长回复中的早期 token,TtT - t 很大,这个系数会非常小——意味着早期 token 的优势几乎完全由中间的自举 critic 残差主导,而不是真实的最终结局。如果 critic 存在任何系统性偏差,这个偏差就会具体地主导长回复中早期 token 的优势信号,而对晚期 token 或短回复几乎没有影响。一个固定的 λπ\lambda_\pi,因此在没有刻意设计的情况下,隐含地对短回复和长回复采取了截然不同的处理方式。

修复方案,附推导。 参照 VAPO 和 SAO,让 λπ\lambda_\pi 成为回复长度 L=yL = |y| 的函数:

λπ(L)=11αL,α>0.(14)\lambda_\pi(L) = 1 - \frac{1}{\alpha L}, \qquad \alpha > 0. \tag{14}

为什么用这个具体的函数形式。 最早 token 对应的终局残差系数变为 λπ(L)L=(11αL)L\lambda_\pi(L)^L = \left(1 - \frac{1}{\alpha L}\right)^L。取 LL \to \infty 的极限:这正是微积分里 (1cn)nec\left(1 - \frac{c}{n}\right)^n \to e^{-c} 的标准极限,令 c=1/αc = 1/\alphan=Ln=L,得到 (11αL)Lexp(1/α)\left(1-\frac{1}{\alpha L}\right)^L \to \exp(-1/\alpha)——一个LL 无关的常数。所以,固定的 λπ\lambda_\pi 会让终局 reward 的权重随回复变长而指数级衰减,公式 14 中的长度自适应形式却能通过随 LL 增大而相应增大 λπ\lambda_\pi(使其更接近 1,即更少自举),把这个权重维持在近似不变的水平。短回复获得更多自举(更低的有效 λ\lambda,反正需要积分的范围也小,方差降低得更快);长回复则按单位长度获得相应更少的自举,使终局信号的相对影响力在不同回复长度之间大致保持恒定。

数值示例:终局权重的长度不变性。 为了让公式 14 的这个不变性主张更加具体,考虑固定 λπ=0.99\lambda_\pi = 0.99α=0.4\alpha = 0.4 的长度自适应 GAE 在三种回复长度下的对比:

回复长度 LL固定 λπ=0.99\lambda_\pi=0.99:终局权重 λπL\lambda_\pi^LLA-GAE 的 λπ(L)=11αL\lambda_\pi(L) = 1-\frac{1}{\alpha L}LA-GAE 终局权重 λπ(L)L\lambda_\pi(L)^L
L=100L=1000.991000.3660.99^{100} \approx 0.366110.4×100=0.9751 - \frac{1}{0.4\times 100} = 0.9750.9751000.07880.975^{100} \approx 0.0788
L=1,000L=1{,}0000.9910000.00004320.99^{1000} \approx 0.0000432110.4×1000=0.99751 - \frac{1}{0.4\times 1000} = 0.99750.997510000.08210.9975^{1000} \approx 0.0821
L=10,000L=10{,}0000.991000010440.99^{10000} \approx 10^{-44}(数值上等于零)110.4×10000=0.999751 - \frac{1}{0.4\times 10000} = 0.999750.99975100000.08210.99975^{10000} \approx 0.0821

固定 λπ\lambda_\pi 那一列,到 L=10,000L=10{,}000(这个长度完全落在论文报告的 DeepScaleR 最大回复长度 24k token 之内)时,终局 reward 的影响力已经基本降为零——意味着一条很长的思维链回复中最早的那些 token,几乎完全接收不到”最终答案是否正确”这一信息,而几乎只能依赖中间的自举 critic 取值。LA-GAE 那一列则始终稳定在 exp(1/α)=exp(2.5)0.0821\exp(-1/\alpha) = \exp(-2.5) \approx 0.0821 附近,与 3.7 节推导出的闭式极限完全吻合。这正是图 3 中间面板里、固定 λπ=0.99\lambda_\pi = 0.99 随训练推进出现明显下降的具体机制所在(RL 训练过程中模型学会先推理更多步骤再作答,回复往往会变长)——终局结局信号正在被悄悄稀释到接近零,而受影响最大的,恰恰是最长回复中最早、往往也是决定整体走向最关键的那些规划性 token。

实验中的权衡(图 3)。 固定 λπ=0.99\lambda_\pi = 0.99 拟合训练集最快(左面板),但 AIME avg@32 在早期见顶后呈现出明显的下降(中间面板)——一个典型的过拟合特征,与上述”自举偏差主导”的机制随训练累积是一致的。固定 λπ=1\lambda_\pi = 1(纯蒙特卡洛,完全不自举)完全避免了这种下降,但达到给定 reward 水平的速度明显更慢。α=0.4\alpha = 0.4 的长度自适应 GAE 在两者之间找到了平衡,保留了 λ=0.99\lambda=0.99 大部分的早期训练速度,同时避免了它后期的验证集下降——这是一个经验调出来的折中点,而不是从第一性原理推导出来的取值(论文没有报告在这一个取值之外对 α\alpha 做扫描,这是一个值得指出的可复现性缺口)。

算法 2——组装起来的 BPCO 训练步骤(伪代码)。

算法 2:一次 BPCO 策略+critic 更新
输入:行为策略 mu 生成的 rollout {(s_t, y_t, r_t)},冻结的 critic phi_old,
     reward 边界 [R_min, R_max],DPPO 的 epsilon,alpha(长度自适应 GAE)
1: 对每条长度为 L 的 rollout:
2:     lambda_pi <- 1 - 1/(alpha * L)          # 公式 14,逐回复计算
3:     lambda_V   <- 1                          # 恒定,与 lambda_pi 解耦
4:     对 t = T 到 1(反向递推):
5:         delta_t <- r_t + V_phi_old(s_{t+1}) - V_phi_old(s_t)     # 公式 3,gamma=1
6:         A_hat_pi[t]  <- delta_t + lambda_pi * A_hat_pi[t+1]       # 公式 4,使用 lambda_pi
7:         A_hat_V[t]   <- delta_t + lambda_V  * A_hat_V[t+1]        # 公式 4,使用 lambda_V=1
8:     V_target[t] <- A_hat_V[t] + V_phi_old(s_t)   # 公式 11,望远镜式抵消为 R(x,y)
9: # 策略更新(第四步:不做优势归一化)
10: theta <- theta + grad_theta L_DPPO(theta; {A_hat_pi[t]})   # 公式 2,使用原始 A_hat_pi
11: # critic 更新(第二步:限幅价值头;第三步:无偏目标)
12: phi <- phi - grad_phi  MSE(V_phi(s_t; [如有特权信息 q(x) 则一并输入]), V_target[t])
13: 返回 theta, phi

注意第 7 行使用 λV=1\lambda_V = 1,根据公式 11 的望远镜式抵消论证,这会把 critic 目标的反向递推简化为直接把终局 reward 原样向后传播——伪代码保留了通用的递推形式,是为了让它与策略优势的计算过程形成清晰的对照;一个真实实现(论文的实现也是如此)一旦固定了 λV=1\lambda_V=1,完全可以直接对每个 tt 都设 V_target[t] = R(x,y)

4. 更广泛的评测

4.1 扩展到更大数据集(DeepScaleR,40.3K 道题)

超越刻意设计得很小的 sanity-test 数据集,作者在 DeepScaleR(40.3K 道数学题-答案对,其中约 7.3K 道题有官方解答,最大回复长度限制在 24k token)上微调同一个 1.5B 模型。图 4 对比了四种配置:Dr. GRPO 分组基线(G=16G=16)、一个”critic 基线”(包含第三步和第六步的解耦 GAE 与长度自适应 GAE,但保留了无约束的价值头和批次内优势归一化,即除了第二步和第四步之外的一切)、BPCO+Ans(特权参考答案)、以及 BPCO+Ans+Sol(特权参考答案加官方解答,在有解答的题目上)。

结果是:BPCO+Ans 和 BPCO+Ans+Sol 在 AIME 2025 avg@32 上(左面板)都明显优于 critic 基线,并且匹配或略微超过分组基线,而 critic 基线明显落后于两者。解释方差面板最具诊断意义:BPCO 各变体在整个训练过程中都保持相对 critic 基线更高的 EV——直接证明第二步和第四步(BPCO 与这个”critic 基线”的唯一区别)确实提升了 critic 自身的拟合质量,而不是通过某种间接机制影响下游策略表现。这一点很重要,因为它厘清了因果关系:模型完全有可能通过某种无关的正则化副作用在策略分数上表现更好,但 EV 曲线表明,critic 本身确实更好地拟合了数据。

Figure 4(对应原论文 Fig.7):在更大的 40.3K 道题的 DeepScaleR 数据集上的结果。BPCO+Ans 和 BPCO+Ans+Sol 在 AIME 2025 avg@32 和解释方差上明显优于 critic 基线(橙色),并匹配或超过 Dr. GRPO 分组基线(蓝色),而每个 prompt 只用了一条 rollout,而不是 16 条。

4.2 在这个更大规模下消融剩余的两个 BPCO 特有技巧

从一次训练良好的 BPCO+Ans 运行出发,作者沿相反方向逐一消融各个组件(去掉一个好的组件/加回一个坏的组件),这与 sanity-test 阶段的逐步构建形成了不错的方法论对称。

去掉价值限幅(图 5,”− bounded value” 曲线)。 重新引入一个无约束的线性价值头,会相对完整的 BPCO+Ans 配方减慢训练奖励的提升,并降低 AIME 表现,尽管差距明显小于 sanity test——作者将此归因于更大、更多样化的数据集提供了足够的正则化压力,使无约束的头不会像在小型 sanity-test 数据集上那样灾难性地爆炸,但限幅仍然有可衡量的帮助。

加回优势归一化(图 5,”+ adv normalization” 曲线)。 优势的取值范围在训练过程中不断增大(右侧面板,蓝色曲线),与 sanity test 中的现象一致,只不过对下游 reward/AIME 表现的影响更小,作者也坦诚地指出,在这个对比实验中”训练尚未完全收敛”——也就是说,他们并没有跑足够长的时间来观察这种持续增大的优势是否最终会导致 sanity test 中观察到的那种后期不稳定。尽管在这个具体训练预算下经验差距不大,他们仍然基于机制层面的理由,建议普遍地去掉归一化。

大规模下的特权信息(图 5 相关的图 9)。 使用真实答案时,训练明显更快,解释方差也高于普通 BPCO;使用官方解答(仅覆盖 40.3K 道题中的 7.3K,即部分覆盖)时,提升幅度较小但依然存在。这是一个有用的鲁棒性结果:即使只对少数训练样本可用,特权信息依然有帮助,说明 critic 可能把”如何利用额外上下文”这项能力部分泛化到了缺少这类上下文的样本上,尽管论文并未直接测试这一泛化假设(比如专门在没有解答的子集上测量 EV)。

Figure 5(对应原论文 Fig.8):在 DeepScaleR 规模下对限幅价值预测与批次内优势归一化的消融。去掉价值限幅(红色)会相对完整 BPCO+Ans(绿色)降低 AIME 2025 avg@32;重新加入优势归一化(蓝色)会导致优势幅度在训练过程中持续增大(右侧面板)。

4.3 扩展到更大的 MoE 模型(Qwen3-30B-A3B 与 Qwen3-30B-A3B-Base)

图 6 在 DAPO-Math-17k 数据集上,对两个 300 亿参数、激活参数 30 亿的混合专家(MoE)模型重复了三方对比(分组基线、critic 基线、BPCO+Ans)。有两个结果特别突出。第一,在基础(未做指令微调)模型上,critic 基线的 AIME 曲线明显停滞,始终远低于 BPCO+Ans 和分组基线——这是一个标准 critic 配方直接失效、而 BPCO 却能持续爬升的案例。第二,在经过指令微调的 Qwen3-30B-A3B 上,论文报告 critic 基线”在最初 100 个训练步之后就无法进一步提升 AIME 2025,陷入不稳定的优化”,而 BPCO+Ans 在整个 1,000 步的训练中持续爬升,并小幅超过分组基线。这是本论文最有力的规模泛化证据:从 sanity test 中提炼出的修复方法,能够迁移到一个在模型家族、规模、架构上都截然不同的场景(MoE 路由本身可能带来密集 1.5B sanity test 无法暴露的 critic 训练困难),并依然发挥作用。

Figure 6(对应原论文 Fig.10):在 DAPO-Math-17k 上使用更大的 30B-A3B MoE 模型的结果。在基础版和指令微调版的 Qwen3-30B-A3B 上,BPCO+Ans(绿色)在 AIME 2025 avg@32 上都追平或超过分组基线(蓝色),而 critic 基线(红色)停滞不前或训练不稳定,指令微调模型上尤其明显。

4.4 基于评分细则的 reward(一种质地完全不同的 reward 来源)

最后一个实验完全脱离了可验证的数学 reward:Qwen3-4B-Base 同时作为策略和 critic,在 OpenRubrics 上训练,Qwen3-4B-Instruct-2507 作为 LLM 判官,依据每个 prompt 专属的”标准评分细则”(对策略不可见,作为特权输入提供给 critic)对生成的回复打分。结果显示两个 BPCO 变体(有无特权评分细则输入)在训练早期都比 critic 基线和分组基线提升得更快,尽管分组基线最终收敛到相近的表现水平。有意思的是,特权评分细则信息在这里没有带来任何验证集表现上的提升,尽管它确实带来了更高的解释方差——论文将此归因于任务”相对简单”,也就是说,即便没有评分细则,critic 也已经能很好地近似价值函数,因此特权信息没有多少剩余的提升空间可以填补。这是一个有用的负面结果,因为它恰好划定了特权信息在哪里有用(更困难、更模糊的信用分配问题)、以及在哪里没用(一个非特权 critic 本来就拟合得很好的简单任务)。

5. 设计选择:一份综合的原因/替代方案/边界总结

设计选择为什么有效显而易见的替代方案可能失效的地方
用 DPPO 替代 PPO 裁剪约束绝对概率变化量而非比值,避免对低/高概率 token 的不平等对待统一缩小 PPO 的 ϵ\epsilon如果把 ϵ\epsilon 调小到足以控制罕见 token 的爆炸,会过度限制常见 token
反正切限幅的价值头保证 Vϕ[Rmin,Rmax]V_\phi \in [R_{\min}, R_{\max}],这是有界 reward 下的数学必然要求Sigmoid 压缩(形状类似)需要一个已知且固定的 reward 范围;无界或重尾的 reward model 需要重新推导边界
解耦 λπλV\lambda_\pi \ne \lambda_V保留策略侧的方差降低,同时去掉自我参照的 critic 目标两者都设为 1(处处纯蒙特卡洛)在长时间跨度任务上会损失 GAE 对策略的方差降低效果
去掉批次优势归一化防止策略接近收敛时噪声被放大;避免虚假的符号翻转σA\sigma_A 设一个下限无法解决减去均值带来的符号翻转问题;论文未测试
长度自适应 GAE让终局 reward 的影响力大致与回复长度无关固定 λπ=1\lambda_\pi=1(不做自举)训练更慢;具体的 α=0.4\alpha=0.4 未证明能迁移到本文测试之外的数据集/模型
critic 的特权信息减轻 critic 的近似负担,同时不改变策略的输入把同样的信息也给策略(课程学习式做法)会改变已部署模型的输入输出约定,且在小数据场景下加大过拟合风险

6. 局限性,以及作者可能低估的部分

作者明确陈述的内容。 论文自己的局限性段落坦诚但简短:证据仅限于数学和评分细则两类 reward;BPCO 假设 reward 范围已知;特权变体需要评估方一侧的信息(参考答案、解答,或评分细则),这类信息并非对所有任务都存在;critic 训练带来的真实计算和内存开销,也没有被论文中”按轨迹数量对齐”的对比方式完全体现出来。

被低估或隐含未说明的部分:

  • reward 范围假设比听起来更强。 二元 {0,1}\{0,1\} 正确性 reward 和有界的评分细则分数都是方便的特例。许多实际的 RLHF 流水线使用学出来的 reward model,其输出分布本身并不自然有界(或者只是事后强行做了一个截断,而这恰恰重新引入了论文本来试图论证要避免的那种临时性工程选择)。论文从未展示 BPCO 在无界或重尾 reward model 下的表现,而这恰恰可能是可验证数学题和评分细则领域之外,生产环境 RLHF 中最常见的 reward 设置。
  • α=0.4\alpha=0.4 这个长度自适应 GAE 的超参数,被当作已经定案的选择呈现,但只在 1.5B 的 sanity-test 模型上得到过验证。 更大规模的实验(4.1-4.3 节)并没有说明在 30B-A3B 模型或 DeepScaleR 更长的 24k token 回复上是否重新调过 α\alpha;如果保持不变,那这一点值得明确说明,因为 2 节公式 14 的推导表明,给定 α\alpha实际折扣行为取决于典型回复长度的分布,而这在 sanity-test 数据集和 DeepScaleR/DAPO-Math-17k 之间差异相当大。
  • “每个 prompt 单条 rollout”的说法在计算量对等性上略有夸大。 BPCO 是与”匹配总批次大小”的 G=16G=16 Dr. GRPO 做对比——这意味着 BPCO 每批次使用更多不同的 prompt,而不是更少的总 rollout 数。这对 prompt 多样性来说是公平的对比,但 critic 本身在每一步训练时都需要对一个规模与策略相当的第二个网络做一次完整的前向+反向传播(除非用了小得多的 critic 架构,论文并未讨论这一点),而这部分逐步的 critic 计算开销,并没有在论文任何地方被换算成一个可以直接对比的”总 GPU 小时数”。“单 rollout critic 匹配了分组采样、且 rollout 数少 16 倍”这个说法,在一种具体的核算方式下(每个 prompt 的 rollout 数)是对的,在另一种(包含 critic 在内的总训练算力)下则可能有误导性。
  • 特权信息带来的过拟合,只在小规模 sanity-test 场景下被展示过,并未在更大规模下重新检验。 4.1/4.2 节更大规模的 DeepScaleR 实验显示特权信息有帮助、且没有出现 sanity test 中那种”先见顶后下降”的模式,但论文没有明确讨论这究竟是因为过拟合在大规模下确实不会发生,还是因为更大规模的实验根本没有跑到足够超过收敛点之后去观察这种现象(sanity test 跑了 1,500 次迭代;DeepScaleR 的实验也跑了大约 2,000 次迭代,但数据集规模大了约 27 倍,所以”有效 epoch 数”要低得多,一个较晚才出现的过拟合效应完全可能被遗漏)。

6b. 与现有方法的设计对比概览

在进入批判性分析之前,值得把 BPCO 与本文提到的几个相关方法放在同一个表里对比,以明确 BPCO 在现有工具链中的定位:

方法需要 critic每 prompt rollout 数优势归一化长度自适应支持特权信息
PPO(标准)1通常有
GRPO / Dr. GRPOG=16G=16 或更多GRPO 有,Dr. GRPO 无不适用
VC-PPO1未明确
VAPO / SAO1未明确
BPCO(本文)1

可以看出,BPCO 并不是在发明一个全新的组件,而是将 VC-PPO 的解耦思想、VAPO/SAO 的长度自适应思想,与自己新提出的两项技巧(限幅价值头、去除优势归一化)以及特权信息这个新想法组合在一起,形成一个完整、自洽、经过完整验证的配方。这种”集大成”式的贡献方式在系统工程领域并不罕见,但它的价值完全依赖于消融实验是否真正隔离了每个组件的独立贡献——这正是第 3 节逐步构建实验的价值所在。

7. 批判性分析

这篇论文特有的弱点与缺陷。

  1. 没有把反正切选择和其他替代方案做消融对比。 价值限幅这个修复(公式 9)在经验上是仅次于 DPPO 的第二大影响因素,但论文从未把反正切压缩和更常见的 sigmoid 或 tanh 重新缩放做对比,也没有测试反正切具体的饱和速率(相对更陡或更平缓的压缩函数)是否真的重要。考虑到这个修复在论文叙事中的核心地位,缺少这一项消融是一个真正的空白,而不只是次要的疏漏——它使得”收益具体来自反正切的形状”还是”来自任何合理的限幅函数”这个问题依然悬而未决。
  2. DeepScaleR 的消融实验(图 5/图 8)只是基于单次”训练良好的 BPCO+Ans 运行”作为起点,而不是独立多个随机种子。 只对某一次成功的运行做消融,而不是从头完整重跑多次训练流水线、每种消融都独立跑,可能低估了方差——某一次运行的偶然特性(特定的随机初始化、特定的数据顺序)可能会和真正要衡量的效应混在一起。论文全篇没有报告任何误差棒或多种子结果,考虑到论证的很大一部分都依赖于在图中读出相邻曲线之间的细微差别,这是一个真实的局限。
  3. 评分细则 reward 实验(4.4 节)用的是相对较小的模型(Qwen3-4B),判官也来自同一个模型家族(Qwen3-4B-Instruct),这带来了一个论文没有讨论也没有测试的、关于判官与策略相关性的隐患——如果判官和被训练的策略/critic 共享大量预训练数据和架构,判官打分中的系统性偏差可能更容易被”投机取巧”,或者恰好与策略的行为方式巧合地一致,而不像用一个独立的判官模型那样能提供更客观的检验。

作者低估或省略的局限性(在第 6 节之外):

  1. 论文把 BPCO 定位为证明基于 critic 的 RL”并非本质上是个弱点”,但每一个实验用的 critic 规模/架构都与策略相当。论文没有探索一个规模小得多、代价便宜得多的 critic 网络(这会实质性地改变前文提到的计算量对等性问题)是否还能保留 BPCO 的稳定性收益,而这恰恰是一个正在考虑是否采用这套配方的实践者最想知道答案的实际问题。
  2. 论文全文没有给出任何墙钟时间或 GPU 显存开销的具体数字,尽管局限性段落明确承认”critic 训练带来了未被按轨迹对齐的对比方式所体现的计算和内存开销”——只指出这个空白而不给出哪怕近似的数字,让实践者难以判断这个权衡的实际大小,这是一个错失的机会,尤其是考虑到论文的核心卖点(更少的 rollout)本质上就是一个计算效率的论证。

具体、可操作的改进建议。

  1. 补做反正切 vs. sigmoid 的消融实验。 这是一个成本很低的小实验(改一行代码,重跑一次 sanity test),可以直接检验具体的函数形式是否重要,还是”任何光滑的有界压缩函数”都行——这个区别对任何想把 BPCO 迁移到一个不对称、或中心点不同的 reward 范围的人来说都很重要。
  2. 至少对 sanity test 和图 4/图 7 的 DeepScaleR 对比,报告多种子结果,用带阴影的方差区间取代目前带浅色原始曲线的单次运行曲线——考虑到论文很大一部分论证力度都依赖于分辨相邻曲线之间的差异(例如图 7 左面板中 BPCO+Ans 与 BPCO+Ans+Sol 在视觉上有相当程度的重叠),种子间的方差完全可能解释掉报告中的部分差距。
  3. 报告 BPCO 与分组基线之间总的墙钟时间或 FLOPs 对比,而不仅仅是每个 prompt 的 rollout 数,把 critic 自身的前向/反向开销也计入其中,给出一个诚实的计算量对等性图景——这会实质性地强化(或有意义地修正)本文核心的实用性主张。
  4. 重新考虑 arctan 限幅在非平衡 reward 分布下的行为。 若 reward 分布本身很不均匀(例如大多数回复得 0 分、少数回复得 1 分,就像 sanity test 中初期阶段那样),公式 9 的对称反正切形状在 00 附近梯度最陡、在两端饱和最快,而真实价值分布可能偏偏集中在某一端附近。这意味着大部分训练样本可能落在限幅函数梯度较小的区域,而非限幅函数梯度最大的中心区域——这个可能性值得专门数据验证,而不只是假设它不会影响训练。
  5. 在一个输出并非天然有界的 reward model 上测试 BPCO(例如常见的 Bradley-Terry 训练出的标量 reward model,这在通用 RLHF 中很常见),因为这很可能是数学题/评分细则领域之外最主流的 reward 设置,而”基于 critic 的 RL 并非本质上不稳定”这一核心主张,如果能在这种更常见、也更不方便的 reward 结构下依然成立,说服力会大得多。

7b. 对一般实践者的启示

即便不打算直接复制 BPCO 的实验设置,这篇论文对任何正在调试自己的 critic-based RL 流水线的工程师都有三条实用的检查清单:第一,先确认你的价值头是否被正确限幅到 reward 范围内——这是最容易被忽略但成本最低的一项检查;第二,确认 critic 目标中是否混入了自举成分(即 λV<1\lambda_V < 1),如果是,考虑是否有必要把它与策略优势的 λπ\lambda_\pi 解耦;第三,确认优势归一化是否在代码库默认开启,尤其是在长时间训练接近收敛阶段。这三项检查涵盖了本文六个修复中影响最大的三项(DPPO 因为需要更多工程改动而未列入),即便不采用完整 BPCO 配方,单独修复这三点也往往能带来明显的稳定性改善。

7c. 一个具体的思想实验:如果 reward 不有界会怎样

为了把第 6 节关于 reward 范围假设的担忧讲得更具体,值得做一个思想实验。假设一个学出来的 Bradley-Terry reward model 对某条回复输出了一个标量分数 rRr \in \mathbb{R},理论上无界。若直接将公式 9 应用到这种情况,需要先人为选定一对 [Rmin,Rmax][R_{\min}, R_{\max}],而这个选择本身就引入了一个新的、本论文未讨论的超参数:如果边界设得太窄(例如取训练集 reward 的 5%-95% 分位数),就会有相当比例的样本被截断到边界上,造成梯度饱和;如果边界设得太宽(例如取训练集最小值和最大值向外再扩展一定百分比),则限幅函数在大部分实际取值区间内几乎退化为线性,限幅带来的稳定性收益会大大减弱。更麻烦的是,reward model 的输出分布会随着策略本身的改进而漂移——训练初期回复质量较差时,reward 分布可能集中在较低区间,而训练后期回复质量提升后,reward 分布会整体右移,这意味着一个在训练开始时选定的静态 [Rmin,Rmax][R_{\min}, R_{\max}] 到了训练后期可能已经不再合适。这个思想实验说明,将 BPCO 从可验证数学题/评分细则迁移到学出来的 reward model 并不是一个简单的工程细节,而可能需要额外的机制(例如自适应或周期性重新校准的边界)才能真正发挥作用。

8. 可复现性说明

  • 基座模型与训练框架: sanity test 与 DeepScaleR 实验用 DeepSeek-R1-Distill-Qwen-1.5B;更大规模模型实验用 Qwen3-30B-A3B / Qwen3-30B-A3B-Base;评分细则实验用 Qwen3-4B-Base/Instruct-2507。构建在”2026 年 6 月 16 日的一个 verl commit”(基于 HybridFlow 的 RLHF 框架)之上——只给出了日期而没有具体的 commit hash,如果该仓库后续有分叉演化,可能会给逐比特复现代码库带来困难。
  • sanity test 明确报告的超参数: 1,460 道训练题,每次迭代 1,024 条轨迹,minibatch 256(每次迭代 4 个优化器 minibatch),1 个 epoch,策略学习率 10610^{-6},critic 学习率 10510^{-5},1,500 次迭代,不做 critic 预热,γ=1\gamma=1
  • DeepScaleR 实验: 40.3K 道题,约 7.3K 道有官方解答,最大回复长度 24k token;分组基线使用 G=16G=16 的 Dr. GRPO。
  • 长度自适应 GAE: 更大规模的实验全程使用 α=0.4\alpha=0.4;没有说明是否针对每个模型/数据集重新调过(见第 6 节标注)。
  • 未报告的内容: DPPO 的 ϵ\epsilon 取值;critic 网络相对策略网络的具体架构/规模(共享骨干网络?还是独立网络?);每个实验的随机种子数量(从没有误差棒来看,全文似乎都只用了 1 个种子);BPCO 与分组基线之间的墙钟时间/GPU 小时成本对比。
  • 本文未定义的术语对照: 为避免歧义,本笔记中”行为策略”统一指 μ\mu(生成当前 rollout 的策略快照),“目标策略”指正在更新的 πθ\pi_\theta;“critic” 与“价值网络”两个词在本文中互换使用,均指 VϕV_\phi;“无偏”一律指相对 VμV^\mu(行为策略下的真实价值)而言的无偏,而不是相对最优策略下的真实价值 VV^*
  • 代码可用性: 作者在 https://github.com/QPHutu/golden_critic 公开了代码,这对任何想直接验证 sanity-test 结果的人来说,实质性地提升了可复现性,尽管论文本身没有标出与文中报告数字精确对应的具体 commit 或版本号。

8b. 一个补充的对照表:BPCO 六步修复与其对应的失败模式

为了把 3.1-3.7 节逐步展开的六个组件更紧凑地对照起来,下表按顺序汇总了每一步修复所针对的具体失败模式、诊断该失败模式所用的图/指标,以及若省略该修复会重新出现的症状:

步骤修复内容针对的失败模式诊断依据省略后的症状
1DPPO 替代 PPO 裁剪比值裁剪对低概率 token 不公平,导致训练在 λ=1\lambda=1 下也会崩溃图 1:PPO 蓝色曲线在约第 400 步崩溃,DPPO 绿色曲线稳定训练奖励先升后崩,AIME 分数同步崩溃
2反正切限幅价值头无约束线性头输出超出 reward 范围之外的不可能取值图 2 右侧面板:无约束值达到 ±8\pm 8,远超 [0,1][0,1]训练奖励和 AIME 曲线剧烈震荡,价值预测发散
3解耦 λV=1\lambda_V=1 的无偏目标critic 目标含自我参照成分,解释方差虚高但预测不准图 3 右侧面板:EV 快速逼近 1,但策略仍不稳定训练看似拟合良好但实际不准确,深度误导
4去除批次优势归一化除以 σA\sigma_A 会在策略接近收敛时把噪声放大为单位量级更新图 4 右侧面板:归一化时优势范围持续增大至 40-60优势幅度不随训练收敛而收缩,过拟合风险上升
5给 critic 提供特权信息q(x)q(x) 不改变真实价值函数,但降低了有限容量 critic 的近似难度图 5:有特权信息的 critic 训练更快、EV 更高AIME 曲线更早见顶后下降,过拟合风险更高
6长度自适应 GAE固定 λπ\lambda_\pi 使长回复早期 token 几乎完全依赖自举残差图 3:固定 λπ=0.99\lambda_\pi=0.99 先快后降,固定 λπ=1\lambda_\pi=1 无下降但较慢早期 token 优势受 critic 系统性偏差主导,长回复上表现不佳

8c. 数值例子:长度自适应 GAE 的终局权重不变性

为了让公式 14 对终局权重不变性的主张更加具体,考虑固定 λπ=0.99\lambda_\pi = 0.99α=0.4\alpha = 0.4 的长度自适应 GAE 在三种回复长度下的对比:

回复长度 LL固定 λπ=0.99\lambda_\pi=0.99:终局权重 λπL\lambda_\pi^LLA-GAE 的 λπ(L)=11αL\lambda_\pi(L) = 1-\frac{1}{\alpha L}LA-GAE 终局权重 λπ(L)L\lambda_\pi(L)^L
L=100L=1000.991000.3660.99^{100} \approx 0.366110.4×100=0.9751 - \frac{1}{0.4\times 100} = 0.9750.9751000.07880.975^{100} \approx 0.0788
L=1,000L=1{,}0000.9910000.00004320.99^{1000} \approx 0.0000432110.4×1000=0.99751 - \frac{1}{0.4\times 1000} = 0.99750.997510000.08210.9975^{1000} \approx 0.0821
L=10,000L=10{,}0000.991000010440.99^{10000} \approx 10^{-44}(数值上等于零)110.4×10000=0.999751 - \frac{1}{0.4\times 10000} = 0.999750.99975100000.08210.99975^{10000} \approx 0.0821

固定 λπ\lambda_\pi 那一列,到 L=10,000L=10{,}000(这个长度完全落在论文报告的 DeepScaleR 最大回复长度 24k token 之内)时,终局 reward 的影响力已经基本降为零——意味着一条很长的思维链回复中最早的那些 token,几乎完全接收不到”最终答案是否正确”这一信息,而几乎只能依赖中间的自举 critic 取值。LA-GAE 那一列则始终稳定在 exp(1/α)=exp(2.5)0.0821\exp(-1/\alpha) = \exp(-2.5) \approx 0.0821 附近,与 3.7 节推导出的闭式极限完全吻合。这正是图 3 中间面板里、固定 λπ=0.99\lambda_\pi = 0.99 随训练推进出现明显下降的具体机制所在(RL 训练过程中模型学会先推理更多步骤再作答,回复往往会变长)——终局结局信号正在被悄悄稀释到接近零,而受影响最大的,恰恰是最长回复中最早、往往也是决定整体走向最关键的那些规划性 token。

8d. 写给实践者的一句话总结

如果只能从这篇论文中带走一句可操作的结论,那应该是:如果你的 critic-based RL 训练在不稳定,先不要急着回到分组采样方法——先检查你的价值头是否无界、critic 目标是否自我参照、优势是否在接近收敛时被归一化放大了噪声。这三个问题在大多数现有代码库中都存在,而且都可以在不改变整体训练流水线结构的情况下修复。

8e. 一份往后看的超参数清单(按模块分类)

为了方便想直接复用 BPCO 配方的读者快速定位“哪些参数需要根据自己的任务重新调”,下表按模块分类汇总了全文出现过的所有参数,并标注其敏感程度(高:需要确实重新调;低:可能直接沿用论文默认值):

模块参数论文报告的值敏感程度重调建议
DPPO 裁剪ϵ\epsilon未报告具体数值因任务而异,建议从 PPO 常用的 0.1-0.3 开始扫描
限幅价值头Rmin,RmaxR_{\min}, R_{\max}二元 reward 下为 [0,1][0,1]高(非二元 reward 必须重新设定)非验证式/评分细则任务建议先统计训练集 reward 分布分位数
解耦 GAEλπ\lambda_\pi(策略)0.99(sanity test)与任务平均回复长度相关,长回复任务可适当调高
解耦 GAEλV\lambda_V(critic)固定为 1低(论文自始至终未变过)建议直接沿用
长度自适应 GAEα\alpha0.4高(仅在 1.5B 模型上验证)大模型/长回复任务建议重新扫描
训练规模(sanity test)批次/minibatch/轮次1024/256/1500低(仅为诊断用途)实际应用中可按自身计算预算调整
分组基线GG16与总批次大小权衡,过小会增大方差

9. 结论

BPCO 的贡献并不是一个新的损失函数或新的理论框架——它是对五个经过严格分离验证的修复(DPPO 裁剪、限幅价值头、解耦的无偏 critic 目标、去掉优势归一化、长度自适应 GAE)加上一个真正新颖的想法(仅供 critic 使用的特权输入)的组合,共同把一个脆弱、常被放弃的训练范式,变成了一个能匹配甚至超过当前领域默认方案(分组采样)、同时只需一小部分 rollout 的方案。这篇论文真正的方法论成就在于 sanity-test 设计本身:通过构造一个”正确答案”(接近 100% 的训练奖励)提前已知的场景,作者把”这个修复到底有没有用”从一个模糊的比较性判断,变成了清晰的通过/失败诊断,这正是他们关于每个组件的因果性断言之所以可信的原因。其结果是一份对任何目前正在使用或考虑使用 PPO 式 critic 训练来做 LLM RL 的人都真正有用、可以立刻上手的配方——但正如前文所详述的那样,它的若干支撑性主张(计算量对等性、超参数的可迁移性、压缩函数的具体选择)在被当作完全定论之前,还值得补充更多消融实验。