Skip to content

LLM 后训练

LLM后训练是将强化学习应用于大语言模型对齐的前沿领域。预训练阶段的LLM本质上是一个 "next-token predictor",它学会了在海量文本上预测下一个token的概率分布,但这并不意味着它会按照人类的期望行事。后训练的目标就是通过各种强化学习方法,让模型从 "会说话" 变成 "说人话"。

本笔记从RL的视角出发,深入讲解从RLHF到GRPO、从DPO到RLVR的各种后训练方法,重点放在数学推导和算法原理上。


为什么需要后训练

Pretraining的局限

预训练的目标函数是标准的语言建模损失:

\[ \mathcal{L}_{\text{pretrain}} = -\sum_{t=1}^{T} \log P_\theta(x_t | x_{<t}) \]

这个目标让模型学会了 "给定前文,什么token最可能出现"。但 "最可能出现的token" 和 "人类期望看到的token" 之间存在根本性的差距:

  • 互联网文本中充斥着有害、虚假、带有偏见的内容,模型忠实地学会了这些分布
  • 语言模型没有 "拒绝" 的概念 -- 它只会继续补全文本
  • 多个合理回答中,模型无法判断哪个更符合人类偏好

SFT的必要性与不足

SFT(Supervised Fine-Tuning)是后训练的第一步,在高质量的 (instruction, response) 数据对上做监督学习:

\[ \mathcal{L}_{\text{SFT}} = -\sum_{t=1}^{T} \log P_\theta(y_t | x, y_{<t}) \]

SFT教会了模型 "回答问题" 的基本格式和行为模式,但它有本质局限:

  1. 监督信号的稀缺性: 高质量的标注数据极其昂贵,尤其是需要领域专家撰写的回答
  2. 泛化能力有限: SFT只能模仿训练数据中出现的回答模式,无法泛化到新的场景
  3. 无法区分好坏: SFT把所有训练数据同等对待,无法学习 "哪种回答更好"
  4. Exposure Bias: 训练时看到的都是正确的前缀,但推理时可能生成错误的前缀,导致错误累积

后训练的RL视角

将LLM后训练建模为强化学习问题,是一个极其自然的框架:

RL概念 LLM后训练中的对应
Agent(智能体) LLM
Policy(策略) \(\pi_\theta\) LLM的参数化条件分布 \(P_\theta(y \mid x)\)
State(状态) \(s_t\) Prompt \(x\) + 已生成的tokens \(y_{<t}\)
Action(动作) \(a_t\) 下一个token \(y_t\)
Trajectory(轨迹) \(\tau\) 完整的生成序列 \(y = (y_1, y_2, \ldots, y_T)\)
Reward(奖励) \(r\) 人类偏好分数 / Reward Model输出 / 可验证奖励
Environment(环境) 对话上下文 + 评估机制

注意这个RL问题的几个特殊性:

  • 巨大的动作空间: 词表大小通常在 \(32{,}000 \sim 150{,}000\),远超一般RL问题
  • Sparse Reward: 奖励通常只在生成结束时给出,中间步骤没有奖励信号
  • 确定性环境: 给定状态和动作,下一个状态是确定的(自回归拼接)
  • 策略即是生成过程: 策略的随机性完全来自token的采样

RLHF (Reinforcement Learning from Human Feedback)

RLHF是InstructGPT(Ouyang et al., 2022)系统化提出的对齐方法,也是ChatGPT背后的核心训练技术。它的核心思想是:用人类的偏好反馈来构造奖励信号,再用RL算法优化LLM的策略。

RLHF的完整流程分为三个阶段。前两个阶段(SFT和Reward Model训练)为第三阶段的RL优化做准备。

Stage 1: SFT (Supervised Fine-Tuning)

在预训练模型上,用高质量的 (instruction, response) 数据对做标准的监督微调,得到初始策略 \(\pi_{\text{SFT}}\)。这一步的目的是给模型一个合理的起点,让它至少学会 "回答问题" 的基本格式。

\[ \pi_{\text{SFT}} = \arg\min_\theta \mathbb{E}_{(x,y) \sim \mathcal{D}_{\text{SFT}}} \left[ -\sum_{t=1}^{T} \log \pi_\theta(y_t | x, y_{<t}) \right] \]

Stage 2: Reward Model Training

这是RLHF中最关键的一步:训练一个Reward Model来模拟人类的偏好判断。

数据收集

给定一个prompt \(x\),让SFT模型生成多个回答,然后请人类标注者进行偏好排序。最常见的形式是成对比较:给定两个回答 \(y_w\)(preferred/winner)和 \(y_l\)(dispreferred/loser),标注 \(y_w \succ y_l\)

Bradley-Terry模型

为了将离散的偏好标注转化为连续的奖励函数,RLHF采用了经典的Bradley-Terry偏好模型。该模型假设人类选择 \(y_w\) 优于 \(y_l\) 的概率与两者奖励之差的sigmoid成正比:

\[ P(y_w \succ y_l | x) = \sigma\left(r_\phi(x, y_w) - r_\phi(x, y_l)\right) = \frac{1}{1 + \exp\left(-(r_\phi(x, y_w) - r_\phi(x, y_l))\right)} \]

其中 \(r_\phi(x, y) \in \mathbb{R}\) 是Reward Model对 (prompt, response) 对的标量评分。

