CorrGRPO: Correlation-Normalized GRPO for Multi-Reward Learning
Wenbin Hu, Huihao Jing, Haochen Shi, Yuxuan Liu, Haoran Li, Yangqiu Song
cs.LG, cs.CL
2026-09-29
把 GRPO 多奖励分母中的协方差换成相关系数,大尺度 reward 不再主导归一化;三域 0.5B-8B 全线超 GRPO,7B 代码平均 Pass@1 +4.21 个百分点。
用 GRPO 训练推理模型的人大多盯着 reward 设计和权重配比,很少有人看分母。GRPO 对多 reward 的处理是把各分量加总,再用组内标准差归一化。总和的方差等于所有成对协方差之和,所以这个分母实际上是整个 reward 协方差矩阵全部元素之和。隐式机制本身说得通:reward 之间正相关越强,信息越冗余,分母越大,advantage 被压小;负相关则放大 advantage。GRPO 一直在做这种自适应缩放,只是此前没人写下来。
失效模式在尺度。协方差等于两个分量标准差乘以相关系数,标准差大的 reward 即便与其他分量几乎不相关,也能靠自身的方差项撑大分母。论文图 2 的示例里,一个大方差、弱相关(ρ≈0.11)的 reward 占了协方差总和的 91.1%,另一对强相关(ρ≈0.98)的小尺度 reward 之间的依赖反而被淹没。归一化名义上在度量 reward 间的冗余,实际被数值范围最大的那个分量接管。
CorrGRPO 只改一处:GRPO 分母里的协方差矩阵元素之和,换成 Pearson 相关系数矩阵元素之和。分子保持中心化后的总 reward,训练目标指定的相对权重全部保留。
放回图 2 的例子,换成 CorrGRPO 后强相关对的贡献是弱相关对的约 8.89 倍,GRPO 下被量纲颠倒的排序恢复正常。动态上也自洽:代码任务里「运行成功」和「全部测试通过」两个 reward,随着可执行程序越来越多地通过测试,相关性上升,分母变大,冗余信号的更新幅度被自动压小,附录对这个二 reward 系统给出了解析推导。
理论上,同一 rollout 组内 CorrGRPO 与 GRPO 的梯度方向完全相同,只差一个组内共享的正常数,连 PPO clip 的激活分支都不变。方法的全部作用是给不同组重新分配梯度幅度。这也解释了为什么分母可以直接换进 DAPO、CISPO、GDPO,不动目标函数。
代码生成,LeetCodeDataset 训练(2641 题),Qwen2.5-Coder-Instruct 四个尺寸,基线含 GRPO 和 GDPO:
| 设置 | 指标 | GRPO | CorrGRPO |
| 7B | 四基准平均 Pass@1 | 47.28 | 51.49 |
| 7B | LeetCodeDataset Pass@1 | 15.79 | 24.12 |
| 3B | 四基准平均 Pass@1 | 43.29 | 45.56 |
| 0.5B | Efficiency(快于参考实现的比例) | 60.71 | 67.86 |
平均 Pass@1 相对 GRPO 提升 2.09/0.80/2.27/4.21 个百分点(0.5B 到 7B);7B 的 LeetCodeDataset Pass@1 从 15.79 涨到 24.12,base 模型是 14.91。正确率-效率 Pareto 前沿上,CorrGRPO 包揽全部非支配配置。
工具调用,RLLA-4K 训练、API-Bank 零训练泛化,三个 backbone 上 RLLA-4K all-exact 分别是 63.38→67.61(Qwen2.5-7B)、57.75→59.15(Qwen3-4B-Thinking)、61.97→63.38(Qwen3-8B),API-Bank 平均 +1.14/+3.94/+2.26 个百分点,最大单项增益在 Qwen3-4B 的 API-Bank v3:52.24→64.08。
agent 安全,AgentDojo 训练(utility 与 security 等权两个 reward),ASB 和 InjecAgent 泛化:
| 指标 | GRPO | CorrGRPO |
| AgentDojo 3B Joint Accuracy | 60.13 | 89.62 |
| ASB 7B Joint Accuracy | 31.38 | 47.88 |
| InjecAgent 7B 总 ASR(越低越好) | 13.53 | 6.17 |
AgentDojo 3B 的 clean utility 从 52.38 涨到 95.24,同时 ASR 压到 1.54%,可用性和安全性同时拿到。附录还显示 CorrGRPO 的策略熵衰减更慢,在 AgentDojo 和 LeetCodeDataset 上最明显,与「熵坍缩限制探索」的已知结论吻合。
改动只是分母上十来行代码(附录 B 有完整 diff),不引入新超参、不动 clip 和 KL,正在跑 GRPO 或 DAPO 多 reward 训练的管线可以直接 A/B。概念上的增量同样实在:多目标训练里 reward 尺度对齐是个老坑,常见做法是手动归一化各分量或动态调权重,这篇指出 GRPO 的组内归一化本身就在聚合协方差,尺度失衡发生在这一层,修复也该在这一层。定位上是把一个被忽视的统计细节做透的干净改进,不是范式变化。
作者自述:安全基准上的提升不能外推到真实部署或未见攻击;相关性归一化救不了有偏或错设的 reward,行为仍由所选目标和权重决定。
读下来另有几处存疑。部分设置增益很小,1.5B 代码平均只涨 0.80 个点,Qwen3-8B 的 ASB joint accuracy 只涨 1.25,论文没有多次运行的方差或显著性检验,这种幅度下单次训练很难下结论。个别格子输给 GRPO:1.5B 的 LiveCodeBench v6 是 10.29 对 13.14,3B 和 7B 的可执行率也略低。与 GDPO 组合时平均 Pass@1 从 48.88 掉到 48.21,论文承认集成只证明兼容性、不保证增益。七个代码 reward 的权重(0.60 的通过率、0.30 的 AST、0.20 的效率等)手工设定,没有消融。最要紧的一处:相关工作点名的 MO-GRPO 按方差自动重加权,是思路最近的基线,实验没有和它比。