跳到正文

DPO vs PPO 怎么选?

大模型对齐中两种 RLHF 方法在原理、稳定性、效果上的对比

原题:请比较直接偏好优化(DPO)与基于人类反馈的强化学习(PPO)在大模型对齐中的应用,从算法原理、实现复杂度、训练稳定性和效果表现等方面进行分析。

RLHF与对齐 · 阿里真题

回答与解析

核心区别:反馈信号和训练闭环不同

PPO(经典 RLHF 路线)

  • 训练时通常涉及策略模型、冻结参考模型、奖励模型和价值函数/critic;具体实现可以共享部分骨干,但不能简单概括成固定的“三模型”
  • 策略在线采样回答,奖励模型给分,价值函数估计优势,PPO 用裁剪目标更新策略,并通过 KL 约束控制它偏离参考模型的幅度
  • 能直接优化标量奖励或可程序化验证的反馈,但采样与多组件协同让成本和调参难度都更高

DPO(直接偏好优化)

  • 使用成对偏好数据 chosen/rejected,训练一个策略模型,并读取冻结参考模型的对数概率;不需要单独训练奖励模型,也不需要价值函数和在线 rollout
  • 通过 Bradley-Terry 偏好模型与 KL 正则化 RL 目标的重参数化,把偏好学习写成一个二元分类形式的损失
  • 工程链路更接近监督微调,但它对神经网络参数的优化仍然是非凸的,不能说“DPO 损失是凸的”

四维度对比

维度 PPO DPO
算法原理 on-policy 采样后按奖励和优势更新策略 在固定偏好对上提高 chosen 相对 rejected 的隐式奖励差
实现复杂度 高:rollout、奖励模型、价值函数、KL 和多模型显存都要管理 较低:无需奖励模型与在线采样,但仍要维护参考模型或其缓存概率
训练稳定性 对奖励尺度、KL、优势估计和采样分布敏感 通常更容易训练,但仍受 beta、标注噪声、长度偏差、参考模型和过拟合影响
效果表现 适合有可靠标量奖励、在线反馈或需要随当前策略持续采样的任务 适合已有高质量离线偏好对、预算有限、需要快速迭代的任务

选型判断

优先 DPO

  • 已有覆盖目标分布的高质量偏好对,偏好边界清晰
  • 希望复用 SFT 训练设施,减少奖励模型和在线采样成本
  • 能通过留出集、长度分桶和人工抽检持续监控偏好过拟合

考虑 PPO 或其他在线 RL 方法

  • 有可信的奖励模型、环境反馈或可验证奖励,并且希望用当前策略持续产生新样本
  • 任务包含多轮决策,需要根据执行结果更新策略,而不只是拟合一批静态偏好对
  • 团队能承担 rollout、价值函数、KL 控制、reward hacking 监控和回滚成本

数学、代码、长文本并不会天然决定必须用 PPO;真正的分界是反馈信号是否可靠、是否需要在线采样,以及团队能否控制训练和奖励风险。DPO 后再接 PPO 也不是固定流程,只有第二阶段确实存在更合适的在线奖励时才值得增加这层复杂度。

口语版讲法(约4分钟)

  • 先看反馈来源和是否需要在线采样
  • PPO 的四类逻辑组件与训练闭环
  • DPO 的重参数化思路和非凸边界
  • 比较组件、成本和稳定性
  • 按业务反馈选型并设置风险护栏

这道题的核心不是背一句“DPO 简单、PPO 上限高”,而是判断你的反馈信号来自哪里,以及训练时要不要让当前策略持续生成新样本。我的结论是:有高质量、覆盖目标分布的离线偏好对,优先考虑 DPO;有可信的标量奖励或环境反馈,而且确实需要在线采样,再考虑 PPO。

先把组件说准确。经典 RLHF 的 PPO 阶段通常有策略模型、冻结参考模型、奖励模型和价值函数或 critic。它们在实现上可能共享部分骨干,但逻辑角色有四个。策略先生成回答,奖励模型给分,价值函数估计优势,PPO 用裁剪目标更新策略,再用 KL 惩罚限制它不要离参考模型太远。这个流程要不断 rollout、打分和更新,所以显存、吞吐、稳定性监控都比较重。

DPO 不训练独立奖励模型,也不做在线 rollout。它拿同一提示下的 chosen 和 rejected,用 Bradley-Terry 偏好模型加上策略相对参考模型的对数概率比,直接写出一个分类形式的损失。训练时有一个可训练策略和一个冻结参考模型,参考模型也可以通过预计算概率降低开销。这里必须讲清楚:DPO 的目标形式更简单、经验上通常更好训,但对神经网络参数的优化仍然是非凸的,不能说它的损失函数是凸优化。

工程复杂度上,DPO 更接近 SFT,容易复用现有训练链路;PPO 还要处理 rollout 服务、奖励尺度、优势估计、KL 系数和多模型资源。稳定性上,PPO 容易遇到 reward hacking、奖励飙升但人工质量下降、价值函数估计不准等问题;DPO 也不是没有坑,它会受 beta、偏好噪声、回答长度、参考模型选择和过拟合影响。两者谁效果更好,没有脱离数据和评测集的固定答案。

举个客服场景。如果已经积累了大量“同一用户问题下,A 回复优于 B 回复”的人工偏好对,而且线上分布比较稳定,我会先用 DPO,成本低、迭代快。但如果系统会真实调用退款、风控等工具,结果可以形成可靠的成功率、合规分或用户后续行为奖励,并且希望模型根据新策略产生的轨迹继续学习,PPO 或其他在线 RL 方法才更有价值。数学、代码和长文本并不会天然决定必须用 PPO,关键还是有没有可靠奖励和在线闭环。

上线前我会给两套方案设不同护栏。DPO 要按长度和业务类型分桶看胜率,保留留出偏好集,人工抽检 chosen/rejected 是否真的有差异;PPO 要同时看奖励、KL、回复长度、拒答率和真实人工胜率,发现奖励上涨但人工质量下降就立刻回滚。

可延伸的一点是 beta 怎么选。它控制策略相对参考模型的偏离强度,还会和标注噪声、长度偏差一起影响结果。面试官继续问时,我会从离线胜率、人工盲评和分桶指标解释,而不是只报一个固定参数。

所以我的选型顺序是:先确认反馈信号,再看是否需要在线采样,最后评估团队能否承担奖励模型和 rollout 的成本。DPO 后再接 PPO 不是默认流水线;只有第二阶段确实有更合适的在线奖励时,增加这层复杂度才有意义。

关键一句:DPO的偏好数据标注质量如何保证,以及标注偏差对对齐效果的影响。

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设我们要做一个智能客服的摘要生成模型,用户反馈数据很多,偏好很明确。你会选 DPO 还是 PPO 来对齐?别急着说选哪个,先聊聊各自的优缺点。

  2. 问法 2 · 层层追问

    大模型对齐你用过哪些方法?……RLHF 那一套呢,PPO 你了解吧?……那 DPO 呢,知道它怎么绕过奖励模型的吗?……好,那你觉得这两种方法从原理到实际落地,核心差异在哪?

  3. 问法 3 · 直球架构

    请从算法原理、实现复杂度、训练稳定性和效果表现四个维度,直接对比 DPO 和 PPO 在大模型对齐中的应用差异。

同模块相关题目