直觉理解: Bradley-Terry模型说的是:如果回答A比回答B好很多(\(r(A) \gg r(B)\)),那么人类选择A的概率接近1;如果两者差不多(\(r(A) \approx r(B)\)),那么选择概率接近0.5。这完美地捕捉了人类偏好的概率性质 -- 即使两个回答质量差距很大,标注者偶尔也会 "犯错"。

Reward Model的训练目标

最大化标注数据的似然,等价于最小化负对数似然:

\[ \mathcal{L}_{\text{RM}}(\phi) = -\mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}_{\text{pref}}} \left[ \log \sigma\left(r_\phi(x, y_w) - r_\phi(x, y_l)\right) \right] \]

Reward Model的架构: 通常直接在预训练LLM(或SFT模型)的基础上,将最后一层的language model head替换为一个线性层,输出一个标量分数。即:

\[ r_\phi(x, y) = \text{Linear}\left(\mathbf{h}_{\text{last}}^{(\text{Transformer})}(x, y)\right) \in \mathbb{R} \]

其中 \(\mathbf{h}_{\text{last}}\) 是最后一个token位置的隐藏状态。这样Reward Model继承了预训练LLM的语言理解能力,只需要学习从语义理解到偏好分数的映射。

从排序到成对

实际标注中,人类标注者可能对 \(K\) 个回答进行完整排序 \(y_{\sigma(1)} \succ y_{\sigma(2)} \succ \cdots \succ y_{\sigma(K)}\)。这可以分解为 \(\binom{K}{2}\) 个成对比较来训练。InstructGPT的做法是 \(K=4\)\(K=9\),每个排序产生6到36个训练样本。

Stage 3: PPO优化

这是整个RLHF中最核心、也最复杂的部分。我们需要用PPO算法来优化LLM的策略,使其在Reward Model的评分下获得高分,同时不偏离SFT模型太远。

优化目标

\[ \max_\theta \quad J(\theta) = \mathbb{E}_{x \sim \mathcal{D},\, y \sim \pi_\theta(\cdot|x)} \left[ r_\phi(x, y) \right] - \beta \cdot \mathbb{E}_{x \sim \mathcal{D}} \left[ D_{\text{KL}}\left(\pi_\theta(\cdot|x) \| \pi_{\text{SFT}}(\cdot|x)\right) \right] \]

这个目标函数有两项:

  1. 奖励最大化: 让模型生成获得高Reward Model分数的回答
  2. KL惩罚: 防止策略偏离SFT模型太远

KL散度的具体计算:

\[ D_{\text{KL}}\left(\pi_\theta(\cdot|x) \| \pi_{\text{SFT}}(\cdot|x)\right) = \mathbb{E}_{y \sim \pi_\theta} \left[ \log \frac{\pi_\theta(y|x)}{\pi_{\text{SFT}}(y|x)} \right] \]

对于自回归模型,整个序列的对数概率可以分解为token级别的求和:

\[ \log \pi_\theta(y|x) = \sum_{t=1}^{T} \log \pi_\theta(y_t | x, y_{<t}) \]

因此KL散度可以在token级别逐步累积计算。

KL惩罚的重要性

\(\beta\) 是一个关键的超参数,控制着 exploitation(利用Reward Model获取高分)exploration(保持与SFT模型的一致性) 之间的平衡。

没有KL约束会发生什么?模型会迅速找到Reward Model的漏洞(Reward Hacking):

  • 生成异常冗长的回答(Reward Model可能对长回答给高分)
  • 重复使用某些 "讨好" Reward Model的短语
  • 生成语法正确但内容空洞的回答
  • 在某些极端情况下,模型甚至会生成乱码但获得高分

KL惩罚确保模型不会为了 "讨好" Reward Model而丧失基本的语言能力。在实际实现中,\(\beta\) 通常通过adaptive KL controller来动态调整:如果KL散度超过目标值就增大 \(\beta\),反之减小。

PPO在LLM中的具体实现

将PPO应用于LLM训练需要维护四个模型(或模型的拷贝):

四模型架构:

1. Actor (π_θ)        -- 正在训练的LLM策略,参数不断更新
2. Critic (V_ψ)       -- 价值函数,估计状态价值,辅助计算Advantage
3. Reference (π_SFT)  -- SFT模型的冻结拷贝,用于计算KL惩罚
4. Reward Model (r_φ)  -- 冻结的Reward Model,提供奖励信号

这意味着训练一个LLM需要同时在GPU上加载四个(接近)等规模的大模型,这是RLHF计算成本极高的主要原因之一。

PPO的单步更新过程:

Step 1 -- 数据收集(Rollout): 从数据集中采样一批prompt \(x\),用当前策略 \(\pi_\theta\) 生成回答 \(y\)

Step 2 -- 计算奖励: 对每个 \((x, y)\) 对,用Reward Model计算奖励 \(r_\phi(x, y)\)。这个奖励只在最后一个token处给出(sparse reward),中间token的奖励为0。但KL惩罚可以逐token计算:

\[ r_t = \begin{cases} -\beta \cdot \log \frac{\pi_\theta(y_t|x, y_{<t})}{\pi_{\text{SFT}}(y_t|x, y_{<t})} & t < T \\[6pt] r_\phi(x, y) - \beta \cdot \log \frac{\pi_\theta(y_T|x, y_{<T})}{\pi_{\text{SFT}}(y_T|x, y_{<T})} & t = T \end{cases} \]

