DPO: 直接偏好优化
RLHF 中需要先训练一个 Reward Model,再使用强化学习模型去优化,过程复杂。
于是 DPO(Direct Preference Optimization) 希望将 RLHF 的目标用一个单一的损失函数表示,即: $$ \mathcal{L}{\text{DPO}}(\pi{\theta}; \pi_{\text{ref}}) = -\mathbb{E}{(x, y_w, y_l) \sim \mathcal{D}} \left[ \log \sigma \left( \beta \log \frac{\pi{\theta}(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \beta \log \frac{\pi_{\theta}(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)} \right) \right] $$ 这个公式中:
$\pi_{\theta}$ 是我们需要训练的模型 (Policy Model),也就是 SFT 之后的模型,我们希望训练这个模型更加符合人类偏好;
$\pi_{\text{ref}}$ 是一个参考模型 (Reference Model),也是 SFT 之后的模型,但是模型参数会被冻结,防止在训练的过程中训练模型相较参考模型偏差太多;
$(x, y_w, y_l)$ 是来自偏好数据集 $\mathcal{D}$ 的一个样本:
$x$ 是用户提示 (Prompt)
$y_w$ 是人类更喜欢的答案 (winning response)
$y_l$ 是人类不喜欢的答案 (losing response)
这个公式的核心思想:
$\beta \log \frac{\pi_{\theta}(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)}$ 代表模型 $\pi_{\theta}$ 对 $y_w$ 获胜答案的隐式奖励;
$\beta \log \frac{\pi_{\theta}(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)}$ 代表模型 $\pi_{\theta}$ 对 $y_l$ 失败答案的隐式奖励。
DPO 的目标就是最大化这个差值 $\beta \log \frac{\pi_{\theta}(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \beta \log \frac{\pi_{\theta}(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)}$,也就是希望获胜答案的奖励与失败答案之间的奖励的分布差距尽可能大。