当前位置: 首页 > ops >正文

直接偏好优化(DPO):用更简单的方法让 AI 更符合人类偏好

直接偏好优化(DPO):用更简单的方法让 AI 更符合人类偏好

发布时间:2025年4月17日|作者:Ivan Provilkov、Zain Hasan、Max Ryabinin

我们非常高兴宣布,Together 的微调平台现在支持 Direct Preference Optimization(DPO)技术!这是一种让语言模型(如 ChatGPT)更贴近人类喜好的方法,让 AI 回答更准确、有帮助,也更有礼貌。下面是对这个技术的简单介绍。


语言模型的训练分三步:

  1. 预训练:用海量网络数据训练出通用模型。
  2. 监督微调(SFT):用高质量例子让模型更适应特定任务。
  3. 偏好微调(比如 DPO):让模型学会更符合人类喜好的回答方式。

什么是 DPO?

DPO 是一种用人类偏好来优化模型的方式,它比传统的 RLHF(从人类反馈中强化学习)简单很多。

你只需要三样东西:

  • 一段输入(问题或指令)
  • 一个更好的回答(人类偏好的)
  • 一个不太好的回答

DPO 会训练模型更倾向于生成好答案,而避免生成差答案。

举个例子:

假设用户问:“罗马帝国是怎么崛起的?” 好答案可能是详细解释历史背景,不好答案可能是一个很简单的总结。

DPO 就是教模型:“以后像好答案那样回答,不要像差答案那样。”


类比:像改进菜谱一样

想象你是个厨师,模型就是你的一本菜谱。DPO 的训练方法就像根据顾客的反馈,改进你做菜的方式——更偏向大家喜欢的做法,避免他们不喜欢的做法。但你不会完全推翻原来的菜谱,而是在原有基础上做优化。

调节参数 β(贝塔)控制你可以改多少:

  • 数值小 → 改得多
  • 数值大 → 改得少

DPO 和 RLHF 有什么不同?

方法描述
RLHF训练一个“美食评论家”(奖励模型),再用复杂的算法(比如 PPO)调整模型。过程复杂,训练慢。
DPO不用奖励模型,直接用好/坏答案做训练,方法简单、效率更高。

DPO 像直接根据顾客的喜好改菜谱,而不是请一个评论家反复评分再调整。


最佳实践:先做 SFT,再做 DPO

最好的做法是两步走:

  1. 先用 SFT 训练模型学会基本任务(比如怎么写总结、怎么写代码)。
  2. 然后用 DPO 让模型更懂“哪种方式更受欢迎”。

这种方法能得到效果更好的模型。


什么时候该用 DPO?

DPO 适合以下情况:

  1. Prompt 不够好用时:提示词可以引导模型,但不稳定,成本高。DPO 更直接。
  2. 人类更容易比较答案,而不是创造答案时:人们更擅长挑哪个好,而不是写出最完美答案。
  3. 对已有模型做小优化时:模型已经不错,只需要调整风格、语气、准确性等。

DPO 适合的任务:

应用原因
聊天机器人优化对话风格,特别适合特定场景(如心理、医疗、角色扮演等)
总结写作人类可以轻松比较哪个摘要更好
代码生成不同风格的代码都可能正确,偏好重要
问答任务多种答案都可以,但人类有偏好
写作辅助写作风格主观性强,DPO 有用

不适合的任务:

  • 数学计算
  • 信息提取
  • 工具调用 这些任务通常只有唯一正确答案。

如何开始使用 DPO?

我们提供了代码示例(notebook),你可以直接上手尝试。

关键参数是 --dpo-beta

  • 数值越小,模型改变越多(偏向好答案)
  • 数值越大,模型保留原有行为更多

监控训练时,可以关注两个指标:

  • 准确率:模型选对好答案的频率
  • KL散度:新模型和原模型差异的大小

通过 DPO,开发者可以更轻松地让 AI 更符合用户需求,更友好、更靠谱。欢迎你试试看!

http://www.xdnf.cn/news/9565.html

相关文章:

  • 文件上传之图片马文件头绕过(upload-labs通关笔记-第14关)
  • 时序预测力作PatchMixer论文理解
  • 5.28本日总结
  • [蓝帽杯 2022 初赛]网站取证_2
  • 第十五届蓝桥杯大赛软件赛国赛Python 大学 C 组试做【本期题单: 设置密码、栈】
  • Docker安装 | Spug
  • 【Linux】systemctl 和 sysctl 的区别
  • 常见的文件夹操作(附源码)
  • uni-app开发特殊社交APP
  • 战略3.4 - 研究与开发战略、生产运营战略
  • C++ string 相关的函数
  • 字符串day8
  • 制造业数字化转型之路:再造盈利模式,重塑客户价值
  • 深入理解JavaScript设计模式之call,apply,this
  • 【LangGraph 入门指南】为智能代理打造灵活可控的工作流框架
  • 运维三剑客——sed
  • Redis 的内存回收机制
  • HAWQ 取代传统数仓实践(十八) —— 层次维度
  • DeePNAP:一秒预测蛋白-DNA/蛋白-RNA结合强度
  • 安装nginx
  • Qt使用智能指针
  • 桌面系统核桃派部署自启服务
  • 传感器技术的演进与测试方法探究
  • 数据科学 vs. 大数据:一场“烧脑”但有温度的较量
  • Spring AI 多模型智能协作工作流实现指南
  • AI Agent开发第76课-Dify N8n一类的AI流程“出轨“时会爆发什么样的工程灾难
  • 用python制作一个打地鼠游戏
  • 主要国产数据库及其典型应用场景
  • 每天掌握一个Linux命令 - ps
  • 多因素身份鉴别组合方案及应用场景