本文是LLM后训练的第四篇,从这篇开始,会介绍LLM的后训练。而本篇章主要介绍基于人类反馈的强化学习(Reinforcement Learning with Human Feedback, RLHF)以及PPO算法在RLHF中如何应用。
LLM的训练阶段
在介绍RLHF之前,我们先回顾一下LLM的训练阶段。LLM的训练通常分为三个阶段:
- 预训练(Pre-training):在这个阶段,模型通过大量的文本数据进行训练,学习语言的基本结构和语义。训练完成后模型可以够生成连贯的文本,但可能缺乏特定任务以及指令遵从能力。
- 有监督微调(Supervised Fine-tuning, SFT):在这个阶段,模型主要学会指令遵从能力以及下游特定任务的能力。训练数据通常是人类编写的指令-响应对,模型通过模仿这些对话来学习如何更好地理解和执行指令。
- 强化学习(Reinforcement Learning, RL):在这个阶段,模型通过强化学习来进一步优化其性能(例如对齐人类偏好,使其说话语气更接近人类。或者提高代码和数学能力)。RLHF是强化学习的一种方法,它利用人类反馈来指导模型的学习过程。

前两个阶段本文不再介绍,下面用强化学习的视角来介绍RLHF。
强化学习视角下的LLM
在LLM后训练(一)中提到,一个完整的强化学习系统主要包括智能体,环境,状态,动作以及奖励。在LLM的强化学习阶段中,模型可以视为智能体,环境和状态可以视为模型的输入以及已经输出的上下文,动作可以视为模型的当前时刻输出的token,奖励则是根据模型输出的文本质量靠人类或者额外的模型进行评估。下面结合可视化以及PPO详细介绍一下LLM强化学习中的要素:
智能体,环境和状态,和动作

LLM为智能体,环境和状态就包含了输入的prompt(包括special token、用户输入的token以及工具调用的token等)以及已经输出的token。动作$a_t$则是模型在步骤t采样输出的token。对于LLM来说,离散动作空间相当于是词表的大小,通常是非常大的。而策略$\pi_\theta(a_t|s_t)$则是模型在状态$s_t$下采样动作$a_t$的概率分布,即模型最后一层softmax输出的概率分布, $\theta$为模型的参数。由于LLM自回归的特性,模型每次输出后都会将输出的token直接加入到下一步的环境中,形成新的状态。
Actor model & Reference Model

在LLM后训练(三)中提到,PPO需要阶段性地rollout,即需要在$\pi_{\theta_{old}}$上采样生成动作,更新$\pi_{\theta}$模型, $\pi_{\theta_{old}}$ 即为reference model, 作用是提供一个稳定的基准,防止模型在训练过程中发生过大的更新,从而保持训练的稳定性。Reference model一般是SFT输出的模型(即RL阶段最初的模型)。Policy model为更新前的actor model,在每轮更新周期内,policy model对给定prompt进行采样生成动作,并根据奖励信号对actor进行更新。由于采样速度较慢,为了提高数据利用效率,对actor model的使用同一批数据进行多次更新,在多次更新后将模型同步回policy model,然后用新的policy model 进行下一轮采样。在代码实现中,actor model和policy model通常只需要维护同一套权重。而Reference model则需要单独维护一套权重,且在训练过程中保持不变(但是在部分模型中比如DeepSeek会间隔一定步数和actor model进行同步)。
Reward Model
奖励模型(Reward Model, RM)负责对Prompt+Response提供真实的奖励信号。它通常对整个序列而非每个token进行打分。如上图所示,奖励模型的输入是Prompt+Response,输出在
奖励模型的训练通常是通过人类反馈进行的。具体来说,训练数据由人类标注的Prompt+Response对组成,其中每个Response都有一个对应的质量评分(例如1-5分)。然而,如果人类直接对序列进行具体分值进行打分会出现主观不准确的情况,实际在标注时使用比较的方式进行标注,即给出两个Response让人类选择哪个更好。奖励模型的训练目标是是对于同一个Propmt的不同回答构成的样本对,输出的奖励值能够正确反映人类的偏好, 损失函数为:
$$ \begin{aligned} \mathcal{L}_{RM}(\phi) = -\sum_{i=1}^N \log \sigma(r_\phi(x_i) - r_\phi(y_i)) \end{aligned} $$其中,$x_i$和$y_i$分别是同一个Prompt的两个不同回答,$r_\phi(x_i)$和$r_\phi(y_i)$分别是奖励模型对这两个回答的打分,$\sigma$是sigmoid函数。通过最小化这个损失函数,奖励模型能够学习到更好地反映人类偏好的奖励信号。奖励模型通常使用SFT模型进行初始化,一般训练一个Epoch,防止过拟合。
以上是标准奖励模型的构造和训练过程。另外还有过程奖励模型(Process Reward Model, PRM),对每个步骤进行打分,这里不再赘述。
Critic Model
Critic Model(CM)是PPO算法中的一个重要组件,已经在在LLM后训练(三)中介绍。它的结构和Actor Model以及Reward Model类似,输入也是Prompt+Response序列,但输出是一个序列值,长度和Actor输出的序列长度相同。Critic Model的训练目标是使其输出的值能够准确地估计Actor Model在当前状态下的预期奖励。

说些什么吧!