【基础知识】DPO(Direct Preference Optimization)的原理以及公式是怎样的?

news/2024/5/18 21:47:38 标签: 大模型, 强化学习, Human Feedback

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

1.基本原理

DPO(Direct Preference Optimization)的核心思想是直接优化语言模型(LM)以符合人类偏好,而不是首先拟合一个奖励模型然后使用强化学习(RL)进行优化。这是通过对偏好学习问题进行重新参数化来实现的,其中使用了一个简单的二元交叉熵目标函数来直接从人类偏好中训练LM。下面是DPO方法的数学推导核心步骤:

1.1 基本概念

首先,假设我们有一个预训练的语言模型 π ref \pi_{\text{ref}} πref和一组人类对模型生成结果的偏好数据。我们的目标是训练一个新的策略模型 π \pi π,使其生成的输出更符合人类的偏好。

1.2 引入奖励模型

在传统的RLHF(Reinforcement Learning from Human Feedback)框架中,人类的偏好被用来训练一个奖励模型 r r r,该模型预测人类对于给定输入和输出对的偏好强度。然后,使用RL算法优化语言模型以最大化这个预测的奖励。

1.3 直接偏好优化(DPO)

DPO的关键创新是避免显式训练奖励模型,而是直接根据人类的偏好来优化语言模型。为了实现这一点,我们首先定义一个基于偏好的目标函数,直接将人类的偏好转化为模型训练的损失函数。

具体来说,如果人类偏好偏向于两个潜在输出中的一个 y 1 y_1 y1相对于 y 2 y_2 y2,我们可以使用以下的二元交叉熵损失函数来直接优化语言模型 π \pi π
L ( π ) = − ∑ ( x , y 1 , y 2 ) ∈ D [ p ( y 1 ≻ y 2 ∣ x ) log ⁡ π ( y 1 ∣ x ) + ( 1 − p ( y 1 ≻ y 2 ∣ x ) ) log ⁡ ( 1 − π ( y 1 ∣ x ) ) ] L(\pi) = - \sum_{(x, y_1, y_2) \in D} \left[ p(y_1 \succ y_2 | x) \log \pi(y_1 | x) + (1 - p(y_1 \succ y_2 | x)) \log (1 - \pi(y_1 | x)) \right] L(π)=(x,y1,y2)D[p(y1y2x)logπ(y1x)+(1p(y1y2x))log(1π(y1x))]
其中, p ( y 1 ≻ y 2 ∣ x ) p(y_1 \succ y_2 | x) p(y1y2x)表示在给定输入 x x x的情况下,人类偏好 y 1 y_1 y1胜过 y 2 y_2 y2的概率, D D D是包含输入和偏好对的数据集。

通过最小化这个损失函数,模型学习直接从人类偏好中产生更受偏好的输出,而无需间接地通过奖励模型。

1.4 实现细节

在实践中, π \pi π可以通过对预训练的语言模型进行微调来实现。微调的过程中,调整模型参数以最小化上述损失函数,使模型输出与人类偏好更加一致。

1.5 总结

DPO方法的关键在于直接利用人类偏好数据来优化语言模型,从而避免了RLHF流程中奖励模型拟合和RL优化的复杂性和不稳定性。这种方法简化了偏好学习的过程,降低了实现的复杂性,并有可能提高模型根据人类偏好生成输出的效率和准确性。


2. 详细公式

论文中的Direct Preference Optimization (DPO)公式推导涉及几个重要步骤,主要是从基于偏好的学习问题到直接优化策略的转变。以下是关键公式推导的详细步骤:

2.1 强化学习目标与KL约束

强化学习中,常见的目标是最大化期望奖励,同时可能希望优化后的策略不要与原始策略偏离太远。这可以通过KL散度(Kullback-Leibler divergence)来约束,形成如下优化问题:

max ⁡ π E x ∼ D , y ∼ π ( ⋅ ∣ x ) [ r ( x , y ) ] − β D K L ( π ( ⋅ ∣ x ) ∣ ∣ π ref ( ⋅ ∣ x ) ) \max_{\pi} \mathbb{E}_{x \sim D, y \sim \pi(\cdot|x)} [r(x, y)] - \beta D_{KL}(\pi(\cdot|x) || \pi_{\text{ref}}(\cdot|x)) πmaxExD,yπ(x)[r(x,y)]βDKL(π(x)∣∣πref(x))

其中, r ( x , y ) r(x, y) r(x,y)是奖励函数, π ( ⋅ ∣ x ) \pi(\cdot|x) π(x)是策略, π ref ( ⋅ ∣ x ) \pi_{\text{ref}}(\cdot|x) πref(x)是参考策略(例如预训练的语言模型), β \beta β是一个权衡因子。

