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 · 场景切入
假设我们要做一个智能客服的摘要生成模型,用户反馈数据很多,偏好很明确。你会选 DPO 还是 PPO 来对齐?别急着说选哪个,先聊聊各自的优缺点。
- 问法 2 · 层层追问
大模型对齐你用过哪些方法?……RLHF 那一套呢,PPO 你了解吧?……那 DPO 呢,知道它怎么绕过奖励模型的吗?……好,那你觉得这两种方法从原理到实际落地,核心差异在哪?
- 问法 3 · 直球架构
请从算法原理、实现复杂度、训练稳定性和效果表现四个维度,直接对比 DPO 和 PPO 在大模型对齐中的应用差异。