强化学习算法PPO和GRPO简介

RL预备知识

PPO

Proximal Policy Optimization(PPO)是一种在LLM中常用的强化学习算法,其目标函数如下所示:

\[J_{PPO}(\theta) = \mathbb{E}[q \sim P(Q), o \sim \pi_{\theta_{old}}(O|q)] \frac{1}{|o|} \sum_{t=1}^{|o|} min[\frac{\pi_{\theta}(o_t|q,0_{\lt t})}{\pi_{\theta_{old}}(o_t|q,0_{\lt t})}A_t, clip(\frac{\pi_{\theta}(o_t|q,0_{\lt t})}{\pi_{\theta_{old}}(o_t|q,0_{\lt t})}, 1-\epsilon, 1+\epsilon)A_t] \]

  • \(\theta\) 表示模型参数
  • \(\pi_{\theta},\pi_{\theta_{old}}\) 分别代表当前策略模型和旧的策略模型
  • \(q \sim P(Q)\) 表示从问题数据集\(Q\)中取样
  • \(o \sim \pi_{\theta}(O|q)\) 表示从使用当前策略模型,当输入问题q时采样得到的回答o
  • \(o \sim \pi_{\theta_{old}}(O|q)\) 表示从使用旧的策略模型,当输入问题q时采样得到的回答o
  • \(\epsilon\) 是为了稳定模型训练用的超参数
  • \(A_t\) 是优势值,通过GAE方法计算得到的

PPO中的四种类型模型

Policy Model, Reference Model, Reward Model, Value Model

  • Policy Model 就是PPO算法中真正需要优化的模型。给定问题\(q\), 逐token生成回答\(o\). 生成的概率表示为 \(\pi_{\theta}(o_t|q,0_{\lt t})\), 在问题\(q\)和前面生成的token \(o_{\lt t}\)条件下,当前Policy Model生成的第\(t\)个token \(o_{\lt t}\)的概率。
  • Reference Model 参考模型,通常是初始化模型. 它是一个固定不动的模型,用来约束Policy Model. 避免模型更新过程中幅度太大,导致模型崩溃。
  • Reward Model 奖励模型,不负责生成回答,而是负责评价回答,输出的是一个标量的分数。分数越高表示回答质量越高。公式化表示为 \(r_{\varphi}(q,o)\), 其中\(r\)是奖励分数,\(\varphi\)是Reward Model的参数,\(q\)是问题,\(o\)是Policy Model生成的回答。
  • Value Model 是用来估计从当前生成状态出发,继续生成,最后大概能获得多大的奖励,这个奖励值用\(A_t\)表示。 公式化表示为 \(V_{\psi}(q,o_{\lt t})\), \(\psi\) 是Value Model的参数,\(q\)是问题,\(o_{\lt t}\)是Policy Model当前生成的回答,不一定是完整的回答。

GRPO

PPO算法需要额外训练一个Value Model, 这导致训练显存和周期都会变长,为了跳过这个问题,提出了GRPO算法。GRPO算法是对于一个问题\(q\), 随机采样\(G\)个答案\(o_i\)。然后使用Reward Model给每个答案一个奖励打分\(r_i\)。比如奖励均值作为基准\(\bar r=\frac{1}{G}\sum_{i=1}^{G}r_i\), 与均值的差作为真实的优势值\(r_i^=r_i-\bar r\)。 其公式如下:

\[J_{PPO}(\theta) = \mathbb{E}[q \sim P(Q), \{o_i\}_{i=1}^G \sim \pi_{\theta_{old}}(O|q)] \frac{1}{G}\sum_{i=1}^{G} \frac{1}{|o_i|} \sum_{t=1}^{|o_i|} \{ min[\frac{\pi_{\theta}(o_{it}|q,0_{\lt t})}{\pi_{\theta_{old}}(o_{it}|q,0_{\lt t})}A_t, clip(\frac{\pi_{\theta}(o_{it}|q,0_{\lt t})}{\pi_{\theta_{old}}(o_{it}|q,0_{\lt t})}, 1-\epsilon, 1+\epsilon)A_t]-\beta \mathbb D_{KL}[\pi_{\theta}||\pi_{ref}] \} \]

相比PPO的优化函数,

  • 增加了对一个问题的多个回答\(o_i\)的平均
  • 将待优化的策略与参考策略的KL散度加入优化函数,避免模型跑偏

GRPO 与 PPO的示意图

image

用最终结果进行RL

对每一个问题\(q\),从旧的策略模型\(\pi_{{\theta}_{old}}\)采样G个输出\({o_1, o_2, ..., o_G}\)。 reward模型对这些输出进行打分,得到G个奖励分数\(\mathbb r = {r_1, r_2, ..., r_G}\),接着这些奖励分数被减去均值和除以方差,得到归一化后的奖励分数\(r_{i,t}=\frac{r_i - mean(\mathbb r)}{std(\mathcal {r})}\),此种情况下优势值就等于奖励的分数。

用中间结果进行RL

使用最终的结果进行强化学习,这种方式不够充分,比如在复杂的数学推理任务,最终的结果是对的,但是中间的推导过程不正确。使用最终结果进行强化学习显然是不合理的。该方式使用得到完整结果前中间所涉及的若干中间环节的结果进行强化学习。这种方式在每一个推理步骤后都提供一个奖励分数。从旧的策略模型\(\pi_{{\theta}_{old}}\)采样G个输出\({o_1, o_2, ..., o_G}\),每个答案分别有若干个推理步骤\(\{K_1, K_2, ..., K_G\}\), \(\mathbb R = \{\{ r_1^{index(1)},..., r_1^{index(K_1)}\}, ..., \{ r_G^{index(1)},..., r_G^{index(K_G)}\}\}\). 接着这些奖励分数被减去均值和除以方差,得到归一化后的奖励分数\(\bar r_{i,index(j)}=\frac{r_i^{index(j)} - mean(\mathbb R)}{std(\mathcal {R})}\)。此种情况下,优势值定义为$A_{i,t}=\sum_{index(j) \geq t}\bar r_i^{index(j)} $

迭代RL

随着强化学习进行,旧的奖励模型可能无法有效地对当前的策略模型提供监督信息。因此探索出了一种迭代的强化学习方式。先从策略模型中取样作为训练奖励模型的新数据集,同时还采用10%比例的历史的数据,组合起来训练奖励模型。训练完成后,策略模型将作为参考模型,新优化的奖励模型用于训练策略模型。

参考

  • DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models
posted @ 2026-09-20 18:27  星辰大海,绿色星球  阅读(5)  评论(0)    收藏  举报