RL算法推导!PPO -> GRPO -> DAPO -> GSPO -> SAPO

  • 发布于 2026-01-23
  • 131 次阅读

作者:木木

原文:https://zhuanlan.zhihu.com/p/1986141224588027138

在DPO(Direct Policy Optimizatio)之后,后续的典型工作发展路线为:GRPO -> DAPO -> GSPO -> SAPO,在有PPO的理论推导基础(可以看该系列的前几篇文章)后,这些论文的理论推导过程就会容易很多。

1. GRPO 相比PPO的改进有哪些?

首先PPO的优化目标为:

\mathcal{J}_{PPO}(\theta) = \mathbb{E}_{q \sim \mathcal{D}, a \sim \pi_{\theta_{old}}} \left[ \min \left( \frac{\pi_\theta(o_t | q, o_{<t})}{\pi_{\theta_{old}}(o_t | q, o_{<t})} \hat{A}_t, \text{clip} \left( \frac{\pi_\theta(o_t | q, o_{<t})}{\pi_{\theta_{old}}(o_t | q, o_{<t})}, 1-\epsilon, 1+\epsilon \right) \hat{A}_t \right) \right]

GRPO的优化目标:

\mathcal{J}_{GRPO}(\theta) = \mathbb{E}_{q \sim \mathcal{D}, \{o_i\}_{i=1}^G \sim \pi_{\theta_{old}}} \left[ \frac{1}{G} \sum_{i=1}^G \left( \frac{1}{|o_i|} \sum_{t=1}^{|o_i|} \min \left( r_{i,t}(\theta) \hat{A}_{i,t}, \text{clip}(r_{i,t}(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_{i,t} \right) \right) - \beta \mathbb{D}_{KL}(\pi_\theta \| \pi_{ref}) \right]

其中

A_{i,t} = \frac{r_i − \text{mean}(\{R\} _{i=1}^G)} {std(\{{Ri\}}^G_{i=1})}

其采用组采样的方式和基于规则的reward函数,也能够像DPO仅加载两份模型,即Actor和参考文献 Model,从而在训练参数量比较大的模型时,有效降低显存的占用,好坏样本的覆盖程度则依赖于Rollout过程,当Rollout采样的过程足够多时,可以假设它能够覆盖大部分情况。

从上述角度来讲,想要覆盖大部分case的数据组织成本,要比DPO小很多,个人猜测是目前GRPO系列方法比较流行的一个原因,该方法的核心在于组采样。但在实际训练时,比较耗费时间的为Rollout阶段。

2. DAPO 相比GRPO的改进有哪些?

其优化目标如下:

\begin{aligned} \mathcal{J}_{DAPO}(\theta) = & \mathbb{E}_{q \sim \mathcal{D}, \{o_i\}_{i=1}^G \sim \pi_{\theta_{old}}} \left[ \color{red}{\frac{1}{\sum_{i=1}^G |o_i|}} \sum_{i=1}^G \sum_{t=1}^{|o_i|} \min \left( r_{i,t}(\theta) \hat{A}_{i,t}, \text{clip}(r_{i,t}(\theta), 1 - \color{red}{\epsilon_{low}}, 1+ \color{red}{\epsilon_{high}}) \hat{A}_{i,t} \right) \right] \\ & \text{s.t.} \color{red}{\quad 0 < \left| \{o_i \mid \text{is\_equivalent}(a, o_i)\} \right| < G} \end{aligned}

其中 ​A_{i,t} 和前面保持一致,其不同地方则用红色显示,如下为DAPO的具体改进点:

归一化系数(对应论文中的Token-Level Policy Gradient Loss): 这里采用全局token系数进行归一化,使得在处理组内长度回复差异较大时,梯度会更稳定点。

非对称裁剪(对应论文中的Clip-Higher): 更精细地控制策略的更新程度。

Dynamic Sampling: 直接丢弃掉采样后奖励值为0或1的样本, 当组内所有采样结果相同时,此时按照上式计算得到的优势为0,即不能带来有效梯度更新。刚开始训练时,会有较大可能出现组内奖励值全0的情况,训练阶段后期,则会有较大可能出现组内奖励值全1的情况,为了提升Rollout阶段的采样效率,直接选择丢弃奖励值为0或1的样本。

Overlong Reward Shaping: 该改进并没有在DAPO的优化目标中体现,在GRPO训练时可能会出现当Rollout输出达到预先设置的最大长度时,仍没有输出有效结果,此时计算的奖励值为0。为了降低模型输出时的思考长度,则在输出长度方面,增加一个对应软惩罚:

R_{length}(y) = \begin{cases} 0, & |y| \leq L_{max} - L_{cache} \\ \frac{(L_{max} - L_{cache}) - |y|}{L_{cache}}, & L_{max} - L_{cache} < |y| \leq L_{max} \\ -1, & |y| > L_{max} \end{cases}

3. GSPO 相比GRPO有哪些改进?

优化目标如下:

\mathcal{J}_{GSPO}(\theta) = \mathbb{E}_{x \sim \mathcal{D}, \{y_i\}_{i=1}^G \sim \pi_{\theta_{old}}} \left[ \frac{1}{G} \sum_{i=1}^G \min \left( s_i(\theta) \hat{A}_i^b, \text{clip} (s_i(\theta), 1 - \epsilon, 1 + \epsilon) \hat{A}_i^b \right) \right]

其中

s_i(\theta) = \left( \frac{\pi_\theta (y_i | x)}{\pi_{\theta_{old}} (y_i | x)} \right)^{\frac{1}{|y_i|}} = \exp \left( \frac{1}{|y_i|} \sum_{t=1}^{|y_i|} \log \frac{\pi_\theta (y_{i,t} | x, y_{i,<t})}{\pi_{\theta_{old}} (y_{i,t} | x, y_{i,<t})} \right)

该优化目标相比GRPO,仅改变了重要性采样的系数,其相比GRPO采样系数用的是整条句子的概率情况,而不是单token概率,这点对于MoE模型RL训练十分有帮助。

对于单token概率,可能存在Rollout Engine和 Model Engine选择的专家路由差异,因此往往需要通过Routing Reply机制来确保两种Engine在同样的样本选择的路由保持一致。

一个稍微有意思的点,在LLM进行预训练时,需要观察模型在训练预料的PPL(文本困惑度)是否呈现出下降趋势,PPL的公式与上述公式极为相似,对于一个序列

y=(y_1, y_2, \dots, y_n)

其困惑度的定义如下:

\text{PPL}(y) = \exp(-\frac1{|y|} \sum_{t=1}^{|y|} P(y_t|y_{\lt t}))

将PPL的定义带入 ​s_i(\theta) 则有

s_i(\theta) = \frac{PPL_{\pi_{\theta_{old}}}(y_i)}{PPL_{\pi_\theta}(y_i)}

,对于正样本,希望​s_i(\theta)较大,即对应到​PPL(\pi_\theta) 减小, ​PPL(\pi_{old}) 增大。

4. SAPO 相比GRPO和GSPO有哪些改进?

其优化目标如下:

\mathcal{J}(\theta) = \mathbb{E}_{q \sim \mathcal{D}, \{y_i\}_{i=1}^G \sim \pi_{\theta_{old}}} \left[ \frac{1}{G} \sum_{i=1}^G \frac{1}{|y_i|} \sum_{t=1}^{|y_i|} f_{i,t}(r_{i,t}(\theta)) \hat{A}_{i,t}^b \right]

其中

f_{i,t}(x) = \sigma (\tau_{i,t} (x - 1)) \cdot \frac{4}{\tau_{i,t}}, \quad \tau_{i,t} = \begin{cases} \tau_{pos}, & \text{if } \hat{A}_{i,t}^b > 0 \\ \tau_{neg}, & \text{otherwise} \end{cases}

其相比GRPO将clip操作替换为上述软控制,其具有如下特点:

  • token级别的软信任区域,token级别具有更细的控制力度。
  • 非对称温度设计,对于正负token则采取不同的操作。

Reference

1. DeepSeekMath(GRPO): https://arxiv.org/pdf/2402.03300
2. DAPO: https://arxiv.org/pdf/2503.14476
3. GSPO: https://arxiv.org/abs/2507.18071
4. SAPO: http://arxiv.org/pdf/2511.20347