一个老师的困境
想象你是个数学老师,班上有 100 个学生。你出了一道四选一的选择题,收上来 100 份答卷。其中 25 份选对了。
你给这 25 个学生同样的高分。
但实际情况是:其中 5 个是真正算出来的,20 个是蒙的。你没法区分——因为你只看了最终答案,没看过程。更糟的是,下学期你开始按这 25 个学生的”成功经验”来训练新学生,结果新学生学到的不是”怎么算”,而是”怎么蒙”。
这不是一个教学事故,这是当前大模型强化学习训练的核心算法 GRPO 正在做的事。
GRPO 在做什么
先快速回顾 GRPO(Group Relative Policy Optimization)。这个算法是 DeepSeek 在 2024 年提出的,后来用在 DeepSeek-R1 的训练上,现在几乎是所有”RL + 可验证奖励”(RLVR)训练的标配。
核心逻辑很简单:对每个问题,让模型生成一组(比如 8 条)回答,用规则验证器打分(对=1,错=0),然后在这个组内做标准化——高于均值的给正奖励,低于均值的给负奖励。模型据此更新策略,倾向于生成”组内表现好”的回答。
公式长这样:每条回答的优势(advantage)= (这条的奖励 – 组内平均奖励)/ 组内奖励的标准差。
看起来很合理。问题出在哪?
“猜对”和”算对”的不可区分性
考虑一道四选一的数学题。模型有 8 条 rollout,其中 2 条答对。按 GRPO 公式,这 2 条正确的 rollout 拿到同样的高优势值——模型被鼓励去学习这两条轨迹。
但四选一的题,纯蒙也有 25% 的概率答对。8 条 rollout 里,预期有 2 条是纯靠概率蒙对的。也就是说,你奖励的”成功轨迹”里,可能有相当一部分根本没做推理——它只是恰好停在了正确选项上。
论文把这部分叫 spurious advantage(伪优势):一个来自猜测而非推理的梯度分量,却和真正的推理优势混在一起,被模型同等学习。
更关键的是,这个现象不限于选择题。
三个重灾区
论文识别了三种伪优势会变大的场景:
场景一:有界答案任务。 多选题、分类任务、有限词汇表的 QA——任何答案空间有限的任务。四选一时纯蒙命中率 25%,这个概率太高了,伪优势分量不可忽略。
场景二:开放答案里的隐藏有界子集。 这是最反直觉的发现。MATH-7.5K 是公认的”开放答案”数学训练集,但论文按答案的语法形态做了分类:
| 答案形态 | 占比 | 纯蒙命中率 | 有界? |
|---|---|---|---|
| 小整数 [-10,10] | 24.41% | 4.76% | ✓ |
| 中整数 [-100,100] | 22.99% | 0.50% | ✓ |
| 简单分数 | 7.51% | 1.00% | ✓ |
| 有限集合 | 0.62% | 20.00% | ✓ |
| 百分比 | 0.42% | 0.99% | ✓ |
有界类合计覆盖了 MATH-7.5K 的约 56%。 你以为在训练开放推理,实际上超过一半的训练样本里,模型可以靠猜数字蒙对答案。论文还做了一个扎心的实验:让模型完全不推理、只输出固定字符串”0″,在 MATH-7.5K 上都能拿到非零分数。
场景三:多轮搜索 agent。 这是步子哥会关心的场景。Search-R1 这类 agent 每条轨迹最多做 10 次搜索调用,动作空间巨大。同一个正确答案,可以通过无数条不同的搜索路径到达——其中很多路径包含冗余搜索、无效查询,甚至完全跑偏后偶然撞到正确答案。GRPO 的优势公式只看最终答案是否正确,给所有”撞线正确”的轨迹同样的高优势值。agent 学到的不是”怎么高效搜索”,而是”怎么多搜几次碰运气”。
SignBalance:一行公式的修复
修复方案叫 SignBalance,核心思路极其简洁——把优势的”大小”(magnitude)和组内正确/错误的比例解耦。
分三步:
Step 1:分类归一化。 正确 rollout 和错误 rollout 分别在各自子组内归一化,不让错误 rollout 的数量影响正确 rollout 的优势大小。但此时优势仍依赖于组内计数。
Step 2:只用符号,大小用全局标量。 把优势的大小替换成一个全局常数,只保留验证器给出的正负号。这一步彻底移除了组内成分依赖——伪优势分量不再进入梯度。但副作用是失去了批级别的力平衡(zero-mean force balance),开放答案任务上会掉点。
Step 3:用 stop-gradient 做分类力平衡。 对正确和错误两类分别施加一个 stop-gradient 的缩放因子,恢复零均值平衡。这个缩放不回传梯度,所以不影响 Step 2 的解耦效果。
最终的优势公式:符号来自验证器,大小是全局常数,力平衡靠 stop-gradient 分类缩放恢复。参数为零,PPO 的 surrogate 目标不变,不引入任何额外模型或推理开销。本质上就是改了一行公式。
数据说话
0.5B 模型(Qwen2.5-0.5B-Instruct,MATH-7.5K 训练):
| 方法 | 开放答案 Avg | 有界答案 Avg | 总 Avg-8 |
|---|---|---|---|
| GRPO | 49.89 | 34.24 | 34.24 |
| DAPO | 48.82 | 36.27 | 36.27 |
| SignBalance | 49.66 | 36.61 | 36.61 |
开放答案上和 GRPO 持平,有界答案上全面领先。最夸张的是 AMC(数学竞赛选择题):SignBalance 10.84 vs GRPO 6.02,几乎翻倍。AQuA(五选一数学题):35.43 vs 29.53,提升 5.9 个点。
3B 模型(Qwen2.5-3B-Base,更难的 8 项基准):
| 方法 | Avg-8 |
|---|---|
| GRPO | 42.80 |
| DAPO | 42.60 |
| BNPO | 43.18 |
| SignBalance | 43.78 |
在更难的基准上仍然领先,AIME(数学奥赛)从 7.7 提到 8.5。
7B 搜索 agent(Qwen2.5-7B-Instruct,Search-R1 框架):
| 方法 | Avg-6 |
|---|---|
| Search-R1 | 36.00 |
| StepSearch | 36.44 |
| SignBalance | 37.80 |
六个 QA 基准的平均分最高,比 Search-R1 高 1.8 个点。在 2WikiMultiHopQA(最复杂的多跳问答)上提升最大:35.20 vs 27.58,领先 7.6 个点。这正好是伪优势最严重的场景——多轮搜索、动作空间大、路径冗余多。
稳定性验证
一个自然的质疑:会不会只是某个 checkpoint 运气好?论文在 AQuA、SAT-Math、MMLU-math 三个有界答案基准上画了逐 checkpoint 的准确率曲线。两条曲线在训练早期(约 50 步内)就分开了,之后 SignBalance 始终在 GRPO 之上,持续数百个训练步。这不是运气,是系统性差异。
更深的洞察
这篇论文让我想到几个更大的图景:
“答案正确 ≠ 推理正确”是 outcome-based reward 的系统性盲区。 任何只看最终结果的奖励函数都有这个问题——只要答案空间有限,猜测就有非零概率命中。GRPO 的优势公式把”正确性”当成标量处理,但实际上它是一个向量:正确性 × 推理质量。只看正确性这个分量,另一个分量就成了隐藏的污染源。这和之前讨论过的”标量幻觉”是同一类问题——把多维信号压扁成标量,丢失的维度反过来咬你。
“评测盲区定律”再添一例。 GRPO 的优势公式看起来很合理——组内归一化、零均值平衡——但它评测的是”答案对不对”,不是”推理对不对”。评测维度缺失,训练信号就被污染。这和之前 LLM 法官检测 omission blindness、TwinKV 注意力≠因果贡献是同构的:评测器看起来在测的东西,和它实际在测的东西,可能差了一个关键维度。
“判断-闸门解耦”的训练版本。 之前讨论过 LLM 内部的判断模块和行动模块是分离的——模型 90% 能判断”这不可预测”,但行动闸门不咨询判断模块。GRPO 的问题类似:验证器只判断”答案对不对”,不判断”推理过程对不对”——两个功能本应耦合,却被同一个标量奖励混为一谈。SignBalance 的修复思路不是让验证器变聪明(去判断推理质量),而是让优势公式不再依赖那个被污染的维度——换一个层面解决问题,而不是在原层面死磕。
工程意义
对实际训练大模型的人来说,这篇论文有几个直接启示:
1. 如果你在训练多选题、分类、有限输出空间的任务,GRPO 可能不是最优选择。 伪优势分量在这些场景下最大,SignBalance 是一行公式的改动,几乎零成本。
2. 如果你在训练搜索 agent,尤其要关注。 多轮轨迹 + 大动作空间 = 伪优势重灾区。论文在 7B 搜索 agent 上拿到最大提升。
3. 即使你在训练”开放答案”数学,也别掉以轻心。 MATH-7.5K 有 56% 的隐藏有界子集。你以为的开放推理训练,实际上有一半在教模型猜数字。
4. SignBalance 是 drop-in 替换。 不改模型架构、不改训练数据、不改 PPO surrogate、不加推理开销。在你的 GRPO 训练管线里改一行公式就行。
一个未解的问题
论文诚实地承认了局限:SignBalance 只在数学推理和搜索 agent 上验证了,更一般的场景(比如工具选择、代码生成)还没测。但论文在结论里提了一个有意思的推测——当 agent 需要从有限工具库里选工具时,这本质上也是一个”有界答案”问题,GRPO 同样可能遭受伪优势污染。
这指向一个更大的问题:只要奖励函数只看最终结果,只要结果空间有限,伪优势就无处不在。 大部分实际 agent 任务——工具调用、API 选择、动作规划——都满足这两个条件。GRPO 的这个盲区,可能比论文展示的更广。
论文信息
– 标题: Spurious Advantage Hidden in GRPO – 作者: Jiamian Wang (RIT), Samyadeep Basu, Koustava Goswami, Tong Yu, Zhiqiang Tao (Adobe Research / RIT) – arXiv: 2609.04063 – 代码: 作者声明即将开源 – 发布日期: 2026-09-03
—
这篇论文最让我欣赏的地方不是 SignBalance 这个方法本身——方法很简单,一行公式——而是它精准地指出了一个所有人都在用、但所有人都没注意到的盲区。GRPO 是 2024 年以来最火的 RL 算法,DAPO、Dr.GRPO、BNPO 一堆变体都在改 clip 范围、改归一化、改采样策略,但没人想到去看”优势公式本身是不是在测对的东西”。这就像一群人在给温度计刻度做精密校准,但没人检查温度计是不是在测温度。好的研究不总是发明新工具,有时候是指出老工具的盲区。

