DPO数学原理
1.什么是DPO?
DPO(Direct Preference Optimization)是一种用于对齐大语言模型(LLMs)的新型方法,旨在高效地将人类偏好融入模型训练中。它提供了一种替代强化学习(如 RLHF, Reinforcement Learning with Human Feedback)的方式,能够直接优化偏好数据,而无需显式地引入奖励模型(Reward Model)或策略梯度方法。
2.DPO的数学原理:
LDPO=−logσ(β⋅(logπθ(ypos∣x)πref(ypos∣x)−logπθ(yneg∣x)πref(yneg∣x))) \mathcal{L}_{\text{DPO}} = -\log \sigma \left( \beta \cdot \left( \log \frac{\pi_{\theta}(y_{\text{pos}} \mid x)}{\pi_{\text{ref}}(y_{\text{pos}} \mid x)} - \log \frac{\pi_{\theta}(y_{\text{neg}} \mid x)}{\pi_{\text{ref}}(y_{\text{neg}} \mid x)} \right) \right) LDPO=−logσ(β⋅(logπref(ypos∣x)πθ(ypos∣x)−logπref(yneg∣x)πθ(yneg∣x)))
符号定义:
- xxx:输入提示(prompt)
- yposy_{\text{pos}}ypos:被偏好(优选)的输出(如人类标注的更优回答)
- ynegy_{\text{neg}}yneg:被拒绝的输出(如人类标注的较差回答)
- πθ\pi_{\theta}πθ:当前待优化的策略模型(通常是语言模型的 logits)
- πref\pi_{\text{ref}}πref:参考模型(通常是 SFT 后的基线模型,固定不更新)
- σ(⋅)\sigma(\cdot)σ(⋅):Sigmoid 函数 σ(z)=11+e−z\sigma(z) = \frac{1}{1+e^{-z}}σ(z)=1+e−z1
- β\betaβ:温度超参数(控制优化强度)
公式简化:
令 Δ=(logπθ(ypos∣x)πref(ypos∣x)−logπθ(yneg∣x)πref(yneg∣x))\Delta = \left( \log \frac{\pi_{\theta}(y_{\text{pos}} \mid x)}{\pi_{\text{ref}}(y_{\text{pos}} \mid x)} - \log \frac{\pi_{\theta}(y_{\text{neg}} \mid x)}{\pi_{\text{ref}}(y_{\text{neg}} \mid x)} \right)Δ=(logπref(ypos∣x)πθ(ypos∣x)−logπref(yneg∣x)πθ(yneg∣x)),则:
LDPO=−logσ(β⋅Δ)
\mathcal{L}_{\text{DPO}} = -\log \sigma \left( \beta \cdot \Delta \right)
LDPO=−logσ(β⋅Δ)
数学本质:
- Δ\DeltaΔ 是当前模型与参考模型在优选/拒绝输出上的对数概率比之差:
Δ=logπθ(ypos)−logπref(ypos)⏟优选输出相对增益−(logπθ(yneg)−logπref(yneg))⏟拒绝输出相对增益 \Delta = \underbrace{\log \pi_{\theta}(y_{\text{pos}}) - \log \pi_{\text{ref}}(y_{\text{pos}})}_{\text{优选输出相对增益}} - \underbrace{\left( \log \pi_{\theta}(y_{\text{neg}}) - \log \pi_{\text{ref}}(y_{\text{neg}}) \right)}_{\text{拒绝输出相对增益}} Δ=优选输出相对增益logπθ(ypos)−logπref(ypos)−拒绝输出相对增益(logπθ(yneg)−logπref(yneg)) - 通过 Sigmoid 映射为概率:σ(βΔ)\sigma(\beta \Delta)σ(βΔ) 表示“当前模型比参考模型更偏好 yposy_{\text{pos}}ypos 而非 ynegy_{\text{neg}}yneg”的概率
- 最大化该概率 → 等价于最小化 LDPO\mathcal{L}_{\text{DPO}}LDPO
本质上,这个对数比值项可以被看作是奖励模型的重新参数化。如果你将其视为奖励模型,那么这个DPO损失实际上就是正样本和负样本之间奖励差异的sigmoid函数。本质上,DPO试图最大化正样本的奖励,并最小化负样本的奖励。
3.DPO优势和缺陷:
优势 | 局限 |
---|---|
无需奖励模型,减少训练环节 | 依赖高质量偏好对(噪声敏感) |
无需采样策略(无 actor 网络) | 参考模型必须固定(不能动态更新) |
数学可解释性强(与最大似然有理论关联) | 对超参数 β\betaβ 仍需调优(过大导致过拟合) |
避免奖励黑客(Reward Hacking)问题 | 长序列生成时可能忽略参考模型的约束 |
4.用于高质量的DPO数据整理的方法:
1.第一种是一种校正方法,通常可以从原始模型生成回复,将该回复作为一个主动样本,然后进行一些改进,使其成为一个正向回复。
2.第二种方法被视为在线或策略内DPO的一种特殊情况。可以针对同一个提示,从你想要微调的当前模型中生成多个回复,然后你可以收集最佳回复作为正样本,最差回复作为负样本。之后你再判断哪个回复更好,哪个回复更差。你可以使用一些奖励函数或人工判断来完成这项工作。