Skip to content

Latest commit

 

History

History
128 lines (103 loc) · 5.38 KB

File metadata and controls

128 lines (103 loc) · 5.38 KB

动画讲解深度强化学习 - DPO

论文来源: Direct Preference Optimization
DPO是绕开PPO进行优化的一个方式。

本节目录


1. RLHF和PPO

  1. RLHF可以简单的用下图表示
RLHF图示
  1. 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


2. 初步认识DPO

2.1 基本公式表达

[ \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) 是失败的输出。

2.2 优化目标公式

目标是最大化策略 (\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模型


3. 公式拆解认知

3.1 把分数转换成概率--Bradley-Terry模型

如果最简单的分数转化

分数转换图示

但是会遇到问题, 如果分数是负数, 那就很不好了

负数问题图示

所以自然而然的我们想到了归一化, 或者一步到位softmax就挺好; 视频中用了(\sigma)函数
[ \sigma(x) = \frac{1}{1 + e^{-x}} ]
结果如下

Sigmoid结果图示

3.2 防止过拟合

防止过拟合图示

为了改善Q7的回答质量, 我们有两个方法

  1. 如果对test进行单独反馈, 我们得到T1的内容
  2. 如果对test进行重新训练, 我们得到了T2的内容
    类似于化学中的最小构象改变原理, 我们可能更加倾向于与原来答案更为相似的T1

3.3 如何评价相似程度? --- KL散度

  • KL散度大小的含义: 相似程度
    [ D_{\text{KL}}(P \parallel Q) = \sum_{x} P(x) \log \left(\frac{P(x)}{Q(x)}\right) ]

    KL散度图示
  • 运用方式 优化分数=Q7分数-KL散度(该测试&&原答案)

    • 其中 Q7分数是确保答案是被改进了
    • KL散度保证变化不大
  • 拓展到Transformer

    Transformer拓展图示

3.4 训练