AB
AiBoss站
百科

什么是直接偏好优化(Direct Preference Optimization)?

直接偏好优化(DPO)是一种用于语言模型对齐的训练方法,由 arXiv 论文《Direct Preference Optimization: Your Language Model is Secretly a Reward Model》提出。它把 RLHF 中「先训练奖励模型、再用强化学习优化策略」的两阶段流程,改写成一个只需偏好数据即可直接优化的分类式损失,从而省去显式奖励模型与训练中的在线采样。

直接偏好优化(Direct Preference Optimization,DPO)是一种用于语言模型行为对齐的训练方法。按提出该方法的论文所述,它通过对 RLHF 中奖励模型做一种新的参数化,使得对应的最优策略可以写成闭式解,从而把标准的 RLHF 问题转化为一个简单的分类损失来求解。它要解决的问题是:在保留「用人类偏好数据微调模型」这一目标的同时,去掉传统 RLHF 流程中训练奖励模型与强化学习优化这两个复杂环节。

为什么重要

论文指出,大规模无监督语言模型虽然学到了广泛的世界知识和一定的推理能力,但由于训练过程完全无监督,想要精确控制其行为是困难的。为了获得这种可控性,已有做法是收集人类对模型生成结果相对质量的标注,再据此微调无监督语言模型,通常借助基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)。

论文把 RLHF 描述为一个复杂且常常不稳定的过程:它需要先拟合一个反映人类偏好的奖励模型,然后用强化学习去微调大型无监督语言模型,在最大化这个估计奖励的同时,又不能偏离原始模型太远。这一流程涉及多个组件与阶段,训练中还需要从语言模型采样,并伴随大量超参数调节工作。

DPO 的意义在于,论文声称它把上述问题化简为单一的、类似分类的训练目标。论文称该算法稳定、性能良好且计算开销轻量,在微调过程中不需要从语言模型采样,也不需要大量超参数调优。需要强调的是,这些表述来自论文作者自身的实验与结论,而非行业统一共识。

工作机制

按论文的描述,DPO 的核心是对 RLHF 中的奖励模型做重新参数化,使得对应的最优策略能够以闭式形式导出。由此,原本需要「拟合奖励模型 + 强化学习最大化奖励」的两段式流程,被改写成一个可以直接在偏好数据上优化的目标。论文将其概括为「只需一个简单的分类损失」即可求解标准 RLHF 问题。可以分几个要点理解:

  • 输入是偏好数据。训练数据由成对的比较构成,即同一个提示(prompt)下,被标注为更优的回答与被标注为较差的回答。论文提到,这类数据正是已有对齐方法所收集的人类对生成结果相对质量的标注。
  • 不再显式训练奖励模型。论文的出发点是「你的语言模型本身就是一个隐藏的奖励模型」——奖励信息被隐含在策略模型自身的概率分布中,因此无需单独拟合一个奖励模型再交给强化学习使用。
  • 用分类式损失直接优化策略。由于最优策略有闭式解,训练目标退化为一个简单的分类损失,直接对语言模型参数做梯度更新。
  • 训练期不需要在线采样。论文称 DPO 在微调过程中无需从语言模型采样,这与需要反复采样并评估奖励的强化学习流程形成对比。

在工程实现层面,Hugging Face 的 TRL 官方文档提供了 DPO Trainer,用于按该论文所述方法训练语言模型。文档说明,DPO 需要偏好数据集,DPOTrainer 同时兼容标准格式与会话式(conversational)数据集格式;当传入会话式数据集时,训练器会自动为其应用聊天模板。文档给出的标准格式示例中,一条样本包含 promptchosenrejected 三个字段,例如提示为「The sky is」,被选中的回答为「 blue.」,被拒绝的回答为「 green.」。文档还说明,该后训练方法由 Kashif Rasul 贡献,后由 Quentin Gallouédec 重构。

典型例子

论文中报告的具体实验场景包括:

  • 情感控制。论文称,用 DPO 微调在控制生成文本情感的能力上超过了基于 PPO 的 RLHF。
  • 摘要任务。论文称 DPO 在摘要任务上匹配或提升了回答质量。
  • 单轮对话。论文称 DPO 在单轮对话上匹配或提升了回答质量。

论文同时强调,在上述场景中 DPO 的实现与训练都显著更简单。这些结论均出自该论文自身的实验设置,不应被推广为对所有任务、所有模型规模都成立的普遍结论。

在工具层面,TRL 官方文档给出的快速上手示例是:从 trl 导入 DPOTrainer,用 datasetsload_dataset 加载 trl-lib/ultrafeedback_binarized 数据集的训练划分,以 Qwen/Qwen3-0.6B 作为模型,构造训练器后调用 train()。文档还提到,DPO 需要偏好数据集,并给出了标准格式中显式提示(explicit prompt)的写法,即同时提供 promptchosenrejected 三个字段。

边界与常见误解

第一,DPO 不是「不需要偏好数据」的方法。论文与 TRL 文档都表明,它依赖成对的偏好比较数据;没有这类标注,就无从构造其训练目标。TRL 文档明确写道「DPO requires a preference dataset」。

第二,DPO 不等于 RLHF 的完全替代品。论文的表述是它把标准 RLHF 问题转化为分类损失来求解,并声称在若干任务上达到或超过已有方法;这属于该论文的实验主张,而非已被普遍验证的定论。论文中「稳定、性能良好、计算轻量」等描述同样是作者对其方法的评价。

第三,不应把「无需从语言模型采样」误解为「训练成本可以忽略」。论文的说法是消除了微调期间从语言模型采样的需要,并免去大量超参数调优;这并不等于训练不需要算力,也不等于不需要任何超参数设置。

第四,DPO 的适用性受任务与数据分布约束。论文报告的是情感控制、摘要和单轮对话等场景的结果,这些结果不能直接外推到多轮交互、工具调用或需要在线探索的任务上。

第五,关于实现细节,应以具体框架的文档为准。TRL 文档描述的是该库中 DPOTrainer 的接口与数据格式约定,属于该库的实现说明,不代表 DPO 方法本身的唯一实现方式。

参考资料