大型语言模型训练的三个阶段:Pre-Train、Instruction Fine-tuning、RLHF (PPO / DPO / GRPO)

Posted by Lucius on March 6, 2025

当前的大型语言模型训练大致可以分为如下三个阶段:

  • Pre-train:根据大量可获得的文本资料,采用自监督学习-预测 next token 的方式,训练得到预训练模型;

  • Instruction Fine-tuning:根据大量任务上的指令标记数据,采用监督学习的方式微调模型,使得模型可以理解人类指令;

  • RLHF:基于人类的反馈,采用强化学习的方式,使模型可以产出符合人类偏好的回答。

GPT Pre-train 系列历史

  • GPT-1 (2018):模型参数量为 117M,使用了大约 7000 本书的数据量;

  • GPT-2 (2019):模型参数量为 1542M(扩大了十倍),使用了大约 40GB 的资料;

  • GPT-3 (2020):模型参数量为 175B(再次扩大一百倍),使用了大约 580GB 的资料,包含 300B 的 token,类似于哈利波特全集的 30 万遍。

  • 下图来自 GPT-3 论文,可以看到随模型参数量扩大,模型性能逐步提高,但仍然没有发生质变,模型的使用体验也与当前的 GPT-4 等其它模型相差甚远。

  • GPT-1、2、3 系列均采用自监督学习 (Self-Supervised Learning) 训练得到,即使用 predict next token 的方式,将句子中的下一个 token 作为 label 进行训练,无需人工标注数据。

Instruction Fine-tuning

通过自监督学习出来的模型,虽然已展现了一定程度的语言理解能力,但其性能依然有较大的提升空间。

因此在后续的 GPT 系列中,自监督学习只是模型训练的第一阶段。该阶段作为预训练 (Pre-train),无需人工标注,有大量的可训练数据,其训练得到的模型,将作为后续训练阶段的初始参数。

下述例子来自于开源指令微调数据集,要求模型输出的内容尽可能与 Target 一致:

1
2
3
4
5
6
7
8
9
10
11
Input: 
	对联,要求对仗工整:
	上联:桃李争春齐献媚
Output:
	下联:鹏鹄比翼各称雄

Input:
	说话时面带惯常的微笑。
	翻译成英文:
Output:
	His face with the usual smile.

在指令微调的过程中,可以发现大模型表现出的一些「举一反三」的能力,即在多种语言上做预训练后,只要在某一个语言的某一个任务上做微调,就可以自动学会其他语言上同样的任务。如下图所示, 在 104 种语言上做 Pre-train,English QA 上做 Fine-tune,在 Chinese QA 上做 Testing,也可以取得 78.8% 的 F1 score。

先前 Fine-tuning 的思路通常是给定一个大型预训练模型,然后在各下游任务的数据集上各自训练,打造一堆专才,且微调的数据集规模通常不大。

不同于上述打造专才的思路,Instruct GPT 在大范围的任务集上进行了 Fine-tuning,并且在仅依赖 1.3B 模型参数量和上万条标注数据的情况下打败了拥有 175B 参数量的 GPT-3.

Self-Instruct

Instruction Fine-tuning 效果非常显著,其所需的训练数据通常无需太多,但要求是高质量的标注数据。由于标注数据有一定的获取门槛,因此有人提出对 ChatGPT 进行逆向工程,即 Self-Instruct,生成大量标注数据。

具体流程如下:

  • 先让 ChatGPT 想大量的任务(例如撰写邮件、修改文章、撰写报告摘要等);

  • 再让 ChatGPT 根据任务产生大量可能的输入;

  • 最后让 ChatGPT 根据产生的大量输入,输出具体的答案,组成一组标注数据。

Reinforcement Learning from Human Feedback (RLHF)

RLHF 即根据人类的反馈(例如判断某两个回答哪个更好),采用强化学习的方式,进一步提升模型的性能。

