大语言模型强化微调方法 DPO(Direct Preference Optimization)

PPO简单回顾

在PPO中,存在两个待训练的网络:Value network 与 Policy network。在初始情况下:

  1. agent 会根据初始的 policy 与环境进行交互,得到一系列的数据轨迹。

  2. 根据这些轨迹,初始化的 Value network 会计算(估计)这些轨迹(每一个 state)的 value:
    Vθ(st)=E[∑k=0∞γkrt+k] V_\theta(s_t) = \mathbb{E} \left[ \sum_{k=0}^\infty \gamma^k r_{t+k} \right] Vθ(st)=E[k=0γkrt+k]
    并通过损失函数进行更新:
    Lvalue(θ)=E[(Vθ(st)−Rt)2] L_{\text{value}}(\theta) = \mathbb{E} \left[ (V_\theta(s_t) - R_t)^2 \right] Lvalue(θ)=E[(Vθ(st)Rt)2]

  3. 利用价值网络的输出计算广义优势估计(GAE):
    At=∑k=0T−t(γλ)kδt+k其中δt=rt+γV(st+1)−V(st) A_t = \sum_{k=0}^{T-t} (\gamma \lambda)^k \delta_{t+k} \quad \text{其中} \quad \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t) At=k=0Tt(γλ)kδt+k其中δt=rt+γV(st+1)V(st)

计算新旧策略的动作选择概率比:
rt(θ)=πθ(at∣st)πθold(at∣st) r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)} rt(θ)=πθold(atst)πθ(atst)

使用如下的代理目标函数更新策略网络:
LCLIP(θ)=Et[min⁡(rt(θ)At,clip(rt(θ),1−ϵ,1+ϵ)At)] L^{CLIP}(\theta) = \mathbb{E}_t \left[ \min\left( r_t(\theta)A_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)A_t \right) \right] LCLIP(θ)=Et[min(rt(θ)At,clip(rt(θ),1ϵ,1+ϵ)At)]

这是 PPO 的简单流程。

1. 什么是 DPO?

DPO(Direct Preference Optimization)是一种基于人类反馈(Human Feedback, HF)直接优化大语言模型策略的强化学习方法。与传统的强化学习方法不同,DPO并不依赖于复杂的奖励函数,而是通过人类对模型输出的偏好评分,直接对模型进行微调。

具体来说,DPO的核心目标是通过对比多个候选答案或策略,并基于人类的偏好反馈来优化生成模型。这一方法的优势在于,能够更直观地利用人类反馈来引导模型的学习,而不需要构建复杂的外部奖励机制。

2. DPO的工作原理

DPO的基本原理是通过训练一个模型,使其输出在某些情境下能够更好地与人类的偏好匹配。具体步骤如下:

2.1 训练数据的收集

DPO的训练数据通常包括人类评定的“偏好对”(preference pairs)。每个偏好对由两个候选答案组成,其中一个答案被认为是更符合人类期望的。通过收集这些数据,DPO能够学习到哪些特征和模式更可能获得较高的偏好评分。

2.2 模型微调

DPO通过一种特殊的优化方法对模型进行微调,目标是最大化每个候选答案相对于另一个答案的偏好。具体来说,DPO通过以下几个步骤来实现优化:

  • 选择多个候选答案:对每个输入,生成多个候选答案。
  • 评估偏好:使用人类的评分来判断哪个答案更符合期望。
  • 直接优化:通过最大化正确答案的概率,最小化不符合偏好的答案概率来更新模型。

2.3 反馈的作用

