type
status
date
slug
summary
tags
category
icon
password
📎
DPO 是纯纯的 数学魔法时间
 
参考 zhuanlan.zhihu.comzhuanlan.zhihu.com

1. 先解释下后面的符号含义

:是 reward_model,
:是我们要优化的模型(actor model),
:是 dpo 和 ppo 都用到的 reference_model。

2. 再看看几个重要的 loss 和公式

RLHF 一般会分 2 步:
  • 第一步是训练 reward model。训练数据是同一个 prompt 的 2 个回答,让人或 GPT4 标注哪个回答更好,reward model 会去优化如下的 loss:
    •  
  • 第二步是用 RL 算法来提升模型的得分(PPO简化版,这里的loss并非 actor 和 critic loss 而是策略梯度下降的loss):
  • dpo loss:
  • KL 散度:

3. OK 正式开始推导

DPO 是基于 带KL约束的强化学习目标(KL-constrained RL Objective)Bradley-Terry 偏好模型 推导出来的。其推导过程精妙地利用了最优策略的解析解形式进行反向代换。
具体推导逻辑分为三步:
标准的RLHF旨在最大化奖励同时最小化与参考模型的KL散度。其目标函数为:
 
  • 代入 KL 散度( 提取放到了左下角):
  • 乘上 ,把 max 变成 min 得:
  • 等价变换得:
  • 根据 得:
  • 这里我们可以构造出一个新的概率分布:
  • 进行分母归一化,为的是使保证分布的概率和等于 1,分母:
  • 继续对 ppo 的 loss 函数等价变换得:
  • 化简得:
  • 由于 完全没有关系,可以省略,得:
  • 代入 KL 散度得(左下角的 没有了):
  • 由于 KL 散度的非负性质,在 2 个分布相等时取最小值。 的最优解就是 ,PPO 的最优概率分布就是
  • 也就是说,在已知 Reward_model 的参数 的情况下,我们可以求得 PPO 的最优解
  • 另一个角度来说,由 的公式,我们相当于是得到了 的关系,那么是否我们可以把训练 转化成直接去训练 呢?
  • 转换一下 的定义式可以得到:
  • 等价变换得:
📎
对于任何一个奖励函数 ,都存在唯一对应的最优策略 ;反之,对于任何一个最优策略 ,也能反推出它对应的那个奖励函数
在传统的 RLHF 中: 我们假设有一个神经网络 来拟合奖励,然后用另一个神经网络 去逼近 。 • 路径:数据 训练 使用 PPO 让 靠近由 定义的
在 DPO 中:
既然 是一一对应的,DPO 提出了一个大胆的想法:我们能不能直接用策略网络 来表示那个隐式的奖励
  • 的等价表达式代入到 Reward_model 的 loss 函数:
    • :
      📎
      其实就是二分类问题中的 交叉熵损失(Binary Cross Entropy) 的简化形式。 我们不仅希望 高,而且希望这个差值足够大,大到经过 Sigmoid 后概率接近 1。
      由于我们要优化的是策略 ,这等价于最大化以下目标函数(去掉了负号,并将 替换为当前参数化的 ):
DPO 通过以上的公式转换把 RLHF 无损地转化为了 SFT,在训练的时候不再需要同时跑 4 个模型(reward model, ref model, critic, actor),
而是只用跑 actor 和 ref 2 个模型,甚至由于不再在线采数据,ref model 的输出可以预先存下来,训练的时候重复使用。

谈阅读:如何做一个好的读者RAG技术汇总(2)查询增强
Loading...