「英伟达改进 GRPO」解决多奖励场景优势坍缩问题

动机

当前大模型的强化学习训练(RLHF、RLAIF等)往往需要同时优化多个目标:回答要准确(correctness)、格式要规范(format compliance)、长度要合适(length constraint)、足够有帮助(helpfulness)等,就像给学生评定综合成绩,需要同时考虑语文、数学、体育等多门课程

常见的多奖励优化方法(如 GRPO)的做法是:先把各科成绩加权汇总,再对总分做归一化计算优势函数。这看起来很合理,但实际训练中会出现一个致命问题:优势塌缩(advantage collapse)------不同的奖励组合被映射成相同的优势值,模型看不到这些组合之间的细微差异,导致训练信号失真

对此英伟达提出了 GDPO(Group reward-Decoupled Normalization Policy Optimization),其解决方案为:先对每个奖励单独做归一化,再加权融合,最后再做批归一化

漫画版介绍

https://blog.csdn.net/qq_36671160/article/details/156837211

论文标题

GDPO: Group reward-Decoupled Normalization Policy Optimization for Multi-reward RL Optimization

论文地址

https://arxiv.org/pdf/2601.05242

作者背景

英伟达

代码地址

https://github.com/NVlabs/GDPO/tree/main/trl-GDPO

问题分析

优势坍缩

论文给出了一个直观的例子:假设有两个二元奖励 r₁, r₂ ∈ {0,1},每个问题采样两条轨迹。虽然存在 6 种不同的奖励组合(忽略顺序),但 GRPO 归一化后只剩下 2 个不同的优势组:

这就出问题了:直觉上 (0,2) 应该比 (0,1) 产生更强的学习信号(因为前者拿到了两个奖励,后者只有一个),但 GRPO 让它们完全相同!

更糟的是,(1,1) 看起来两条轨迹表现相同,但它可能来自:

复制代码
r₁ = (1,1), r₂ = (0,0) ------ 都擅长目标1,但完全忽略目标2
r₁ = (0,0), r₂ = (1,1) ------ 都擅长目标2,但完全忽略目标1

这两种情况有本质区别,但 GRPO 都给它们赋予零优势值,模型学不到任何信号

规模越大问题越严重

最近还有一些工作如 Dr.GRPO 和 DeepSeek-v3.2 采用了一种 GRPO 的变体,移除了标准差规范化项,使得:

复制代码
A_sum = (r_sum - mean_group(r_sum)) / std_group(r_sum)

尽管此修改原本是为了缓解问题级别的难度偏差,但从表面看,它似乎也解决了上述问题:移除标准差规范化后,(0, 1) 与 (0, 2) 的优势值变成了 (−0.5, 0.5) 与 (−1.0, 1.0)。然而可惜的是,当 rollout 次数或奖励数量更多时,优势组的多样性仅有少量提升

真实训练中的崩溃

优势塌缩不只是理论问题,会直接导致实际训练失败(细节见下文【实验结果】)

GDPO的"三步归一化"方案

GDPO 的改进分为三步:

第1步:独立归一化每个奖励

对每个奖励维度单独做组内标准化:

复制代码
A₁ = (r₁ - mean_group(r₁)) / std_group(r₁)
A₂ = (r₂ - mean_group(r₂)) / std_group(r₂)
...
Aₙ = (rₙ - mean_group(rₙ)) / std_group(rₙ)

第2步:加权融合

将标准化后的优势值按权重相加:

复制代码
A_sum = w₁·A₁ + w₂·A₂ + ... + wₙ·Aₙ

第3步:批量优势归一化

在整个 batch 的所有轨迹上再做一次归一化:

复制代码
Â_sum = (A_sum - mean_batch(A_sum)) / (std_batch(A_sum) + ε)

为什么需要第3步?

  • 确保优势的数值范围稳定,不会因为奖励数量增加而爆炸
  • 实验表明去掉这一步会导致训练不稳定,有时甚至完全失败

回到之前的例子,GDPO 将会产生 3 个不同的优势组,更准确地区分了不同轨迹的表现水平

更重要的是,对于之前的 (1,1) 情况:

复制代码
r₁=(1,1), r₂=(0,0) → GDPO 会给出正向的 A₁ 信号
r₁=(0,0), r₂=(1,1) → GDPO 会给出正向的 A₂ 信号

奖励优先级调整

