基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback, RLHF) 已成为将原始大语言模型 (LLM) 转化为有用助手的标准方法。如果你玩过 ChatGPT 或 Llama,那你正在交互的模型很可能就经历过这一过程。

传统上,这涉及一个两阶段的过程: 首先训练一个奖励模型来模仿人类偏好,然后使用强化学习 (通常是 PPO) 针对该奖励来优化 LLM。然而,PPO 计算成本高昂且极其不稳定,因为它需要“在线策略 (on-policy) ”采样——即在训练过程中不断从模型生成新文本。

最近,像 DPO (直接偏好优化) 和 IPO (恒等偏好优化) 这样的直接对齐方法迅速流行起来。它们跳过了奖励模型和采样步骤,直接从静态的偏好数据集 (离线 RL) 中学习。它们稳定且快速。 但有个问题。 它们通常只适用于偏好数据 (即 A 比 B 好) 。

如果你想优化 LLM 以实现某种非偏好类的目标呢?如果你想优化代码编译率、事实一致性得分或特定的业务指标呢?DPO 在这方面表现乏力。

这就轮到 对比策略梯度 (Contrastive Policy Gradient, CoPG) 登场了。

在这篇文章中,我们将解构这种新方法,它结合了两个世界的优点。CoPG 允许你使用离线数据优化任意奖励函数,既没有 PPO 的不稳定性,也没有 DPO 的限制。我们将探索其背后的数学原理,它如何推广现有的方法,并查看证明其有效性的实验结果。

背景: 对齐问题

要理解为什么需要 CoPG,我们首先需要看看对齐 LLM 的数学基础。

我们将提示词记为 \(x\),生成的回复记为 \(y\)。我们的目标是训练一个策略 \(\pi\) (即 LLM) ,使其最大化特定的奖励 \(R(x, y)\)。然而,我们不能让模型偏离其原始训练 (参考模型 \(\pi_{\text{ref}}\)) 太远,否则它可能会开始输出毫无意义的内容仅仅为了骗取奖励 (刷分) 。

这引出了标准的正则化 RL 目标函数:

标准的正则化 RL 目标函数。

在这里,\(\beta\) 控制 KL 散度惩罚的强度 (保持模型接近参考模型) 。我们可以通过定义“正则化奖励”\(R^\pi_\beta\) 来简化这个表达式,这基本上是直接从奖励中减去 KL 惩罚:

正则化奖励的定义。

标准策略梯度的问题

解决这个问题的经典方法是使用策略梯度 (Policy Gradient, PG) 。其梯度的形式如下:

带基线的标准策略梯度。

这个方程告诉我们要增加那些具有高奖励 (相对于基线 \(b\)) 的生成内容的概率。

问题在于期望 \(\mathbb{E}_{y \sim \pi}\)。这需要从当前策略 \(\pi\) 中采样 \(y\)。随着 \(\pi\) 在训练过程中发生变化,你必须不断生成新的样本。如果你尝试使用静态数据集 (来自分布 \(\mu\) 的离线策略数据) ,你就必须使用 重要性采样 (Importance Sampling) :

带重要性采样的策略梯度。

看到那个比率 \(\frac{\pi(y)}{\mu(y)}\) 了吗?随着你的模型 \(\pi\) 开始学习并偏离数据集分布 \(\mu\),这个比率可能会爆炸,导致梯度的方差急剧飙升。这使得使用标准策略梯度进行离线训练在数学上是有效的,但在实践中几乎是不可能的。

核心方法: 对比策略梯度

CoPG 背后的研究人员提出了一个聪明的变通方案。他们不再关注单个样本,而是关注 成对 (pairs) 的样本。

他们引入了一种基于对比原理的新损失函数。其核心思想是,不仅根据生成内容自身的奖励,还要通过与另一个生成内容的比较来加权该内容的似然性。

