Direct Preference Optimization (DPO): 一种无需强化学习的语言模型偏好优化方法
论文地址:https://arxiv.org/pdf/2305.18290
1. 背景与挑战
近年来,大规模无监督语言模型(LM)在知识获取和推理能力方面取得了显著进展,但如何精确控制其行为仍是一个难题。 现有的方法通常通过**强化学习从人类反馈(RLHF)**来引导模型行为,但RLHF存在以下问题:
- 复杂性高:RLHF需要先训练一个奖励模型来反映人类偏好,然后使用强化学习来微调语言模型,使其在最大化奖励的同时不偏离原始模型太远。
- 不稳定性:RLHF训练过程复杂且容易不稳定,需要大量超参数调优和采样。
- 计算成本高:RLHF涉及训练多个模型和在训练循环中采样,消耗大量计算资源。
2. DPO:一种更简单、更高效的方法
为了解决上述问题,本文提出了一种名为 Direct Preference Optimization (DPO) 的新算法,直接从人类偏好数据中优化语言模型,而无需显式的奖励建模或强化学习。
2.1 DPO 的核心思想
DPO 的核心思想是:
- 将偏好学习问题转化为一个简单的二元分类问题:DPO 通过最大化人类偏好的对数概率,同时最小化不偏好的对数概率,来直接优化语言模型。
- 引入动态重要性权重:为了防止模型退化,DPO 引入了基于隐式奖励模型的动态重要性权重,该权重根据模型对偏好的排序错误程度进行调整。
2.2 DPO 的工作原理
-
构建偏好数据集:从参考模型(通常是经过监督微调的语言模型)中采样生成多个候选响应,并使用人类偏好数据对它们进行标注,生成偏好对 ( y w , y l ) (y_w, y_l) (yw,yl),其中 y w y_w yw 表示更受偏好的响应, y l y_l yl 表示较不受偏好的响应。
-
定义 DPO 损失函数:
L D P O ( π θ ; π r e f ) = − E ( x , y w , y l ) ∼ D [ log σ ( β log π θ ( y w ∣ x ) π r e f ( y w ∣ x ) − β log π θ ( y l ∣ x ) π r e f ( y l ∣ x ) ) ] \mathcal{L}_{\mathrm{DPO}}(\pi_{\theta};\pi_{\mathrm{ref}}) = -\mathbb{E}_{(x,y_{w},y_{l})\sim\mathcal{D}}\left[\log\sigma\left(\beta\log\frac{\pi_{\theta}(y_{w}\mid x)}{\pi_{\mathrm{ref}}(y_{w}\mid x)}-\beta\log\frac{\pi_{\theta}(y_{l}\mid x)}{\pi_{\mathrm{ref}}(y_{l}\mid x)}\right)\right] LDPO(πθ;πref)=−E(x,yw,yl)∼D[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]
- π θ \pi_{\theta} πθ:待优化的语言模型。
- π r e f \pi_{\mathrm{ref}} πref:参考模型,通常是初始的监督微调模型。
- β \beta β:控制 KL 散度的超参数,用于平衡奖励最大化与模型偏离程度。
- σ \sigma σ: sigmoid 函数,将输入映射到 (0,1) 之间。
该损失函数鼓励模型生成更受偏好的响应,同时惩罚生成不受偏好的响应。
-
优化模型:
DPO 通过梯度下降法优化上述损失函数,更新模型参数 θ \theta θ。 梯度计算如下:
∇ θ L D P O ( π θ ; π r e f ) = − β E ( x , y w , y l ) ∼ D [ σ ( r ^ θ ( x , y l ) − r ^ θ ( x , y w ) ) ( ∇ θ log π ( y w ∣ x ) − ∇ θ log π ( y l ∣ x ) ) ] \nabla_{\theta}\mathcal{L}_{\mathrm{DPO}}(\pi_{\theta};\pi_{\mathrm{ref}}) = -\beta\mathbb{E}_{(x,y_{w},y_{l})\sim\mathcal{D}}\left[\sigma\big(\hat{r}_{\theta}(x,y_{l})-\hat{r}_{\theta}(x,y_{w})\big)\left(\nabla_{\theta}\log\pi(y_{w}\mid x)-\nabla_{\theta}\log\pi(y_{l}\mid x)\right)\right] ∇θLDPO(πθ;πref)=−βE(x,yw,yl)∼D[σ(r^θ(x,yl)−r^θ(x,yw))(∇θlogπ(yw∣x)−∇θlogπ(yl∣x))]
其中, r ^ θ ( x , y ) = β log π θ ( y ∣ x ) π r e f ( y ∣ x ) \hat{r}_{\theta}(x,y) = \beta\log\frac{\pi_{\theta}(y|x)}{\pi_{\mathrm{ref}}(y|x)} r^θ(x,y)=βlogπref(y∣x)πθ(y∣x) 表示隐式奖励模型。
- 当隐式奖励模型对偏好排序错误时,权重 σ ( r ^ θ ( x , y l ) − r ^ θ ( x , y w ) ) \sigma\big(\hat{r}_{\theta}(x,y_{l})-\hat{r}_{\theta}(x,y_{w})\big) σ(r^θ(x,yl)−r^θ(x,yw)) 更大,这意味着模型会更多地关注那些排序错误的样本,从而更有效地纠正错误。
- 梯度更新方向:增加偏好响应的对数概率,同时减少不偏好响应的对数概率。
3. DPO 的优势
- 无需显式奖励建模:DPO 直接从偏好数据中学习,无需训练单独的奖励模型,简化了训练流程。
- 无需强化学习:DPO 使用简单的二元交叉熵损失进行优化,避免了强化学习带来的复杂性和不稳定性。
- 计算效率高:DPO 训练过程更高效,消耗的计算资源更少。
- 性能优越:实验表明,DPO 在控制生成文本的情感、摘要生成和对话生成等任务上,性能优于或至少与现有的 RLHF 方法相当。
4. 实验结果
4.1 情感生成任务
在控制情感生成任务中,DPO 在奖励-KL 散度边界上表现优异,能够在保持低 KL 散度的同时,实现更高的奖励,优于 PPO 等方法。