在先前的两个训练阶段,模型不断地在判断 next token 的输出是否正确,缺乏对整个文本内容全面的考量。在第三阶段,RLHF 通过人类反馈的 response 间的优劣关系,站在更全局性的视角,进一步地对模型进行优化。换句话说,前两个阶段更加关注 response 输出的过程,而 RLHF 这个阶段则更关注最终的结果,即整个 response 的质量。

在 RLHF 的过程中,首先需要训练一个 Reward Model,其输入为一个 response,输出为这个 response 的得分,可以根据人类给出的两个 response 之间的排序,训练这个奖励模型。

得到 Reward Model 后,最直接的用法是:让 LLM 对于特定的输入,输出多个回答,再根据 Reward Model 选择得分最高的回答。

进一步地,也可以使用 Reward Model 继续微调 LLM,即对于所有的输入,让 LLM 输出的得分低的 response 出现的概率更低,让 LLM 输出的得分高的 response 出现的概率更高。

Proximal Policy Optimization (PPO)

PPO 就是一种在 Reward Model 基础上,进一步优化模型参数的强化学习优化方法。

在强化学习流程中,$t$ 时刻环境的状态为 $s_t$,采取动作 $a_t$ 后,得到奖励 $r_t$,环境变成 $s_{t+1}$。整个学习过程的目的是找到一个最佳策略,使得其能够根据环境状态选择最佳的动作。

上述的 $r_t$ 仅为即时收益,为在决策过程中考虑未来多步的收益,强化学习中引入了状态价值函数 $V_t$,其表示从当前状态开始,未来所有时刻所能累积的收益,通常表达为:

$$ V_t=r_{t}+\gamma \cdot V_{t+1}, $$

其中 $\gamma$ 作为折扣因子,使决策在短期奖励和长期收益间取得平衡,并且确保无限时间下累计的奖励和使有限的,避免累积奖励发散。

在 LLM 语境下,模型会在 $t$ 时刻根据上文,产出一个 token $o_t$(对应动作 $a_t$),对应即时奖励 $r_{t}$ 和未来总收益 $V_{t}$;由于 $r_{t}$ 和 $V_{t}$ 都无法直接获取,整个 RLHF-PPO 阶段一共包含四个主要模型,分别是:

  • Actor Model:输出每个时刻的 token,即我们想要继续优化的 LLM(通常采用指令微调后的模型初始化);

  • Critic Model:根据 $s_t$ 估计时刻 $t$ 的总收益 $V_{t}$;

  • Reward Model:即前文根据人类反馈数据训练得到的奖励模型;

  • Reference Model:参考模型,避免语言模型在 RLHF 阶段训歪(同样通常采用指令微调后的模型初始化)。

不难发现 Reward Model 和 Reference Model 在 PPO 阶段都是参数冻结的,因此主要关键在于如何训练 Actor Model 和 Critic Model。

在介绍具体 loss 函数前,我们首先探究一下如何表示 $r_{t}$?由于前文训练得到的 Reward Model 仅能根据最终的 response 输出最终的奖励 $r_\varphi(q,o_{\leq T})$(假设输入为 $q$,输出共 $T$ 个 token),中间过程的奖励 $r_{t}$ 无法通过 Reward Model 直接得到,因此在 deepspeed-chat 的 RLHF 实践中,采用 Actor Model 和 Reference Model 输出的差异(可以理解为动作分布的差异)来表示中间过程的奖励($\beta$ 为超参数):

