模型微调DPO算法原理深入学习和理解

文章目录

  • 说明
  • [一 强化学习微调DPO算法](#一 强化学习微调DPO算法)
    • [1.1 RLHF的核心问题与解决](#1.1 RLHF的核心问题与解决)
    • [1.2 DPO优化算法核心思想和要点](#1.2 DPO优化算法核心思想和要点)
  • [二 RLHF的目标函数](#二 RLHF的目标函数)
    • [2.1 奖励项](#2.1 奖励项)
    • [2.2 KL散度约束项](#2.2 KL散度约束项)
    • [2.3 RLHF目标函数综合理解](#2.3 RLHF目标函数综合理解)
  • [三 最优策略公式的推导与含义](#三 最优策略公式的推导与含义)
    • [3.1 最优策略公式的推导](#3.1 最优策略公式的推导)
    • [3.2 最优策略公式的含义分析](#3.2 最优策略公式的含义分析)
    • [3.3 具体案例场景理解](#3.3 具体案例场景理解)
  • [四 最优策略下奖励函数的表达](#四 最优策略下奖励函数的表达)
    • [4.1 最优策略下奖励函数的推导](#4.1 最优策略下奖励函数的推导)
    • [4.2 新奖励函数在偏好对比中的应用](#4.2 新奖励函数在偏好对比中的应用)
    • [4.3 DPO的核心发现](#4.3 DPO的核心发现)
    • [4.4 奖励函数的重要性](#4.4 奖励函数的重要性)
  • [五 从奖励表达式到偏好概率](#五 从奖励表达式到偏好概率)
    • [5.1 Bradley-Terry模型与偏好概率的Sigmod形式](#5.1 Bradley-Terry模型与偏好概率的Sigmod形式)
    • [5.3 Bradley-Terry模型的偏好概率公式](#5.3 Bradley-Terry模型的偏好概率公式)
    • [5.4 Bradley-Terry模型偏好概率公式的核心意义](#5.4 Bradley-Terry模型偏好概率公式的核心意义)
    • [5.5 实际训练过程](#5.5 实际训练过程)
  • [六 DPO损失函数](#六 DPO损失函数)
    • [6.1 DPO损失函数的推导](#6.1 DPO损失函数的推导)
    • [6.2 训练算法的完整执行步骤](#6.2 训练算法的完整执行步骤)
  • [七 策略学习类型详解](#七 策略学习类型详解)
    • [7.1 同策略 vs 异策略](#7.1 同策略 vs 异策略)
    • [7.2 在线 vs 离线](#7.2 在线 vs 离线)
  • [八 DPO和PPO、RLHF对比](#八 DPO和PPO、RLHF对比)
    • [8.1 PPO VS DPO](#8.1 PPO VS DPO)
    • [8.2 DPO VS 传统RLHF](#8.2 DPO VS 传统RLHF)
  • [九 DPO+其他训练策略](#九 DPO+其他训练策略)
    • [9.1 SFT(监督微调) & DPO](#9.1 SFT(监督微调) & DPO)
    • [9.2 RLAIF(AI反馈的强化学习) & DPO](#9.2 RLAIF(AI反馈的强化学习) & DPO)
    • [9.3 SPIN(自我改进)& DPO](#9.3 SPIN(自我改进)& DPO)

说明

  • 本文部分内容整理学习自网络资源,同时部分内容进行完善和优化,仅供学习和交流,最终著作权归原作者所有。
  • 本文中关于公式推导是完整的,部分公式的推导可能存在一定难度,希望各位不要放弃,建议按照章节顺序阅读,感受DPO完整的推导流程和使用方式。

一 强化学习微调DPO算法

  • 为了提升模型的性能,引入强化学习(RL)进行微调,代表性方法是RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)。

1.1 RLHF的核心问题与解决

  • 传统RLHF(基于人类反馈的强化学习)方法虽然在大模型微调取得显著成功,但同时面临严重挑战:
    1. 流程繁琐:需要三个阶段 - SFT微调、奖励模型训练和RL优化
    2. 资源密集:需要同时加载多个大型模型(Actor模型、参考模型、奖励模型)
    3. 计算昂贵:需要反复采样和评估,大量GPU时间
    4. 训练不稳定:PPO算法不容易收敛,需要精细调参,尤其是在奖励信号稀疏或不一致时。
    5. 工程复杂:实现难度大,调试困难。

DPO(直接偏好优化)通过以下方式简化和解决RLHF的问题:

  • 数学转换:DPO发现巧妙的数学变换,将RLHF两阶段过程转化为单一损失函数。
  • 无需显式奖励模型:利用最优策略与奖励的数学关系,DPO证明了可以跳过奖励模型训练。
  • 直接使用偏好数据:DPO直接从成对的偏好数据学习,避免了中间奖励模型。
  • 隐式KL约束:DPO在损失函数中包含KL散度约束,无需额外处理。
  • 简化实现:转化为标准监督学习形式,可以使用常规的优化器和训练流程。
  • 训练稳定性提升:避免RL训练中的不稳定性问题。
  • 计算效率更高:无需多次采样和评估,大大降低了计算成本。

DPO的核心创新在于将"语言模型暗藏着奖励模型"这一理论洞见转化为实用的训练方法,使得模型对齐过程变得更加简单、高效和稳定。

  • DPO 与 RLHF 的对比
特性 RLHF DPO
人工反馈依赖 需要大量的人工标注和反馈 通过已有的排序数据训练,无需大量人工标注
训练稳定性 训练过程可能不稳定,尤其是奖励信号不一致时 通过直接优化偏好排序,训练过程更稳定
训练成本 高,需要大量的人工参与 低,因为无需人工标注反馈和奖励模型
优化目标 依赖复杂的奖励模型进行优化 直接优化生成文本的排序偏好
应用灵活性 适用于多种应用,但高成本和复杂 适合需要低成本、快速稳定训练的场景

  • DPO(Direct Preference Optimization 直接偏好优化)的核心突破在于发现在特定条件下,最优策略与奖励函数之间存在明确的数学映射关系

  • 为了相较于RLHF需要构建复杂的奖励模型并进行强化学习优化的复杂流程,DPO采用直接优化生成文本偏好 来进行训练,简化RLHF的流程。。不仅降低了训练成本,还减少了训练过程中的不稳定性。

  • 具体来说,如果有参考模型 π r e f π_{ref} πref和奖励函数 r r r,最优策略 π ∗ π^* π∗满足:
    r ( x , y ) = β log ⁡ π r ( y ∣ x ) π ref ( y ∣ x ) + β log ⁡ Z ( x ) Z ( x ) 是归一化常数, β 是温度参数 r(x, y) = \beta \log \frac{\pi_r(y \mid x)}{\pi_{\text{ref}}(y \mid x)} + \beta \log Z(x) \\ Z(x)是归一化常数,β是温度参数 r(x,y)=βlogπref(y∣x)πr(y∣x)+βlogZ(x)Z(x)是归一化常数,β是温度参数

  • 如果知道最优策略与参考策略的对数概率比,就能反推出奖励函数。这个发现颠覆传统RLHF的思路:传统RLHF的执行流程为先学习奖励函数,再优化策略。DPO直接从人类偏好学习最优策略,跳过奖励建模阶段。

1.2 DPO优化算法核心思想和要点

  • DPO(Direct Preference Optimization) ,本质上讲,是一种优化方法 ,而不是一个传统意义上的"算法"或"流程"。它专注于通过优化文本生成的偏好排序来训练模型,以提高模型的输出质量。它是一种基于排序的优化思想,提升模型生成的质量。

  • 它的核心思想是:通过直接优化生成文本的排序偏好,使得模型生成的文本更符合人类的需求或特定的标准,而不依赖于复杂的奖励模型或强化学习。尤其适用于大规模语言模型的训练和优化。使得模型训练更加快速、稳定,并且减少了对人工反馈的依赖。


DPO的核心要点

  1. 偏好排序(Preference Ordering):DPO 的目标是通过优化模型生成的文本与人类期望的文本之间的偏好排序来进行训练。假设有一组文本,DPO根据某些标准(比如流畅性、相关性等)对文本进行排序。然后,通过学习如何生成更符合这种排序的文本来进行优化。
  2. 无需奖励建模:DPO不需要一个复杂的奖励模型。DPO通过直接利用排序数据来优化模型,无需复杂的奖励函数。
  3. 优化目标:DPO的优化目标是使模型生成的文本尽可能符合给定的偏好排序。例如,如果给定一个文本集合,DPO会根据这些文本的优劣顺序来训练模型,使得模型生成的文本与偏好的顺序更加一致。

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

直接偏好优化:你的语言模型其实是一个奖励模型

二 RLHF的目标函数

max ⁡ π θ E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ϕ ( x , y ) ] − β D KL [ π θ ( y ∣ x ) ∥ π ref ( y ∣ x ) ] \max_{\pi_\theta} \mathbb{E}{x \sim \mathcal{D}, y \sim \pi\theta(y \mid x)} [r_\phi(x, y)] - \beta \mathbb{D}{\text{KL}}[\pi\theta(y \mid x) \parallel \pi_{\text{ref}}(y \mid x)] πθmaxEx∼D,y∼πθ(y∣x)[rϕ(x,y)]−βDKL[πθ(y∣x)∥πref(y∣x)]

  • 为方便理解,将这个公式放在滑雪游戏场景下进行理解和分析。在滑雪游戏中:
    • 山顶的位置 = 输入问题( x x x)
    • 滑行路线 = 模型生成的回答( y y y)
    • 得分系统 = 奖励模型( r ϕ r_\phi rϕ)
    • 初始训练的滑行技巧 = 参考模型( π ref \pi_{\text{ref}} πref)
    • 目前正在学习的滑行技巧 = 当前策略( π θ \pi_\theta πθ)

2.1 奖励项

E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ϕ ( x , y ) ] \mathbb{E}{x \sim \mathcal{D}, y \sim \pi\theta(y \mid x)} [r_\phi(x, y)] Ex∼D,y∼πθ(y∣x)[rϕ(x,y)]

  • 滑雪游戏中的含义是平均而言,使用当前的滑雪技巧能获得的分数

具体过程:

  1. 滑雪练习者小吴随机选择山顶某个位置(输入 x x x)
  2. 使用当前的滑雪技巧选择一条下山路线(生成回答 y y y)
  3. 裁判(奖励模型 r ϕ r_\phi rϕ)根据表现给分:平稳流畅的滑行得高分、路线选择得当得高分、优雅的姿势得高分、摔倒或危险动作扣分。
  4. 最终取所有可能起点和路线的平均得分

优化目标:改进滑雪技巧,使得平均得分最高 ,这对应于让模型学会生成高质量回答。

2.2 KL散度约束项

β D KL [ π θ ( y ∣ x ) ∥ π ref ( y ∣ x ) ] \beta \mathbb{D}{\text{KL}}[\pi\theta(y \mid x) \parallel \pi_{\text{ref}}(y \mid x)] βDKL[πθ(y∣x)∥πref(y∣x)]

滑雪游戏中的含义:不要偏离基础滑雪训练太远

具体含义:

  1. 滑雪练习者小吴已接受基础滑雪训练(参考模型 π ref \pi_{\text{ref}} πref)。
  2. 在追求高分的过程中,不能完全抛弃基础训练的技巧。
  3. β \beta β是教练设定的"偏离惩罚": β \beta β值大时,需要严格遵循基础训练(保守); β \beta β值小时,允许更多创新尝试(激进)。

2.3 RLHF目标函数综合理解

  • 滑雪训练的整体目标 max ⁡ (平均得分) − β × (偏离基础技巧的程度) \max \text{(平均得分)} - \beta \times \text{(偏离基础技巧的程度)} max(平均得分)−β×(偏离基础技巧的程度)
  • 整体目标需要保持平衡:既要追求高分,尝试新技巧和路线以提高表现。也要保持基础,不要完全抛弃已学的基本技巧。这种平衡是RLHF成功的关键,让模型逐渐改进以产生更好的回答,同时不会偏离太远导致不稳定或忘记基础知识。

假设滑雪教练告诉小吴:"从这座山滑下来,尽量拿高分,但别完全抛弃我教的基本姿势"

场景1: 无KL约束( β = 0 \beta = 0 β=0):做极端空翻动作获取高分,但风险极大。结果,有时得高分,但容易摔倒或忘记基本滑行技巧

场景2: 过度KL约束( β \beta β非常大):完全按教练的基本动作滑行,不敢有任何创新。结果,安全但得分平平,没有进步空间

场景3: 平衡的KL约束(适中的 β \beta β):在保持基本姿势的前提下,尝试一些新动作。结果,成功率高,得分逐渐提升,同时保持技术稳定性。


β参数的直观解释------不同类型的滑雪教练:

  1. 冒险教练 (低 β \beta β):"去尝试新动作吧!别太在意我之前教的基础,只要能拿高分就行!"
  2. 保守教练 (高 β \beta β):"严格按照我教的基本动作做,只允许微小的变化,安全第一!"
  3. 平衡教练 (适中 β \beta β):"记住基础动作,在此基础上可以适当创新,找到安全与表现的平衡。"

三 最优策略公式的推导与含义

  • 这里使用**变分推断法(最直观易懂)**推导RLHF目标函数的最优策略 π r \pi_r πr的解析解。
  • 变分推断法的核心思想是:将原始的优化问题,看作是在一个约束条件下,寻找一个最优的概率分布 π θ \pi_\theta πθ。这个约束条件就是 π θ \pi_\theta πθ与参考策略 π ref \pi_{\text{ref}} πref的KL散度不能太大。可以使用拉格朗日乘数法来处理这个带约束的优化问题。

3.1 最优策略公式的推导


第1步:重写目标函数

  • 首先,明确优化的目标。对于每一个给定的输入 x x x,我们想要找到一个最优的条件概率分布 π ( y ∣ x ) \pi(y|x) π(y∣x)来最大化目标函数。因为期望 E x ∼ D \mathbb{E}_{x \sim \mathcal{D}} Ex∼D是在数据分布上对所有 x x x进行平均,所以可以先专注于最大化单个 x x x 对应的目标,然后再推广到所有 x x x。
  • 对于单个 x x x,我们的目标是最大化:
    J ( π ; x ) = E y ∼ π ( y ∣ x ) [ r ( x , y ) ] − β D KL [ π ( y ∣ x ) ∥ π ref ( y ∣ x ) ] J(\pi; x) = \mathbb{E}{y \sim \pi(y \mid x)} [r(x, y)] - \beta \mathbb{D}{\text{KL}}[\pi(y \mid x) \parallel \pi_{\text{ref}}(y \mid x)] J(π;x)=Ey∼π(y∣x)[r(x,y)]−βDKL[π(y∣x)∥πref(y∣x)]

第2步:展开KL散度项

  • 为了便于求导,将KL散度的定义展开:
    D KL [ π ( y ∣ x ) ∥ π ref ( y ∣ x ) ] = ∑ y π ( y ∣ x ) log ⁡ π ( y ∣ x ) π ref ( y ∣ x ) \mathbb{D}{\text{KL}}[\pi(y \mid x) \parallel \pi{\text{ref}}(y \mid x)] = \sum_y \pi(y \mid x) \log \frac{\pi(y \mid x)}{\pi_{\text{ref}}(y \mid x)} DKL[π(y∣x)∥πref(y∣x)]=y∑π(y∣x)logπref(y∣x)π(y∣x)
  • 目标函数 J ( π ; x ) J(\pi; x) J(π;x)可以写成:
    J ( π ; x ) = ∑ y π ( y ∣ x ) r ( x , y ) − β ∑ y π ( y ∣ x ) log ⁡ π ( y ∣ x ) π ref ( y ∣ x ) J(\pi; x) = \sum_y \pi(y \mid x) r(x, y) - \beta \sum_y \pi(y \mid x) \log \frac{\pi(y \mid x)}{\pi_{\text{ref}}(y \mid x)} J(π;x)=y∑π(y∣x)r(x,y)−βy∑π(y∣x)logπref(y∣x)π(y∣x)

第3步:引入约束条件

  • 优化对象 π ( y ∣ x ) \pi(y|x) π(y∣x)是一个概率分布,它必须满足归一化条件:
    ∑ y π ( y ∣ x ) = 1 \sum_y \pi(y \mid x) = 1 y∑π(y∣x)=1
  • 这是一个带等式约束的优化问题,非常适合使用拉格朗日乘数法 。我们构造一个拉格朗日函数 L \mathcal{L} L,其中 λ ( x ) \lambda(x) λ(x)是针对每个 x x x的拉格朗日乘子:
    L ( π , λ ; x ) = ( ∑ y π ( y ∣ x ) r ( x , y ) − β ∑ y π ( y ∣ x ) log ⁡ π ( y ∣ x ) π ref ( y ∣ x ) ) + λ ( x ) ( 1 − ∑ y π ( y ∣ x ) ) \mathcal{L}(\pi, \lambda; x) = \left( \sum_y \pi(y \mid x) r(x, y) - \beta \sum_y \pi(y \mid x) \log \frac{\pi(y \mid x)}{\pi_{\text{ref}}(y \mid x)} \right) + \lambda(x) \left( 1 - \sum_y \pi(y \mid x) \right) L(π,λ;x)=(y∑π(y∣x)r(x,y)−βy∑π(y∣x)logπref(y∣x)π(y∣x))+λ(x)(1−y∑π(y∣x))
  • 目标是找到 π ( y ∣ x ) \pi(y|x) π(y∣x)和 λ ( x ) \lambda(x) λ(x),使得 L \mathcal{L} L最大化。

第4步:对 π ( y ∣ x ) \pi(y|x) π(y∣x)求导并令导数为零

  • 为了找到极值点,对 L \mathcal{L} L关于每一个 π ( y ∣ x ) \pi(y|x) π(y∣x)求偏导,并令其等于0。注意,这里的求导是在函数空间 中进行的,对每个可能的 y y y都要求导。
    ∂ L ∂ π ( y ∣ x ) = 0 \frac{\partial \mathcal{L}}{\partial \pi(y \mid x)} = 0 ∂π(y∣x)∂L=0
    逐项求导:
  1. 对第一项 ∑ y π ( y ∣ x ) r ( x , y ) \sum_y \pi(y \mid x) r(x, y) ∑yπ(y∣x)r(x,y) 求导,只有当求导的变量与求和项中的 y y y匹配时才有贡献,结果是 r ( x , y ) r(x, y) r(x,y)。
  2. 对第二项 − β ∑ y π ( y ∣ x ) log ⁡ π ( y ∣ x ) π ref ( y ∣ x ) -\beta \sum_y \pi(y \mid x) \log \frac{\pi(y \mid x)}{\pi_{\text{ref}}(y \mid x)} −β∑yπ(y∣x)logπref(y∣x)π(y∣x) 求导,这需要用到乘积法则和链式法则。我们可以将其拆分为 − β ∑ y π ( y ∣ x ) [ log ⁡ π ( y ∣ x ) − log ⁡ π ref ( y ∣ x ) ] -\beta \sum_y \pi(y \mid x) [\log \pi(y \mid x) - \log \pi_{\text{ref}}(y \mid x)] −β∑yπ(y∣x)[logπ(y∣x)−logπref(y∣x)]。
    • 对 − β π ( y ∣ x ) log ⁡ π ( y ∣ x ) -\beta \pi(y \mid x) \log \pi(y \mid x) −βπ(y∣x)logπ(y∣x) 求导,结果是 − β ( log ⁡ π ( y ∣ x ) + 1 ) -\beta (\log \pi(y \mid x) + 1) −β(logπ(y∣x)+1)。
    • 对 + β π ( y ∣ x ) log ⁡ π ref ( y ∣ x ) +\beta \pi(y \mid x) \log \pi_{\text{ref}}(y \mid x) +βπ(y∣x)logπref(y∣x) 求导, π ref \pi_{\text{ref}} πref被视为常数,结果是 + β log ⁡ π ref ( y ∣ x ) +\beta \log \pi_{\text{ref}}(y \mid x) +βlogπref(y∣x)。
    • 合并起来,第二项的导数是 − β ( log ⁡ π ( y ∣ x ) + 1 ) + β log ⁡ π ref ( y ∣ x ) = − β log ⁡ π ( y ∣ x ) π ref ( y ∣ x ) − β -\beta (\log \pi(y \mid x) + 1) + \beta \log \pi_{\text{ref}}(y \mid x) = -\beta \log \frac{\pi(y \mid x)}{\pi_{\text{ref}}(y \mid x)} - \beta −β(logπ(y∣x)+1)+βlogπref(y∣x)=−βlogπref(y∣x)π(y∣x)−β。
  3. 对第三项 λ ( x ) ( 1 − ∑ y π ( y ∣ x ) ) \lambda(x) \left( 1 - \sum_y \pi(y \mid x) \right) λ(x)(1−∑yπ(y∣x)) 求导,结果是 − λ ( x ) -\lambda(x) −λ(x)。

将所有部分合并,令导数为0:
r ( x , y ) − β log ⁡ π ( y ∣ x ) π ref ( y ∣ x ) − β − λ ( x ) = 0 r(x, y) - \beta \log \frac{\pi(y \mid x)}{\pi_{\text{ref}}(y \mid x)} - \beta - \lambda(x) = 0 r(x,y)−βlogπref(y∣x)π(y∣x)−β−λ(x)=0


第5步:整理并求解 π ( y ∣ x ) \pi(y|x) π(y∣x)

  • 解这个方程,求解 π ( y ∣ x ) \pi(y|x) π(y∣x)。
  1. 移项:
    r ( x , y ) − β − λ ( x ) = β log ⁡ π ( y ∣ x ) π ref ( y ∣ x ) r(x, y) - \beta - \lambda(x) = \beta \log \frac{\pi(y \mid x)}{\pi_{\text{ref}}(y \mid x)} r(x,y)−β−λ(x)=βlogπref(y∣x)π(y∣x)
  2. 两边除以 β \beta β:
    r ( x , y ) − β − λ ( x ) β = log ⁡ π ( y ∣ x ) π ref ( y ∣ x ) \frac{r(x, y) - \beta - \lambda(x)}{\beta} = \log \frac{\pi(y \mid x)}{\pi_{\text{ref}}(y \mid x)} βr(x,y)−β−λ(x)=logπref(y∣x)π(y∣x)
  3. 两边取指数:
    exp ⁡ ( r ( x , y ) − β − λ ( x ) β ) = π ( y ∣ x ) π ref ( y ∣ x ) \exp\left(\frac{r(x, y) - \beta - \lambda(x)}{\beta}\right) = \frac{\pi(y \mid x)}{\pi_{\text{ref}}(y \mid x)} exp(βr(x,y)−β−λ(x))=πref(y∣x)π(y∣x)
  4. 整理得到 π ( y ∣ x ) \pi(y|x) π(y∣x)的表达式:
    π ( y ∣ x ) = π ref ( y ∣ x ) exp ⁡ ( r ( x , y ) − β − λ ( x ) β ) \pi(y \mid x) = \pi_{\text{ref}}(y \mid x) \exp\left(\frac{r(x, y) - \beta - \lambda(x)}{\beta}\right) π(y∣x)=πref(y∣x)exp(βr(x,y)−β−λ(x))
    把指数项拆开:
    π ( y ∣ x ) = π ref ( y ∣ x ) exp ⁡ ( r ( x , y ) β ) exp ⁡ ( − β − λ ( x ) β ) \pi(y \mid x) = \pi_{\text{ref}}(y \mid x) \exp\left(\frac{r(x, y)}{\beta}\right) \exp\left(\frac{-\beta - \lambda(x)}{\beta}\right) π(y∣x)=πref(y∣x)exp(βr(x,y))exp(β−β−λ(x))
    注意到第二项指数 exp ⁡ ( − β − λ ( x ) β ) \exp\left(\frac{-\beta - \lambda(x)}{\beta}\right) exp(β−β−λ(x))与 y y y无关,只与 x x x有关。我们可以把它看作一个归一化常数的一部分。令:
    1 Z ( x ) = exp ⁡ ( − β − λ ( x ) β ) \frac{1}{Z(x)} = \exp\left(\frac{-\beta - \lambda(x)}{\beta}\right) Z(x)1=exp(β−β−λ(x))
  • 这里定义的 1 / Z ( x ) 1/Z(x) 1/Z(x) 是一个"待定"的归一化常数

于是,得到最优策略的形式:
π r ( y ∣ x ) = 1 Z ( x ) π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) \pi_r(y \mid x) = \frac{1}{Z(x)} \pi_{\text{ref}}(y \mid x) \exp\left(\frac{1}{\beta}r(x, y)\right) πr(y∣x)=Z(x)1πref(y∣x)exp(β1r(x,y))


第6步:确定归一化常数 Z ( x ) Z(x) Z(x)
Z ( x ) Z(x) Z(x)的值可以通过归一化条件 ∑ y π r ( y ∣ x ) = 1 \sum_y \pi_r(y \mid x) = 1 ∑yπr(y∣x)=1 来确定:
∑ y π r ( y ∣ x ) = ∑ y ( 1 Z ( x ) π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) ) = 1 \sum_y \pi_r(y \mid x) = \sum_y \left( \frac{1}{Z(x)} \pi_{\text{ref}}(y \mid x) \exp\left(\frac{1}{\beta}r(x, y)\right) \right) = 1 y∑πr(y∣x)=y∑(Z(x)1πref(y∣x)exp(β1r(x,y)))=1

因为 Z ( x ) Z(x) Z(x)与 y y y无关,可以提到求和符号外面:
1 Z ( x ) ∑ y π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) = 1 \frac{1}{Z(x)} \sum_y \pi_{\text{ref}}(y \mid x) \exp\left(\frac{1}{\beta}r(x, y)\right) = 1 Z(x)1y∑πref(y∣x)exp(β1r(x,y))=1

解出 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 \mid x) \exp\left(\frac{1}{\beta}r(x, y)\right) Z(x)=y∑πref(y∣x)exp(β1r(x,y))

这个 Z ( x ) Z(x) Z(x)也被称为配分函数 ,它保证了 π r ( y ∣ x ) \pi_r(y|x) πr(y∣x)是一个合法的概率分布。

  • 至此,我们完整地推导出了最优策略 π r \pi_r πr的解析解。

3.2 最优策略公式的含义分析

  • 优化RLHF目标函数,最优策略 π r \pi_r πr的解析解如下:
    π r ( y ∣ x ) = 1 Z ( x ) π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) \pi_r(y \mid x) = \frac{1}{Z(x)} \pi_{\text{ref}}(y \mid x) \exp\left(\frac{1}{\beta}r(x, y)\right) πr(y∣x)=Z(x)1πref(y∣x)exp(β1r(x,y))
    其中归一化常数 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 \mid x) \exp\left(\frac{1}{\beta}r(x, y)\right) Z(x)=y∑πref(y∣x)exp(β1r(x,y))
  1. 以参考策略为基础 :最优策略不是凭空产生的,它是在原始策略 π ref \pi_{\text{ref}} πref 的基础上进行**"微调"**。这保证了新策略不会偏离原始语言模型太远,从而保留了其通用语言能力。
  2. 用奖励函数进行加权 :对于每个可能的输出 y y y,我们用其奖励值 r ( x , y ) r(x,y) r(x,y) 进行指数加权。奖励越高的 y y y,其在最优策略中的概率权重就越大。
  3. 温度系数 β \beta β 的作用
    • β \beta β 是一个温度参数,它控制着优化的"激进"程度。
    • 当 β → ∞ \beta \to \infty β→∞ 时, 1 β → 0 \frac{1}{\beta} \to 0 β1→0, exp ⁡ ( 1 β r ( x , y ) ) → 1 \exp\left(\frac{1}{\beta}r(x, y)\right) \to 1 exp(β1r(x,y))→1。此时 π r ( y ∣ x ) → π ref ( y ∣ x ) \pi_r(y|x) \to \pi_{\text{ref}}(y|x) πr(y∣x)→πref(y∣x)。这意味着如果我们完全不关心奖励(或者惩罚KL散度无限大),最优策略就是保持原样。
    • 当 β → 0 + \beta \to 0^+ β→0+ 时, 1 β → ∞ \frac{1}{\beta} \to \infty β1→∞。指数项会急剧放大奖励最高的 y y y 的概率。最终,策略会退化为一个贪婪策略 ,即只选择奖励最高的那个 y y y(如果有多个最高奖励,则均匀分布)。这意味着如果我们极度追求奖励,可以完全牺牲掉与原始策略的相似性。

因此,RLHF的优化过程,可以看作是在 "保持原有能力""追求人类偏好" 之间寻找一个由 β \beta β控制的最佳平衡点。

  • 由公式可知,最优策略应该:以参考策略为基础,在高奖励的回答上增加概率,在低奖励的回答上减少概率,调整幅度由 1 β \frac{1}{\beta} β1控制。

3.3 具体案例场景理解

变量符号 描述
x x x 山顶位置(不同的起点)
y y y 滑行路线(从起点选择的下山路径)
π ref \pi_{\text{ref}} πref 参考技巧(基础滑行概率)
r r r 得分系统(路线得分)
π r \pi_r πr 最优滑行策略(最终采用策略)

  1. 参考策略 π ref ( y ∣ x ) \pi_{\text{ref}}(y \mid x) πref(y∣x):小吴接受了基础滑雪训练后,面对不同起点对应不同的选择:
    • 在陡峭起点,你60%概率选择Z字形路线,40%概率直线下滑
    • 在平缓起点,你30%概率选择绕树路线,70%概率走开阔区域

这些是基础概率分布,反映初始训练。

  1. 指数加权 exp ⁡ ( 1 β r ( x , y ) ) \exp\left(\frac{1}{\beta}r(x, y)\right) exp(β1r(x,y)):指数加权意味着:高分路线的选择概率会被成倍增加 ,如,现在加入得分系统,Z字形路线平均得7分、直线下滑平均得9分、绕树路线平均得8分、开阔区域平均得6分。假设 β = 2 \beta=2 β=2,计算增强因子:

    • Z字形: e ( 7 / 2 ) ≈ 32 e^{(7/2)} \approx 32 e(7/2)≈32倍
    • 直线: e ( 9 / 2 ) ≈ 90 e^{(9/2)} \approx 90 e(9/2)≈90倍
    • 绕树: e ( 8 / 2 ) ≈ 55 e^{(8/2)} \approx 55 e(8/2)≈55倍
    • 开阔: e ( 6 / 2 ) ≈ 20 e^{(6/2)} \approx 20 e(6/2)≈20倍
  2. 归一化常数 Z ( x ) Z(x) Z(x) 假设在陡峭起点:

    • 参考概率:Z字形60%,直线40%
    • 增强因子:Z字形32倍,直线90倍

未归一化概率:

  • Z字形: 0.6 × 32 = 19.2 0.6 \times 32 = 19.2 0.6×32=19.2
  • 直线: 0.4 × 90 = 36 0.4 \times 90 = 36 0.4×90=36

归一化常数 Z ( x ) = 19.2 + 36 = 55.2 Z(x) = 19.2 + 36 = 55.2 Z(x)=19.2+36=55.2

  1. 最终最优策略 π r ( y ∣ x ) \pi_r(y \mid x) πr(y∣x):陡峭起点的最优策略,
    • Z字形: 19.2 55.2 ≈ 35 % \frac{19.2}{55.2} \approx 35\% 55.219.2≈35%
    • 直线: 36 55.2 ≈ 65 % \frac{36}{55.2} \approx 65\% 55.236≈65%

相比原始的60%-40%,现在更偏向于高分的直线路线,但仍保留了一定比例的Z字形选择。

四 最优策略下奖励函数的表达

4.1 最优策略下奖励函数的推导

第1步:从最优策略公式开始

  • 最优策略公式:
    π r ( y ∣ x ) = 1 Z ( x ) π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) \pi_r(y \mid x) = \frac{1}{Z(x)} \pi_{\text{ref}}(y \mid x) \exp\left(\frac{1}{\beta}r(x, y)\right) πr(y∣x)=Z(x)1πref(y∣x)exp(β1r(x,y))

其中:

  • π r ( y ∣ x ) \pi_r(y|x) πr(y∣x) 是最优策略(想求解的结果)
  • π ref ( y ∣ x ) \pi_{\text{ref}}(y|x) πref(y∣x) 是参考策略(已知)
  • r ( x , y ) r(x,y) r(x,y) 是奖励函数(反推的目标)
  • Z ( x ) Z(x) Z(x) 是归一化常数
  • β \beta β 是温度参数

第2步:解出r(x,y)的步骤

  1. 首先,解这个方程
    π r ( y ∣ x ) = 1 Z ( x ) π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) \pi_r(y \mid x) = \frac{1}{Z(x)} \pi_{\text{ref}}(y \mid x) \exp\left(\frac{1}{\beta}r(x, y)\right) πr(y∣x)=Z(x)1πref(y∣x)exp(β1r(x,y))

  2. 两边都乘以Z(x)
    Z ( x ) ⋅ π r ( y ∣ x ) = π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) Z(x) \cdot \pi_r(y \mid x) = \pi_{\text{ref}}(y \mid x) \exp\left(\frac{1}{\beta}r(x, y)\right) Z(x)⋅πr(y∣x)=πref(y∣x)exp(β1r(x,y))

  3. 除以 π ref ( y ∣ x ) \pi_{\text{ref}}(y \mid x) πref(y∣x)
    Z ( x ) ⋅ π r ( y ∣ x ) π ref ( y ∣ x ) = exp ⁡ ( 1 β r ( x , y ) ) \frac{Z(x) \cdot \pi_r(y \mid x)}{\pi_{\text{ref}}(y \mid x)} = \exp\left(\frac{1}{\beta}r(x, y)\right) πref(y∣x)Z(x)⋅πr(y∣x)=exp(β1r(x,y))

  4. 两边取自然对数
    log ⁡ ( Z ( x ) ⋅ π r ( y ∣ x ) π ref ( y ∣ x ) ) = 1 β r ( x , y ) \log\left(\frac{Z(x) \cdot \pi_r(y \mid x)}{\pi_{\text{ref}}(y \mid x)}\right) = \frac{1}{\beta}r(x, y) log(πref(y∣x)Z(x)⋅πr(y∣x))=β1r(x,y)

  5. 对数的性质 : log ⁡ ( a ⋅ b ) = log ⁡ ( a ) + log ⁡ ( b ) \log(a \cdot b) = \log(a) + \log(b) log(a⋅b)=log(a)+log(b),因此:
    log ⁡ Z ( x ) + log ⁡ ( π r ( y ∣ x ) π ref ( y ∣ x ) ) = 1 β r ( x , y ) \log Z(x) + \log\left(\frac{\pi_r(y \mid x)}{\pi_{\text{ref}}(y \mid x)}\right) = \frac{1}{\beta}r(x, y) logZ(x)+log(πref(y∣x)πr(y∣x))=β1r(x,y)

  6. 两边都乘以 β \beta β

    β log ⁡ Z ( x ) + β log ⁡ ( π r ( y ∣ x ) π ref ( y ∣ x ) ) = r ( x , y ) \beta \log Z(x) + \beta \log\left(\frac{\pi_r(y \mid x)}{\pi_{\text{ref}}(y \mid x)}\right) = r(x, y) βlogZ(x)+βlog(πref(y∣x)πr(y∣x))=r(x,y)

  7. 得到最终结果
    r ( x , y ) = β log ⁡ ( π r ( y ∣ x ) π ref ( y ∣ x ) ) + β log ⁡ Z ( x ) r(x, y) = \beta \log\left(\frac{\pi_r(y \mid x)}{\pi_{\text{ref}}(y \mid x)}\right) + \beta \log Z(x) r(x,y)=βlog(πref(y∣x)πr(y∣x))+βlogZ(x)


假设在一个简化的滑雪场景:只有两条路线:A和B;参考策略:选A的概率60%,选B的概率40%;观察到的最优策略:选A的概率30%,选B的概率70%;假设β=2。

  • A路线的奖励: r ( x , A ) = 2 × log ⁡ ( 30 % / 60 % ) + 常数 = 2 × log ⁡ ( 0.5 ) + 常数 = 2 × ( − 0.693 ) + 常数 = − 1.386 + 常数 r(x,A) = 2 \times \log(30\%/60\%) + 常数 = 2 \times \log(0.5) + 常数 = 2 \times (-0.693) + 常数 = -1.386 + 常数 r(x,A)=2×log(30%/60%)+常数=2×log(0.5)+常数=2×(−0.693)+常数=−1.386+常数

  • B路线的奖励: r ( x , B ) = 2 × log ⁡ ( 70 % / 40 % ) + 常数 = 2 × log ⁡ ( 1.75 ) + 常数 = 2 × 0.559 + 常数 = 1.118 + 常数 r(x,B) = 2 \times \log(70\%/40\%) + 常数 = 2 \times \log(1.75) + 常数 = 2 \times 0.559 + 常数 = 1.118 + 常数 r(x,B)=2×log(70%/40%)+常数=2×log(1.75)+常数=2×0.559+常数=1.118+常数

  • 可得B路线的奖励比A路线高出2.504分,这与观察到最优策略更偏好B路线是一致。


推导有两个关键意义:

  1. 反向工程:它让我们能根据观察到的行为推断奖励函数。就像看到一个人的选择模式,推断他的内在偏好。
  2. DPO的基础:更重要的是,它表明奖励可以表示为策略比值的函数,这可以不进行显式构建奖励模型、直接从偏好数据优化策略、跳过传统RLHF的复杂步骤。

4.2 新奖励函数在偏好对比中的应用

  • 比较两个答案 y w y_w yw和 y l y_l yl的优劣时,奖励差异为:

r ( x , y w ) − r ( x , y l ) = β log ⁡ ( π r ( y w ∣ x ) π ref ( y w ∣ x ) ) − β log ⁡ ( π r ( y l ∣ x ) π ref ( y l ∣ x ) ) r(x,y_w) - r(x,y_l) = \beta \log\left(\frac{\pi_r(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)}\right) - \beta \log\left(\frac{\pi_r(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)}\right) r(x,yw)−r(x,yl)=βlog(πref(yw∣x)πr(yw∣x))−βlog(πref(yl∣x)πr(yl∣x))

  • 常数项 β log ⁡ Z ( x ) \beta \log Z(x) βlogZ(x)在两者相减时被消除,进一步简化计算,直接比较策略比值,而且也不需要计算归一化常数。

4.3 DPO的核心发现

  • 新的奖励函数公式揭示一个惊人的发现:奖励函数可以用策略的比值表示。具体意义:
  1. 不需要显式奖励模型:直接从策略比值计算奖励。
  2. 关键简化 :在比较两个答案优劣时,常数项 β l o g Z ( x ) β log Z(x) βlogZ(x)会消除。
  3. 直接优化:可以直接优化策略,不需要先学习奖励模型再优化策略。
  • 奖励函数的转换是从RLHF到DPO的关键跨越。
  1. RLHF流程 :训练奖励模型 r ( x , y ) r(x,y) r(x,y),用RL优化策略以最大化奖励。先学习评分标准,再据此训练
  2. DPO流程:跳过显式奖励模型,直接从人类偏好数据优化策略的"比值"。直接学习"比哪个好",不需要
  • 通过这个公式,DPO证明:只要正确优化策略比值,效果等同于基于显式奖励的优化。这极大简化流程,节省了计算资源,并提高了训练稳定性。

4.4 奖励函数的重要性

核心领域 关键要点 详细说明
1. DPO方法的理论基础 绕过奖励模型训练 证明了可以直接从策略比值计算奖励,无需单独训练奖励模型
单阶段优化 使得仅通过偏好数据即可直接优化语言模型,大大简化了流程
理论正确性保证 证明了DPO的优化目标与RLHF的优化目标在数学上等价
2. 奖励函数的全新理解 奖励的相对性 奖励不再是绝对的评分,而是相对于参考模型的偏好程度
隐含奖励 表明任何策略模型都隐含着一个奖励模型
模型解释性 提供了一种解释模型行为的新方式 - 通过比较其与参考模型的差异
3. 其他对齐方法的启发 IPO(迭代偏好优化) 基于DPO并迭代更新参考模型
KTO(K-Token优化) 在序列生成前K个token时应用DPO原理
SLiC 结合监督学习和偏好对比的方法
4. 奖励模型设计的指导 参考模型的重要性 强调了选择合适参考模型的重要性
β参数调优理论 提供了β参数如何影响奖励尺度的理论依据
奖励模型评估方法 提供了一种通过策略比值来评估奖励模型质量的方法
5. RL与LLM对齐的理论联系 隐式策略优化 表明了在LLM环境中可以实现不依赖显式环境交互的策略优化
信息论视角 提供了从信息论角度理解LLM对齐的新视角
偏好学习的一般原理 建立了偏好优化的一般框架,不仅限于语言模型

五 从奖励表达式到偏好概率

5.1 Bradley-Terry模型与偏好概率的Sigmod形式

  • Bradley-Terry模型是一种用于处理配对比较的统计模型,主要用于通过事物之间的胜负/偏好关系,量化它们的相对强度或优劣概率。

  • 已知的两个重要公式

  1. 从RLHF推导出的奖励表达式
    r ( x , y ) = β log ⁡ π r ( y ∣ x ) π ref ( y ∣ x ) + β log ⁡ Z ( x ) r(x, y) = \beta \log \frac{\pi_r(y \mid x)}{\pi_{\text{ref}}(y \mid x)} + \beta \log Z(x) r(x,y)=βlogπref(y∣x)πr(y∣x)+βlogZ(x)

  2. 在直接偏好优化中,其核心目标函数就源自Bradley-Terry模型。DPO假设人类对两个回答(一个来自策略模型 y w y_w yw,一个来自参考模型 y l y_l yl)的偏好遵循Bradley-Terry模型:
    p ( y w ≻ y l ∣ x ) = exp ⁡ ( r ( x , y w ) ) exp ⁡ ( r ( x , y w ) ) + exp ⁡ ( r ( x , y l ) ) p(y_w \succ y_l | x) = \frac{\exp(r(x, y_w))}{\exp(r(x, y_w)) + \exp(r(x, y_l))} p(yw≻yl∣x)=exp(r(x,yw))+exp(r(x,yl))exp(r(x,yw))

  • p ( y w ≻ y l ∣ x ) p(y_w \succ y_l | x) p(yw≻yl∣x):在输入 x x x的情况下, y w y_w yw被偏好(优于) y l y_l yl的概率
  • r ( x , y w ) r(x, y_w) r(x,yw)和 r ( x , y l ) r(x, y_l) r(x,yl):两个选项的奖励值或强度值
  • exp ⁡ ( ) \exp() exp():自然指数函数, exp ⁡ ( z ) = e z \exp(z) = e^z exp(z)=ez

  1. 从指数形式到Sigmoid形式的推导

1:在分子分母同时除以 exp ⁡ ( r ( x , y w ) ) \exp(r(x, y_w)) exp(r(x,yw))
p ( y w ≻ y l ∣ x ) = exp ⁡ ( r ( x , y w ) ) / exp ⁡ ( r ( x , y w ) ) exp ⁡ ( r ( x , y w ) ) / exp ⁡ ( r ( x , y w ) ) + exp ⁡ ( r ( x , y l ) ) / exp ⁡ ( r ( x , y w ) ) p(y_w \succ y_l | x) = \frac{\exp(r(x, y_w))/\exp(r(x, y_w))}{\exp(r(x, y_w))/\exp(r(x, y_w)) + \exp(r(x, y_l))/\exp(r(x, y_w))} p(yw≻yl∣x)=exp(r(x,yw))/exp(r(x,yw))+exp(r(x,yl))/exp(r(x,yw))exp(r(x,yw))/exp(r(x,yw))

2:整理分子分母
p ( y w ≻ y l ∣ x ) = 1 1 + exp ⁡ ( r ( x , y l ) ) / exp ⁡ ( r ( x , y w ) ) p(y_w \succ y_l | x) = \frac{1}{1 + \exp(r(x, y_l))/\exp(r(x, y_w))} p(yw≻yl∣x)=1+exp(r(x,yl))/exp(r(x,yw))1

3:使用指数运算法则

p ( y w ≻ y l ∣ x ) = 1 1 + exp ⁡ ( r ( x , y l ) − r ( x , y w ) ) p(y_w \succ y_l | x) = \frac{1}{1 + \exp(r(x, y_l) - r(x, y_w))} p(yw≻yl∣x)=1+exp(r(x,yl)−r(x,yw))1

4:将分母中的减法转为负号
p ( y w ≻ y l ∣ x ) = 1 1 + exp ⁡ ( − ( r ( x , y w ) − r ( x , y l ) ) ) p(y_w \succ y_l | x) = \frac{1}{1 + \exp(-(r(x, y_w) - r(x, y_l)))} p(yw≻yl∣x)=1+exp(−(r(x,yw)−r(x,yl)))1

5:得到Sigmoid形式
p ( y w ≻ y l ∣ x ) = σ ( r ( x , y w ) − r ( x , y l ) ) p(y_w \succ y_l | x) = \sigma(r(x, y_w) - r(x, y_l)) p(yw≻yl∣x)=σ(r(x,yw)−r(x,yl))

5.3 Bradley-Terry模型的偏好概率公式

p ( y w ≻ y l ∣ x ) = σ ( r ( x , y w ) − r ( x , y l ) ) p(y_w \succ y_l | x) = \sigma(r(x, y_w) - r(x, y_l)) p(yw≻yl∣x)=σ(r(x,yw)−r(x,yl))

  • y w y_w yw 是人类偏好的"优胜"回答
  • y l y_l yl 是人类不太偏好的"落败"回答
  • σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1+e^{-z}} σ(z)=1+e−z1 是Sigmoid函数

  1. 新奖励函数在偏好对比中的应用 可得奖励差异为:
    r ( x , y w ) − r ( x , y l ) = β log ⁡ π r ( y w ∣ x ) / π ref ( y w ∣ x ) π r ( y l ∣ x ) / π ref ( y l ∣ x ) r(x, y_w) - r(x, y_l) = \beta \log \frac{\pi_r(y_w \mid x) / \pi_{\text{ref}}(y_w \mid x)}{\pi_r(y_l \mid x) / \pi_{\text{ref}}(y_l \mid x)} r(x,yw)−r(x,yl)=βlogπr(yl∣x)/πref(yl∣x)πr(yw∣x)/πref(yw∣x)

  2. 将奖励差代入Bradley-Terry模型:
    p ( y w ≻ y l ∣ x ) = σ ( β log ⁡ π r ( y w ∣ x ) / π ref ( y w ∣ x ) π r ( y l ∣ x ) / π ref ( y l ∣ x ) ) p(y_w \succ y_l | x) = \sigma\left(\beta \log \frac{\pi_r(y_w \mid x) / \pi_{\text{ref}}(y_w \mid x)}{\pi_r(y_l \mid x) / \pi_{\text{ref}}(y_l \mid x)}\right) p(yw≻yl∣x)=σ(βlogπr(yl∣x)/πref(yl∣x)πr(yw∣x)/πref(yw∣x))

    等价公式:
    p ( y w ≻ y l ∣ x ) = σ ( β log ⁡ π r ( y w ∣ x ) π ref ( y w ∣ x ) − β log ⁡ π r ( y l ∣ x ) π ref ( y l ∣ x ) ) p(y_w \succ y_l | x) = \sigma\left(\beta \log \frac{\pi_r(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \beta \log \frac{\pi_r(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)}\right) p(yw≻yl∣x)=σ(βlogπref(yw∣x)πr(yw∣x)−βlogπref(yl∣x)πr(yl∣x))

5.4 Bradley-Terry模型偏好概率公式的核心意义

1. 消除了归一化常数: Z ( x ) Z(x) Z(x)项完全消除,无需计算难以处理的归一化常数

2. 直接联系偏好与策略: 偏好概率现在直接用策略比值表示,无需显式奖励模型作为中间步骤。

3. 启示直接优化方式: 如果想让模型生成更符合人类偏好的回答,只需调整策略 π r \pi_r πr,使 π r ( y w ∣ x ) / π ref ( y w ∣ x ) \pi_r(y_w|x)/\pi_{\text{ref}}(y_w|x) πr(yw∣x)/πref(yw∣x)增大,同时使 π r ( y l ∣ x ) / π ref ( y l ∣ x ) \pi_r(y_l|x)/\pi_{\text{ref}}(y_l|x) πr(yl∣x)/πref(yl∣x)减小。

5.5 实际训练过程

在实际训练过程中:

  1. 收集偏好数据 :形如 ( x , y w , y l ) (x, y_w, y_l) (x,yw,yl)的三元组
  2. 初始化
    • 参考模型 π ref \pi_{\text{ref}} πref(通常是SFT模型)
    • 待训练模型 π θ \pi_\theta πθ(通常初始化为 π ref \pi_{\text{ref}} πref的副本)
  3. 反向传播 :计算DPO损失函数,通过梯度下降更新 π θ \pi_\theta πθ的参数,只调整 π θ \pi_\theta πθ,而 π ref \pi_{\text{ref}} πref保持不变。
  4. 训练目标 :增大 π θ ( y w ∣ x ) \pi_\theta(y_w|x) πθ(yw∣x)相对于 π ref ( y w ∣ x ) \pi_{\text{ref}}(y_w|x) πref(yw∣x)的比值,减小 π θ ( y l ∣ x ) \pi_\theta(y_l|x) πθ(yl∣x)相对于 π ref ( y l ∣ x ) \pi_{\text{ref}}(y_l|x) πref(yl∣x)的比值。
  • 通过这种方式, π θ \pi_\theta πθ会逐渐学会生成更符合人类偏好的回答,而无需显式训练一个独立的奖励模型。

六 DPO损失函数

6.1 DPO损失函数的推导

  1. 人类偏好数据 :三元组 ( x , y w , y l ) (x, y_w, y_l) (x,yw,yl),其中: x x x是输入(例如一个问题), y w y_w yw是人类偏好的"赢家"回答, y l y_l yl是人类不太偏好的"输家"回答。
  2. 使用当前策略逼近最优策略 :理论上有一个最优策略 π r \pi_r πr(来自RLHF推导)。实际训练中,用当前的模型 π θ \pi_\theta πθ来逼近这个最优策略

  1. 在直接偏好优化中,我们的核心假设是:模型对两个回答的相对概率,直接反映了人类的偏好概率 。这个转换是构建似然函数的关键。具体来说,对于一个提示 x 和其对应的两个回答 y w y_w yw(更优) 与 y l y_l yl (更劣),我们使用 Bradley-Terry 模型 来定义模型预测的偏好概率:
    p ( y w ≻ y l ∣ x ) = σ ( β log ⁡ π θ ( y w ∣ x ) π ref ( y w ∣ x ) − β log ⁡ π θ ( y l ∣ x ) π ref ( y l ∣ x ) ) p(y_w \succ y_l | x) = \sigma\left(\beta \log \frac{\pi_\theta(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \beta \log \frac{\pi_\theta(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)}\right) p(yw≻yl∣x)=σ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))
  • 其中, π θ ( y ∣ x ) \pi_\theta(y|x) πθ(y∣x) 是语言模型, log ⁡ π θ ( y ∣ x ) \log \pi_\theta(y|x) logπθ(y∣x) 是其对回答 y 的对数概率。
  • 这个公式 p ( y w ≻ y l ∣ x ) p(y_w ≻ y_l | x) p(yw≻yl∣x) 直接构成了单个样本的似然函数,其逻辑如下:
    1. 观测事实 :我们观测到的数据点是"人类偏好 y w y_w yw而非 y l y_l yl"。
    2. 模型预测 :上式计算出的 p ( y w ≻ y l ∣ x ) p(y_w ≻ y_l | x) p(yw≻yl∣x),正是在当前模型参数 θ \theta θ 下,模型预测出"人类会偏好 y w y_w yw"的概率
    3. 似然最大化 :因此,我们将这个预测概率作为似然函数。当模型的预测与人类真实偏好一致时(即 p ( y w ≻ y l ∣ x ) p(y_w ≻ y_l | x) p(yw≻yl∣x) 趋近于1),似然函数值就高,表明当前参数 θ \theta θ 很好地解释了观测数据。反之,若模型预测错误,似然值就很低。

  1. 我们的优化目标正是最大化所有样本的似然,从而校准模型参数 θ \theta θ,使其内在的概率分布与人类的外在偏好对齐。整个数据集的似然是:
    L ( θ ) = ∏ ( x , y w , y l ) ∈ D p ( y w ≻ y l ∣ x ) L(\theta) = \prod_{(x, y_w, y_l) \in \mathcal{D}} p(y_w \succ y_l | x) L(θ)=(x,yw,yl)∈D∏p(yw≻yl∣x)
    取对数后的似然函数变为:
    log ⁡ L ( θ ) = ∑ ( x , y w , y l ) ∈ D log ⁡ p ( y w ≻ y l ∣ x ) \log L(\theta) = \sum_{(x, y_w, y_l) \in \mathcal{D}} \log p(y_w \succ y_l | x) logL(θ)=(x,yw,yl)∈D∑logp(yw≻yl∣x)
  • 最大化原始似然函数 L ( θ ) L(\theta) L(θ)和最大化对数似然 log ⁡ L ( θ ) \log L(\theta) logL(θ)是等价的,因为对数函数是单调递增的(如果 a > b a > b a>b,那么 log ⁡ ( a ) > log ⁡ ( b ) \log(a) > \log(b) log(a)>log(b))。

  1. 转换为期望形式
    log ⁡ L ( θ ) = ∑ ( x , y w , y l ) ∈ D log ⁡ p ( y w ≻ y l ∣ x ) = ∣ D ∣ ⋅ 1 ∣ D ∣ ∑ ( x , y w , y l ) ∈ D log ⁡ p ( y w ≻ y l ∣ x ) = ∣ D ∣ ⋅ E ( x , y w , y l ) ∼ D [ log ⁡ p ( y w ≻ y l ∣ x ) ] \begin{aligned} \log L(\theta) &= \sum_{(x, y_w, y_l) \in \mathcal{D}} \log p(y_w \succ y_l | x) \\ &= |\mathcal{D}| \cdot \frac{1}{|\mathcal{D}|} \sum_{(x, y_w, y_l) \in \mathcal{D}} \log p(y_w \succ y_l | x) \\ &= |\mathcal{D}| \cdot \mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}} [\log p(y_w \succ y_l | x)] \end{aligned} logL(θ)=(x,yw,yl)∈D∑logp(yw≻yl∣x)=∣D∣⋅∣D∣1(x,yw,yl)∈D∑logp(yw≻yl∣x)=∣D∣⋅E(x,yw,yl)∼D[logp(yw≻yl∣x)]
  • 其中, E ( x , y w , y l ) ∼ D \mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}} E(x,yw,yl)∼D表示在数据集 D \mathcal{D} D上的期望(平均值)。
    数据集大小 ∣ D ∣ |\mathcal{D}| ∣D∣在优化时是常数,不影响最优参数的选择,所以通常可以忽略。

  1. 最大化转为最小化(取负号)
  • 传统上定义"损失函数"为需要最小化 的函数,大多数优化库和算法默认执行最小化而非最大化。所以为了与这一惯例保持一致,我们将最大化对数似然转换为最小化负对数似然:
    L ( θ ) = − E ( x , y w , y l ) ∼ D [ log ⁡ p ( y w ≻ y l ∣ x ) ] \mathcal{L}(\theta) = -\mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}} [\log p(y_w \succ y_l | x)] L(θ)=−E(x,yw,yl)∼D[logp(yw≻yl∣x)]
  • 最小化 L ( θ ) \mathcal{L}(\theta) L(θ)就等价于最大化原始的对数似然 log ⁡ L ( θ ) \log L(\theta) logL(θ)。这种转换只是符号上的调整,不改变优化问题的本质。

  1. 代入偏好概率模型
  • 偏好概率公式:
    p ( y w ≻ y l ∣ x ) = σ ( β log ⁡ π θ ( y w ∣ x ) π ref ( y w ∣ x ) − β log ⁡ π θ ( y l ∣ x ) π ref ( y l ∣ x ) ) p(y_w \succ y_l | x) = \sigma\left(\beta \log \frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)}\right) p(yw≻yl∣x)=σ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))

  • 代入损失函数:
    L DPO ( π θ ) = − E ( x , y w , y l ) ∼ D [ log ⁡ σ ( β log ⁡ π θ ( y w ∣ x ) π ref ( y w ∣ x ) − β log ⁡ π θ ( y l ∣ x ) π ref ( y l ∣ x ) ) ] \mathcal{L}{\text{DPO}}(\pi{\theta}) = -\mathbb{E}{(x, y_w, y_l) \sim \mathcal{D}} \left[ \log \sigma\left(\beta \log \frac{\pi\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)}\right) \right] LDPO(πθ)=−E(x,yw,yl)∼D[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]

  • 至此,我们得到DPO的最终损失函数,它指导调整模型参数 θ \theta θ,使得模型对人类偏好的预测与实际观测一致。


6.2 训练算法的完整执行步骤

  1. 数据准备

    • 收集人类偏好数据 ( x , y w , y l ) (x, y_w, y_l) (x,yw,yl)
    • 初始化 π θ \pi_\theta πθ(通常用 π ref \pi_{\text{ref}} πref的参数初始化)
  2. 对每个批次的数据

    • 计算模型输出: π θ ( y w ∣ x ) \pi_\theta(y_w|x) πθ(yw∣x)和 π θ ( y l ∣ x ) \pi_\theta(y_l|x) πθ(yl∣x)
    • 计算参考模型输出: π ref ( y w ∣ x ) \pi_{\text{ref}}(y_w|x) πref(yw∣x)和 π ref ( y l ∣ x ) \pi_{\text{ref}}(y_l|x) πref(yl∣x)
    • 计算DPO损失
    • 反向传播,更新 π θ \pi_\theta πθ的参数
  3. 重复直到模型收敛

这个训练过程的美妙之处在于:我们不需要单独训练一个奖励模型,也不需要复杂的强化学习算法,只需要直接从人类偏好数据进行监督学习。

七 策略学习类型详解

7.1 同策略 vs 异策略

On-policy(同策略)数据收集策略正在优化的策略完全一致。

  • 每次策略更新后,必须使用新策略重新收集数据。旧策略收集的数据必须丢弃,不能重复使用。要求严格的"同步性":用什么策略优化,就必须用同样的策略收集数据

Off-policy(异策略)数据收集策略 可以与正在优化的策略不同。

  • 可以使用任何策略(包括人类、旧版本模型、随机策略等)收集的数据,历史数据可以重复使用,无需丢弃。允许"异步性",即用A策略收集数据,可以用来优化B策略

7.2 在线 vs 离线

Online(在线学习) :训练过程中需要持续与环境交互收集新数据,算法在学习的同时探索环境。反馈循环是实时的:行动→观察结果→更新策略→新行动,需要实时访问环境或模拟器。

Offline(离线学习) :训练过程完全基于预先收集的固定数据集,算法不需要在学习过程中与环境交互。没有实时反馈循环:一次性提供所有数据→训练完成,不需要访问环境,只需要静态数据集。

八 DPO和PPO、RLHF对比

8.1 PPO VS DPO

  1. 数据收集与使用方式

PPO(On-policy, Online)

  • 数据必须是即时的:每轮策略更新后立即收集新数据
  • 数据必须是同源的:必须由当前正在优化的策略生成
  • 数据必须是一次性的:用过即丢,不能重复使用
  • 需要实时环境反馈:动作→环境反应→奖励→更新

DPO(Off-policy, Offline)

  • 数据可以是历史的:可以使用任何时间收集的数据
  • 数据可以是异源的:可以由任何策略(甚至人类)生成
  • 数据可以重复使用:同一数据集可以训练多个模型或多次迭代
  • 不需要环境反馈,只需人类偏好判断

  1. 训练流程对比

PPO训练流程(循环往复):

  • 初始策略 π 1 π₁ π1 → 使用 π 1 π₁ π1收集数据 → 更新到 π 2 π₂ π2 → 丢弃旧数据 →
    使用 π 2 π₂ π2收集新数据 → 更新到 π 3 π₃ π3 → 丢弃旧数据 → ...(持续迭代)

DPO训练流程(线性一次):

  • 参考模型 π r e f π_{ref} πref → 收集偏好数据 → 一次性训练 π θ π_θ πθ → 得到最终模型

  1. 学习信号来源

PPO :学习信号来自环境明确定义的奖励 。例如:收集硬币+2分,撞树-10分。优化目标是最大化累积奖励,通过反复试错学习环境规则

DPO :学习信号来自人类偏好判断 、例如:"路线A比路线B更好"(无需数值奖励)。优化目标是最大化符合人类偏好的概率,通过模仿人类判断学习价值观。


  1. 计算资源需求

PPO

  • 需要大量环境交互:可能需要数百万步执行步骤
  • 需要持续计算资源:边玩边学
  • 训练时间长:依赖于环境交互和数据收集速度

DPO

  • 需要大量标注数据:但通常少于PPO的环境交互量
  • 一次性计算资源:集中在训练阶段
  • 数据收集可独立完成:可以先收集数据,再训练模型

8.2 DPO VS 传统RLHF

  • 基础性能对比
维度 DPO优势 RLHF优势
训练效率 训练速度快,资源需求低 绝对性能上限略高
回答质量 更自然流畅,多样性高 更严谨准确,幻觉率低
特殊能力 创造性任务表现强,风格多样 复杂推理能力强,长对话一致性好

  • 任务类型差异
任务 更适合DPO 更适合RLHF
对话体验 交互感强,共情能力佳,幽默感好 事实准确性高,上下文记忆佳
专业知识 人文学科略胜,主观分析见解丰富 科学、数学、代码生成优势明显
安全合规 自然友好的拒绝,过度拒绝少 更高的有害请求拒绝率

  • 适用场景对比
特征维度 最适合 DPO 的场景 最适合传统 RLHF 的场景
核心优势 简单、高效、稳定 精确、可控、性能上限高
资源与环境 资源受限环境,需要快速部署和迭代 资源充足,可接受高昂的训练和调优成本
任务类型 创意生成(写作、故事、营销文案)、对话体验优化 精确推理(数学、逻辑、编程)、知识密集型应用(学术、咨询)
输出要求 追求多样性、趣味性、共情能力等主观质量 追求准确性、事实性、逻辑一致性等客观标准
安全与合规 对安全有要求,但非极端严格的关键领域 高安全要求领域(医疗、法律、金融),错误代价极高
模型规模 尤其适合在中小型模型上进行快速优化和显著提升 更适合在大型、超大型模型上追求极致性能突破
对话复杂度 单轮或短对话,侧重即时交互体验 多轮复杂对话,需要长期记忆和策略规划

九 DPO+其他训练策略

9.1 SFT(监督微调) & DPO

  • 核心思路:先用SFT建立基础能力,再用DPO调整偏好对齐。SFT学习"如何做",DPO学习"做得好"

具体流程

  1. SFT阶段:用高质量示范数据微调基础模型
  2. DPO阶段:以SFT模型作为参考模型(π_ref),用偏好数据优化

9.2 RLAIF(AI反馈的强化学习) & DPO

  • 核心思路:使用强大模型生成偏好数据,再用DPO训练,解决人类标注成本高、数量有限的问题。

具体流程

  1. 用基础模型生成多个候选回答
  2. 让强模型(教师模型)评判候选答案优劣
  3. 构建合成偏好对(chosen/rejected)
  4. 使用DPO基于这些合成偏好数据训练

9.3 SPIN(自我改进)& DPO

  • 核心思路:模型自己生成候选答案,然后自我修改形成更好版本,构建(修改后,修改前)偏好对进行DPO训练.

具体流程

  1. 模型生成初始回答A,同一模型反思并改进生成更好回答B
  2. 构建偏好对(B优于A)
  3. 用DPO训练模型偏好更优质的回答
  • 此方法特别适合多轮反思,每轮质量提升8-12%,节省几乎全部人工标注成本。
相关推荐
未若君雅裁44 分钟前
斐波那契数列 - 动态规划实现 详解笔记
java·数据结构·笔记·算法·动态规划·代理模式
断剑zou天涯1 小时前
【算法笔记】从暴力递归到动态规划(三)
java·算法·动态规划
RQ_ghylls1 小时前
2.excel每3行计算一个均值,将高于均值的单元格设置背景红色
算法·均值算法·word·excel
断剑zou天涯1 小时前
【算法笔记】从暴力递归到动态规划(一)
java·算法·动态规划
不爱编程爱睡觉1 小时前
代码随想录算法训练营第二十八天 | 动态规划算法基础、 LeetCode509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
算法·leetcode·动态规划·代码随想录
这张生成的图像能检测吗1 小时前
(论文速读)多任务深度学习框架下基于Lamb波的多损伤数据集构建与量化算法
人工智能·深度学习·算法·数据集·结构健康监测
小曹要微笑4 小时前
STM32H7系列全面解析:嵌入式性能的巅峰之作
c语言·stm32·单片机·嵌入式硬件·算法
寻星探路4 小时前
JavaSE重点总结后篇
java·开发语言·算法
松涛和鸣6 小时前
14、C 语言进阶:函数指针、typedef、二级指针、const 指针
c语言·开发语言·算法·排序算法·学习方法