4.2 摘要生成任务
在 TL;DR 摘要生成任务中,DPO 的胜率(与参考摘要相比)达到 61%,高于 PPO 的 57%。 此外,DPO 对采样温度的鲁棒性更强,而 PPO 的性能在高温下会下降。

4.3 对话生成任务
在 Anthropic HH 对话数据集上,DPO 是唯一一种在计算效率高的前提下,能够超越首选完成度的方法,并且其性能与计算成本更高的 Best of 128 基线相当。
4.4 泛化能力
在将 PPO 和 DPO 策略应用于不同分布(CNN/DailyMail 新闻文章)时,DPO 仍然优于 PPO,表明 DPO 策略具有较好的泛化能力。
4.5 GPT-4 评估与人类评估的一致性
为了验证 GPT-4 评估的可靠性,本文进行了人类研究,发现 GPT-4 的判断与人类判断的一致性较高,表明 GPT-4 是人类评估的合理代理。
5. 讨论与未来方向
- DPO 策略的泛化能力:DPO 策略在不同分布上的表现如何?与从显式奖励函数中学习相比如何?
- 奖励过度优化问题:DPO 中是否存在奖励过度优化问题?图 3 中性能的轻微下降是否是其表现?
- DPO 的可扩展性:DPO 能否扩展到更大规模的模型?
- GPT-4 评估的改进:如何更好地从自动化系统中获取高质量的判断?
- DPO 的其他应用:DPO 的应用范围可以扩展到其他模态的生成模型训练。
6. 总结
DPO 是一种无需强化学习的语言模型偏好优化方法,具有以下优势:
- 简化训练流程:无需显式奖励建模和强化学习。
- 计算效率高:训练过程更高效,消耗资源更少。
- 性能优越:在多个任务上表现优于或至少与现有的 RLHF 方法相当。
DPO 为训练更强大的、对齐的语言模型提供了一种更简单、更高效的方法。
相关文章:
Direct Preference Optimization (DPO): 一种无需强化学习的语言模型偏好优化方法
论文地址:https://arxiv.org/pdf/2305.18290 1. 背景与挑战 近年来,大规模无监督语言模型(LM)在知识获取和推理能力方面取得了显著进展,但如何精确控制其行为仍是一个难题。 现有的方法通常通过**强化学习从人类反馈&…...
跟我学C++中级篇——容器的连接
一、数据的整合 在实际的开发场景中,经常可以遇到以下的情况:有几个地方的数据需要整合在一起。解决办法也有很多,在不同的层面有不同的解决方式。比如经过清洗可以把非关系型数据转为关系型数据。但在底层编程的情况中会发现有几情况&#…...
java求职学习day15
多线程 1 基本概念 1.1 程序和进程的概念 (1)程序 - 数据结构 算法,主要指存放在硬盘上的可执行文件。 (2)进程 - 主要指运行在内存中的可执行文件。 (3)目前主流的操作系统都支持多进程&a…...
【脚本】如何禁用谷歌浏览器自动更新
这里写自定义目录标题 问题描述解决方法代码 问题描述 最近更新系统以后,发现chrome老是自己更新,导致我的代码也得跟着他更新,就跟一个拜托不掉的狗皮膏药一样。 解决方法 于是我写了一个脚本,以下代码都是bash代码࿰…...
【Linux】华为服务器使用U盘安装统信操作系统
目录 一、准备工作 1.1 下载UOS官方系统 1.2制作启动U盘 1.3 服务器智能管理系统iBMC 二、iBMC设置U盘启动 一、准备工作 1.1 下载UOS官方系统 服务器CPU的架构是x86-64还是aarch64),地址:统信UOS生态社区 - 打造操作系统创…...
WPF3-在xaml中引用其他程序集的名称空间
1. 如何在XAML里引用类库中的名称空间和类2. 小结 1. 如何在XAML里引用类库中的名称空间和类 首先需要记住一点:把类库引用到项目中是引用其中名称空间的物理基础,无论是C#还是XAML都是这样。 一旦将一个类库引用进程序,就可以引用其中的名…...
Python 在Word中添加、或删除超链接
在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超链接,用户可以轻松地导航到相关信息,从而增强文档的互动性和可读性。本文将介绍如何使用Python在Word中添加超链接、或删除Word文档中的超…...
基于 WPF 平台使用纯 C# 实现动态处理 json 字符串
一、引言 在当今的软件开发领域,数据的交换与存储变得愈发频繁,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,以其简洁、易读、便于解析和生成的特点,被广泛应用于各种应用程序中。在 W…...
「全网最细 + 实战源码案例」设计模式——单例设计模式
核心思想: 属于创建型设计模式,核心目的是确保一个类在整个程序运行期间只有一个实例,并提供一个全局访问点来获取该实例。 控制共享资源的访问(如数据库链接、配置管理、日志处理器等) 真实世界类比:政府…...
第01章 19 通过点数据逐级构建球体体数据的综合性小例子
用VTK库来创建一个三维图像数据(vtkImageData),并填充标量数据以表示一个球体的体数据。球的半径为50,体数据的空间间隔为1.0/1000。 首先,我需要包含VTK的头文件,并且创建一个vtkImageData对象。然后&…...
CVE-2024-23897-Jenkins任意文件读取漏洞复现
content Jenkins是什么CVE-2024-23897总结修复建议 Jenkins是什么 Jenkins是一人基于Java开发的、可扩展的持续集成引擎,用于持续、自动地构建/测试软件项目,可以监控一些定时执行的任务。 官网文档: Jenkins是一款开源 CI&CD 软件&…...
前端react后端java实现提交antd form表单成功即导出压缩包
前端(React Ant Design) 1. 创建表单:使用<Form>组件来创建你的表单。 2. 处理表单提交:在onFinish回调中发起请求到后端API,并处理响应。 import React from react; import { Form, Input, Button } from ant…...
基于ESP32的桌面小屏幕实战[6]:环境搭建和软件基础
摘要 本文分为两部分:Linux开发环境搭建和软件基础。Linux开发环境搭建介绍了Ubuntu虚拟机安装及SSH、Samba配置,可以实现用VSCode操作虚拟机。为了后续工作,搭建了乐鑫ESP32 SDK环境。软件基础介绍了Linux开发常用的软件基础,包…...
接口(完)
大家好,今天我们着重来总结一下接口的知识,并且将接口和抽象类的区别罗列一下,帮助我们更好的认识抽象类和接口。 2.7 抽象类和接口的区别. 抽类和接口都是Java中多态的常见使用方式,都需要重点掌握,同时又要认清两者的区别(重要!!…...
数据结构——实验七·排序
欢迎各位大佬们来到Tubishu的博客🌟 Tubishu是一名计算机本科生,不定期发送一些在学校的成果供佬们消遣~希望能为佬的编程之路添砖加瓦⭐🔥 求各位大佬们垂怜🔥点赞评论一下呗🔥🔥 本文专栏 ➡️ 数据结构 …...
JVM堆空间
JVM(Java虚拟机)堆空间是Java内存管理的核心区域之一,用于存储Java对象实例。以下是关于JVM堆空间的详细介绍: 1. 堆空间的作用 • 存储对象实例:几乎所有的Java对象实例(通过new关键字创建的对象…...
【详细】SSH公私钥认证与渗透测试攻击场景
SSH(Secure Shell)是一个用于远程登录和执行命令的网络协议,其认证方式通常有两种:基于密码的认证和基于公私钥的认证。本文将详细介绍SSH公私钥认证机制,并探讨在渗透测试场景中,如何利用对靶机具有读取和…...
常见的多媒体框架(FFmpeg GStreamer DirectShow AVFoundation OpenMax)
1.FFmpeg FFmpeg是一个非常强大的开源多媒体处理框架,它提供了一系列用于处理音频、视频和多媒体流的工具和库。它也是最流行且应用最广泛的框架! 官方网址:https://ffmpeg.org/ FFmpeg 的主要特点和功能: 编解码器支持: FFmpe…...
C++异步future
🌎 C11异步futrue 文章目录: C11异步futrue future介绍 应用场景 future操作 std::async函数模版 std::packaged_task类模版 std::promise类模版 🚀future介绍 std::future是C11标准库…...
Oracle 12c 中的 CDB和PDB的启动和关闭
一、简介 Oracle 12c引入了多租户架构,允许一个容器数据库(Container Database, CDB)托管多个独立的可插拔数据库(Pluggable Database, PDB)。本文档旨在详细描述如何启动和关闭CDB及PDB。 二、容器数据库 (CDB) 2.1…...
别再只用Service了!ROS1 Action通信保姆级教程:从导航进度条到任务取消,手把手教你实现带反馈的机器人任务
别再只用Service了!ROS1 Action通信保姆级教程:从导航进度条到任务取消,手把手教你实现带反馈的机器人任务当你的机器人正在执行一个长达10分钟的导航任务时,突然发现目标点设置错误,这时候如果只能干等着任务完成或者…...
【DeepSeek开源协议识别权威指南】:20年合规专家亲授3大协议陷阱与5步精准识别法
更多请点击: https://intelliparadigm.com 第一章:DeepSeek开源协议识别的底层逻辑与合规价值 DeepSeek系列模型(如DeepSeek-V2、DeepSeek-Coder)虽以“开源”名义发布,但其实际许可状态需通过结构化协议解析才能准确…...
QMCDecode终极指南:3步解锁QQ音乐加密格式,实现跨平台音乐自由
QMCDecode终极指南:3步解锁QQ音乐加密格式,实现跨平台音乐自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目…...
2026智慧校园规划必读:如何在预算吃紧下选到高性价比方案
✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…...
第三卷第4章:原型模式设计思想
第三卷第4章:原型模式设计思想 目录介绍 01.案例引入与思考 1.1 痛点场景 1.2 它哪里不舒服 1.3 引出本篇主角 02.原型模式介绍 2.1 原型模式由来 2.2 原型模式定义...
从RD、CS到WK:一文讲透SAR主流成像算法的演进与选型实战
从RD、CS到WK:SAR成像算法选型实战指南 当无人机掠过灾区上空,或卫星扫描地球表面时,合成孔径雷达(SAR)正通过电磁波穿透云层和黑暗,将地面信息转化为高分辨率图像。而决定图像质量的关键,在于工…...
Postgresql基础实践教程(九)
⭐️⭐️⭐️⭐️⭐️ 完整数据详见 练习数据免费 ⭐️⭐️⭐️⭐️⭐️ 七十二、WITH查询(公用表表达式CTE) 1. SELECT 中的 WITH 2. 递归查询 3. 公用表表达式的物化 4. WITH中的数据修改语句 WITH提供了一种在主查询中写辅助语句的方法。这些语…...
从零构建FOC轮腿机器人:开源平衡机器人完整指南
从零构建FOC轮腿机器人:开源平衡机器人完整指南 【免费下载链接】foc-wheel-legged-robot Open source materials for a novel structured legged robot, including mechanical design, electronic design, algorithm simulation, and software development. | 一个…...
基于C#实现(WinForm)P2P聊天程序
♻️ 资源 大小: 29.8MB ➡️ 资源下载:https://download.csdn.net/download/s1t16/87430269 p2p聊天程序 一、功能介绍 1.1 登录 用户凭用户名和密码登录系统,可以更换服务器 IP 和端口,以防网络不畅通,连接服务…...
【2026实测】怎么提高论文原创度?盘点8款主流降AI工具,附结构级优化指南
写文章最怕碰到什么,是辛辛苦苦自己码出来的字,却被标了极高的AI值。目前很多文本审核机制对内容的原创度要求极高,纯手写的初稿也可能因为句式太工整被判定为机器生成的。 为了帮几个快被这事折腾疯了的学弟学妹找条出路,我花了…...
