PPO

PPO也是策略学习的一种,主要缓解A2C架构中Actor更新幅度过大和On-policy的缺点。

Recap: A2C

  • Actor的目标函数仍然是最大化策略下的任意轨迹的累积折扣奖励
  • 使用GAE估计器估计优势后的损失函数梯度:
    ∇L(θ)=1N∑n=1N∑t=1TnAθGAE(snt,ant)∇logPθ(ant∣snt) \nabla L(\theta) =\begin{align} \frac{1}{N}\sum_{n=1}^N\sum_{t=1}^{T_n}A_\theta^{GAE}(s_n^t,a_n^t)\nabla\mathrm{log}P_\theta(a_n^t|s_n^t) \end{align} L(θ)=N1n=1Nt=1TnAθGAE(snt,ant)logPθ(antsnt)
    A2C的缺点在于:
  • 这个策略是on-policy的,采样和更新策略都是πθ(ant∣snt)\pi_{\theta}(a_n^t|s_n^t)πθ(antsnt)
  • 采集数据只能用于更新一次,然后必须丢弃

理解:你以前采集的数据只能代表以前的你,不能用于代表现在的你

改进

  • on-policy 改进:使用旧策略的GAE估计和采样的数据,更新时,计算新旧策略的变化幅度
    Loss=−1N∑n=1N∑t=1TnAθ′GAE(snt,ant)Pθ(ant∣snt)Pθ′(ant∣snt) \mathrm{Loss}=-\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_{n}}A_{\theta^{\prime}}^{GAE}(s_{n}^{t},a_{n}^{t})\frac{P_{\theta}(a_{n}^{t}|s_{n}^{t})}{P_{\theta^{\prime}}(a_{n}^{t}|s_{n}^{t})} Loss=N1n=1Nt=1TnAθGAE(snt,ant)Pθ(antsnt)Pθ(antsnt)
  • 更新幅度问题:加入KL散度软约束或者直接裁剪变化量。
    在这里插入图片描述

PPO训练过程

PPO需要4个模型:

  • Value-head:LLM+value-head得到,通过TD算法进行更新
  • ref-model:LLM旧的参数
  • model:正在更新的LLM
  • reward model:用于估计奖励,通过奖励得到

更新过程:

  • 进行rollout,收集一定数量数据:包括状态(prompt+输出token拼接)和动作,V-value,优势函数,累积折扣奖励RtR_tRt(用于更新V-head),旧模型输出动作的log prob
  • 进行采样,采样到一个mini-batch:根据损失函数计算损失,然后更新。

完整的损失函数:
在这里插入图片描述

在这里插入图片描述

奖励模型的训练过程

Preference Data

  • 人类不擅长对于一个回答打分(客观性偏差比较大),但擅长对于一对回答进行评估(谁好谁坏)
  • 我们需要训练的Reward model需要对于提示词输入和回答进行打分,输出标量,但是我们却只有相对偏好的数据(谁好谁坏一些)
  • 因此我们需要根据相对偏好的数据定义标量奖励。
    在这里插入图片描述

Bradley-Terry模型

理解:i战胜j的概率是i的能力值占总能力值的比例

  • 为了确保能力值为整数,我们一般使用指数的形式
  • 这里的能力可以理解为LLM生成该序列的概率
    在这里插入图片描述
  • 注意:第二个公式实际上是一个sigmoid激活函数。

损失函数:

  • 我们希望A和B的概率相差越大越好,因此我们可以将负数对然函数定义为损失函数。
    在这里插入图片描述

Insrtuct GPT做法

  • 收集K个数据,让人类进行排序的标注。
  • 最后两两取出成对数据进行优化
    在这里插入图片描述

DPO

KL-散度

  • P比Q的期望
  • 注意:P比Q有一个log就行
    KL(P∣∣Q)=EP[log(PQ)] \begin{align} KL(P||Q)=E_P[log(\frac{P}{Q})] \end{align} KL(P∣∣Q)=EP[log(QP)]
    在这里插入图片描述

目标函数及其简化

  • DPO的目标函数其实包含奖励模型,但是经过化简DPO消去了奖励模型的存在
    在这里插入图片描述

推导过程

  • 简单来说就是消去奖励函数的过程。
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

不带有奖励模型的目标函数

  • 理解:从已经构造好的偏好数据中采样,然后分别计算好样本和坏样本的log prob,利用Bradley-Terry模型最大化负对数似然

LDPO(θ;πref)=−E(x,yw,yl)∼D⌊log⁡σ(βlog⁡πθ(yw∣x)πref(yw∣x)−βlog⁡πθ(yl∣x)πref(yl∣x))⌋\mathcal{L}_{\mathcal{DPO}}\left(\theta;\pi_{\mathrm{ref}}\right)=-E_{(x,y_{w},y_{l})\sim\mathbb{D}}\left\lfloor\log\sigma\left(\beta\log\frac{\pi_{\theta}(y_{w}|x)}{\pi_{\mathrm{ref}}(y_{w}|x)}-\beta\log\frac{\pi_{\theta}(y_{l}|x)}{\pi_{\mathrm{ref}}(y_{l}|x)}\right)\right\rfloorLDPO(θ;πref)=E(x,yw,yl)Dlogσ(βlogπref(ywx)πθ(ywx)βlogπref(ylx)πθ(ylx))

Logo

更多推荐