DPO 优点
RLHF需要先利用偏好数据来训练一个RM,然后基于强化学习来最大化奖励,而不能偏离原始模型。DPO通过奖励函数和最优策略之间的映射,受限的奖励最大化问题可以使用单个阶段的策略来实现微调,无需训练RM,数据采样,训练更轻量;
DPO推导
Bradley-Terry模型
借助Bradley-Terry模型是来表达微调的目标函数:
Bradley-Terry模型是一种用于比较成对对象并确定相对偏好或能力的方法。这种模型特别适用于对成对比较数据进行分析,从而对一组对象进行排序。
P ( i > j ) = α i α i + α j P(i>j)=\frac{\alpha_i}{\alpha_i+ \alpha_j} P(i>j)=αi+αjαi
将reward r带入到 P P P中,得到loss函数:
目标是优化LLM输出的 y w y_w yw得分尽可能大于 y l y_l yl的得分。
根据RLHF的优化目标推导出reward的表达式:
RLHF的优化目标:
其中:
引入Z(x)将目标函数转换为 π ∗ \pi^* π∗与 π \pi π之间的kl散度最小化:
将第一项分母定义 π ∗ \pi^* π∗:
π ∗ \pi^* π∗与 π \pi π之间的kl散度最小化:
再根据该式与 π ∗ \pi^* π∗推导出reward表达式
推导出reward表达式
将reward表达式带入到BT的loss函数中,就可以得到消除reward的loss函数,即DPO loss
这样模型的微调更新就不依赖于reward函数,而是只依赖于偏好数据对
IPO算法
IPO提出当偏好数据更优的确定性很大时,控制kl散度强度的参数不起作用,dpo可能会发生过拟合。IPO在DPO的损失函数上添加了一个正则项,从而即使偏好确定性很大时,最优的策略也可以靠近于 π r e f \pi_{ref} πref,可以不使用early stopping技巧就可以使模型收敛。
参考:
- DPO(Direct Preference Optimization)论文
- 算法学习笔记:https://blog.csdn.net/Ever_____/article/details/139304624
- 代码介绍:https://www.cnblogs.com/lemonzhang/p/17910358.html
- dpo改进方法介绍:https://blog.csdn.net/beingstrong/article/details/138973997
- 源码:https://hub.yzuu.cf/huggingface/trl/blob/main/trl/trainer/dpo_trainer.py