即在每一步都施加per-token的KL惩罚,在最后一步额外加上Reward Model的分数。

Step 3 -- 计算Advantage: 使用GAE(Generalized Advantage Estimation)来计算每个token位置的Advantage值:

\[ \hat{A}_t^{\text{GAE}(\gamma, \lambda)} = \sum_{l=0}^{T-t} (\gamma \lambda)^l \delta_{t+l} \]

其中TD residual为:

\[ \delta_t = r_t + \gamma V_\psi(s_{t+1}) - V_\psi(s_t) \]

\(\gamma\) 是折扣因子(通常设为1.0),\(\lambda\) 是GAE的权衡参数(通常设为0.95)。

Step 4 -- PPO Clipping更新: 对每个token位置,计算重要性比率和clipped目标:

\[ r_t(\theta) = \frac{\pi_\theta(y_t | x, y_{<t})}{\pi_{\theta_{\text{old}}}(y_t | x, y_{<t})} \]
\[ L^{\text{CLIP}}(\theta) = \mathbb{E}_t \left[ \min\left( r_t(\theta) \hat{A}_t, \; \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t \right) \right] \]

其中 \(\epsilon\) 通常取 \(0.2\)。同时更新Critic的价值函数:

\[ L^{\text{VF}}(\psi) = \mathbb{E}_t \left[ \left( V_\psi(s_t) - \hat{R}_t \right)^2 \right] \]

其中 \(\hat{R}_t = \hat{A}_t + V_{\psi_{\text{old}}}(s_t)\) 是GAE估计的回报。

Step 5 -- 多轮mini-batch更新: 在同一批rollout数据上进行多个epoch的mini-batch更新(通常2-4个epoch),提高数据利用效率。这正是PPO相对于原始策略梯度的核心优势。

RLHF的局限性

尽管RLHF取得了巨大成功(ChatGPT、Claude等),但它存在多个根本性的问题,这些问题催生了后续的各种替代方法:

  1. 人类标注成本高昂: 需要大量高质量的人类偏好标注数据,尤其是专业领域(医学、法律等)的标注极其昂贵
  2. Reward Model是瓶颈: Reward Model本身是有限容量的神经网络,它对人类偏好的建模是不完美的。策略优化到极致后,与其说是在优化人类偏好,不如说是在exploit Reward Model的缺陷
  3. PPO训练不稳定: PPO需要精细的超参数调节(\(\beta\), \(\epsilon\), learning rate, batch size等),四个模型的内存占用巨大,训练过程中容易出现各种不稳定现象
  4. Mode Collapse: 模型可能收敛到一种单调的、"安全" 但无趣的回答风格
  5. 工程复杂度高: 需要同时管理四个大模型的前向传播、反向传播和通信,分布式训练的实现极其复杂

RLAIF (RL from AI Feedback)

核心思想

Anthropic提出的Constitutional AI(CAI, Bai et al., 2022)是RLAIF的代表方法。核心思想极其简洁:用AI自身来替代人类标注者,根据一套明确的 "宪法" 规则来评判和改进模型的输出。

方法流程

Constitutional AI的流程分为两个阶段:

阶段一 -- 自我批评与修订(Critique-Revision):

  1. 让模型对可能有害的prompt生成初始回答
  2. 让模型根据宪法规则自我批评("这个回答是否违反了规则X?")
  3. 让模型根据批评修改回答
  4. 用修改前后的 (原始回答, 修改后回答) 对作为偏好数据

阶段二 -- RLAIF训练:

  1. 用AI生成的偏好数据训练Reward Model
  2. 用RL(PPO)优化LLM

可扩展监督 (Scalable Oversight)

RLAIF的深层意义在于 可扩展监督 的概念:随着AI能力的增长,人类将越来越难以直接评估AI的输出质量(尤其是在复杂推理、代码生成等领域)。用更强的AI来监督较弱的AI,形成一个递归的监督链条,是实现超级智能对齐的重要思路。

\[ \text{人类监督} \to \text{AI辅助监督} \to \text{AI监督AI} \to \text{递归可扩展监督} \]

DPO (Direct Preference Optimization)

DPO由Rafailov et al. (2023) 提出,是近年来对RLHF最重要的简化。它的核心发现是:我们根本不需要显式地训练Reward Model和运行PPO -- 偏好优化可以直接在策略上完成。

从RLHF到DPO的完整推导

这是DPO最精彩的部分。我们从RLHF的优化目标出发,一步步推导出DPO的损失函数。

Step 1: RLHF的优化目标

回顾RLHF Stage 3的目标(加上KL惩罚后的):

\[ \max_\theta \quad \mathbb{E}_{x \sim \mathcal{D},\, y \sim \pi_\theta(\cdot|x)} \left[ r(x, y) \right] - \beta \cdot D_{\text{KL}}\left(\pi_\theta(\cdot|x) \| \pi_{\text{ref}}(\cdot|x)\right) \]

这里 \(\pi_{\text{ref}}\) 是reference model(通常就是SFT模型)。展开KL散度:

