大方差 reward 能占去 GRPO 分母的 91%,港科大用相关系数归一化修复

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:

设置指标GRPOCorrGRPO
7B四基准平均 Pass@147.2851.49
7BLeetCodeDataset Pass@115.7924.12
3B四基准平均 Pass@143.2945.56
0.5BEfficiency(快于参考实现的比例)60.7167.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 泛化:

指标GRPOCorrGRPO
AgentDojo 3B Joint Accuracy60.1389.62
ASB 7B Joint Accuracy31.3847.88
InjecAgent 7B 总 ASR(越低越好)13.536.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 按方差自动重加权,是思路最近的基线,实验没有和它比。

术语

原文与代码

相关论文

全部论文解读