RL 后训练的一个隐蔽浪费:格式分早就拿满了,梯度却还在往那儿砸
上周读了一篇让我挺有共鸣的论文。做 RLVR 后训练的人大概都有这个经验:给模型挂好几个奖励——正确性、长度、格式——然后用一个固定权重加成一个标量,丢给 GRPO 训。训着训着你发现,格式奖励很快就涨到 99 分了,长度奖励也基本拿满,但训练还在认认真真地给这些已经"毕业"的目标分配梯度。真正难啃的正确性目标,反而要跟一群已经饱和的目标抢优化预算。
核心摘要:这篇论文(arXiv: 2608.16072)指出多奖励 GRPO 的标准做法——"先加权和、再组内标准化"——有两个根本缺陷:不同奖励画像的 rollout 可能拿到完全相同的优势值,而且各目标的相对权重全程固定、无视其饱和程度。作者提出 SA-MRPO:每个奖励目标独立标准化,再按"批次级饱和度估计"动态打折,饱和的目标权重按 \((1-s^{(k)})^\gamma\) 衰减。效果上,数学推理两/三目标设定下 15 个基准对比中赢了 GDPO 12 个,AIME24 最多涨 5 个点;自适应推理 5 个基准全胜,平均涨 3.8 个点、AMC23 最多涨 9.2 个点。这是一个改动极小(只动优势构造、不动策略更新)但动机非常扎实的工程改进,值得做 RL 后训练的人细读。
论文信息
- 标题:Learn What's Left, Not What's Mastered: Saturation Aware Advantage Reweighting for Multi-Reward Policy Optimization
- 作者:Yixuan Wang, Yifei Chen, Haichao Zhang, Haozheng Luo, Xander Wu, Jie Ni, Yun Fu, Nuno Vasconcelos, Yijiang Li
- 机构:University of Florida、UC San Diego、Northeastern University、Northwestern University、Stanford University、Universität Innsbruck 等
- 链接:https://arxiv.org/abs/2608.16072 (2026 年 8 月 17 日提交)
🎯 问题:固定权重不知道哪个目标已经"学完了"
先铺垫一下背景。GRPO 这类组相对优势方法现在是推理模型后训练的事实标准:对同一个 prompt 采 \(G\) 条 rollout,用组内均值方差把奖励标准化成优势,省掉了 PPO 的 value function。但 GRPO 原生假设每条 rollout 只有一个标量奖励。实际场景里奖励几乎总是多维的——答案要对、长度不能超、格式要合规、代码要能跑。
标准做法是把奖励向量先加权求和成一个标量:
然后再组内标准化。作者指出这个设计有两个毛病,而且都挺要命的。
毛病一:标量化丢失奖励分辨率。 等权重下,奖励画像 \((1, 0)\) 和 \((0, 1)\) 加权和完全一样,于是两条行为截然不同的 rollout 拿到一模一样的优势。一条"答案对但格式错"和一条"格式对但答案错",在梯度眼里是同一条。GDPO(arXiv: 2601.05242)已经解决了这个问题——每个奖励维度独立标准化再求和,不先混合。
毛病二:固定权重无视目标饱和度。 这个 GDPO 也没解决。格式奖励训练早期就冲到接近满分了,但它在优势公式里的权重 \(w_k\) 从头到尾不变。结果就是:已经解决的目标继续消耗梯度预算,而剩余空间最大的难目标(通常是正确性)分到的优化压力被稀释。
说实话,第二个毛病我之前调多奖励训练时也隐隐感觉到过——长度奖励的组内方差到后期变得很小(大家都拿满分),但因为每条 rollout 还有细微差异,标准化之后这些无意义的差异反而被放大成可观的优势信号。等于模型在被"长度 3990 和 4005 token 的区别"这种噪声梯度推着走。这篇论文把这个直觉形式化了。
🧠 一个例子看懂三种方法的差异
论文的 Figure 1 是我最近见过的把方法差异讲得最清楚的一张图:

图1:同一组 G=4 的 rollout,format 目标已饱和(饱和度 \(s_1=0.98\)),correctness 目标远未饱和(\(s_2=0.02\))。重点看中间的 rollout 2 和 rollout 3:前者 format 99/100 + correctness 1/100,后者 format 100/100 + correctness 0/100。
三种方法对这两条 rollout 的处理完全不同:
- GRPO:两条的加权和都是 99,标准化后优势都是 0.00。"答对 1 分"和"答对 0 分"被一视同仁,正确性信号直接蒸发。
- GDPO:分开了两个维度,能区分它们了——但给了 rollout 3 高达 +0.61 的优势、rollout 2 只有 +0.20。等等,rollout 3 的 correctness 是 0 分啊?原因是对饱和的 format 目标做组内标准化时,99 和 100 的微小差距被除以一个极小的标准差,放大成了显著的正优势。饱和目标不但没退场,还在主导排序。
- SA-MRPO:format 维度整体打折后,局面反转——rollout 3 拿到 -0.69(比 rollout 2 的 -0.23 更负),而 correctness 最高的 rollout 4 拿到 +1.65 的最大优势。
注意这里最有意思的一点:SA-MRPO 不只是"缩放"优势的幅度,它直接反转了更新的方向。GDPO 想推高的 rollout 3,SA-MRPO 要压低。作者在后文也强调了这一点——这不是超参微调能产生的差别,是优化目标分配逻辑的差别。
🔧 方法:给每个目标装一个"剩余空间"阀门
SA-MRPO 的做法拆成三步,每步都很简单。
第一步,每个目标独立组内标准化(这步继承 GDPO):
第二步,估计每个目标的批次级饱和度。 对整个 batch 取目标 \(k\) 的平均奖励 \(\bar{r}^{(k)}\),除以它的可达奖励区间:
这里有个前提:奖励必须是有界的、范围已知的。对 RLVR 的规则奖励(0/1 正确性、分段长度奖励、通过率)这完全成立,不需要学任何东西、不需要估计奖励天花板,\(s^{(k)}\) 是直接可观测的。
第三步,按剩余空间打折,聚合成优势:
然后因为权重随训练动态变化、优势尺度会漂移,再对整个 batch 做一次标准化得到最终优势 \(\widehat{A}_{\mathrm{SA}}^{(i,j)}\),塞进标准的 GRPO clipped surrogate 目标里就完事了。
一个直觉:\((1-s^{(k)})^\gamma\) 就是个阀门。目标越接近拿满,阀门关得越小;\(\gamma\) 控制关阀门的手劲。format 奖励饱和到 0.98 时,\(\gamma=0.25\) 下它的权重就只剩 \((0.02)^{0.25} \approx 0.38\) 倍;\(\gamma=1\) 时直接只剩 2%。而还没饱和的 correctness(\(s \approx 0.3\))权重几乎不打折。
几个性质值得单独说:
它严格泛化 GDPO 和 GRPO。 \(\gamma = 0\) 时所有饱和因子恒为 1,退化成 GDPO;单目标时再退化成 GRPO。所以它不是另起炉灶,是在现有方法上拧了一个旋钮。
相对权重的偏移是单调可控的。 对任意两个目标 \(a\)、\(b\),若 \(s^{(a)} \gt s^{(b)}\),则
关于 \(\gamma\) 严格递减。\(\gamma\) 越大,优化压力越往剩余空间大的目标倾斜,方向是确定的,不是玄学超参。
作者很坦诚地承认:这不是带保证的约束优化。 论文 4.2 节专门分析了失败模式:当两个目标梯度冲突(\(g_a^\top g_k \lt 0\))且冲突足够强时,削弱已饱和目标的自我保护项,可能导致该目标性能下滑。SA-MRPO 是"自适应分配规则",不承诺每个已饱和目标单调保持。这个坦诚我挺欣赏——他们没有把方法包装成万能的 Pareto 保证,而是把问题留给实验:难目标上的收益能不能盖过易目标上的损失?答案基本是能。
还有一点作者也主动点破了:名义剩余空间不等于可优化的剩余空间。\(1 - s^{(k)}\) 量的是"奖励区间里还剩多少没拿到",但如果模型容量就到这儿了,剩下的区间可能本来就拿不到。这个区分我觉得挺诚实的,饱和度量的是进度,不是潜力的证明。
📊 实验:难目标上全面涨,已饱和目标基本不掉
实验覆盖三个场景,基座模型、训练数据、评测协议都换着来,对照组就是 GDPO(同数据、同奖励、同超参,只差优势构造)。
数学推理:两目标与三目标
Qwen2.5-3B/7B-Instruct,DeepScaleR-Preview(约 4 万道竞赛题)上训练,两目标为 correctness + length(4000 token 硬预算),三目标再加 format(XML 格式合规)。评 AIME24、AMC23、MATH500、Minerva Math、OlympiadBench 五个基准,每题采 16 条报 avg pass@1。
| 基准 | 指标 | 7B Base | 7B GDPO(3目标) | 7B SA-MRPO(3目标) | 3B GDPO(2目标) | 3B SA-MRPO(2目标) | 3B GDPO(3目标) | 3B SA-MRPO(3目标) |
|---|---|---|---|---|---|---|---|---|
| AIME24 | Acc ↑ | 11.7 | 11.5 | 16.5 | 5.0 | 8.5 | 6.7 | 8.1 |
| Minerva | Acc ↑ | 16.1 | 24.2 | 24.8 | 16.2 | 16.6 | 16.9 | 18.1 |
| AMC23 | Acc ↑ | 41.1 | 44.6 | 43.5 | 33.2 | 34.9 | 31.5 | 35.2 |
| MATH500 | Acc ↑ | 50.0 | 64.2 | 67.7 | 57.1 | 58.2 | 58.9 | 59.5 |
| Olympiad | Acc ↑ | 23.8 | 25.3 | 26.1 | 20.6 | 19.3 | 20.6 | 20.0 |
表1:数学推理主结果(准确率,%)。Exceed 指标(超长比例)各设定下 SA-MRPO 与 GDPO 基本相当,均在 1.7% 以内。
15 个对比里 SA-MRPO 赢了 12 个。7B 三目标下 AIME24 从 11.5 涨到 16.5,多了 5 个点——AIME 这种小样本高难基准上这个幅度不算小。MATH500 也涨了 3.5 个点。输的三个里,7B AMC23 掉 1.1 个点、3B Olympiad 分别掉 1.3 和 0.6 个点,幅度都在可接受范围。
我的批判性看法:赢面是实的,但不是碾压。3B 上多数提升在 1-2 个点,这种幅度在 pass@1 平均 16 次采样的协议下统计上还算稳,不过离"质变"远。真正的卖点不是绝对涨幅,而是"涨的同时 Exceed 没崩"——长度目标被主动打折了,超长率居然没恶化,说明机制确实按设计在工作。
自适应推理:把饱和写进奖励函数里
这个实验设计得很巧。作者把长度奖励改成分段函数:\(\leq B_{\min}=1024\) token 拿满分 1,\(B_{\min}\) 到 \(B_{\max}=2048\) 之间线性衰减,超过 \(B_{\max}\) 为 0。这人为造出一个显式饱和区——响应一旦短于 1024 token,长度奖励封顶,再短也没用。基座换成 DeepSeek-R1-Distill-Qwen-7B。
| 基准 | GDPO Acc | SA-MRPO Acc | Δ | SA-MRPO 平均长度 |
|---|---|---|---|---|
| AIME24 | 5.2 | 7.3 | +2.1 | 804 |
| Minerva | 15.4 | 15.9 | +0.5 | 277 |
| AMC23 | 28.3 | 37.5 | +9.2 个点 | 417 |
| MATH500 | 47.1 | 51.5 | +4.4 | 270 |
| Olympiad | 18.1 | 20.9 | +2.8 | 529 |
| 平均 | 22.8 | 26.6 | +3.8 个点 | 459 |
表2:自适应推理结果。两方法的平均响应长度都远低于饱和阈值 1024 token。
五个基准全胜,AMC23 直接涨 9.2 个点,这个数我看到的时愣了一下。代价是响应变长了(平均 333 → 459 token)。但注意作者的辩护逻辑:既然平均长度远在饱和区之内(459 远小于 1024),继续压长度本来就零收益,把这部分"长度预算"换成推理 token 去提正确性,恰恰是这个机制想要的行为。说白了——哦不,这话换个说法——你想想看,长度奖励已经封顶了,还为它省 token 就是纯浪费。这个实验是对机制最直接的验证。
代码生成:换个任务域还成立吗
Qwen2.5-7B-Instruct 在 Eurus-2-RL 上训练,双目标为可执行性(能编译运行)和测试通过率。直觉上可执行性是"易饱和"的基础约束,通过率是"难目标"——正好对上 SA-MRPO 的假设。
| 基准 | 指标 | Base | GDPO | SA-MRPO |
|---|---|---|---|---|
| APPS | Pass ↑ | 43.8 | 53.2 | 53.8 |
| CodeContests | Pass ↑ | 12.4 | 19.2 | 20.6 |
| Codeforces | Pass ↑ | 8.7 | 10.6 | 12.9 |
| TACO | Pass ↑ | 29.0 | 36.0 | 35.6 |
表3:代码生成结果(Pass 为平均测试通过率,%)。Bug 率(编译/运行错误比例)两方法基本相当,均远优于 Base。
四个基准赢三个,Codeforces 上最多涨 2.3 个点,TACO 小输 0.4 个点,Bug 率基本持平。提升幅度比数学场景温和,但跨任务域的一致性本身比单点大涨更有说服力。
🔬 消融:\(\gamma\) 旋钮真的可控吗