前面我们假设所有奖励同等重要(权重都是1)。但实际应用中,我们往往有优先级,例如:

  • 准确性 > 长度约束
    宁可长一点,也不能错
  • 安全性 > 帮助性
    宁可拒绝回答,也不能输出有害内容

直觉的做法是:给重要的奖励更高的权重 w。但论文发现,当两个目标难度差异很大时,调权重往往不管用(细节见下文【实验结果】)

对此,作者提出了一个更有效的策略:把简单的奖励条件化在困难的奖励之上。定义条件化长度奖励:

复制代码
R̃_length = R_length if R_correct >= threshold else0

即只有在答对的前提下,长度约束才有意义;答错了,再短也不给奖励

实验结果

作者在三类典型任务上验证了 GDPO 的有效性:

任务1:工具调用(Tool Calling)

数据集:ToolRL (4000条训练样本,来自 ToolACE、Hammar、xLAM)

模型:Qwen2.5-1.5B 和 3B

奖励:格式奖励 R_format ∈ {0,1},正确性奖励 R_correct ∈ [-3, 3]

评估:BFCL-v3 排行榜(包含单步/多步/多工具等多种场景)

实验结论:

  • GDPO 在格式和正确性奖励上都收敛到更高值
  • GDPO 早期改进更快,后期稳定性更好
  • GRPO w/o std 虽然正确性接近 GDPO,但格式约束完全失败

任务2:数学推理(Math Reasoning)

  • 数据集:DeepScaleR-Preview (40K 竞赛级数学题)
  • 模型:DeepSeek-R1-1.5B、7B 和 Qwen3-4B
  • 奖励:正确性 R_correct ∈ {0,1},长度约束 R_length ∈ {0,1} (限制≤4000 tokens)
  • 评估:MATH、AIME、AMC、Minerva、Olympiad Bench

实验结论:

  • 前100步:长度约束目标很容易,两个模型都很快掌握
  • 100-400步:GDPO 的正确性恢复更快,达到更高值
  • 400步后:GRPO 出现训练崩溃:
    • 正确性奖励开始下降
    • 长度约束直接失效
  • 最难的 AIME 任务上,GDPO 优势最明显(+6.3% vs GRPO)

在数学任务设置上,作者分析了奖励加权的效果:

  • 固定正确性权重 w_correct = 1.0
  • 长度权重 w_length 在 {1.0, 0.75, 0.5, 0.25} 变化

上图展示了标准 GRPO 与 GDPO 在使用上述不同奖励权重组合的情况下,准确率与超长率(回答长度超过限制)变化情况,其中红框中的是使用条件化长度奖励的结果,可见:

  • w_length 从 1.0 降到 0.5,超长率几乎不变
  • 只有降到 0.25(极端的 4:1 权重比),才能抵消两个目标的难度差异

这说明简单目标(长度)的"吸引力"太强,小幅调权重根本压不住。而对简单目标施加条件化约束后,问题得到解决,权重真正生效

任务3:代码推理(Code Reasoning)

在具有三项约束(准确率、长度约束、缺陷率)的代码推理场景上,GDPO 在多个维度上都优于 GRPO

相关推荐
GISer_Jing2 小时前
Nano Banana+LoveArt三大核心功能解析:重构AI设计全链路,让创意落地更高效
人工智能·设计模式·aigc
OpenMiniServer2 小时前
GitLab AI革命:如何将智能开发融入你的DevOps工作流
人工智能·gitlab·devops
寻星探路2 小时前
【算法专题】哈希表:从“两数之和”到“最长连续序列”的深度解析
java·数据结构·人工智能·python·算法·ai·散列表
非凡ghost2 小时前
ImageConverter(图像转换编辑工具)
图像处理·人工智能·windows·学习·计算机视觉·软件需求
猫头虎2 小时前
Claude Code 2026 年1月9日迎来大更新:Agent 能力增强(2.1.0 详解 + 升级指南)
ide·人工智能·macos·langchain·编辑器·aigc·ai编程
子午2 小时前
【2026原创】中草药识别系统实现~Python+深度学习+模型训练+人工智能
人工智能·python·深度学习
编码小哥2 小时前
OpenCV特征匹配:暴力匹配与FLANN匹配实战
人工智能·opencv·计算机视觉
数字游民95272 小时前
网站备案全流程回放(腾讯云)
人工智能·git·github·腾讯云·网站备案·waytoopc
飞哥数智坊2 小时前
3位实战分享、6个案例展示,TRAE Friends@济南第二场圆满完成
人工智能·ai编程·trae