\[ \max_\theta \quad \mathbb{E}_{x \sim \mathcal{D},\, y \sim \pi_\theta} \left[ r(x, y) - \beta \log \frac{\pi_\theta(y|x)}{\pi_{\text{ref}}(y|x)} \right] \]

Step 2: 求最优策略的闭式解

这是一个带KL约束的优化问题。对于固定的 \(x\),我们要对分布 \(\pi_\theta(\cdot|x)\) 最大化:

\[ \max_{\pi} \quad \mathbb{E}_{y \sim \pi} \left[ r(x, y) - \beta \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} \right] \]

这是一个经典的变分问题。对 \(\pi(y|x)\) 取变分导数并令其为零(加上归一化约束 \(\sum_y \pi(y|x) = 1\)),可以得到最优策略的闭式解:

\[ \pi^*(y|x) = \frac{1}{Z(x)} \pi_{\text{ref}}(y|x) \cdot \exp\left(\frac{1}{\beta} r(x, y)\right) \]

其中配分函数(partition function)为:

\[ Z(x) = \sum_{y} \pi_{\text{ref}}(y|x) \cdot \exp\left(\frac{1}{\beta} r(x, y)\right) = \mathbb{E}_{y \sim \pi_{\text{ref}}} \left[ \exp\left(\frac{1}{\beta} r(x, y)\right) \right] \]

直觉理解: 最优策略是reference model的一个 "加权版本"。对于reward高的回答,概率被指数级地放大;对于reward低的回答,概率被指数级地压缩。\(\beta\) 控制着这个放大/压缩的程度 -- \(\beta\) 越小,最优策略越集中在高reward的回答上;\(\beta\) 越大,最优策略越接近reference model。

Step 3: 从最优策略反推Reward

从上面的闭式解,我们可以反解出reward:

\[ \pi^*(y|x) = \frac{1}{Z(x)} \pi_{\text{ref}}(y|x) \cdot \exp\left(\frac{r(x,y)}{\beta}\right) \]

两边取对数:

\[ \log \pi^*(y|x) = \log \pi_{\text{ref}}(y|x) + \frac{1}{\beta} r(x, y) - \log Z(x) \]

重新整理,得到 reward的闭式表达

\[ \boxed{r(x, y) = \beta \log \frac{\pi^*(y|x)}{\pi_{\text{ref}}(y|x)} + \beta \log Z(x)} \]

这是DPO推导中最关键的一步。它告诉我们:reward可以完全用最优策略和reference策略的对数概率比来表示。 配分函数 \(Z(x)\) 只依赖于prompt \(x\),与回答 \(y\) 无关。

Step 4: 代入Bradley-Terry模型

将reward的表达式代入偏好模型:

\[ P(y_w \succ y_l | x) = \sigma\left(r(x, y_w) - r(x, y_l)\right) \]
\[ = \sigma\left(\beta \log \frac{\pi^*(y_w|x)}{\pi_{\text{ref}}(y_w|x)} + \cancel{\beta \log Z(x)} - \beta \log \frac{\pi^*(y_l|x)}{\pi_{\text{ref}}(y_l|x)} - \cancel{\beta \log Z(x)}\right) \]

关键:\(Z(x)\) 在做差时被完美地消去了! 这意味着我们不需要计算这个难以处理的配分函数。

\[ P(y_w \succ y_l | x) = \sigma\left(\beta \log \frac{\pi^*(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \frac{\pi^*(y_l|x)}{\pi_{\text{ref}}(y_l|x)}\right) \]

Step 5: DPO损失函数

现在,我们用可训练的策略 \(\pi_\theta\) 来参数化最优策略 \(\pi^*\),最大化偏好数据的似然:

\[ \boxed{\mathcal{L}_{\text{DPO}}(\theta) = -\mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}_{\text{pref}}} \left[ \log \sigma\left(\beta \log \frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)}\right) \right]} \]

定义 隐式奖励(Implicit Reward)

\[ \hat{r}_\theta(x, y) = \beta \log \frac{\pi_\theta(y|x)}{\pi_{\text{ref}}(y|x)} \]

那么DPO的损失函数可以简洁地写为:

\[ \mathcal{L}_{\text{DPO}}(\theta) = -\mathbb{E} \left[ \log \sigma\left(\hat{r}_\theta(x, y_w) - \hat{r}_\theta(x, y_l)\right) \right] \]

形式上和Reward Model的训练目标完全一致!只不过reward不再是一个单独的网络输出,而是策略本身的对数概率比。

DPO的梯度分析

DPO损失对参数 \(\theta\) 的梯度为:

\[ \nabla_\theta \mathcal{L}_{\text{DPO}} = -\beta \cdot \mathbb{E} \left[ \underbrace{\sigma\left(-\hat{r}_\theta(x, y_w) + \hat{r}_\theta(x, y_l)\right)}_{\text{权重:模型犯错的程度}} \left( \underbrace{\nabla_\theta \log \pi_\theta(y_w|x)}_{\text{增大preferred的概率}} - \underbrace{\nabla_\theta \log \pi_\theta(y_l|x)}_{\text{减小dispreferred的概率}} \right) \right] \]

