RLHF的痛点

RLHF(Reinforcement Learning from Human Feedback)是大模型对齐的标准方案,但它以复杂著称。完整的RLHF流程包含三个阶段:SFT(监督微调)、RM(奖励模型训练)、PPO(强化学习优化)。其中PPO阶段尤其棘手——需要同时维护Policy Model、Reference Model、Reward Model和Value Model四个模型,训练过程不稳定,超参数敏感,显存开销巨大。

有没有更简单的方式来实现同样的目标?

DPO(Direct Preference Optimization)给出了一个令人惊喜的答案。

DPO的核心思想

DPO的核心洞察是:我们不需要显式地训练奖励模型,也不需要强化学习。 通过一个精巧的数学推导,DPO将偏好学习问题转化为一个简单的分类问题。

数学推导

在RLHF框架中,最优策略可以表示为:

π*(y|x) ∝ π_ref(y|x) · exp(r(x,y)/β)

其中π_ref是参考策略,r是奖励函数,β是温度参数。这个关系意味着给定奖励函数,我们可以直接写出最优策略的形式。

DPO的关键步骤是反过来——给定偏好数据,我们可以直接从策略形式中推导出隐含的奖励函数:

r(x,y) = β · log(π(y|x)/π_ref(y|x))

将这个隐含奖励代入Bradley-Terry偏好模型,偏好概率变为:

P(y_w > y_l | x) = σ(β · log(π(y_w|x)/π_ref(y_w|x)) - β · log(π(y_l|x)/π_ref(y_l|x)))

其中y_w是偏好回答,y_l是非偏好回答,σ是sigmoid函数。

这就是DPO的损失函数——一个简单的二元交叉熵!不需要奖励模型,不需要强化学习,只需要偏好数据对和一个参考模型。

与RLHF的对比

维度RLHF (PPO)DPO
训练阶段SFT → RM → PPOSFT → DPO
需要的模型4个(Policy, Ref, Reward, Value)2个(Policy, Ref)
超参数多且敏感少且鲁棒
训练稳定性差,需要多种trick好,类似标准训练
显存开销极高中等

实践经验

在过去一年中,我们在多个项目上使用DPO替代RLHF,总结出以下经验:

优势

工程复杂度大幅降低。 从4个模型减到2个模型,训练pipeline的复杂度下降一个量级。不需要担心PPO的各种trick——KL散度惩罚、优势函数裁剪、学习率warmup等。

训练更稳定。 DPO的损失函数是凸的(在策略空间中),训练曲线比PPO平稳得多。不再需要盯着训练曲线担心mode collapse。

效果不逊于RLHF。 在我们的大多数实验中,DPO训练出的模型在人类评估中与RLHF模型没有显著差异,部分场景甚至更好。

挑战

对偏好数据质量更敏感。 DPO直接从偏好数据学习,数据中的噪声会直接影响模型。RLHF有奖励模型作为中间层,对噪声有一定的缓冲作用。

探索不足。 PPO的on-policy采样会探索新的回答空间,而DPO仅从离线数据学习。这意味着DPO模型可能无法发现训练数据中不存在的更好的回答模式。

β参数调节。 β控制模型偏离参考策略的程度。太大会导致模型几乎不更新,太小会导致模型偏离过多。实践中β通常在0.01-0.1之间。

DPO的变体

DPO的成功催生了一系列改进方案:

IPO(Identity Preference Optimization):通过添加KL正则化来解决DPO在偏好数据无噪声假设下过拟合的问题。

KTO(Kahneman-Tversky Optimization):不需要成对偏好数据,只需要二元反馈(好/坏),降低了数据标注成本。

SimPO:去除参考模型,用回答长度归一化的似然比作为隐含奖励,进一步简化了训练流程。

ORPO:将偏好优化与SFT融合在一个阶段完成,省去了先SFT再DPO的两步流程。

何时选DPO,何时选RLHF

我们的建议:

选DPO当:

  • 有高质量的偏好数据对
  • 工程资源有限,需要快速迭代
  • 任务可以用离线数据充分覆盖

选RLHF当:

  • 需要模型探索新的行为空间
  • 偏好数据不足,需要on-policy采样
  • 任务涉及复杂的多轮交互(当前DPO主要针对单轮)

结语

DPO不代表RLHF的终结,而是提供了一个更简洁的选择。正如深度学习中并非所有问题都需要最复杂的架构一样,对齐方法的选择也应该是问题导向的。DPO的价值在于让更多团队能够负担得起对齐训练,这对整个生态的健康发展是好事。

本文同步发布于 硅基AGI论坛