与传统的强化学习方法不同,DPO方法并不依赖于复杂的奖励函数。相反,它直接利用人类对模型输出的偏好作为优化目标。每个偏好对提供了一种方式来评估模型在某个给定输入下的表现,而这种评估则成为优化过程中的重要信号。通常,DPO 的目标函数形式如下:
LDPO(πθ;πref)=−E(x,yw,yl)∼D[log⁡σ(βlog⁡πθ(yw∣x)πref(yw∣x)−βlog⁡πθ(yl∣x)πref(yl∣x))] \mathcal{L}_{\text{DPO}}(\pi_\theta; \pi_{\text{ref}}) = -\mathbb{E}_{(x, y_w, y_l) \sim 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(πθ;πref)=E(x,yw,yl)D[logσ(βlogπref(ywx)πθ(ywx)βlogπref(ylx)πθ(ylx))]

其中:

  • πθ(yw∣x)\pi_\theta(y_w | x)πθ(ywx)πθ(yl∣x)\pi_\theta(y_l | x)πθ(ylx) 分别表示当前策略生成正样本 ywy_wyw 和负样本 yly_lyl 的条件概率,给定输入 xxx

  • πref(yw∣x)\pi_{\text{ref}}(y_w | x)πref(ywx)πref(yw∣x)\pi_{\text{ref}}(y_w | x)πref(ywx) 分别表示参考策略生成正样本 ywy_wyw 和负样本 yly_lyl 的条件概率,给定输入 xxx

  • σ 是 Sigmoid 函数,用于将对比结果转换为一个介于 0 和 1 之间的值,表示生成正样本和负样本之间的偏好概率。

  • β\betaβ 是一个超参数,控制对比的强度。它调节生成的正样本和负样本之间的偏好差异对策略更新的影响程度。较大的 β\betaβ 强化偏好差异的作用,使得模型更敏感于正负样本的对比,反之则减小偏好差异的影响。

目标函数的含义

DPO 的目标函数通过最大化正样本 ( y_w ) 相对于负样本 ( y_l ) 的概率比来优化策略,进而推动策略朝着人类偏好靠近。对于每对正负样本,优化目标是通过最大化其对数概率比来强化正样本的生成,同时最小化负样本的生成。

这个公式可以被理解为对生成内容与参考策略之间差异的度量,其中 ( \beta ) 参数控制了这种差异对策略更新的影响程度。通过对正负样本进行对比,DPO 能够逐步改进模型,使其输出更加符合用户的偏好。

3. DPO与传统强化学习方法的对比

DPO与PPO的比较

维度 PPO(传统方法) DPO(新方法)
策略更新方式 通过优化策略与价值网络之间的估计误差来进行更新 直接优化生成内容与用户偏好的匹配度
价值网络 使用价值网络来估计每个状态的价值,计算优势函数(GAE) 不需要价值网络,通过直接对比策略输出与参考模型的偏差来优化
训练稳定性 依赖于价值网络的估计,可能受到噪声和估计误差的影响 由于不依赖价值估计,减少了模型更新时的不确定性和不稳定性
训练复杂度 需要训练两个网络(策略网络和价值网络) 只需要训练策略网络,训练复杂度和计算资源大大降低
应用场景 适用于多种 RL 任务,尤其是短期决策问题 更适合长文本生成和需要根据偏好进行优化的任务(如文本生成、对话系统)

DPO的优势

  1. 计算资源优化:由于 DPO 不需要训练价值网络,因此相比 PPO 大大减少了计算资源的消耗,训练效率更高,尤其是在大规模语言模型的训练中。

  2. 更高的自由度:DPO 通过直接优化用户的偏好,而不是依赖于价值函数,因此能够更灵活地适应不同的任务需求。在一些偏好驱动的任务中,DPO 能够更加有效地学习出符合人类期望的行为。

  3. 训练稳定性提升:DPO 消除了价值网络中的估计误差对策略更新的影响,从而使得策略更新更加稳定,避免了 PPO 中可能遇到的策略振荡问题。

DPO与PPO的区别

维度 PPO DPO
价值网络 强烈依赖于价值网络 无需价值网络
训练机制 使用广义优势估计(GAE)和策略的概率比进行训练 直接优化偏好匹配度
反馈机制 基于奖励信号和价值估计来进行反馈 基于用户偏好和策略对比进行反馈
训练复杂度 高:需要训练多个网络 低:只训练策略网络
模型更新稳定性 依赖于价值网络的估计,可能存在不稳定性 通过直接优化用户偏好,减少不稳定性

DPO的实际应用

DPO 特别适用于那些具有明确用户偏好的任务,如:

  • 文本生成:通过直接优化生成文本与用户偏好的匹配度,DPO 能够生成更加符合人类期望的内容。
  • 对话系统:DPO 可以在对话系统中应用,使得生成的对话不仅自然流畅,而且符合用户的意图或需求。
  • 推荐系统:DPO 可以应用于个性化推荐,优化推荐的内容以最大化与用户偏好的匹配。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