DPO 与 GRPO 完整推导

分类: 预训练与微调 · 难度: 进阶 · 关联讲座: L08

DPO 与 GRPO 完整推导

本文推导 Direct Preference Optimization(DPO)如何从 RLHF 目标的闭式解出发,消去奖励模型和配分函数,得到直接用偏好数据优化策略的简洁损失函数。同时收录 GRPO(Group Relative Policy Optimization)的目标函数推导,展示如何用组内相对奖励替代价值网络。


1. DPO 从 RLHF 目标的完整推导

📐 DPO 从 RLHF 目标的完整推导

Step 1:RLHF 目标的最优解

RLHF 最大化(对每个输入 xx,对所有可能输出 yy 求最优):

maxπθEyπθ[r(x,y)]βKL[πθ(yx)πref(yx)]\max_{\pi_\theta} \mathbb{E}_{y \sim \pi_\theta}\left[r(x,y)\right] - \beta \cdot KL\left[\pi_\theta(y|x) \| \pi_{ref}(y|x)\right]

对此目标关于 πθ\pi_\theta 取变分,令导数为零,得闭式最优策略

π(yx)=1Z(x)πref(yx)exp ⁣(r(x,y)β)\pi^*(y|x) = \frac{1}{Z(x)}\, \pi_{ref}(y|x)\exp\!\left(\frac{r(x,y)}{\beta}\right)

其中 Z(x)=yπref(yx)exp ⁣(r(x,y)β)Z(x) = \sum_y \pi_{ref}(y|x)\exp\!\left(\frac{r(x,y)}{\beta}\right) 是归一化常数(配分函数)。

Step 2:反解奖励函数

由上式取对数,用 π\pi^* 表示 rr

r(x,y)=βlogπ(yx)πref(yx)+βlogZ(x)r(x,y) = \beta \log\frac{\pi^*(y|x)}{\pi_{ref}(y|x)} + \beta \log Z(x)

Step 3:代入 Bradley-Terry 偏好模型

P(ywylx)=σ(r(x,yw)r(x,yl))P(y_w \succ y_l \mid x) = \sigma(r(x,y_w) - r(x,y_l))

代入 rr 的表达式,βlogZ(x)\beta \log Z(x) 在差值中完全抵消

P(ywylx)=σ ⁣(βlogπ(ywx)πref(ywx)βlogπ(ylx)πref(ylx))P(y_w \succ y_l \mid x) = \sigma\!\left(\beta \log\frac{\pi^*(y_w|x)}{\pi_{ref}(y_w|x)} - \beta \log\frac{\pi^*(y_l|x)}{\pi_{ref}(y_l|x)}\right)

Step 4:DPO 损失(用 πθ\pi_\theta 近似 π\pi^*,最大化偏好对数似然):

JDPO(θ)=E(x,yw,yl) ⁣[logσ ⁣(βlogπθ(ywx)πref(ywx)βlogπθ(ylx)πref(ylx))]J_{DPO}(\theta) = -\mathbb{E}_{(x,y_w,y_l)}\!\left[\log\sigma\!\left(\beta\log\frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \beta\log\frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right)\right]

结论:DPO 完全绕过了奖励模型的训练,直接用偏好数据优化策略,且数学上等价于 RLHF 的最优解。

2. GRPO 目标函数推导

📐 GRPO 目标函数推导

核心思想:PPO 需要一个单独的 Value Network(价值网络)来估计优势函数(Advantage)A(x,y)A(x,y)——这个网络和策略网络一样大,代价极高。GRPO 用组内相对奖励代替价值网络。

Step 1:组内采样

对同一输入 xx,从当前策略采样 GG 个输出 {y1,,yG}\{y_1, \ldots, y_G\},计算各自奖励 {r1,,rG}\{r_1, \ldots, r_G\}

Step 2:优势估计(组内归一化)

Ai=riμrσr,μr=1Gj=1Grj,σr=1Gj=1G(rjμr)2A_i = \frac{r_i - \mu_r}{\sigma_r}, \quad \mu_r = \frac{1}{G}\sum_{j=1}^G r_j, \quad \sigma_r = \sqrt{\frac{1}{G}\sum_{j=1}^G (r_j - \mu_r)^2}

Ai>0A_i > 0 表示第 ii 个输出优于组内平均,Ai<0A_i < 0 则相反。

Step 3:GRPO 目标(结合 PPO clip 技巧)

