实际项目中如何选择 DPO 还是 PPO?
简化版
DPO 直接用离线偏好对优化策略与参考模型的相对概率,不需要单独训练奖励模型和在线 rollout,工程简单、稳定,适合高质量静态偏好数据。PPO 先训练奖励模型,再在线采样并按奖励优化,能探索当前策略的新输出和组合复杂奖励,但系统、算力与稳定性成本更高。选型看数据形态、是否需要在线探索、奖励可否可靠建模和团队基础设施,而不是认为某个算法永远更先进。
详细版
DPO 适合迭代周期短、偏好对充足、策略变化不需持续重新采样的场景;PPO 适合环境可交互、需要优化多步行为或必须针对当前策略在线采样的场景。二者都需要参考约束、防奖励投机和能力回归评测。
| 维度 | DPO | PPO |
|---|---|---|
| 数据 | 离线 chosen/rejected | 在线 rollout + reward |
| 组件 | 策略、参考模型 | 策略、参考、奖励、价值模型 |
| 稳定性 | 通常更易训练 | 对超参和奖励尺度敏感 |
| 探索 | 受离线数据限制 | 可采样当前策略行为 |
实践中先建立同一基线、数据和评测,以小规模实验比较安全、帮助性、KL、成本和回退。静态单轮偏好通常从 DPO 起步;复杂 Agent 轨迹、可验证奖励或动态分布才考虑 PPO/其他在线 RL。算法选型不能弥补脏数据和错误奖励。
完整版教学
一、两者解决同一目标的路径不同
都希望让优选回答概率高于劣选回答,同时不要远离参考模型太多。DPO 将奖励模型和策略优化关系推导进一个分类式目标;PPO 显式训练奖励模型并把生成看作强化学习轨迹。
差异带来完全不同的工程系统,而不仅是一个 loss 函数替换。选型应先问数据和反馈如何获得。
记忆钩子:DPO 吃现成偏好对,PPO 边生成边按奖励学习;离线简单与在线探索是主分界。
二、DPO 的训练信号
对同一 prompt 的 chosen y_w 与 rejected y_l,DPO 提高两者相对 log probability 差,并与参考模型比较。简化表示为:
L_DPO = -log σ(β[(logπ(yw|x)-logπ(yl|x))
-(logπref(yw|x)-logπref(yl|x))])
β 控制偏好强度与偏离参考的权衡。DPO 无需在线 rollout,训练管线接近监督学习,但仍需同时加载或预计算参考 log probability。
它无法看到偏好数据没有覆盖的新行为,分布外效果受数据边界限制。
三、PPO 的在线优化链路
PPO 用当前策略对 prompt 采样回答,奖励模型评分,再通过 clipped objective 和 KL 等约束更新策略,通常还需价值模型估计 advantage。
prompt -> current policy rollout -> reward model
-> advantage/value -> PPO update -> new policy
策略变化后重新采样,使训练信号跟随当前分布;代价是 rollout 昂贵、组件多、奖励尺度和策略更新容易不稳。
四、数据静态还是环境交互
若已有百万级高质量偏好对,任务是单轮回答风格与安全边界,DPO 往往是高性价比起点。若 Agent 在多步环境中行动、最终结果可执行验证,在线 RL 可从真实轨迹学习信用分配。
但“在线”不等于上线对真实用户探索。通常在沙箱或模拟器 rollout,避免未对齐策略产生现实副作用。
偏好对可持续刷新时,DPO 也能迭代;只是每轮要重新采样、标注并构建离线数据。
五、奖励模型能力决定 PPO 上限
PPO 会主动寻找高奖励输出,因此奖励模型的小漏洞会被放大。若奖励偏好长回答,策略可能不断变长;若奖励只识别拒答模板,策略会过度拒绝。
假设奖励模型在普通验证集准确率 75%,看似可用,但策略产生的极端分布可能远离验证集。必须用在线样本做人审、监控 reward 与真实偏好的相关性,并限制 KL 与更新幅度。
DPO 也会学习偏好数据偏差,只是没有显式在线搜索奖励漏洞,风险形式不同。
六、稳定性与基础设施成本
PPO 需要协调生成服务、奖励模型、参考模型、价值模型和分布式训练;rollout 长度不一,吞吐与显存管理复杂。超参包括 clipping、KL 系数、GAE、奖励归一等。
DPO 训练更像普通 batch 优化,失败面较少,容易复现。但长序列同时计算 chosen/rejected 与参考概率,显存成本仍不可忽视。
| 工程项 | DPO | PPO |
|---|---|---|
| 在线生成 | 非必需,可离线准备 | 训练循环持续需要 |
| 辅助模型 | 参考模型 | 奖励、价值与参考模型 |
| 关键稳定项 | β、数据质量、长度偏差 | clipping、KL、advantage、奖励尺度 |
| 主要排障对象 | 偏好对与概率差 | rollout、奖励、策略和价值网络 |
团队若没有可靠 rollout 与在线监控基础设施,直接上 PPO 的工程风险可能超过算法收益。
七、如何做公平实验
使用同一 SFT 起点、同等偏好来源、相近训练 token 和统一评测。比较最终安全、帮助性、能力回归、KL 距离、训练 GPU 时、推理行为和人工偏好。
例如 DPO 胜率提升 8 点、成本 100 GPU 小时;PPO 提升 10 点、成本 600 GPU 小时且回退更大。多出的 2 点是否值得,要结合任务价值和维护成本。
不要拿调好超参的 DPO 与默认 PPO 比,至少给两者合理搜索预算并报告方差。
八、常见组合与升级路径
可先 SFT 建立基础行为,再 DPO 快速吸收离线偏好;若后续发现复杂多步任务无法覆盖,再在验证沙箱中引入 PPO 或带可验证奖励的 RL。
也可以周期性用当前策略采样新偏好对,再继续 DPO,这介于纯静态和持续在线优化之间。选择不是永久绑定,应随着数据与环境成熟升级。
无论算法,都保留参考模型、检查点、灰度和回滚,并做奖励投机红队。
九、常见误区与追问
- 误区:DPO 完全不需要奖励信息。 偏好对本身就是隐式奖励信号。
- 误区:PPO 一定比 DPO 上限高。 奖励模型与基础设施不足时可能更差。
- 误区:DPO 稳定就不会过拟合偏好。 β、数据偏差和训练强度仍会导致回退。
- 误区:在线 RL 应直接在真实用户上探索。 高风险行为应在沙箱和受控环境采样。
- 误区:算法能弥补错误标签。 两者都会放大系统性偏好偏差。
- 追问:单轮客服优先选什么? 若有高质量静态偏好对,通常先 DPO 验证收益。
- 追问:多步 Agent 为什么更倾向 RL? 最终结果奖励需跨多步分配,在线轨迹能覆盖当前策略行为。
- 追问:如何监控过优化? 看 reward 与人评背离、KL、长度、拒答和能力回归曲线。
十、加强记忆
DPO 与 PPO 选型记住“数据、探索、奖励、工程”:DPO 用离线成对偏好直接优化,简单稳定但受数据覆盖限制;PPO 用当前策略 rollout 和奖励模型更新,能探索却更贵、更易奖励投机。静态单轮任务先用 DPO,复杂可交互轨迹才为在线 RL 付出成本;最终以同起点公平实验的真实人评、安全与能力回归决定。