

\label{sec:rlhf-training-llms}

有了奖励模型之后，下一步就是让大语言模型学会生成高奖励的回复。直观地，我们希望找到策略 $\pi_{\theta}$，使其在输入分布下的期望奖励最大：
\begin{equation}
J(\theta) = \mathbb{E}_{\mathbf{x}\sim\mathcal{D}}\;\mathbb{E}_{\mathbf{y}\sim\pi_{\theta}(\cdot|\mathbf{x})}\big[r(\mathbf{x},\mathbf{y})\big],
\end{equation}
同时还要保持生成文本的流畅与合理，避免为追求奖励而输出无意义内容。直接优化上式几乎不可能，因为文本生成是离散且不可微的。强化学习中的策略梯度定理为此提供了可行方案。

策略梯度方法的核心思想是：通过采样估计目标函数 $J(\theta)$ 的梯度，再利用梯度上升更新参数。为了降低梯度估计的方差，通常不直接使用原始奖励，而是引入优势函数 $A(s_t,a_t)$，衡量在状态 $s_t$ 下采取动作 $a_t$ 比平均水平好多少。优势可通过一个独立的价值模型 $V$ 来近似，例如用时序差分误差 $r_t + \gamma V(s_{t+1}) - V(s_t)$ 作为估计。在此框架下，一条轨迹 $\tau=(s_1,a_1,\dots,s_T,a_T)$ 的效用可写为
\begin{equation}
U(\tau;\theta) = \sum_{t=1}^{T} \log \pi_{\theta}(a_t|s_t)\,A(s_t,a_t),
\end{equation}
优化目标即最小化负期望效用：
\begin{equation}
\mathcal{L}(\theta) = -\mathbb{E}_{\tau}\big[U(\tau;\theta)\big].
\end{equation}
这个形式的直观解释很清晰：若某动作的优势为正，就提高其对数概率；若为负，则压低概率。

将上述形式迁移到语言生成任务，输入为 $\mathbf{x}$，模型逐 token 生成回答 $\mathbf{y}=(y_1,\dots,y_T)$。状态是已生成的前缀 $(\mathbf{x},\mathbf{y}_{<t})$，动作是下一个 token $y_t$。损失函数变为
\begin{equation}
\mathcal{L}(\theta) = -\mathbb{E}_{(\mathbf{x},\mathbf{y})}\Big[\sum_{t=1}^{T} \log \pi_{\theta}(y_t|\mathbf{x},\mathbf{y}_{<t})\,A(\mathbf{x},\mathbf{y}_{<t},y_t)\Big].
\end{equation}
在典型的 RLHF 设定中，数据集只有输入 $\mathbf{x}$，输出 $\mathbf{y}$ 由策略 $\pi_{\theta}$ 自身采样，所以实际使用的损失为
\begin{equation}
\mathcal{L}(\theta) = -\mathbb{E}_{\mathbf{x}\sim\mathcal{D}}\;\mathbb{E}_{\mathbf{y}\sim\pi_{\theta}(\cdot|\mathbf{x})}\Big[U(\mathbf{x},\mathbf{y};\theta)\Big].
\end{equation}

然而，每次更新都从当前策略重新采样所有输出，计算开销极大。一种更高效的做法是：固定一个旧策略（称为参考策略 $\pi_{\theta_{\mathrm{ref}}}$）来收集数据，再利用重要性采样将旧数据重用于新策略的评估。对于完整序列，有如下等价关系：
\begin{equation}
J(\theta) = \mathbb{E}_{\tau\sim\pi_{\theta_{\mathrm{ref}}}}\Big[\frac{\Pr_{\theta}(\tau)}{\Pr_{\theta_{\mathrm{ref}}}(\tau)}\,R(\tau)\Big].
\end{equation}
该形式称为替代目标，它将采样和评估解耦，让我们可以用同一批旧样本多次更新策略。落实到 token 层面，效用函数中的对数概率被替换为当前策略与参考策略的概率比：
\begin{equation}
U(\tau;\theta) = \sum_{t=1}^{T} \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{\mathrm{ref}}}(a_t|s_t)}\,A(s_t,a_t).
\end{equation}
比率大于 1 意味着当前策略比参考策略更偏好该动作，反则反之。

