后训练之DPO

66 阅读2分钟

什么是DPO?

DPO/直接偏好优化:直接偏好优化可以被视为一种从正面和负面回复中进行对比学习的方法。

DPO适用于什么阶段?

DPO适用于指令微调大模型(上文提到的基础大模型通过SFT训练之后得到的模型)之后的训练。

DPO对应的损失函数

DPO旨在最小化对比损失,该损失对负面回复进行惩罚,并鼓励正面回复。DPO损失实际上是对重新参数化奖励模型的奖励差异的交叉熵损失。 L DPO = − log ⁡ σ ( β ( log ⁡ π θ ( y pos ∣ x ) π ref ( y pos ∣ x ) − log ⁡ π θ ( y neg ∣ x ) π ref ( y neg ∣ x ) ) ) image.png

DPO的用例

  • 改变模型行为
  • 提高模型性能 image.png

DPO数据整理原则

  • 校正方法:通常可以从原始模型生成回复,将该回复作为一个主动样本,然后进行一些改进,使其成为一个正向回复。例如说改变模型的身份,你可以从当前模型自身生成的一个负面例子开始,比如对于“你是谁?”这样的问题,模型可能会说“我是Llama”。 你可以直接进行修改,并用你想要的任何模型身份替换这个Llama。在此,对于同样的问题,我们希望模型说“我是Athene”,所以我们将这个回复设为正向的。通过这种方式,你可以使用这种基于纠正的方法,自动创建大规模、高质量的对比数据,用于DPO的训练。
  • 在线或策略内DPO的一种特殊情况:从模型自身的分布中生成正向和负向示例。 你可以针对同一个提示,从你想要微调的当前模型中生成多个回复,然后你可以收集最佳回复作为正样本,最差回复作为负样本。之后你再判断哪个回复更好,哪个回复更差。你可以使用一些奖励函数或人工判断来完成这项工作。

image.png