GRPO(Group Relative Policy Optimization)算法详解
GRPO是DeepSeekMath针对数学推理任务提出的强化学习优化算法,基于PPO改进,通过分组相对优势计算提升策略稳定性。以下分四个层次解析其原理。
一、前置知识:PPO的核心思想
PPO目标函数:
-
为新旧策略概率比
-
为优势函数,衡量动作偏离平均回报的程度
- clip函数限制更新幅度,防止策略突变
二、GRPO的改进动机
数学推理任务特点:
- 多步依赖性:最终答案正确性依赖中间步骤
- 部分正确性:存在部分正确但整体错误的解
- 稀疏奖励:仅最终答案有明确奖励信号
传统PPO的不足:
- 单样本优势估计方差大
- 绝对奖励无法区分组内样本的相对质量
三、GRPO核心技术:分组相对优势
1. 分组机制(Grouping)
对同一提示(prompt)生成个响应构成一个组:
其中为响应
的奖励值
2. 相对优势计算
组内标准化优势函数:
-
为组内平均奖励
-
为组内标准差
相对排名优势:
其中为
在组内的排名(1到
)
3. 混合优势函数
最终优势函数为标准化优势与排名优势的加权和:
(实验表明效果最佳)
四、GRPO目标函数设计
关键改进:
- 组内对比:通过相对优势降低方差
- 双重优势:结合数值差异与排序信息
- 共享基线:组均值作为天然基线,无需额外网络
五、数学特性分析
梯度方差缩减:
组内样本共享基线,降低估计方差倍
错误抑制能力:
对错误响应,其负优势值会抑制组内其他样本的梯度:
课程学习效应:
随着训练进行,组内样本质量提升,优势函数自动调整比较基准
六、实验效果(DeepSeekMath验证)
指标 | PPO | GRPO |
---|---|---|
MATH数据集准确率 | 42.1% | 51.3% |
训练稳定性(梯度方差) | 1.0 | 0.38 |
多步推理成功率 | 33.7% | 47.9% |
七、实现建议
-
组大小选择:
时平衡效率与效果
-
动态加权:训练后期增大
以利用精确数值信号
- 混合采样:50%贪心采样 + 50%随机采样提升探索性
# GRPO核心代码示意
def compute_advantages(rewards):
mu = torch.mean(rewards)
sigma = torch.std(rewards) + 1e-8
normalized_adv = (rewards - mu) / sigma
ranks = torch.argsort(torch.argsort(rewards, descending=True))
rank_adv = (ranks - (K+1)/2) / (K/2)
return 0.7*normalized_adv + 0.3*rank_adv
总结
GRPO通过分组机制与相对优势计算,解决了数学推理任务中奖励稀疏、误差累积等难题。其核心创新在于:
- 利用组内比较生成更稳健的优势估计
- 混合数值与排序信号增强策略引导
- 天然课程学习特性促进渐进式提升
该算法为复杂推理任务的强化学习提供了新的优化范式,后续可扩展到代码生成、逻辑推理等领域。