直觉理解: 梯度的方向是增大preferred回答的概率、减小dispreferred回答的概率。而梯度的幅度由 \(\sigma(-\hat{r}_\theta(x, y_w) + \hat{r}_\theta(x, y_l))\) 控制 -- 当模型已经正确地给preferred回答更高的隐式奖励时,这个权重接近0,梯度很小;当模型 "犯错" 时,权重接近1,梯度很大。这是一种自然的自适应学习率机制。

DPO vs RLHF

维度 RLHF (PPO) DPO
训练阶段 三阶段(SFT + RM + RL) 两阶段(SFT + DPO)
是否需要Reward Model 是(需要单独训练) 否(隐式reward)
是否需要在线采样 是(PPO需要rollout) 否(直接用离线偏好数据)
GPU内存 极高(4个模型同时加载) 较低(2个模型:\(\pi_\theta\) + \(\pi_{\text{ref}}\)
训练稳定性 较差,需要精细调参 好,类似标准监督学习
理论等价性 近似最优 与RLHF的闭式最优解等价
实际效果 通常更强(因为在线探索) 接近RLHF,某些场景持平或更好
工程复杂度 极高

DPO的局限性

  1. Reference Model依赖: DPO需要一个冻结的reference model来计算概率比。这增加了内存开销,并且reference model的质量直接影响DPO的效果
  2. 离线数据质量敏感: DPO完全依赖于离线的偏好数据,如果数据分布与当前策略差距太大,学习效果会下降
  3. Length Bias: DPO倾向于生成较长的回答,因为较长的回答在对数概率空间中的差异更大
  4. 缺乏在线探索: 与PPO不同,DPO不进行在线采样和探索,可能错过偏好数据覆盖范围之外的好回答
  5. 过拟合风险: 在小规模偏好数据上,DPO容易过拟合,导致泛化能力下降

GRPO (Group Relative Policy Optimization)

GRPO由DeepSeek团队提出(Shao et al., 2024),是DeepSeek-R1背后的核心训练算法。GRPO的设计哲学是:彻底消除Reward Model和Value函数,用组内相对排名来估计Advantage。

动机

PPO在LLM训练中的主要痛点:

  1. Value函数难以训练: LLM的状态空间极其复杂(prompt + 已生成tokens),训练一个准确的Value函数本身就是一个巨大的挑战。而且Value函数的参数规模通常与LLM相当,进一步增加了内存开销
  2. Reward Model的局限性: 训练一个好的Reward Model需要大量高质量的偏好数据,且Reward Model容易被exploit

GRPO的核心思想:既然单个回答的 "绝对好坏" 难以判断,不如让多个回答在组内 "相互竞争",用相对排名来决定优化方向。

算法流程

对于每个prompt \(x\),GRPO进行以下步骤:

Step 1 -- 组采样(Group Sampling): 用当前策略 \(\pi_{\theta_{\text{old}}}\) 对同一个prompt生成一组 \(G\) 个回答:

\[ \{y_1, y_2, \ldots, y_G\} \sim \pi_{\theta_{\text{old}}}(\cdot | x) \]

典型的 \(G\) 取值为 \(8 \sim 64\)

Step 2 -- 计算奖励: 用奖励函数(可以是Reward Model,也可以是可验证奖励)为每个回答评分:

\[ r_i = r(x, y_i), \quad i = 1, 2, \ldots, G \]

Step 3 -- 组内归一化Advantage: 这是GRPO的核心创新。将奖励在组内进行z-score标准化,得到Advantage估计:

\[ \hat{A}_i = \frac{r_i - \text{mean}(\{r_1, \ldots, r_G\})}{\text{std}(\{r_1, \ldots, r_G\})} \]

即:

\[ \hat{A}_i = \frac{r_i - \bar{r}}{\sigma_r}, \quad \text{where} \quad \bar{r} = \frac{1}{G}\sum_{j=1}^{G} r_j, \quad \sigma_r = \sqrt{\frac{1}{G}\sum_{j=1}^{G}(r_j - \bar{r})^2} \]

直觉理解: 在一组回答中,好于平均水平的回答获得正Advantage(被鼓励),差于平均水平的获得负Advantage(被抑制)。标准化确保了Advantage的尺度在不同prompt之间是一致的,不会因为某些prompt的reward绝对值更大而主导训练。

这种方法本质上是REINFORCE with baseline的一种实例,其中baseline \(b(x) = \bar{r}\) 是组内平均奖励。与传统的learned baseline(即Value函数)相比,这个baseline虽然方差略大,但完全不需要额外训练。

Step 4 -- 策略优化: 使用类似PPO-clip的目标函数,但在序列级别(而非token级别)操作:

\[ \mathcal{L}_{\text{GRPO}}(\theta) = -\frac{1}{G} \sum_{i=1}^{G} \frac{1}{|y_i|} \sum_{t=1}^{|y_i|} \left[ \min\left(r_{i,t}(\theta) \hat{A}_i, \; \text{clip}(r_{i,t}(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_i \right) \right] \]

其中 \(r_{i,t}(\theta)\) 是第 \(i\) 个回答的第 \(t\) 个token的重要性比率:

\[ r_{i,t}(\theta) = \frac{\pi_\theta(y_{i,t} | x, y_{i,<t})}{\pi_{\theta_{\text{old}}}(y_{i,t} | x, y_{i,<t})} \]

注意 \(\hat{A}_i\) 是序列级别的Advantage(整个回答共享同一个Advantage值),而clipping是在token级别进行的。

KL正则化: GRPO同样需要KL惩罚来防止策略偏离过远。GRPO使用了一种近似的KL散度估计:

\[ D_{\text{KL}}^{\text{approx}} = \frac{\pi_{\text{ref}}(y_t | x, y_{<t})}{\pi_\theta(y_t | x, y_{<t})} - \log \frac{\pi_{\text{ref}}(y_t | x, y_{<t})}{\pi_\theta(y_t | x, y_{<t})} - 1 \]

这是KL散度的一种无偏估计(基于 \(f\)-divergence 的性质),当两个分布接近时近似为标准KL散度。

GRPO与REINFORCE的联系

从理论上看,GRPO可以视为REINFORCE with baseline的一个变体。REINFORCE的梯度估计为:

\[ \nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \nabla_\theta \log \pi_\theta(\tau) \cdot (R(\tau) - b) \right] \]

GRPO的关键改进在于:

  1. 组内均值作为baseline: \(b = \bar{r}\),不需要学习Value函数
  2. 标准化: 除以组内标准差 \(\sigma_r\),自适应地调整梯度尺度
  3. PPO-clip稳定训练: 使用clipping而非原始的策略梯度,防止大步更新

GRPO的优势总结

  • 不需要Reward Model(可以用,但不必须 -- 可以直接用rule-based reward或verifiable reward)
  • 不需要Value函数(彻底消除Critic网络)
  • 内存高效:只需加载 Actor + Reference 两个模型
  • 实现简单:代码量远小于PPO-based RLHF
  • 在DeepSeek-R1中展示了强大的推理能力提升

其他偏好优化方法

IPO (Identity Preference Optimization)

Azar et al. (2023) 提出的IPO旨在解决DPO的一个理论缺陷:DPO假设偏好数据完美地服从Bradley-Terry模型,但实际的人类偏好数据充满噪声。

DPO在训练过程中可能过度自信地拟合偏好数据,导致隐式reward的幅度趋向无穷大。IPO通过修改损失函数来正则化这种行为:

\[ \mathcal{L}_{\text{IPO}}(\theta) = \mathbb{E}_{(x, y_w, y_l)} \left[ \left( \log \frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)} - \frac{1}{2\beta} \right)^2 \right] \]