2.2 从奖励函数到优化策略的转变

文章提出了一种方法,通过改变变量将奖励优化问题直接转化为策略优化问题。核心思想是将奖励函数 r ( x , y ) r(x, y) r(x,y)与策略 π ( ⋅ ∣ x ) \pi(\cdot|x) π(x)之间建立一个显式的函数关系。假设存在这样的映射,使得优化后的策略 π ∗ \pi^* π可以直接从奖励函数中获得,即:

π ∗ ( y ∣ x ) = π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) Z ( x ) \pi^*(y|x) = \frac{\pi_{\text{ref}}(y|x) \exp(\frac{1}{\beta} r(x, y))}{Z(x)} π(yx)=Z(x)πref(yx)exp(β1r(x,y))

  • π ref ( y ∣ x ) \pi_{\text{ref}}(y|x) πref(yx)代表参考策略,通常是预训练的语言模型提供的策略。
  • β \beta β是一个控制策略偏离参考策略程度的参数。
  • Z ( x ) Z(x) Z(x)是归一化常数,确保 π ∗ ( y ∣ x ) \pi^*(y|x) π(yx)为概率分布。

其中, Z ( x ) Z(x) Z(x)是归一化因子,确保 π ∗ ( y ∣ x ) \pi^*(y|x) π(yx)是一个有效的概率分布。

Z ( x ) Z(x) Z(x)具体是什么?

在DPO方法中, Z ( x ) Z(x) Z(x)是一个归一化常数,也称为配分函数(partition function)。它确保了由奖励函数 r ( x , y ) r(x, y) r(x,y)和参考策略 π ref ( y ∣ x ) \pi_{\text{ref}}(y|x) πref(yx)转换得到的最优策略 π ∗ ( y ∣ x ) \pi^*(y|x) π(yx)是一个有效的概率分布。具体来说, Z ( x ) Z(x) Z(x)的表达式为:

Z ( x ) = ∑ y π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) Z(x) = \sum_{y} \pi_{\text{ref}}(y|x) \exp\left(\frac{1}{\beta} r(x, y)\right) Z(x)=yπref(yx)exp(β1r(x,y))

其中:

  • x x x是给定的输入(如文本、状态等)。
  • y y y遍历所有可能的输出(如文本的可能续写、动作的可能选择等)。
  • π ref ( y ∣ x ) \pi_{\text{ref}}(y|x) πref(yx)是参考策略(如预训练语言模型)在给定输入 x x x时输出 y y y的概率。
  • r ( x , y ) r(x, y) r(x,y)是对输入 x x x和输出 y y y的奖励函数,反映了这对输入输出的偏好程度或质量。
  • β \beta β是一个正则化参数,控制策略偏离参考策略的程度。
Z ( x ) Z(x) Z(x)的作用

Z ( x ) Z(x) Z(x)的作用主要有两点:

  1. 归一化:通过除以 Z ( x ) Z(x) Z(x),确保了 π ∗ ( y ∣ x ) \pi^*(y|x) π(yx)的所有可能输出 y y y的概率之和为1,满足概率分布的基本要求。
  2. 调整权重:通过与 exp ⁡ ( 1 β r ( x , y ) ) \exp\left(\frac{1}{\beta} r(x, y)\right) exp(β1r(x,y))的乘积形式,将奖励函数 r ( x , y ) r(x, y) r(x,y)转换为概率的权重,再通过归一化调整这些权重,使得高奖励的输出在新的策略 π ∗ ( y ∣ x ) \pi^*(y|x) π(yx)中获得更高的概率。
Z ( x ) Z(x) Z(x)的物理意义

在物理学中,配分函数在统计力学中扮演核心角色,用于描述系统在不同状态下的概率分布。在机器学习和特别是强化学习中,配分函数的概念被借鉴来确保策略或概率模型的归一化,并在某种程度上反映了系统状态的“能量”分布。

通过这样的转换和归一化过程,DPO方法能够将奖励函数直接映射到策略优化上,有效地利用人类的偏好数据来指导模型的训练,无需经过复杂的奖励模型学习和强化学习优化步骤。

这一转变的关键

这一步的关键在于将奖励函数 r ( x , y ) r(x, y) r(x,y)与策略 π ∗ ( y ∣ x ) \pi^*(y|x) π(yx)之间建立直接的关系,从而可以直接对策略进行优化。DPO方法利用偏好数据和一个简单的分类损失函数来优化策略 π ∗ ( y ∣ x ) \pi^*(y|x) π(yx),而不是通过估计奖励函数和随后的RL过程。