$$ r_{t}=\left\{\begin{array}{l} -\beta *\left(\log \frac{P\left(o_t \mid q,o_{<t}\right)}{P_{r e f}\left(o_t \mid q,o_{<t}\right)}\right), \quad t \neq T \\ r_\varphi(q,o_{\leq T})-\beta *\left(\log \frac{P\left(o_t \mid q,o_{<t}\right)}{P_{r e f}\left(o_t \mid q,o_{<t}\right)}\right), \quad t=T \end{array}\right. $$

即 $P(o_t\mid q,o_{<t})$ 越大(和参考模型的输出越相似),即时奖励 $r_{t}$ 越大。需要注意的是,上述仅是 $r_{t}$ 的某一种设计。在 PPO 中,我们希望最大化如下目标($\pi_{\theta}$ 为具体的策略,代表 Actor 模型参数;$\tau$ 代表一条轨迹,对应一个 response):

$$ \mathcal{J}\left(\theta\right)=E_{\tau \sim \pi_\theta}[R(\tau)]=\sum_\tau R(\tau) P\left(\tau \mid \pi_\theta\right). $$

其相应梯度如下:

$$ \begin{aligned} \nabla \mathcal{J}\left(\theta\right) & =\sum_\tau R(\tau) \nabla P\left(\tau \mid \pi_\theta\right) \\ & =\sum_\tau R(\tau) P\left(\tau \mid \pi_\theta\right) \frac{\nabla P\left(\tau \mid \pi_\theta\right)}{P\left(\tau \mid \pi_\theta\right)} \\ & =\sum_\tau R(\tau) P\left(\tau \mid \pi_\theta\right) \nabla \log \left(P\left(\tau \mid \pi_\theta\right)\right) \\ & =E_{\tau \sim \pi_\theta}\left[R(\tau) \nabla \log \left(P\left(\tau \mid \pi_\theta\right)\right)\right] \end{aligned} $$

假设每条轨迹共有 $T$ 个节点,则 $P\left(\tau \mid \pi_\theta\right)=\rho_0\left(s_0\right) \prod_{t=1}^{T} P\left(s_{t+1} \mid s_t, a_t\right) \pi_\theta\left(a_t \mid s_t\right)$,代入 $\nabla \mathcal{J}\left(\theta\right)$ 得到:

$$ \begin{aligned} \nabla \mathcal{J}\left(\theta\right) & =E_{\tau \sim \pi_\theta}\left[R(\tau) \nabla \log \left(P\left(\tau \mid \pi_\theta\right)\right)\right] \\ & =E_{\tau \sim \pi_\theta}\left[R(\tau) \sum_{t=1}^{T} \nabla \log \pi_\theta\left(a_t \mid s_t\right)\right] \end{aligned} $$

将 $R(\tau)$ 拆分到每一步中,可以得到:

$$ \begin{aligned} \nabla \mathcal{J}\left(\theta\right) & =E_{\tau \sim \pi_\theta}\left[\sum_{t=1}^{T} \Psi_t \nabla \log \pi_\theta\left(a_t \mid s_t\right)\right] \end{aligned} $$

此处的 $\Psi_t$ 代表了当前的价值度量,其最好能同时表示「单步即时奖励」和「未来轨迹的整体收益」,在 PPO 中采用广义优势估计 (GAE) 中的优势函数 $A_t$ 表示,其定义为:

$$ A_t=\sum_{l=0}^{\infty}(\gamma \lambda)^l \delta_{t+l}, $$

其中 $\lambda\in [0,1]$,$\delta_t$ 为 TD error,其代表采取行动 $a_t$ 后实际价值与预估价值之间的差距,即 $\delta_t=r_t+\gamma\cdot V_{t+1}-V_t$,即此处的 $A_t$ 表示未来多步 TD error 的加权和,其可以表示为如下递归形式:

$$ A_t=\delta_t+\gamma\lambda A_{t+1}. $$

由于轨迹结束时 $A_T=0$,因此 $A_t$ 可在轨迹确定后,从后往前递归求解。由此我们可以得到下述大模型语境下,PPO 对应优化目标的梯度:

$$ \nabla \mathcal{J}_{P P O}(\theta)=\mathbb{E}\left[q \sim P(Q), o \sim \pi_{\theta}(O \mid q)\right] \sum_{t=1}^{|o|}A_t \nabla \log \pi_\theta\left(o_t \mid q, o_{<t}\right) . $$

在实际优化过程中,为提高样本利用率,$\pi_{\theta}$ 采样得到的轨迹 $o$ 会被重复使用来优化 $\pi_\theta$,即采样轨迹 $o$ 的 $\pi_{\theta_{old}}$ 和要优化的 $\pi_{\theta}$ 不一样(off-policy),因此可以采用 Importance Sampling 的方式修正上述梯度:

$$ \nabla \mathcal{J}_{P P O}(\theta)=\mathbb{E}\left[q \sim P(Q), o \sim \pi_{\theta_{old}}(O \mid q)\right] \sum_{t=1}^{|o|} \frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}(o_t \mid q, o_{<t})} A_t \nabla \log \pi_\theta\left(o_t \mid q, o_{<t}\right) . $$

