type
status
date
slug
summary
tags
category
icon
password
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 的输出可以预先存下来,训练的时候重复使用。
- 作者:SimonSun
- 链接:https://simonsun.xyz//article/llm-10
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章
.png?table=collection&id=cb472e47-cf59-4081-bd5f-899a844344db&t=cb472e47-cf59-4081-bd5f-899a844344db)