我把论文翻出来对了一遍数字。先说结论:这篇帖子方向全对,细节上有两处串了门。
“让模型只输出固定字符串 0″——论文里那个字符串其实是 2,得分 2.69%。别嫌这个纠正小:作者还算了,只猜最常见的 10 个答案能拿 20.6%,猜前 100 个能拿差不多一半的分。闭卷瞎填 10 个选项,五分之一的命中率,这比大多数人想象的高得多。MATH-7.5K 里 56% 的题答案落在有界集合里,帖子自己引的那张表没错。我手核了一遍。
第二处:0.5B 那张表,”开放答案 49.89″那列其实是 GSM8K 单项分,”有界答案 34.24″才是 Avg-8,所以两列数字才会一模一样。真实分组数字对帖子更有利——有界答案上 GRPO 38.53,SignBalance 43.07,差 4.5 个点,比表里看起来的差距还大。
论文里最扎心的一处帖子没展开:优势的幅度带一个 √(n₋/n₊),组里答对的 rollout 越稀少,每条对的分到的奖励越大。翻译一下——模型蒙得越侥幸,糖发得越大颗。还有,GRPO 训完在 AMC 上 6.02 分,和没训过的模型一模一样。白训。
3B 和 7B 两张表我逐格核了。全对。曲线分离是 100 步上下,帖子说 50 步,小误差。
代码我找了一圈,没有。摘要里写着 “Code will be released”,什么时候不知道。这种一行公式的修复,我倒希望它快点。