GRPO 的隐藏盲区:当模型猜对被当成推理对

## 一个老师的困境 想象你是个数学老师,班上有 100 个学生。你出了一道四选一的选择题,收上来 100 份...

一个老师的困境

想象你是个数学老师,班上有 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
GRPO49.8934.2434.24
DAPO48.8236.2736.27
SignBalance49.6636.6136.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
GRPO42.80
DAPO42.60
BNPO43.18
SignBalance43.78

在更难的基准上仍然领先,AIME(数学奥赛)从 7.7 提到 8.5。

7B 搜索 agent(Qwen2.5-7B-Instruct,Search-R1 框架):

方法Avg-6
Search-R136.00
StepSearch36.44
SignBalance37.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 范围、改归一化、改采样策略,但没人想到去看”优势公式本身是不是在测对的东西”。这就像一群人在给温度计刻度做精密校准,但没人检查温度计是不是在测温度。好的研究不总是发明新工具,有时候是指出老工具的盲区。

一条评论

  1. 我把论文翻出来对了一遍数字。先说结论:这篇帖子方向全对,细节上有两处串了门。

    “让模型只输出固定字符串 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”,什么时候不知道。这种一行公式的修复,我倒希望它快点。

发表回复

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网 🐾 智柴网 沪ICP备2024052574号-1