直觉理解: IPO用MSE loss替代了DPO的log-sigmoid loss。MSE loss会将隐式reward的差值 "拉向" 目标值 \(\frac{1}{2\beta}\),而不是像DPO那样无限制地增大差值。这相当于给隐式reward加了一个隐式的正则化。

KTO (Kahneman-Tversky Optimization)

Ethayarajh et al. (2024) 提出的KTO解决了一个非常实际的问题:在很多场景下,获取成对偏好标注(\(y_w\) vs \(y_l\))很困难,但获取单独的好/坏标注(thumbs up / thumbs down)相对容易。

KTO的名称来源于Kahneman和Tversky的前景理论(Prospect Theory),该理论指出人类对损失的敏感度高于对收益的敏感度。

KTO的损失函数分别处理 "好" 和 "坏" 的样本:

\[ \mathcal{L}_{\text{KTO}}(\theta) = \mathbb{E}_{(x,y)} \left[ w(y) \cdot \left(1 - v_\theta(x, y) \right) \right] \]

其中:

\[ v_\theta(x, y) = \begin{cases} \sigma\left(\beta \cdot \hat{r}_\theta(x, y) - z_{\text{ref}}\right) & \text{if } y \text{ is desirable} \\[6pt] \sigma\left(z_{\text{ref}} - \beta \cdot \hat{r}_\theta(x, y)\right) & \text{if } y \text{ is undesirable} \end{cases} \]
\[ z_{\text{ref}} = \mathbb{E}_{(x', y') \sim \mathcal{D}} \left[ \beta \cdot D_{\text{KL}}\left(\pi_\theta(y'|x') \| \pi_{\text{ref}}(y'|x')\right) \right] \]

这里 \(z_{\text{ref}}\) 是一个baseline,用数据集中KL散度的期望来估计。\(w(y)\) 是一个权重项,对undesirable样本赋予更高的权重(体现前景理论的 "损失厌恶")。

KTO的核心优势: 数据需求更低 -- 只需要二元标签(好/坏),不需要成对比较。这使得数据收集成本大幅降低。

ORPO (Odds Ratio Preference Optimization)

Hong et al. (2024) 提出的ORPO更进一步:将SFT和偏好优化合并为单一训练阶段,且不需要reference model。

ORPO的损失函数:

\[ \mathcal{L}_{\text{ORPO}}(\theta) = \underbrace{\mathcal{L}_{\text{SFT}}(\theta)}_{\text{SFT项}} + \lambda \cdot \underbrace{\mathcal{L}_{\text{OR}}(\theta)}_{\text{Odds Ratio项}} \]

其中Odds Ratio项为:

\[ \mathcal{L}_{\text{OR}}(\theta) = -\mathbb{E}_{(x, y_w, y_l)} \left[ \log \sigma\left(\log \frac{\text{odds}_\theta(y_w|x)}{\text{odds}_\theta(y_l|x)} \right) \right] \]
\[ \text{odds}_\theta(y|x) = \frac{P_\theta(y|x)}{1 - P_\theta(y|x)} \]