JGRPO(θ)=Ex,{yi} ⁣[1Gi=1Gmin ⁣(πθ(yix)πold(yix)Ai,  clip ⁣(πθ(yix)πold(yix),1 ⁣ ⁣ϵ,1 ⁣+ ⁣ϵ)Ai)βDKL(πθπref)]J_{GRPO}(\theta) = \mathbb{E}_{x,\{y_i\}}\!\left[\frac{1}{G}\sum_{i=1}^G \min\!\left(\frac{\pi_\theta(y_i|x)}{\pi_{old}(y_i|x)} A_i,\; \text{clip}\!\left(\frac{\pi_\theta(y_i|x)}{\pi_{old}(y_i|x)}, 1\!-\!\epsilon, 1\!+\!\epsilon\right) A_i\right) - \beta\, D_{KL}(\pi_\theta \| \pi_{ref})\right]

与 PPO 的对比:PPO 用 Ai=riVϕ(x)A_i = r_i - V_\phi(x)VϕV_\phi 是价值网络),而 GRPO 用组内统计替代,消除了对价值网络的需求,节省了约 50% 的训练显存。

3. DPO 隐式奖励与梯度直觉

💡 DPO 的隐式奖励:策略自身即奖励模型

DPO 损失改写为:

JDPO(θ)=E ⁣[logσ ⁣(βlogπθ(ywx)πref(ywx)r^θ(x,yw)βlogπθ(ylx)πref(ylx)r^θ(x,yl))]J_{DPO}(\theta) = -\mathbb{E}\!\left[\log \sigma\!\left(\underbrace{\beta \log\frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)}}_{\hat{r}_\theta(x,y_w)} - \underbrace{\beta \log\frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}}_{\hat{r}_\theta(x,y_l)}\right)\right]

隐式奖励 r^θ(x,y)=βlogπθ(yx)πref(yx)\hat{r}_\theta(x,y) = \beta \log\frac{\pi_\theta(y|x)}{\pi_{ref}(y|x)}

  • r^>0\hat{r} > 0:策略比参考模型更倾向于生成 yy
  • r^<0\hat{r} < 0:策略比参考模型更不倾向于生成 yy
  • DPO 的策略本身即奖励模型——无需单独训练 RM

梯度自适应权重

JDPOσ(r^lr^w)[logπθ(ywx)logπθ(ylx)]\nabla J_{DPO} \propto -\sigma(\hat{r}_l - \hat{r}_w) \cdot \left[\nabla \log \pi_\theta(y_w|x) - \nabla \log \pi_\theta(y_l|x)\right]

  • 模型判断错误时(r^l>r^w\hat{r}_l > \hat{r}_w):σ\sigma 大,更新猛
  • 模型已学好时(r^wr^l\hat{r}_w \gg \hat{r}_l):σ0\sigma \to 0,更新自动减弱
  • 内置自适应学习速率:正确样本自动获得小梯度权重

4. DPO 训练数值演示

🔢 单步训练完整数值示例

设定β=0.5\beta = 0.5,一对偏好数据 (yw,yl)(y_w, y_l)

初始状态(模型尚未对齐)

输出πref(yx)\pi_{ref}(y\|x)πθ(yx)\pi_\theta(y\|x)隐式奖励 r^=0.5logπθπref\hat{r} = 0.5\log\frac{\pi_\theta}{\pi_{ref}}
ywy_w(好回复)0.300.250.5×log(0.833)=0.0920.5 \times \log(0.833) = -0.092
yly_l(坏回复)0.200.300.5×log(1.500)=+0.2030.5 \times \log(1.500) = +0.203

当前 r^(yl)>r^(yw)\hat{r}(y_l) > \hat{r}(y_w):模型错误地认为坏回复更好。

DPO 损失J=logσ(0.0920.203)=0.851J = -\log\sigma(-0.092 - 0.203) = 0.851

梯度权重σ(0.295)=0.573\sigma(0.295) = 0.573(较大,惩罚力度强)

收敛后状态

输出πθ(yx)\pi_\theta(y\|x)隐式奖励
ywy_w0.42+0.167+0.167
yly_l0.140.178-0.178

r^(yw)r^(yl)\hat{r}(y_w) \gg \hat{r}(y_l)σ\sigma 接近 0,更新自动停止——收敛。

结论:DPO 同时拉高好回复的相对概率、压低坏回复的相对概率,两者共享同一 sigmoid 权重(自适应平衡)。