论文来源: Direct Preference Optimization
DPO是绕开PPO进行优化的一个方式。
- RLHF可以简单的用下图表示
-
PPO用如下公式表明
[ \mathscr{L}R(r\phi, \mathscr{D}) = -\mathbb{E}{(x, y_w, y_l) \sim \mathscr{D}} \left[ \log \sigma(r\phi(x, y_w) - r_\phi(x, y_l)) \right] ]- (\mathscr{L}_R) 表示PPO算法的损失函数。
- (r_\phi) 是由参数 (\phi) 定义的奖励函数。
- (\mathscr{D}) 是样本 ((x, y_w, y_l)) 所抽取的数据集。
- (\sigma) 是sigmoid函数。
- (y_w) 和 (y_l) 分别代表输入 (x) 的获胜和失败变体。
显而易见, 这个过程十分的复杂且漫长, 所以我们引入DPO。
[ \mathscr{L}{\text{DPO}}(\pi\theta; \pi_{\text{ref}}) = -\mathbb{E}{(x, y_w, y_l) \sim \mathcal{D}} \left[ \log \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) \right] ]
其中:
- (\mathscr{L}{\text{DPO}}(\pi\theta; \pi_{\text{ref}})) 表示DPO算法的损失函数,(\pi_\theta) 是当前策略,(\pi_{\text{ref}}) 是参考策略。
- (\mathbb{E}) 表示期望值,通常通过对数据集 (\mathcal{D}) 中的样本进行平均来计算。
- ((x, y_w, y_l)) 是从数据集 (\mathcal{D}) 中抽取的样本,其中 (x) 是输入,(y_w) 是获胜的输出,(y_l) 是失败的输出。
目标是最大化策略 (\pi_\theta) 的期望回报,同时考虑策略之间的KL散度惩罚项: [ \max_{\pi_\theta} \mathbb{E}{x \sim \mathscr{D}, y \sim \pi\theta(y \mid x)} \left[ r_\phi(x, y) \right] - \beta \mathbb{D}{KL} \left[ \pi\theta(y \mid x) \mid\mid \pi_{\text{ref}}(y \mid x) \right] ]
其中:
- (\max_{\pi_\theta}) 表示对策略 (\pi_\theta) 进行优化。
- (\mathbb{E}) 表示期望值,通过对数据分布 (\mathscr{D}) 中的样本 (x) 和由策略 (\pi_\theta) 产生的样本 (y) 进行平均来计算。
- (r_\phi(x, y)) 是由参数 (\phi) 定义的奖励函数,评估给定状态 (x) 和动作 (y) 的回报。
- (\mathbb{D}_{KL}) 是Kullback-Leibler散度,衡量两个概率分布之间的差异。
- (\pi_\theta(y \mid x)) 是当前策略在给定状态 (x) 下选择动作 (y) 的概率。
- (\pi_{\text{ref}}(y \mid x)) 是参考策略在给定状态 (x) 下选择动作 (y) 的概率。
从整体上来看, 前面的公式是最大化奖赏, 后面是KL散度公式, 防止过度变化
重要的是, 我们不是要摆脱reward, 而是把他作为一个概率, 把模型改编成: Bradley-Terry模型。
如果最简单的分数转化
但是会遇到问题, 如果分数是负数, 那就很不好了
所以自然而然的我们想到了归一化, 或者一步到位softmax就挺好; 视频中用了(\sigma)函数
[
\sigma(x) = \frac{1}{1 + e^{-x}}
]
结果如下
为了改善Q7的回答质量, 我们有两个方法
- 如果对test进行单独反馈, 我们得到T1的内容
- 如果对test进行重新训练, 我们得到了T2的内容
类似于化学中的最小构象改变原理, 我们可能更加倾向于与原来答案更为相似的T1。
-
KL散度大小的含义: 相似程度
[ D_{\text{KL}}(P \parallel Q) = \sum_{x} P(x) \log \left(\frac{P(x)}{Q(x)}\right) ] -
运用方式 优化分数=Q7分数-KL散度(该测试&&原答案)
- 其中 Q7分数是确保答案是被改进了
- KL散度保证变化不大
-
拓展到Transformer