让我们看看一对回复 \(y\) 和 \(y'\) 的 CoPG 损失函数:

CoPG 损失函数定义。

这看起来很复杂,让我们把它拆解一下。它本质上是一个加权对数似然。

  1. 第一项: 我们看生成内容 \(y\)。我们用它的奖励与 \(y'\) 奖励的差值来加权它的梯度。
  2. 第二项: 我们对 \(y'\) 做同样的操作,用它的奖励与 \(y\) 奖励的差值来加权。

如果 \(y\) 比 \(y'\) 好得多,第一项就会变成正数且数值较大,推动模型增加 \(y\) 的概率。同时,第二项会鼓励降低 \(y'\) 的概率。

为什么这能解决离线问题?

CoPG 的魔力在于它允许我们执行 离线策略的策略梯度 (Off-Policy Policy Gradient) , 而不会出现爆炸的重要性采样比率。

作者证明 (论文中的定理 1) ,CoPG 目标的唯一最大化点正是解决原始 RL 问题的最优策略 \(\pi_*\)。

最优策略定义。

当我们计算数据集上 CoPG 目标的梯度时,发生了一些奇妙的事情。梯度计算简化为两项,看起来像标准的策略梯度,但带有一个特定的、完美的基线。

单对样本 \((y, y')\) 的梯度为:

CoPG 损失函数的梯度 (第1部分) 。 CoPG 损失函数的梯度 (第2部分) 。

注意这里没有重要性采样比率 (\(\frac{\pi}{\mu}\)) 。项 \((R^\pi_\beta(y') - R^\pi_\beta(y))\) 充当了一个 对比基线 。 因为这个基线依赖于另一个样本的奖励,它自然地稳定了梯度。

“实现技巧”

对于想要实现这一点的学生和从业者来说,你实际上不需要手动编写复杂的对数似然导数代码。作者指出了一个漂亮的简化。CoPG 损失的梯度与 正则化奖励的平方差 的负梯度成正比:

与奖励平方差成正比的简化梯度。

这意味着你可以通过简单地最小化两个样本奖励之间的平方差来实现 CoPG。这是非常“对监督学习友好的”,并且可以使用 PyTorch 或 TensorFlow 中的标准自动微分工具。

理论统一: 连接各点

这篇论文最强的一点是,它不仅仅发明了一种新方法;它解释了 CoPG 如何与现有方法相关联。事实证明,CoPG 是几种其他算法的推广。

1. 推广策略梯度

如果你计算 CoPG 梯度的期望,其中两个样本都从当前策略中抽取,你会恢复出标准策略梯度 (缩放了 2 倍) 。

性质 1: CoPG 推广了策略梯度。

这证实了 CoPG 是经典 RL 方法向离线策略 (基于数据集) 机制的数学上可靠的扩展。

2. 推广 RLOO (Reinforce Leave-One-Out)

RLOO 是一种流行的方法,使用多个样本来估计基线。论文证明 CoPG 实际上是 RLOO 的离线策略推广 。 RLOO 通常需要新生成的样本;CoPG 表明,如果你正确制定基线,同样的数学结构也适用于静态数据集。

3. 推广 IPO (恒等偏好优化)

IPO 是一种直接对齐方法,用于当你拥有二元偏好 (例如,“胜/负”或“更好/更差”) 时。

作者表明,如果你采用 CoPG 损失并将任意连续奖励替换为二元值 (例如 \(+1/4\) 和 \(-1/4\)) ,梯度将变得与 IPO 完全相同。

在二元奖励下,CoPG 的梯度与 IPO 匹配。

这是一个至关重要的见解。它意味着 IPO 只是 CoPG 的一个特例 , 其中奖励函数是一个简单的阶跃函数。然而,CoPG 可以处理来自奖励模型的丰富、连续的信号 (例如,“这个摘要的准确度是 0.8,那个是 0.2”) ,而 IPO 丢弃了这种细微差别。

实验与结果

这个理论在实践中站得住脚吗?作者在两个场景中测试了 CoPG: 一个受控的老虎机问题和一个大规模 LLM 摘要任务。

玩具老虎机实验

在老虎机问题中,“智能体”只需要从三个臂中选择一个,每个臂都有不同的固定奖励。目标是收敛到各臂上的最佳概率分布。

由于这是一个简单的问题,我们可以计算出精确的最优解。作者将 CoPG 与 IPO 以及具有不同基线的策略梯度 (PG) 进行了比较。

老虎机实验结果显示遗憾值与步数的关系。

  • 橙色 (PG 无基线): 由于方差过大完全失败。
  • 绿色 (PG 值基线): 收敛了,但收敛到了一个有偏 (不正确) 的解,因为基线对于离线策略数据来说并不完美。
  • 红色 (IPO): 收敛了,但也收敛到了一个有偏的解。IPO 优化的是偏好,而不是确切的底层奖励值。
  • 蓝色 (CoPG): 收敛到 零遗憾值 。 它找到了数学上的最优策略。

这直观地表明,如果你拥有标量奖励,将其视为简单的偏好 (像 IPO 那样) 会损失性能。

LLM 摘要任务

作者随后在 Reddit TL;DR 摘要数据集上微调了 Llama2-7B 模型。他们训练了一个单独的奖励模型作为“基准真值”评估器。

CoPG 能优化奖励吗? 首先,他们简单地检查了在离线数据集上运行 CoPG 是否确实提高了模型输出的奖励分数。

不同 CoPG beta 值在训练期间的奖励演变。

上图显示 CoPG 成功攀登了奖励景观。性能取决于 \(\beta\) (KL 惩罚) :

  • 如果 \(\beta\) 太低 (0.01),模型变得不稳定 (奖励下降) 。
  • 如果 \(\beta\) 太高 (0.3),模型受参考模型的约束太大,学习缓慢。
  • 在最佳 \(\beta\) (0.06) 下,它实现了高且稳定的奖励。

与 DPO 和 IPO 的比较 关键问题是: CoPG 是否比流行的 DPO 和 IPO 方法表现更好?

为了公平测试,他们使用 同一个 奖励模型为 DPO 和 IPO 生成偏好标签。这给了 DPO/IPO 成功的最佳机会。

CoPG、DPO 和 IPO 随时间变化的奖励比较。

结果很明确。 CoPG (绿色) 始终比 DPO (蓝色)IPO (橙色) 获得更高的奖励。

这验证了假设: 当你有一个连续的奖励信号 (比如来自分类器的分数) 时,将其转换为二元“A > B”偏好供 DPO/IPO 使用会丢失信息。CoPG 利用奖励的完整标量值来驱动学习,从而实现了更好的对齐。

KL-奖励权衡 最后,在 RL 中,为了获得更高的奖励,你通常需要付出更高的 KL 散度代价 (偏离基础模型更远) 。一种高效的方法应该停留在“帕累托前沿”上——在特定的 KL 散度“预算”下获得最大奖励。

三种方法的 KL 与 奖励 散点图。

在这个图中,“左上角”更好 (更高的奖励,更低的 KL) 。CoPG 的点 (橙色) 形成的前沿优于 DPO 和 IPO。特别是 DPO,倾向于在 KL 上发生显著漂移 (向右移动) ,却没有获得成比例的奖励增长。

结论

对比策略梯度填补了当前 LLM 对齐工具包中的一个主要空白。

长期以来,工程师们不得不在以下两者之间做出选择:

  1. RLHF (PPO): 优化任意奖励,但缓慢、昂贵且不稳定。
  2. 直接对齐 (DPO/IPO): 快速且稳定,但仅限于偏好数据。

CoPG 提供了第三条路径: 任意奖励的离线优化。

通过使用对比基线,CoPG 消除了离线策略学习的方差问题。它允许你获取一个包含提示词和评分回复的数据集 (例如,“提示词 X -> 代码 Y [得分: 0.9]”,“提示词 X -> 代码 Z [得分: 0.4]”) ,并训练模型最大化这些分数,而无需在训练期间运行模型。

随着 LLM 超越简单的聊天,进入像编程、生物学和法律这样复杂的领域——在这些领域,成功是由具体指标衡量的,而不仅仅是人类的“感觉”——像 CoPG 这样的方法对于精确、高效的对齐将变得至关重要。