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 正式开始推导
针对 ppo 的 loss 函数,我们做以下变换:
- 代入 KL 散度( 提取放到了左下角):
- 乘上 ,把 max 变成 min 得:
- 等价变换得:
- 根据 得:
- 这里我们可以构造出一个新的概率分布:
- 进行分母归一化,为的是使保证分布的概率和等于 1,分母:
- 继续对 ppo 的 loss 函数等价变换得:
- 化简得:
- 由于 和 完全没有关系,可以省略,得:
- 代入 KL 散度得(左下角的 没有了):
- 由于 KL 散度的非负性质,在 2 个分布相等时取最小值。 的最优解就是 ,PPO 的最优概率分布就是 。
- 也就是说,在已知 Reward_model 的参数 的情况下,我们可以求得 PPO 的最优解 。
- 另一个角度来说,由 的公式,我们相当于是得到了 和 的关系,那么是否我们可以把训练 转化成直接去训练 呢?
- 转换一下 的定义式可以得到:
- 等价变换得:
- 把 的等价表达式代入到 Reward_model 的 loss 函数:
- 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 许可协议,转载请注明出处。
相关文章