这种转变的优势在于:

  • 简化了学习流程:避免了学习一个中间的奖励模型和使用复杂的强化学习算法。
  • 效率和稳定性:直接优化策略更高效,避免了RL中的不稳定性和收敛问题。
  • 理论上的优雅:提供了从人类偏好直接提取策略的理论依据,使得这一过程更加直接和理论上可解释。

通过这种方法,DPO能够在不牺牲性能的情况下,简化偏好学习的流程,提高学习效率和稳定性。

2.3 直接优化策略

在确定了 π ∗ ( y ∣ x ) \pi^*(y|x) π(yx) r ( x , y ) r(x, y) r(x,y)之间的关系后,可以直接通过最大化偏好数据上的似然来优化策略,而不需要显式地拟合一个奖励函数。具体地,给定人类偏好数据 D = { ( x i , y i , 1 , y i , 2 ) } i D = \{(x_i, y_{i,1}, y_{i,2})\}_i D={(xi,yi,1,yi,2)}i,其中 y i , 1 y_{i,1} yi,1是偏好于 y i , 2 y_{i,2} yi,2的回答,我们可以最大化如下目标:

max ⁡ π ∑ i log ⁡ σ ( 1 β log ⁡ π ( y i , 1 ∣ x i ) π ( y i , 2 ∣ x i ) ) \max_{\pi} \sum_i \log \sigma \left( \frac{1}{\beta} \log \frac{\pi(y_{i,1}|x_i)}{\pi(y_{i,2}|x_i)} \right) πmaxilogσ(β1logπ(yi,2xi)π(yi,1xi))

这里, σ ( ⋅ ) \sigma(\cdot) σ()是逻辑Sigmoid函数,该目标直接优化策略 π \pi π以便在给定偏好数据上表现更好。

结论

通过这样的推导,DPO方法能够绕过显式的奖励模型学习和复杂的强化学习过程,直接通过简单的分类损失来优化语言模型的策略,使其更好地符合人类的偏好。这种方法不仅简化了偏好学习的流程,还在实验中显示出与现有方法相当或更优的性能。


http://www.niftyadmin.cn/n/5421573.html

相关文章

数据分析-Pandas如何画图验证数据随机性

数据分析-Pandas如何画图验证数据随机性 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表…

部署 Web 项目到Linux上

目录 环境配置 构建项目 ​编辑 数据准备 运行并查看日志 杀掉进程 把程序安装到生产环境上, 这个过程称为 "部署",也叫 "上线"。一旦程序部署成功, 那么这个程序就能被外网中千千万万的普通用户访问到。 环境配置 程序配置文件修改 实…

《计算机网络》考研:2024/3/7 2.1.4 奈氏准则和香农定理

2024/3/7 (作者转行去干LLMs了,但是又想搞定考研,忙不过来了就全截图了呜呜呜。。。 生活真不容易。) 2.1.4 奈氏准则与香农定理

【JavaScript】面试手撕深拷贝

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 引入深拷贝的作用深浅拷贝的区别浅拷贝深拷贝 深拷贝实现方式JSON.parse(JSON.str…

leetcode32最长有效括号

leetcode32最长有效括号 难点一动态规划栈 难点一 找出最长有效括号子串长度(连续且格式正确) ((())) (()()) (() (()()) ) 动态规划 显然有效的子串一定以 ‘)’结尾。 因此我们可以知道以 ‘(’结尾的子串对应的dp 值必定为 0 。 我们只需要求解 ‘…

电子通信基础详解

文章目录 电子通信基础详解1. 并行通信与串行通信2. 同步通信与异步通信3. 单工通信,双工通信与半双工通信4. 电平信号和差分信号5. 波特率 电子通信基础详解 学习电子通信知识前,需要对明白如下理解基础概念 : 1. 并行通信与串行通信 按照…

yudao-mall-uniapp电商商城App平台:基于 Vue + Uniapp 的全功能开源电商平台实现(更新版)

yudao-mall-uniapp电商商城App平台:基于 Vue Uniapp 的全功能开源电商平台实现 摘要: 本文主要介绍了yudao-mall-uniapp电商商城App平台,一个基于 Vue 和 Uniapp 技术的全功能开源电商平台。文章首先概述了yudao-mall-uniapp电商商城App平台…

在ubuntu上安装FastSufer【本机安装】

亲测:FastSurfer分割并重建一个大脑需要1个小时,而freeSurfer需要8个小时。确实很快! 这里我在网页端搭建了一个小的工具包,里面集成了经典的freeSurfer和较快的FastSurfer。如果你不想安装或者手头没有linux设备,您也可以直接从以下网址直接使用,跳过繁琐的安装步骤!!…