核心思想: 用odds ratio(优势比)替代DPO中的log-probability ratio,这样就不需要reference model了。SFT项同时提供了正则化效果,防止策略偏离过远。

SimPO (Simple Preference Optimization)

Meng et al. (2024) 提出的SimPO进一步简化了DPO,核心改进是:

  1. 用长度归一化的对数概率替代概率比: \(\hat{r}_\theta(x, y) = \frac{\beta}{|y|} \log \pi_\theta(y|x)\),不再需要reference model
  2. 引入margin项: 在preferred和dispreferred的奖励之间加入一个固定的margin \(\gamma\)
\[ \mathcal{L}_{\text{SimPO}}(\theta) = -\mathbb{E} \left[ \log \sigma\left(\frac{\beta}{|y_w|} \log \pi_\theta(y_w|x) - \frac{\beta}{|y_l|} \log \pi_\theta(y_l|x) - \gamma \right) \right] \]

长度归一化优雅地解决了DPO的length bias问题。


RLVR (Reinforcement Learning with Verifiable Rewards)

RLVR是DeepSeek-R1(DeepSeek, 2025)成功的关键技术之一,也是连接RL与推理能力的核心方法。

核心思想

在数学、编程、逻辑推理等领域,回答的正确性是 可验证的(verifiable)

  • 数学题可以验证最终答案是否正确
  • 代码可以通过测试用例验证
  • 逻辑题可以验证结论是否成立

这意味着我们可以完全跳过 "人类标注" 和 "Reward Model训练",直接用正确性作为RL的奖励信号。

Outcome-Based Reward (ORM)

最简单的形式:只关心最终答案是否正确。

\[ r_{\text{outcome}}(x, y) = \begin{cases} 1 & \text{if final answer is correct} \\ 0 & \text{if final answer is incorrect} \end{cases} \]

也可以设计更细致的奖励,例如对格式规范性的要求:

\[ r(x, y) = r_{\text{accuracy}}(x, y) + \alpha \cdot r_{\text{format}}(x, y) \]

其中 \(r_{\text{format}}\) 检查模型是否遵循了指定的思维链格式(如将推理过程放在 <think> 标签中)。

Process-Based Reward (PRM)

更精细的奖励方式:对推理过程中的每一步进行评价。

设推理过程由 \(K\) 个步骤组成:\(y = (s_1, s_2, \ldots, s_K)\),PRM为每一步给出一个分数:

\[ r_{\text{process}}(x, y) = \sum_{k=1}^{K} r_k(x, s_1, \ldots, s_k) \]

或者取最小值(最弱环节决定整体质量):

\[ r_{\text{process}}(x, y) = \min_{k=1}^{K} r_k(x, s_1, \ldots, s_k) \]

PRM的优势在于提供了更密集的奖励信号(dense reward),有助于缓解sparse reward问题。但PRM的训练本身需要步骤级别的标注数据,成本更高。

DeepSeek-R1的训练方法

DeepSeek-R1展示了一条令人振奋的技术路径:不使用任何人类标注的思维链数据,仅靠GRPO + 可验证奖励,就能让LLM "涌现" 出复杂的推理能力。

训练流程:

DeepSeek-R1 训练流程:

Stage 1: 冷启动 (Cold Start)
    - 收集少量长思维链数据做SFT
    - 让模型学会基本的 "思考后回答" 格式

Stage 2: 推理RL (Reasoning RL)
    - 用GRPO + 可验证奖励在数学/代码任务上训练
    - 奖励信号:答案正确性 + 格式规范性
    - 模型自发涌现出:反思、验证、回溯、自我纠错等能力

Stage 3: 拒绝采样 + SFT
    - 用Stage 2的模型生成大量推理数据
    - 只保留正确的、高质量的推理轨迹
    - 混合通用SFT数据做进一步微调

Stage 4: 第二轮RL
    - 综合使用推理奖励 + 有用性/安全性奖励
    - 最终对齐

DeepSeek-R1的一个惊人发现是:在Stage 2中,模型在纯RL训练过程中自发地涌现出了以下推理行为,而这些行为从未在训练数据中被显式教授:

  • 反思(Reflection): "让我重新检查一下这个步骤..."
  • 回溯(Backtracking): "上面的方法行不通,换一种思路..."
  • 自我验证(Self-verification): "代入原方程验算..."
  • 分解问题(Decomposition): "先解决子问题A,再..."

这种 通过RL涌现推理能力 的范式,与OpenAI的o1/o3系列模型的技术路线高度一致,代表了LLM后训练的一个重要方向。


方法对比总结

方法 Reward Model Value函数 Reference Model 数据需求 训练复杂度 代表模型 核心优势
RLHF (PPO) 需要 需要 需要 成对偏好 极高 ChatGPT, Claude 效果强大,理论成熟
DPO 不需要 不需要 需要 成对偏好 Zephyr, many open-source 简单高效,理论等价于RLHF
GRPO 可选 不需要 需要 可验证奖励 DeepSeek-R1 无需Value函数,适合推理任务
KTO 不需要 不需要 需要 二元标签 - 数据需求最低
IPO 不需要 不需要 需要 成对偏好 - 对噪声偏好数据鲁棒
ORPO 不需要 不需要 不需要 成对偏好 - 无需reference model,SFT一体化
SimPO 不需要 不需要 不需要 成对偏好 - 解决length bias
RLVR 不需要 不需要 需要 可验证标签 DeepSeek-R1, o1 无需人类标注,适合推理

