DPO, Direct Preference Optimization,采用直接优化策略满足人类偏好,使得LLM对于给定输入,生成能用输出的概率高于生成不能用输出的概率。
1)DPO优化目标
在DPO训练过程中,模型通过最大化可用回答相对于不可用回答的偏好分数的对数似然来优化。
其中:
D是偏好数据集。
σ是sigmoid函数。
β控制KL散度惩罚项强度的超参数,平衡模型生成高质量响应和保持与参考模型接近之间的关系。
优化目标是通过最小化损失 L_DPO 来增大模型对好回答 𝑦_𝑤的偏好,同时降低对差回答 𝑦_𝑙的偏好。这导致模型倾向于提升 𝑦_𝑤的概率,同时抑制 𝑦_𝑙 的概率。
2)DPO奖励函数
DPO奖励函数
3)传统RL奖励函数
对于一个给定策略π_θ,其生成响应y的奖励函数r(x,y)由策略模型π_θ与参考模型π_ref(通常是SFT后模型)之间的对数概率比表示。
传统RL奖励函数r(x, y)是策略优化中KL散度惩罚的一个重要结果,在RL中加入KL惩罚项,即最大化
时,最优策略πθ∗的形式为:
从这个式子反推得到奖励函数r(x,y),与策略模型与参考策略的对数概率比成正比关系。
4)DPO学习解读
从DPO优化目标和奖励函数可见,DPO样本的输入和输出为prompt + chosen + rejected,prompt用x表示,chosen表示的是可用输出,rejected表示的是不可用输出。通过最大化DPO目标函数,直接鼓励模型生成更偏好的响应,同时惩罚生成不偏好的响应,无需显式地训练一个奖励模型。
reference
---
DPO在代码优化任务上性能糟糕的原因分析
https://inuyashayang.github.io/AIDIY/RLHF_Pages/DPO_Problem/
深度强化学习中的DPO算法:理论与实践
https://juejin.cn/post/7511915154032967706
Direct Preference Optimization: Your Language Model is Secretly a Reward Model
[2305.18290] Direct Preference Optimization: Your Language Model is Secretly a Reward Model