图2:Qwen2.5-3B/7B 上 γ 从 0 到 1 的训练奖励轨迹。右侧两图:γ 大于 0 时 correctness 分数系统性地更高;左侧两图:γ 越大 length 分数越低,γ=0.75 和 γ=1.0 时下滑明显。
曲线和预测完全吻合:\(\gamma\) 增大 → 饱和的 length 目标被压得更狠 → correctness 受益。下游评测也确认了这个 tradeoff:
| 基准 | Base | γ=0 | γ=0.25 | γ=0.5 | γ=0.75 | γ=1.0 |
|---|---|---|---|---|---|---|
| AIME24 | 0.6 | 5.0 | 8.5 | 9.0 | 8.7 | 7.4 |
| Minerva | 6.7 | 16.2 | 16.6 | 16.9 | 17.0 | 16.8 |
| AMC23 | 10.7 | 33.2 | 34.9 | 35.6 | 35.3 | 34.8 |
| MATH500 | 26.3 | 57.1 | 58.2 | 58.6 | 58.8 | 58.5 |
| Olympiad | 4.5 | 20.6 | 19.3 | 20.1 | 19.4 | 20.7 |
表4:γ 消融(Qwen2.5-3B,两目标,准确率 %)。γ=0 即 GDPO。所有正 γ 的平均准确率都高于 γ=0,γ=0.5 综合最强;γ 过大时 Exceed 开始抬头(1.1%)。
所有正 \(\gamma\) 都赢 \(\gamma=0\),说明收益确实来自饱和感知机制而不是随机扰动。\(\gamma\) 太大(1.0)时 AIME24 回落、超长率上升——阀门关太死,长度约束真被丢了。作者在正文实验里用的反而是偏保守的 \(\gamma=0.25\),说明表1的结果还有上调空间。
🤔 我的判断
这篇论文最值钱的地方在于:它把一个模糊的工程直觉变成了一个有名字、有公式、可控的机制。 "别在已饱和的目标上浪费梯度"这话谁都说过,但 SA-MRPO 给出了具体的落法——奖励区间归一化的饱和度 + 幂次折扣,外加一次 batch 级重标准化稳住尺度。改动只碰优势构造那一行,verl 里实现大概就几十行代码的事。
也要说清楚它的边界。跟同期工作比,DVAO 按奖励方差调权、GD2PO 处理优势冲突、SAW 用奖励变化率衡量目标信息量——大家都在解"多奖励权重不该固定"这同一个问题,SA-MRPO 的差异化是显式用"距奖励天花板的距离"作为分配依据,动机更直观,但说它是底层突破谈不上,更像是多奖励 RL 工具箱里一个设计干净的新旋钮。实验全是 3B/7B 规模、规则可验证奖励,对不可验证的学习型奖励模型(没有明确 \(r_{\min}/r_{\max}\))这套东西怎么迁移,论文没碰,这是个实际的落地问题。
对工程的启发很直接:如果你在跑多奖励 RLVR,先打开日志看看每个奖励的 batch 均值——哪个早就贴着满分不动了,哪个还在半山腰。只要有"贴满分"的目标存在,这个 \((1-s)^\gamma\) 折扣几乎是无成本的尝试,\(\gamma\) 从 0.25 起步扫到 0.5 就行。另外那个"饱和目标的标准化会放大无意义微差"的坑(图1里 GDPO 给 0 分正确答案 +0.61 优势),就算不用 SA-MRPO,也值得检查一下自己的训练是不是正在犯同样的错。
但还有个更本质的问题悬着:饱和是按 batch 均值估的,训练早期所有目标都不饱和、机制近似 GDPO,到中后期才开始分化——那如果不同 prompt 难度差异巨大,单一的全局饱和度估计会不会太粗?按难度分桶估饱和,可能是下一步值得做的事。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我