DPO直接偏好函数的学习解读

DPO, Direct Preference Optimization,采用直接优化策略满足人类偏好,使得LLM对于给定输入,生成能用输出的概率高于生成不能用输出的概率。

1)DPO优化目标

在DPO训练过程中,模型通过最大化可用回答相对于不可用回答的偏好分数的对数似然来优化。

L_{DPO}(\theta) = \mathbb{E}_{(x, y_w, y_l) \sim D} [log \sigma(\beta \cdot r(x, y_w, y_l))]

其中:

D是偏好数据集。

σ是sigmoid函数。

β控制KL散度惩罚项强度的超参数,平衡模型生成高质量响应和保持与参考模型接近之间的关系。

优化目标是通过最小化损失 L_DPO 来增大模型对好回答 𝑦_𝑤的偏好,同时降低对差回答 𝑦_𝑙的偏好。这导致模型倾向于提升 𝑦_𝑤的概率,同时抑制 𝑦_𝑙 的概率。

2)DPO奖励函数

DPO奖励函数

r(x, y_w, y_l) = {log{\frac{\pi_{\theta}(y_w|x)}{\pi_{\text{ref}}(y_w|x)}}}-{log{\frac{\pi_{\theta}(y_l|x)}{\pi_{\text{ref}}(y_l|x)}}}

3)传统RL奖励函数

对于一个给定策略π_θ,其生成响应y的奖励函数r(x,y)由策略模型π_θ与参考模型π_ref(通常是SFT后模型)之间的对数概率比表示。

r(x, y) \propto log \frac{​{\pi_{\theta}}(y|x)}{​{\pi_{\text{ref}}}(y|x)}

传统RL奖励函数r(x, y)是策略优化中KL散度惩罚的一个重要结果,在RL中加入KL惩罚项,即最大化

\mathbb{E}[reward - \beta KL(\pi_{\theta}||\pi_{\text{ref}})]

时,最优策略πθ∗的形式为:

{\pi}_{\theta}^{*}(y|x) \propto {\pi}_{\text{ref}}(y|x)exp(\frac{1}{\beta}r(x, y))

从这个式子反推得到奖励函数r(x,y),与策略模型与参考策略的对数概率比成正比关系。

4)DPO学习解读

从DPO优化目标和奖励函数可见,DPO样本的输入和输出为prompt + chosen + rejected,prompt用x表示,chosen表示的是可用输出,rejected表示的是不可用输出。通过最大化DPO目标函数,直接鼓励模型生成更偏好的响应,同时惩罚生成不偏好的响应,无需显式地训练一个奖励模型。

reference

---

DPO在代码优化任务上性能糟糕的原因分析

https://inuyashayang.github.io/AIDIY/RLHF_Pages/DPO_Problem/

深度强化学习中的DPO算法:理论与实践

https://juejin.cn/post/7511915154032967706

Direct Preference Optimization: Your Language Model is Secretly a Reward Model

[2305.18290] Direct Preference Optimization: Your Language Model is Secretly a Reward Model

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85673.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源初探】基于 Qwen2.5VL的文档解析工具:docext

源码地址: https://github.com/NanoNets/docext 概述 docext 是一个由视觉语言模型(vlm)提供支持的全面的本地文档智能工具包。vlm 使用的是基于 Qwen2.5VL-3B 的模型,应该是在此模型基础上进行的微调。 它提供了三个核心功能&…

Python 正确重载运算符(增量赋值运算符)

增量赋值运算符 Vector 类已经支持增量赋值运算符 和 * 了,如示例 13-15 所示。 示例 13-15 增量赋值不会修改不可变目标,而是新建实例,然后 重新绑定 >>> v1 Vector([1, 2, 3]) >>> v1_alias v1 # ➊ >>> …

XCUITest + Objective-C 详细示例

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】

redis分布式锁 Redisson在电商平台开发中的实际应用

目录 概述 Redis分布式锁的实现方式 1. 基于SETNX命令(String类型) 2. 使用SET命令的NX和EX参数(推荐方式) 3. 基于Lua脚本实现复杂逻辑 4. RedLock算法(多节点Redis实现) Redisson的分布式锁 Redis…

joomla 使用nginx服务器只能打开首页,其他页面404的解决方案

最近一个客户将Joomla4网站从原先的Apache服务器改为Nginx服务器,整个过程一切顺利,但还原网站后发现只能打开首页,其他页面都是404。这个问题需要修改nginx的配置文件来解决。 伪静态 在Apache中使用.htaccess来完成伪静态路由的转发&…

湖北理元理律师事务所企业债务纾困路径:司法重整中的再生之道

中小企业债务危机常呈现“担保链扩散”特征,单一债务可能引发企业崩盘。湖北理元理律师事务所通过预重整制度与企业债务重组技术,探索出“司法保护商业谈判”的纾困模式。 一、企业债务风险处置四步法 紧急止血 申请司法保护:通过诉前调解…