由于 $\nabla \log f(\theta)=\frac{\nabla f(\theta)}{f(\theta)}$,上述梯度对应的优化目标如下:

$$ \mathcal{J}_{P P O}(\theta)=\mathbb{E}\left[q \sim P(Q), o \sim \pi_{\theta_{old}}(O \mid q)\right] \sum_{t=1}^{|o|} \frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}(o_t \mid q, o_{<t})} A_t. $$

为了使整体训练更稳定,最终的优化目标会对 $\frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}(o_t \mid q, o_{<t})}$ 进行裁剪,避免该值过大或者过小;并且由于不同轨迹可能长度差异很大,优化目标会对轨迹长度进行归一化;最终 PPO 所要最大化的目标如下所示:

$$ \begin{aligned} \mathcal{J}_{PPO}(\theta) = \mathbb{E}\Bigl[ & q \sim P(Q),\ o \sim \pi_{\theta_{old}}(O \mid q) \Bigr] \\ & \frac{1}{|o|} \sum_{t=1}^{|o|} \min \Biggl[ \frac{\pi_\theta(o_t \mid q, o_{<t})}{\pi_{\theta_{old}}(o_t \mid q, o_{<t})} A_t, \operatorname{clip}\left( \frac{\pi_\theta(o_t \mid q, o_{<t})}{\pi_{\theta_{old}}(o_t \mid q, o_{<t})}, 1-\varepsilon, 1+\varepsilon \right) A_t \Biggr]. \end{aligned} $$

相对应地,Critic 模型的优化目标可以理解为最小化优势 $A_t$,即让 $V_t$ 对局面的评估更加精准,具体目标可写作如下形式:

$$ \arg \min _{V_\phi} \mathbb{E}_t\left[\max\left[(V_t-(A_t+V_t^{old}))^2,(V_t^{clip}-(A_t+V_t^{old}))^2\right]\right], $$

其中 $V_t^{clip}=\text{clip}(V_t,V_t^{old}-\epsilon,V_t^{old}+\epsilon)$.

Direct Preference Optimization (DPO)

在上述 RLHF-PPO 的训练中,存在「显存占用大」、「超参多」以及「模型训练不稳定」等一系列问题,为简化整体训练过程,DPO 应运而生,其对 PPO 的改进主要为如下两点(如下图所示):

  • 不再训练 Reward Model,而是直接基于人类反馈的数据,一步到位训练最终的模型;

  • 简化原始训练目标,不再使用强化学习的方法,而是通过类似于监督微调的方式进行训练。

首先,RLHF 阶段整体目标如下($\pi_{\theta},\pi_{\text{ref}},r_{\phi}$ 分别对应上述的 Actor、参考模型以及 Reward Model):

  • 最大化奖励的同时,避免训练后得到的 $\pi_{\theta}$ 与参考模型 $\pi_{\text{ref}}$ 差异过大.
$$ \max _{\pi_\theta} \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_\theta(y \mid x)}\left[r_\phi(x, y)\right]-\beta \mathbb{D}_{\mathrm{KL}}\left[\pi_\theta(y \mid x) \| \pi_{\mathrm{ref}}(y \mid x)\right]. $$

为了绕过 Reward Model,上述式子可以进行如下推导:

$$ \begin{aligned} & \ \ \ \ \max _\pi \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi(y \mid x)} {[r(x, y)]-\beta \mathbb{D}_{\mathrm{KL}}\left[\pi(y \mid x) \| \pi_{\mathrm{ref}}(y \mid x)\right] } \\ & =\max _\pi \mathbb{E}_{x \sim \mathcal{D}} \mathbb{E}_{y \sim \pi(y \mid x)}\left[r(x, y)-\beta \log \frac{\pi(y \mid x)}{\pi_{\mathrm{ref}}(y \mid x)}\right] \\ & =\min _\pi \mathbb{E}_{x \sim \mathcal{D}} \mathbb{E}_{y \sim \pi(y \mid x)}\left[\log \frac{\pi(y \mid x)}{\pi_{\mathrm{ref}}(y \mid x)}-\frac{1}{\beta} r(x, y)\right] \\ & =\min _\pi \mathbb{E}_{x \sim \mathcal{D}} \mathbb{E}_{y \sim \pi(y \mid x)}\left[\log \frac{\pi(y\mid x)}{\frac{1}{Z(x)} \pi_{\mathrm{ref}}(y \mid x) \exp \left(\frac{1}{\beta} r(x, y)\right)}-\log Z(x)\right]. \end{aligned} $$

令 $Z(x)=\sum_y \pi_{\mathrm{ref}}(y \mid x) \exp \left(\frac{1}{\beta} r(x, y)\right)$,可以将上述式子中 $\log$ 项分母部分转化为一个概率分布,整体优化目标可以视作最小化 $\pi(y\mid x)$ 和 $\frac{1}{Z(x)} \pi_{\mathrm{ref}}(y \mid x) \exp \left(\frac{1}{\beta} r(x, y)\right)$ 之间的 KL 散度。由于 $Z(x)$ 与 $\pi$ 无关,因此上述式子的最优解 $\pi^*$ 可以表示为:

$$ \pi^*(y \mid x)=\frac{1}{Z(x)} \pi_{\text {ref }}(y \mid x) \exp \left(\frac{1}{\beta} r(x, y)\right). $$

相对应地,奖励模型 $r$ 也可以表示为如下形式:

$$ r^*(x, y)=\beta \log \frac{\pi^*(y \mid x)}{\pi_{\mathrm{ref}}(y \mid x)}+\beta \log Z(x). $$

接下来,只要我们在奖励模型的训练目标中代入上式,即可实现直接对最终策略 $\pi^*$ 的优化。在奖励模型的训练中,通常有如下 2 种偏好排序方法:

  • 只对两个回答进行排序,即对于 prompt $x$,回答 $y_1$ 优于 $y_2$,对应的优化目标采用 Bradley-Terry 模型进行建模;

  • 对 $K$ 个回答进行排序,即对于 prompt $x$,排序顺序为 $y_1>y_2>…>y_K$,对应的优化目标采用 Plackett-Luce 模型进行建模。

DPO Objective Under the Bradley-Terry Model

在 BT 模型下,回答 $y_1$ 优于 $y_2$ 的概率建模如下:

$$ p^*\left(y_1 \succ y_2 \mid x\right)=\frac{\exp \left(r^*\left(x, y_1\right)\right)}{\exp \left(r^*\left(x, y_1\right)\right)+\exp \left(r^*\left(x, y_2\right)\right)}. $$

代入 $\pi^*$,可以将上述式子进行如下转换:

