强化学习·PPO和DPO
·
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=1∑Nt=1∑TnAθGAE(snt,ant)∇logPθ(ant∣snt)
A2C的缺点在于: - 这个策略是on-policy的,采样和更新策略都是πθ(ant∣snt)\pi_{\theta}(a_n^t|s_n^t)πθ(ant∣snt)
- 采集数据只能用于更新一次,然后必须丢弃
理解:你以前采集的数据只能代表以前的你,不能用于代表现在的你
改进
- 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=1∑Nt=1∑TnAθ′GAE(snt,ant)Pθ′(ant∣snt)Pθ(ant∣snt) - 更新幅度问题:加入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)∼D⌊logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))⌋
更多推荐

所有评论(0)