一个清晰的演化趋势是:从复杂走向简单,从依赖人工走向自动化。

\[ \underbrace{\text{RLHF}}_{\text{4个模型,人类标注}} \to \underbrace{\text{DPO}}_{\text{2个模型,偏好数据}} \to \underbrace{\text{ORPO/SimPO}}_{\text{1个模型,偏好数据}} \to \underbrace{\text{RLVR}}_{\text{0人类标注,可验证奖励}} \]

前沿方向

Online DPO / Iterative DPO

标准DPO使用离线偏好数据,但这意味着偏好数据的分布与当前策略的分布可能不匹配(distribution shift)。Online DPO的思路是:

  1. 用当前策略 \(\pi_\theta\) 生成新的回答
  2. 用Reward Model(或AI/人类)对新回答进行偏好标注
  3. 用新的偏好数据做DPO更新
  4. 重复

这本质上是将DPO从 off-policy 转为 on-policy,弥合了DPO与RLHF之间的理论差距。实验表明Online DPO的效果通常优于标准的offline DPO,在某些基准上接近甚至超过PPO-based RLHF。

Self-Play (SPIN)

SPIN(Self-Play fIne-tuNing, Chen et al., 2024)的核心思想是让模型与自己的旧版本进行对弈:

  • 将上一轮模型的输出视为 "dispreferred" 回答
  • 将ground truth视为 "preferred" 回答
  • 用DPO-style的损失函数训练
\[ \mathcal{L}_{\text{SPIN}}(\theta) = -\mathbb{E} \left[ \log \sigma\left(\beta \log \frac{\pi_\theta(y_{\text{gt}}|x)}{\pi_{\text{ref}}(y_{\text{gt}}|x)} - \beta \log \frac{\pi_\theta(y_{\text{old}}|x)}{\pi_{\text{ref}}(y_{\text{old}}|x)} \right) \right] \]

其中 \(y_{\text{gt}}\) 是ground truth回答,\(y_{\text{old}} \sim \pi_{\theta_{\text{old}}}\) 是旧模型生成的回答。

SPIN的优势在于不需要任何偏好标注数据,只需要ground truth回答即可。但随着训练的进行,模型输出越来越接近ground truth,学习信号会逐渐减弱直至收敛。

RL for Reasoning (o1-style)

OpenAI的o1/o3系列和DeepSeek-R1标志着一个新范式的出现:用RL来训练LLM的推理能力,而非仅仅用于对齐。

在这个范式中,RL的角色发生了根本性的转变:

  • 传统RLHF: RL用于对齐 -- 让模型的输出符合人类偏好
  • RL for Reasoning: RL用于能力提升 -- 让模型学会更深层的推理

关键技术要素:

  1. 长思维链(Long CoT): 允许模型在回答前进行长时间的内部推理
  2. 可验证奖励: 数学/代码的正确性提供了天然的RL奖励信号
  3. Test-time Compute Scaling: 通过在推理时投入更多计算来提升效果

这带来了一个深刻的洞察:scaling不只有训练时的参数规模和数据规模,推理时的计算量也可以用来换取更好的性能。 这就是所谓的 "test-time compute scaling"。

Multi-Turn RLHF

传统RLHF只考虑单轮对话 \((x, y)\),但实际应用中LLM需要在多轮对话中保持一致性。Multi-Turn RLHF将RL的状态扩展为完整的对话历史:

\[ s_t = (x_1, y_1, x_2, y_2, \ldots, x_t) \]

挑战在于:

  • 多轮对话中的credit assignment问题(好的最终结果归功于哪一轮回答?)
  • 对话状态空间急剧膨胀
  • 人类偏好标注更加困难(需要评价整个对话的质量)

Constitutional AI at Scale

将Constitutional AI的理念推向极致:用一套完整的价值体系来指导AI的行为,而非依赖有限的人类偏好标注。这涉及到更深层的哲学问题:什么是 "好" 的AI行为?如何在不同文化、不同价值观之间找到平衡?


参考文献

  • Ouyang et al., "Training language models to follow instructions with human feedback" (InstructGPT, 2022)
  • Bai et al., "Constitutional AI: Harmlessness from AI Feedback" (Anthropic, 2022)
  • Rafailov et al., "Direct Preference Optimization: Your Language Model is Secretly a Reward Model" (DPO, 2023)
  • Azar et al., "A General Theoretical Paradigm to Understand Learning from Human Feedback" (IPO, 2023)
  • Ethayarajh et al., "KTO: Model Alignment as Prospect Theoretic Optimization" (2024)
  • Hong et al., "ORPO: Monolithic Preference Optimization without Reference Model" (2024)
  • Meng et al., "SimPO: Simple Preference Optimization with a Reference-Free Reward" (2024)
  • Chen et al., "Self-Play Fine-Tuning Converts Weak Language Models to Strong Language Models" (SPIN, 2024)
  • Shao et al., "DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models" (GRPO, 2024)
  • DeepSeek-AI, "DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning" (2025)
  • Schulman et al., "Proximal Policy Optimization Algorithms" (PPO, 2017)

评论 #