$$ \begin{aligned} p^*\left(y_1 \succ y_2 \mid x\right) & =\frac{\exp \left(\beta \log \frac{\pi^*\left(y_1 \mid x\right)}{\pi_{\text {ref }}\left(y_1 \mid x\right)}+\beta \log Z(x)\right)}{\exp \left(\beta \log \frac{\pi^*\left(y_1 \mid x\right)}{\pi_{\text {ref }}\left(y_1 \mid x\right)}+\beta \log Z(x)\right)+\exp \left(\beta \log \frac{\pi^*\left(y_2 \mid x\right)}{\pi_{\text {ref }}\left(y_2 \mid x\right)}+\beta \log Z(x)\right)} \\ & =\frac{1}{1+\exp \left(\beta \log \frac{\pi^*\left(y_2 \mid x\right)}{\pi_{\text {ref }}\left(y_2 \mid x\right)}-\beta \log \frac{\pi^*\left(y_1 \mid x\right)}{\pi_{\text {ref }}\left(y_1 \mid x\right)}\right)} \\ & =\sigma\left(\beta \log \frac{\pi^*\left(y_1 \mid x\right)}{\pi_{\text {ref }}\left(y_1 \mid x\right)}-\beta \log \frac{\pi^*\left(y_2 \mid x\right)}{\pi_{\text {ref }}\left(y_2 \mid x\right)}\right) . \end{aligned} $$

由于我们希望 $y_w$ (更符合人类偏好的回答) 的概率尽可能大于 $y_l$ (未被选中的回答),因此整体优化目标可以写作如下形式:

$$ \begin{aligned} \mathcal{L}_{\mathrm{DPO}}\left(\pi_\theta ; \pi_{\mathrm{ref}}\right)&= -\mathbb{E}_{\left(x, y_w, y_l\right) \sim \mathcal{D}}[\log p(y_w \succ y_l \mid x)]\\ &=- \mathbb{E}_{\left(x, y_w, y_l\right) \sim \mathcal{D}}\left[\log \sigma\left(\beta \log \frac{\pi_\theta\left(y_w \mid x\right)}{\pi_{\mathrm{ref}}\left(y_w \mid x\right)}-\beta \log \frac{\pi_\theta\left(y_l \mid x\right)}{\pi_{\mathrm{ref}}\left(y_l \mid x\right)}\right)\right]. \end{aligned} $$

上述优化目标中不包含 Reward Model,由此可以绕过训练 Reward Model 的环节,直接用成对的偏好数据,采用类似 SFT 的方式训练对齐模型。

DPO Objective Under the Plackett-Luce Model

类似地,在 PL 模型下,偏好排序 $\tau$($y_1>y_2>…>y_K$)的概率建模如下:

$$ p^*\left(\tau \mid y_1, \ldots, y_K, x\right)=\prod_{k=1}^K \frac{\exp \left(r^*\left(x, y_{\tau(k)}\right)\right)}{\sum_{j=k}^K \exp \left(r^*\left(x, y_{\tau(j)}\right)\right)}. $$

代入 $\pi^*$,可以得到如下优化目标(由于 $Z(x)$ 与 $\pi_{\theta}$ 无关,因此下式中省去了 $Z(x)$):

$$ \begin{aligned} \mathcal{L}_{\mathrm{DPO}}\left(\pi_\theta ; \pi_{\mathrm{ref}}\right)&= -\mathbb{E}_{\tau, y_1, \ldots, y_K, x \sim \mathcal{D}}[\log p(\tau \mid y_1, \ldots, y_K, x)]\\ &=-\mathbb{E}_{\tau, y_1, \ldots, y_K, x \sim \mathcal{D}}\left[\log \prod_{k=1}^K \frac{\exp \left(\beta \log \frac{\pi_\theta\left(y_{\tau(k)} \mid x\right)}{\pi_{\mathrm{ref}}\left(y_{\tau(k)} \mid x\right)}\right)}{\sum_{j=k}^K \exp \left(\beta \log \frac{\pi_\theta\left(y_{\tau(j)} \mid x\right)}{\pi_{\mathrm{ref}}\left(y_{\tau(j)} \mid x\right)}\right)}\right]. \end{aligned} $$

Group Relative Policy Optimization (GRPO)

GRPO 是在 PPO 上的进一步变化,其省略了 PPO 过程中对 Critic Model (Value Model) 的建模,并且不再对中间过程的 reward 进行建模,而是直接优化整个回答的 reward,其 Policy Model 最大化的目标函数如下:

