了解 GRPO 算法:一种高效的强化学习优化方法
强化学习(Reinforcement Learning,RL)作为一种模仿人类行为的学习方式,在很多复杂任务中得到了广泛应用。然而,如何在大规模任务中高效地优化策略,始终是一个值得探讨的问题。传统的强化学习方法通常依赖于一个额外的评论模型,该模型与策略模型一样大,负责评估当前策略的“好坏”程度。然而,评论模型的存在不仅增加了计算的开销,也导致了训练效率的低下。为了解决这一问题,**群体相对策略优化(GRPO)**应运而生。GRPO通过摒弃评论模型,利用更高效的群体样本来优化策略,从而显著提升了强化学习的效率。
本文将详细解读 GRPO 算法的核心思想,并探讨它与 PPO(Proximal Policy Optimization)算法的关系,帮助读者理解该算法在强化学习中的应用和优势。
(评论模型可参考本账号文章《大模型后训练之强化学习PPO算法》,其中的价值函数即为PPO算法评论模型。)
1. 什么是 GRPO?
群体相对策略优化(Group Relative Policy Optimization, GRPO) 是一种旨在提升强化学习效率的优化方法。与传统的强化学习方法不同,GRPO不依赖于评论模型,而是通过群体样本来估算奖励,并根据这些样本来优化策略。GRPO 的关键创新在于,利用从旧策略生成的输出样本来进行奖励估算,并通过这些样本对策略进行优化,避免了评论模型带来的计算开销。
GRPO 的优化目标
GRPO的目标是通过最大化一组候选输出的优势(Advantage),来优化当前的策略模型 π θ \pi_\theta πθ。具体来说,优化目标通过以下公式来表示:
J G R P O ( θ ) = E [ q ∼ P ( Q ) , { o i } i = 1 G ∼ π θ old ( O [ q ] ) ] \mathcal{J}_{\mathrm{GRPO}}(\theta) = \mathbb{E}[q \sim P(Q), \left\{o_i\right\}_{i=1}^{G} \sim \pi_{\theta_{\text{old}}}(O[q])] JGRPO(θ)=E[q∼P(Q),{oi}i=1G∼πθold(O[q])]
在这个公式中, q q q 代表问题样本, π θ old \pi_{\theta_{\text{old}}} πθold 是旧策略, { o 1 , o 2 , … , o G } \{o_1, o_2, \dots, o_G\} {o1,o2,…,oG} 是从旧策略中生成的一组候选输出。然后,GRPO 根据这些输出的优势来优化当前策略 π θ \pi_\theta πθ。
优化目标的具体形式为:
1 G ∑ i = 1 G ( min ( π θ ( o i ∣ q ) π θ old ( o i ∣ q ) A i , clip ( π θ ( o i ∣ q ) π θ old ( o i ∣ q ) , 1 − ε , 1 + ε ) A i ) − β D K L ( π θ ∥ π r e f ) ) \frac{1}{G} \sum_{i=1}^{G} \left( \min \left( \frac{\pi_{\theta}(o_i|q)}{\pi_{\theta_{\text{old}}}(o_i|q)} A_i, \operatorname{clip}\left( \frac{\pi_{\theta}(o_i|q)}{\pi_{\theta_{\text{old}}}(o_i|q)}, 1-\varepsilon, 1+\varepsilon \right) A_i \right) - \beta \mathbb{D}_{KL}(\pi_{\theta} \| \pi_{ref}) \right) G1i=1∑G(min(πθold(oi∣q)πθ(oi∣q)Ai,clip(πθold(oi∣q)πθ(oi∣q),1−ε,1+ε)Ai)−βDKL(πθ∥πref))
- A i A_i Ai:表示每个输出的优势,衡量了输出相对于其他输出的相对优劣。
- ε \varepsilon ε:用于控制策略更新的幅度,防止更新过大。
- β \beta β:用于平衡 KL 散度项的影响。
- D K L ( π θ ∥ π r e f ) \mathbb{D}_{KL}(\pi_{\theta} \| \pi_{ref}) DKL(πθ∥πref):计算当前策略与参考策略之间的KL散度,起到正则化的作用。
优势 A i A_i Ai 的计算方式为:
A i = r i − mean ( { r 1 , r 2 , … , r G } ) std ( { r 1 , r 2 , … , r G } ) A_i = \frac{r_i - \operatorname{mean}\left(\left\{r_1, r_2, \dots, r_G\right\}\right)}{\operatorname{std}\left(\left\{r_1, r_2, \dots, r_G\right\}\right)} Ai=std({r1,r2,…,rG})ri−mean({r1,r2,…,rG})
其中, r i r_i ri 是与候选输出 o i o_i oi 对应的奖励值, mean \operatorname{mean} mean 和 std \operatorname{std} std 分别表示所有候选输出的奖励的均值和标准差。
2. GRPO 与 PPO 的关系
GRPO 算法与PPO(Proximal Policy Optimization)算法有着密切的关系。PPO 是强化学习中非常流行的一种策略优化方法,它的核心思想是通过限制策略更新的幅度来避免过度的策略变化,从而保持训练的稳定性。PPO 使用了一个叫做**剪切目标(clipped objective)**的技术,通过限制策略更新的范围,防止策略出现过度优化的情况。
PPO 的优化目标
PPO 的优化目标可以表示为:
J P P O ( θ ) = E [ min ( π θ ( o ∣ q ) π θ old ( o ∣ q ) A , clip ( π θ ( o ∣ q ) π θ old ( o ∣ q ) , 1 − ε , 1 + ε ) A ) ] \mathcal{J}_{\mathrm{PPO}}(\theta) = \mathbb{E}\left[\min\left(\frac{\pi_\theta(o|q)}{\pi_{\theta_{\text{old}}}(o|q)} A, \operatorname{clip}\left(\frac{\pi_\theta(o|q)}{\pi_{\theta_{\text{old}}}(o|q)}, 1-\varepsilon, 1+\varepsilon\right) A\right)\right] JPPO(θ)=E[min(πθold(o∣q)πθ(o∣q)A,clip(πθold(o∣q)πθ(o∣q),1−ε,1+ε)A)]
与 GRPO 类似,PPO 也采用了优势(Advantage) A A A 来衡量策略的优劣,并通过剪切目标来避免过大的更新。然而,PPO 依然需要一个评论模型来评估策略的好坏,而 GRPO 则完全依赖于群体样本来进行优化,没有评论模型的参与。
主要区别
- 评论模型:PPO 依赖评论模型来计算优势 A A A,而 GRPO 则通过群体样本的方式估算奖励。
- 训练效率:由于 GRPO 避免了评论模型,减少了计算开销,因此在大规模任务中,GRPO 更加高效。
- 正则化项:GRPO 引入了 KL 散度项 D K L ( π θ ∥ π r e f ) \mathbb{D}_{KL}(\pi_{\theta} \| \pi_{ref}) DKL(πθ∥πref) 作为正则化项,以进一步控制策略的更新,而 PPO 则通过剪切目标来进行策略限制。
3. 为什么 GRPO 有效?
GRPO 的有效性源于以下几个方面:
- 减少计算开销:传统的强化学习方法通常依赖于评论模型来评估策略,而 GRPO 则通过群体样本来估算奖励,避免了额外的计算开销。
- 高效的策略优化:通过群体样本的优势评估,GRPO 能够更快速地对策略进行优化,尤其在面对复杂的长期决策问题时,能够有效提高效率。
- 稳健的正则化:KL 散度项的引入使得 GRPO 更加稳健,能够在复杂任务中避免过拟合,保持良好的泛化能力。
4. 总结
GRPO 作为一种新的强化学习优化方法,通过摒弃传统的评论模型并利用群体样本来进行奖励估算,实现了更加高效的策略优化。与 PPO 相比,GRPO 在计算开销和训练效率上具有明显优势,尤其在大规模任务中展现出了卓越的性能。随着强化学习应用场景的不断扩展,GRPO 可能会成为解决复杂决策任务中的一种重要工具。
附件:
《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via
Reinforcement Learning》第5页
- 其他:DeepSeek-R1 也在多个任务中表现出色,包括创意写作、一般问题回答、编辑、总结等。它在 AlpacaEval 2.0 上达到了令人印象深刻的长度控制胜率 87.6%,在 ArenaHard 上的胜率为 92.3%,展示了其强大的能力,能够智能地处理非考试类的查询。此外,DeepSeek-R1 在需要长时上下文理解的任务中表现出色,远超 DeepSeek-V3 在长时上下文基准上的表现。
2. 方法
2.1. 概述
以往的研究通常依赖大量的监督数据来提升模型性能。在本研究中,我们展示了即使不使用监督微调(SFT)作为冷启动,通过大规模强化学习(RL)也可以显著提高推理能力。此外,性能可以通过加入少量的冷启动数据进一步提升。接下来的部分将介绍:(1)DeepSeek-R1-Zero,它直接对基础模型应用 RL,且没有任何 SFT 数据;(2)DeepSeek-R1,它从一个使用数千个长链式思维(CoT)示例微调的检查点开始应用 RL;(3)将 DeepSeek-R1 的推理能力蒸馏到小型稠密模型中。
2.2. DeepSeek-R1-Zero:在基础模型上进行强化学习
强化学习在推理任务中已经证明了其显著的有效性,如我们之前的工作所展示(Shao et al., 2024; Wang et al., 2023)。然而,这些工作在很大程度上依赖于监督数据,而收集这些数据是非常耗时的。在本节中,我们探索了 LLM(大语言模型)在\textbf{没有任何监督数据}的情况下,通过纯强化学习过程自我进化的潜力。我们将首先简要概述我们的强化学习算法,然后展示一些令人兴奋的结果,希望能为学术界提供有价值的见解。
2.2.1. 强化学习算法
群体相对策略优化GRPO 为了节省 RL 训练的成本,我们采用了群体相对策略优化(GRPO)(Shao et al., 2024),它省去了通常与策略模型大小相同的评论模型,而是从群体评分中估算基准。具体而言,对于每个问题 q q q,GRPO 从旧策略 π θ old \pi_{\theta_{\text{old}}} πθold 中采样一组输出 { o 1 , o 2 , ⋯ , o G } \{o_1, o_2, \cdots, o_G\} {o1,o2,⋯,oG},然后通过最大化以下目标来优化策略模型 π θ \pi_\theta πθ:
J G R P O ( θ ) = E [ q ∼ P ( Q ) , { o i } i = 1 G ∼ π θ old ( O [ q ] ) ] \mathcal{J}_{\mathrm{GRPO}}(\theta)=\mathbb{E}[q \sim P(Q),\left\{o_i\right\}_{i=1}^{G} \sim \pi_{\theta_{\text{old}}}(O[q])] JGRPO(θ)=E[q∼P(Q),{oi}i=1G∼πθold(O[q])]
1 G ∑ i = 1 G ( min ( π θ ( o i ∣ q ) π θ old ( o i ∣ q ) A i , clip ( π θ ( o i ∣ q ) π θ old ( o i ∣ q ) , 1 − ε , 1 + ε ) A i ) − β D K L ( π θ ∥ π r e f ) ) , \frac{1}{G} \sum_{i=1}^{G}\left(\min \left(\frac{\pi_{\theta}\left(o_i|q\right)}{\pi_{\theta_{\text{old}}}\left(o_i|q\right)} A_i, \operatorname{clip}\left(\frac{\pi_{\theta}\left(o_i|q\right)}{\pi_{\theta_{\text{old}}}\left(o_i|q\right)}, 1-\varepsilon, 1+\varepsilon\right) A_i\right)-\beta \mathbb{D}_{K L}\left(\pi_{\theta} \| \pi_{r e f}\right)\right), G1i=1∑G(min(πθold(oi∣q)πθ(oi∣q)Ai,clip(πθold(oi∣q)πθ(oi∣q),1−ε,1+ε)Ai)−βDKL(πθ∥πref)),
D K L ( π θ ∥ π r e f ) = π r e f ( o i ∣ q ) π θ ( o i ∣ q ) − log π r e f ( o i ∣ q ) π θ ( o i ∣ q ) − 1 , \mathbb{D}_{K L}\left(\pi_{\theta} \| \pi_{r e f}\right)=\frac{\pi_{r e f}\left(o_i|q\right)}{\pi_{\theta}\left(o_i|q\right)}-\log \frac{\pi_{r e f}\left(o_i|q\right)}{\pi_{\theta}\left(o_i|q\right)}-1, DKL(πθ∥πref)=πθ(oi∣q)πref(oi∣q)−logπθ(oi∣q)πref(oi∣q)−1,
其中 ε \varepsilon ε 和 β \beta β 是超参数, A i A_i Ai 是优势,使用与每组输出相对应的奖励 { r 1 , r 2 , … , r G } \{r_1, r_2, \ldots, r_G\} {r1,r2,…,rG} 来计算:
A i = r i − mean ( { r 1 , r 2 , ⋯ , r G } ) std ( { r 1 , r 2 , ⋯ , r G } ) . A_i=\frac{r_i-\operatorname{mean}\left(\left\{r_1, r_2, \cdots, r_G\right\}\right)}{\operatorname{std}\left(\left\{r_1, r_2, \cdots, r_G\right\}\right)}. Ai=std({r1,r2,⋯,rG})ri−mean({r1,r2,⋯,rG}).