单纯使用概率比会带来新的问题：比率波动剧烈，梯度的方差可能非常大，导致训练不稳定。为解决这一问题，近端策略优化（PPO）同时引入了两种约束。第一，对单步概率比进行截断，将其限制在 $[1-\epsilon,\,1+\epsilon]$ 的区间内，避免某一步更新幅度过大：
\begin{equation}
U_{\mathrm{clip}}(\tau;\theta) = \sum_{t=1}^{T} \min\Big(\frac{\pi_{\theta}}{\pi_{\theta_{\mathrm{ref}}}},\;
\operatorname{clip}\big(\frac{\pi_{\theta}}{\pi_{\theta_{\mathrm{ref}}}}, 1-\epsilon, 1+\epsilon\big)\Big)\,A(s_t,a_t).
\end{equation}
（为简洁省略了时间下标；实际使用中会根据优势的正负分别采用不同的截断方式，使更新更为保守。）第二，在目标函数中加入显式的 KL 惩罚项，强制当前策略的概率分布整体不要偏离参考策略太远。惩罚项取两策略在序列上的对数概率差：
\begin{equation}
\mathrm{Penalty} = \sum_{t=1}^{T}\Big[\log \pi_{\theta}(a_t|s_t) - \log \pi_{\theta_{\mathrm{ref}}}(a_t|s_t)\Big].
\end{equation}
将二者结合，得到 PPO 的最终目标
\begin{equation}
U_{\mathrm{ppo}}(\tau;\theta) = U_{\mathrm{clip}}(\tau;\theta) - \beta\,\mathrm{Penalty},
\label{eq:ppo-objective}
\end{equation}
其中 $\beta$ 控制惩罚的强度。这一设计既防止了局部更新过于激进，也在全局上保证了策略平稳演进，因此被广泛用于大语言模型的 RLHF 训练。

映射回语言模型的符号，对于输入 $\mathbf{x}$ 和输出 $\mathbf{y}$，完整的 PPO 目标可以写成
\begin{align}
U(\mathbf{x},\mathbf{y};\theta) = \sum_{t=1}^{T} \min\Big(&\frac{\pi_{\theta}(y_t|\mathbf{x},\mathbf{y}_{<t})}{\pi_{\theta_{\mathrm{ref}}}(y_t|\mathbf{x},\mathbf{y}_{<t})},\;
\operatorname{clip}(\cdots, 1-\epsilon, 1+\epsilon)\Big)\,A(\mathbf{x},\mathbf{y}_{<t},y_t) \nonumber \\
&- \beta\sum_{t=1}^{T}\bigl[\log \pi_{\theta}(y_t|\cdot) - \log \pi_{\theta_{\mathrm{ref}}}(y_t|\cdot)\bigr].
\end{align}
相应地，策略训练的损失为 $\mathcal{L}(\theta) = -\mathbb{E}_{\mathbf{x}\sim\mathcal{D}}\mathbb{E}_{\mathbf{y}\sim\pi_{\theta}(\cdot|\mathbf{x})}[U(\mathbf{x},\mathbf{y};\theta)]$。其中优势 $A$ 由价值模型提供，奖励则来自已训练好的奖励模型。

实现上述训练流程需要同时维护四个基于 Transformer 解码器的模型：
\begin{itemize}
\item \textbf{奖励模型} $r_{\phi}$：将输入与输出拼接映射为一个标量奖励，由人类偏好数据训练得到。
\item \textbf{价值模型} $V_{\omega}$：预测从当前状态开始的未来累积奖励，为计算优势提供基线，常与奖励模型共享架构。
\item \textbf{参考模型} $\pi_{\theta_{\mathrm{ref}}}$：策略训练的起点（如经过指令微调的模型），在 RLHF 过程中参数冻结，为重要性采样和 KL 惩罚提供基准。
\item \textbf{目标策略} $\pi_{\theta}$：即我们需要训练的语言模型，在奖励与价值的双重监督下不断更新。
\end{itemize}

这些模型的训练是交替进行的：首先用预训练模型初始化上述四个模型；接着收集人类偏好数据训练奖励模型；然后固定奖励模型和参考模型，同时优化价值模型和策略。每一步中，策略生成输出序列，价值模型给出优势估计，策略通过最小化 PPO 损失来更新，价值模型则通过最小化价值预测的均方误差来更新。循环往复，直到策略能够稳定地生成符合人类偏好的回复。