利用DeepWiki高效阅读项目源码

想获取更多高质量的Java技术文章?欢迎访问Java技术小馆官网,持续更新优质内容,助力技术成长 技术小馆官网 DeepWiki 是一个强大的工具,专为程序员提供开源项目源码的结构化文档和 AI 驱动的问答功能,帮助快速理解复杂…

django rest_framework 前端网页实现Token认证

rest_framework提供了几种认证方式:Session、Token等。Session是最简单的,几乎不用写任何代码就可以是实现,Token方式其实也不复杂,网上的教程一大把,但是最后都是用Postman这类工具来实现API调用的,通过这…

面试题-函数类型的重载是啥意思

在 TypeScript 中,函数重载(Function Overload) 是指为同一个函数提供多个不同的调用签名(参数类型和返回值类型的组合),但函数体只有一个实现。这样可以让函数在不同的输入下表现出不同的行为,…

磐基PaaS平台MongoDB组件SSPL许可证风险与合规性分析(上)

#作者:任少近 文章目录 1.背景与问题1.1.背景1.2.问题 3.SSPL条款解读分析3.1.条款0:定义条款3.2.条款一:源代码条款3.3.条款二:基本授权条款3.4.条款三:反规避保护条款3.5.条款四:逐字传播条款3.6.条款五…

「Linux文件及目录管理」输入输出重定向与管道

知识点解析 输入/输出重定向 标准输入(stdin):默认从键盘读取,文件描述符为0。标准输出(stdout):默认输出到终端,文件描述符为1。标准错误(stderr):默认输出到终端,文件描述符为2。重定向符号: >:覆盖输出到文件(如command > file)。>>:追加输出…

【Node】最佳Node.js后端开发模板推荐

Node.js 后端开发模板推荐 以下是几个优秀的Node.js后端模板,它们都适合二次开发,各自有不同的特点和适用场景: 1. Express基础模板 Express Generator (官方工具) 官方提供的快速搭建工具基础MVC结构简单易上手 npm install express-ge…

HALCON相机标定

相机标定简介: 首先,相机会产生畸变,即实际图像和拍摄图像不一致,可以是凸性也可以是凹性形变,相机标定的过程就是将畸变图像还原为原始图像,并将图像中的像素坐标转换为世界坐标。 形如:相机内…

Solidity 入门教程(二):值类型全解 —— 布尔、整数、地址与字节数组

在上一章中,我们写下了第一个 Solidity 合约并在 Remix 中成功运行。本章我们将深入了解 Solidity 中的几种常用值类型(Value Types),并通过示例代码在 Remix 进行验证。 一、Solidity 中的三种数据类型 在 Solidity 中&#xf…

16.大数据监控

0.说明 监控主要构成。 软件版本。 1.exporter监控配置 1.1 node_exporter 启动命令 nohup ./node_exporter &服务 创建文件 /etc/systemd/system/node_exporter.service: [Unit] DescriptionPrometheus Node Exporter Wantsnetwork-online.target Aft…

Tomcat项目本地部署(Servlet为例)

在Windows上部署 在idea中打开项目 首先我们需要准备一个Servlet项目,我之前的Servlet项目是用eclipse写的,这种情况下如果用idea直接打开的话会出现左侧目录无法显示的情况,这个时候我们就需要用别的方法打开 打开项目管理 如下图&#…

安装MySQL 5.7导入数据,修改密码,创建账号并授权

1. 准备工作 sudo yum update -y sudo yum install -y wget libaio numactl 2. 下载 MySQL 5.7 二进制包 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz 3. 创建 MySQL 用户和组 sudo groupadd mysql sudo useradd -r -g m…

基础RAG实现,最佳入门选择(八)

RAG重排序 RAG重排序技术以提高RAG系统中的检索质量。重新排序充当初始检索后的第二个过滤步骤,以确保最相关的内容用于响应生成。 重排序的关键概念 1.初始检索:使用基本相似度搜索的第一遍(准确度较低但速度更快) 2.文档评分…

Spring Boot 常用注解整理

Spring & Spring Boot 常用注解整理 现代的 Spring 与 Spring Boot 应用大量使用注解来简化配置、管理组件和实现各种框架功能。本文系统整理了常用的 Spring/Spring Boot 注解,按照功能分类进行介绍。每个注解都会涵盖其含义、提供来源、应用场景以及代码示例…

深入理解 Cross-Entropy 损失函数:从原理到实践

在深度学习中,损失函数是衡量模型性能的关键指标之一。对于多分类问题,Cross-Entropy 损失函数 是最常用的选择之一。它不仅能够有效衡量模型输出与真实标签之间的差异,还能通过梯度下降法指导模型的优化。本文将深入探讨 Cross-Entropy 损失…