这道题的核心不是背一句“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 不是默认流水线;只有第二阶段确实有更合适的在线奖励时,增加这层复杂度才有意义。