$$ \begin{aligned} \mathcal{J}_{G R P O}(\theta) & =\mathbb{E}\left[q \sim P(Q),\left\{o_i\right\}_{i=1}^G \sim \pi_{\theta_{o l d}}(O \mid q)\right] \\ & \frac{1}{G} \sum_{i=1}^G \frac{1}{\left|o_i\right|} \sum_{t=1}^{\left|o_i\right|}\left\{\min \left[\frac{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_{\theta_{o l d}}\left(o_{i, t} \mid q, o_{i,<t}\right)} \hat{A}_{i, t}, \operatorname{clip}\left(\frac{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_{\theta_{o l d}}\left(o_{i, t} \mid q, o_{i,<t}\right)}, 1-\varepsilon, 1+\varepsilon\right) \hat{A}_{i, t}\right]-\beta \mathbb{D}_{K L}\left[\pi_\theta| | \pi_{r e f}\right]\right\}. \end{aligned} $$
不同于 PPO 的优化目标,GRPO 一次性采样一组输出 $\{o_i\}_{i=1}^G$,其对应的整体 reward 为 $\boldsymbol{r}=\{r_i\}_{i=1}^G$(由 Reward Model 得到),随后 $\hat{A}_{i,t}$ 被定义为 $o_i$ 所对应的标准化后的 reward,即:
$$ \hat{A}_{i,t}=\hat{r}_i=\frac{r_i-\text{mean}(\boldsymbol{r})}{\text{std}(\boldsymbol{r})}. $$

在复杂数学任务场景下,每个 reasoning step 也有其对应的 reward,即:

$$ \mathbf{R}=\left\{\left\{r_1^{\text {index }(1)}, \cdots, r_1^{\operatorname{index}\left(K_1\right)}\right\}, \cdots,\left\{r_G^{\operatorname{index}(1)}, \cdots, r_G^{\operatorname{index}\left(K_G\right)}\right\}\right\}, $$

其中 $\text{index}(j)$ 为第 $j$ 步推理结束时的 token index,此时的 $\hat{A}_{i,t}$ 可以进行如下定义:

$$ \hat{A}_{i, t}=\sum_{\text {index }(j) \geq t} \hat{r}_i^{\text {index }(j)}, \hat{r}_i^{\text {index }(j)}=\frac{r_i^{\text {index }(j)}-\operatorname{mean}(\mathbf{R})}{\operatorname{std}(\mathbf{R})}. $$
另外由于上述 reward 定义中不再包含与 $\pi_{ref}$ 的 KL 散度约束,因此直接将 $\mathbb{D}_{K L}[\pi_\theta| | \pi_{r e f}]$ 显式建模在了 $\mathcal{J}_{G R P O}(\theta)$ 之中,其具体式子如下:
$$ \mathbb{D}_{K L}\left[\pi_\theta| | \pi_{r e f}\right]=\frac{\pi_{r e f}\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}-\log \frac{\pi_{r e f}\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}-1, $$
上述式子为对 $\mathbb{D}_{K L}\left[\pi_\theta| | \pi_{r e f}\right]$ 的无偏估计,即期望相同。整体优化算法的伪代码如下所示:

GRPO 与 PPO 的方法对比图如下,可以看到 GRPO 中不再需要训练 Value Model:

Other Discussion

除了 RLHF,也可以使用 RLAIF,即让 LLM 自己来判断哪个回答更好,根据 LLM 判断的结果再来微调具体的模型,判断回答好的 LLM 既可以使用类似 GPT-4 等已有模型,甚至也可以使用正在训练的这个模型

此外,RLHF 仍然面临一个困难,即 “好” 这件事并没有一个固定的标准,例如对于一个不太安全的问题,一个回答更考虑 Safety,而另一个回答与问题关系更密切,此时应该选择哪一个答案呢?另外,许多回答,即使人类来判断,也难以辨别哪个更好,此时 RLHF 又该如何继续提升呢?

参考资料