真实面经题目 · 原创解析
DPO 是什么,和 SFT 在训练目标、数据形式和适用阶段上有什么区别?
SFT 和 DPO 都用于大模型训练后的对齐阶段,但目标不同。SFT 是让模型学习应该怎么回答的示范答案,DPO 是让模型学习同一问题下更偏好哪一个回答。SFT 更偏能力和格式学习,DPO 更偏偏好对齐、风格控制和质量排序。
SFT 是 Supervised Fine-Tuning,监督微调,本质是给模型大量输入和标准输出的示范样本,让模型学习在某类任务下应该如何回答。例如用户问一个商家经营问题,训练数据里给出专家认可的标准分析,模型就学习回答结构、表达方式和任务能力。DPO 是 Direct Preference Optimization,直接偏好优化。它不是给一个标准答案,而是给同一个输入下的一对回答:chosen 和 rejected,也就是更好的答案和更差的答案。训练目标是提高模型输出 chosen 的相对概率,降低输出 rejected 的相对概率,让模型更符合人类或业务偏好。标准 DPO 不显式训练单独的 reward model,也不跑 PPO 式在线 rollout,但仍利用 chosen/rejected 偏好对,并通过参考模型约束来优化模型对偏好回答的相对概率。通常先用 SFT 让模型具备垂类任务能力和基本输出格式,再用 DPO 做偏好对齐,优化安全性、语气、事实克制、业务规则遵循和用户体验。SFT 解决会不会做、格式对不对,DPO 解决多个可行答案中更应该选哪种。
SFT 使用单条监督样本,形式通常是 prompt 和理想 answer。它让模型模仿高质量示范,学习领域知识表达、任务步骤、输出格式、工具调用格式和基本回答风格。对于垂类落地,SFT 常用于把通用模型改造成能完成特定业务任务的助手。
DPO 使用偏好数据,形式通常是同一个 prompt 下的 chosen/rejected pair。它不只是告诉模型一个答案,而是告诉模型哪类答案更符合偏好。偏好可以来自人工标注、专家评审、线上反馈或规则筛选,常用于优化语气、风险边界、事实克制、回答完整性和业务一致性。
SFT 的目标是最大化标准答案的似然,让模型更像示范数据;DPO 的目标是拉开 chosen 与 rejected 的相对概率差距,让模型偏向更优回答。实践中通常先 SFT,再 DPO。没有 SFT 基础时,模型可能还不会做任务;只有 SFT 没有偏好优化时,模型可能能答但不够符合业务偏好。
PPO 属于 RLHF 路线,通常需要奖励模型和强化学习优化,链路复杂、训练不稳定风险更高。DPO 直接用偏好对进行优化,不显式训练单独的奖励模型,工程实现更简洁,但仍依赖参考模型约束和高质量偏好数据。如果偏好数据质量差、chosen/rejected 差异不清晰,模型会学到错误偏好。
如果模型还没有掌握垂类任务格式和基础能力,DPO 只能告诉它哪个答案相对更好,却很难系统教会它怎么完成任务。SFT 更适合打基础,DPO 更适合在已有能力上做偏好校准。
通常对同一个问题准备两个回答,一个 chosen、一个 rejected。来源可以是人工专家比较、线上 badcase 改写、不同模型生成结果对比、规则筛选后的好坏样本。关键是 pair 的差异要清晰,偏好标准要一致。
DPO 可以降低某些过度自信、胡编乱造的倾向,前提是偏好数据明确奖励克制、引用依据和拒答。但事实性问题的根本治理还需要 RAG、工具调用、知识库更新和评测监控。
RLHF/PPO 通常先训练奖励模型,再用强化学习优化模型输出,流程复杂。DPO 直接用偏好对优化模型,让 chosen 相对 rejected 概率更高,并通过参考模型约束变化幅度,因此工程链路更简洁。