DPO
DPO(Direct Preference Optimization,直接偏好优化)是一种利用偏好数据(人从两个回答中选出较好的一个)直接训练 LLM 的方法,不需要单独的奖励模型或强化学习阶段。
通俗解释 这就像不再专门培养给厨师打分的评委,而是直接把顾客在两道菜中选了哪一道的记录拿给厨师看,教他们“照这道做”。
工作原理
首先收集数据:针对同一个问题的两个回答,以及人更偏好其中哪一个的记录。DPO 直接训练模型,提高生成被偏好回答的概率,降低生成未被偏好回答的概率。同时以训练前的原始模型为参照,防止模型偏离原来的样子太远。这种方式与一般的监督学习类似,因此实现和运维都比较简单。
有何不同
传统的 RLHF 分两个阶段:先用偏好数据训练奖励模型,再根据奖励模型给出的分数进行强化学习。DPO 把这两个阶段合并为一次训练,省去了奖励模型和强化学习过程。因此所需计算资源较少,强化学习特有的不稳定性也较小。
注意事项
DPO 是只用预先收集的偏好数据进行训练的 Off-policy 方法,结果在很大程度上取决于数据的质量和覆盖范围。也有观点指出,与让模型在训练中对新生成的回答接受评估并不断改进的强化学习方法相比,DPO 的性能提升可能较小。因此在实践中,人们会根据情况组合使用,例如在 SFT 之后使用 DPO,或与其他强化学习技术搭配使用。
示例
发布开放权重 LLM 的机构在制作能很好地遵循指令、以人们偏好的语气回答的“对话版”时,经常使用 DPO。这是因为,即使是没有余力单独训练奖励模型、运行强化学习的实验室或企业,只要有偏好数据,也能用相对较少的资源把模型调整到想要的方向。许多微调工具也把 DPO 与 SFT 一起作为基本功能提供。