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% 的训练显存。