PPO (RLHF) 到 DPO 的完整数学推导#
本文档严格按照 DPO 论文(Direct Preference Optimization: Your Language Model is Secretly a Reward Model)的逻辑,推导 Section 3-4 及 Appendix A.1-A.2 的核心公式。
推导路径:
- PPO 目标:写出 RLHF 阶段带有 KL 惩罚的期望奖励最大化目标。
- 闭式最优解:证明该目标在非参数化空间下的最优策略 π∗ 的解析形式。
- 反解 Reward:将 Reward 函数用最优策略 π∗ 和参考策略 πref 表示。
- 代入偏好模型:将 Reward 表达式代入 Bradley-Terry 模型,消去配分函数 Z(x)。
- DPO Loss:通过最大似然估计得到最终的 DPO 损失函数。
0. 记号与背景#
- x:Prompt(输入上下文)
- y:Completion(模型生成的回答)
- π(y∣x):我们要学习的策略模型
- πref(y∣x):参考策略(通常是 SFT 模型,保持冻结)
- r(x,y):奖励函数(在 RLHF 中是 Reward Model,在 DPO 推导中假设存在这样一个隐式的真实奖励)
- β:KL 散度约束系数(控制策略不偏离 πref 的程度)
- σ(t)=1+e−t1:Sigmoid 函数
1. PPO 在 RLHF 中的优化目标#
在 RLHF 的 RL 阶段(PPO),我们的目标是最大化期望奖励,同时约束模型与参考模型的 KL 散度。论文 Eq.(3) 将此目标形式化为:
πmaxEx∼D[Ey∼π(⋅∣x)[r(x,y)]−βDKL(π(⋅∣x)∥πref(⋅∣x))](1)2.1 展开 KL 散度#
对于固定的 x,KL 散度定义为:
DKL(π∥πref)=y∑π(y∣x)logπref(y∣x)π(y∣x)将 (1) 中的期望展开为求和形式:
πmaxEx[y∑π(y∣x)r(x,y)−βy∑π(y∣x)logπref(y∣x)π(y∣x)]合并同类项 π(y∣x):
πmaxEx[y∑π(y∣x)(r(x,y)−βlogπref(y∣x)π(y∣x))](2)
2. 推导闭式最优策略 (Deriving the Optimal Policy)#
为了得到最优解 π∗,我们将“最大化问题”转换为“最小化 KL 问题”。
2.2 目标变换#
利用性质 argmaxF(π)=argmin[−F(π)],我们将 (2) 取负号并除以常数 β:
πminEx[y∑π(y∣x)(logπref(y∣x)π(y∣x)−β1r(x,y))](3)2.3 引入配分函数 (Partition Function)#
定义 Z(x) 为归一化常数(论文 Eq.(4) 下方定义):
Z(x)=y∑πref(y∣x)exp(β1r(x,y))(4)定义最优策略的形式 π∗(y∣x)(我们稍后证明它就是最优解):
π∗(y∣x)=Z(x)1πref(y∣x)exp(β1r(x,y))(5)2.4 构造 KL 形式#
对 π∗(y∣x) 取对数:
logπ∗(y∣x)=−logZ(x)+logπref(y∣x)+β1r(x,y)先移项解出 r(x,y) 的表达式:
β1r(x,y)=logπ∗(y∣x)−logπref(y∣x)+logZ(x)将其逐步代入 logπref(y∣x)π(y∣x)−β1r(x,y):
logπref(y∣x)π(y∣x)−β1r(x,y)=logπ(y∣x)−logπref(y∣x)−β1r(x,y)=logπ(y∣x)−logπref(y∣x)−(logπ∗(y∣x)−logπref(y∣x)+logZ(x))=logπ(y∣x)−logπ∗(y∣x)−logZ(x)=logπ∗(y∣x)π(y∣x)−logZ(x)即得到关键恒等式:
logπref(y∣x)π(y∣x)−β1r(x,y)=logπ∗(y∣x)π(y∣x)−logZ(x)(6)将 (6) 代回目标函数 (3):
πminEx[y∑π(y∣x)(logπ∗(y∣x)π(y∣x)−logZ(x))]逐项展开求和:
y∑π(y∣x)(logπ∗(y∣x)π(y∣x)−logZ(x))=y∑π(y∣x)logπ∗(y∣x)π(y∣x)−logZ(x)y∑π(y∣x).由于 ∑yπ(y∣x)=1,上式化为
y∑π(y∣x)logπ∗(y∣x)π(y∣x)−logZ(x)=DKL(π(⋅∣x)∥π∗(⋅∣x))−logZ(x).由于 ∑yπ(y∣x)logZ(x)=logZ(x)(与 y 无关),目标变为:
πminEx[DKL(π(⋅∣x)∥π∗(⋅∣x))−logZ(x)](7)NOTE提示:虽然 Z(x) 的定义里含有 r(x,y),但其中的 y 是内部求和变量,求和完成后只剩下 x 的函数。因此 logZ(x) 对外层 ∑yπ(y∣x) 来说是常数,有 ∑yπ(y∣x)logZ(x)=logZ(x)。
2.5.1 两条等价路线#
NOTE路线 A(拉格朗日乘子法,逐步求解):
对固定的 x,最小化式 (3) 的内层目标
π(⋅∣x)miny∑π(y∣x)(logπref(y∣x)π(y∣x)−β1r(x,y)),并满足约束 ∑yπ(y∣x)=1。将目标展开为显式形式:
y∑π(y∣x)logπ(y∣x)−y∑π(y∣x)logπref(y∣x)−β1y∑π(y∣x)r(x,y).构造拉格朗日函数:
L=y∑π(y∣x)logπ(y∣x)−y∑π(y∣x)logπref(y∣x)−β1y∑π(y∣x)r(x,y)+λ(y∑π(y∣x)−1).对每个 y 求偏导并令其为 0(注意 ∂π∂πlogπ=logπ+1):
∂π(y∣x)∂L=logπ(y∣x)+1−logπref(y∣x)−β1r(x,y)+λ=0.移项得到
logπ(y∣x)=logπref(y∣x)+β1r(x,y)−(1+λ).两边取指数:
π(y∣x)=exp(−(1+λ))πref(y∣x)exp(β1r(x,y)).令 Z(x)=exp(1+λ),得到
π∗(y∣x)=Z(x)1πref(y∣x)exp(β1r(x,y)).最后用归一化条件 ∑yπ∗(y∣x)=1 解出
Z(x)=y∑πref(y∣x)exp(β1r(x,y)).
NOTE路线 B(改写为 KL + 常数,逐步等价变形):
从定义 (5) 出发,先写出
logπ∗(y∣x)=−logZ(x)+logπref(y∣x)+β1r(x,y).移项得到
β1r(x,y)=logπ∗(y∣x)−logπref(y∣x)+logZ(x).代入到式 (3) 的被积项:
logπref(y∣x)π(y∣x)−β1r(x,y)=logπ(y∣x)−logπref(y∣x)−β1r(x,y)=logπ(y∣x)−logπref(y∣x)−(logπ∗(y∣x)−logπref(y∣x)+logZ(x))=logπ(y∣x)−logπ∗(y∣x)−logZ(x)=logπ∗(y∣x)π(y∣x)−logZ(x).对 y 求和:
y∑π(y∣x)(logπ∗(y∣x)π(y∣x)−logZ(x))=y∑π(y∣x)logπ∗(y∣x)π(y∣x)−logZ(x)y∑π(y∣x),而 ∑yπ(y∣x)=1,因此目标变为
DKL(π(⋅∣x)∥π∗(⋅∣x))−logZ(x).利用 KL 非负性,最优解满足
DKL(π(⋅∣x)∥π∗(⋅∣x))=0⇒π=π∗.
2.5 利用 Gibbs 不等式求解#
NOTEGibbs 不等式(KL 非负性)证明:对离散分布 p,q,记 u=piqi,利用不等式 logu≤u−1(当且仅当 u=1 取等),有
logqipi=−logpiqi≥1−piqi.两边乘以 pi 并对 i 求和:
i∑pilogqipi≥i∑(pi−qi)=0.因此 DKL(p∥q)≥0,且当且仅当 p=q 取等。
根据 Gibbs 不等式(即 KL 散度非负性):
DKL(p∥q)≥0,DKL(p∥q)=0⟺p=q要使 (7) 最小,只需让 KL 项为 0。因此,最优策略即为我们在 (5) 中定义的:
π∗(y∣x)=Z(x)1πref(y∣x)exp(β1r(x,y))(论文 Eq.4)NOTE关于“为什么 π∗=π”:由式 (7) 得目标为
πminDKL(π(⋅∣x)∥π∗(⋅∣x))−logZ(x).其中 −logZ(x) 与 π 无关,因此等价于最小化 KL 散度。由 Gibbs 不等式,
DKL(π∥π∗)≥0,DKL(π∥π∗)=0⟺π=π∗,故最优解满足 π=π∗。式 (4) 只是给出了这个最优分布 π∗ 的显式形式。
3. 从最优策略反解 Reward#
DPO 的核心思想是用策略来表示奖励。从 Eq.(4) 出发,两边取对数并移项:
logπ∗(y∣x)=logπref(y∣x)+β1r(x,y)−logZ(x)解出 r(x,y):
β1r(x,y)=logπref(y∣x)π∗(y∣x)+logZ(x)r(x,y)=βlogπref(y∣x)π∗(y∣x)+βlogZ(x)(论文 Eq.5)
4. 代入 Bradley-Terry 偏好模型#
4.1 偏好模型定义#
Bradley-Terry (BT) 模型假设人类选择回答 y1 优于 y2 的概率为:
p(y1≻y2∣x)=exp(r(x,y1))+exp(r(x,y2))exp(r(x,y1))=σ(r(x,y1)−r(x,y2))(8)4.2 配分函数 Z(x) 的抵消#
计算两个回答的奖励差值。利用 Eq.(5) 的反解公式:
r(x,y1)−r(x,y2)=(βlogπref(y1∣x)π∗(y1∣x)+βlogZ(x))−(βlogπref(y2∣x)π∗(y2∣x)+βlogZ(x))=βlogπref(y1∣x)π∗(y1∣x)−βlogπref(y2∣x)π∗(y2∣x)关键点:Z(x) 仅依赖于 x,在差分中直接抵消了。这使得我们不需要估计复杂的配分函数。
将此差值代入 BT 模型 (8):
p(y1≻y2∣x)=σ(βlogπref(y1∣x)π∗(y1∣x)−βlogπref(y2∣x)π∗(y2∣x))(论文 Eq.6)
5. DPO 损失函数 (Final Objective)#
现在我们将最优策略 π∗ 替换为我们需要训练的参数化策略 πθ。
给定偏好数据集 D={(x,yw,yl)},其中 yw 是胜者,yl 是败者。
最大化偏好数据的对数似然(Log-Likelihood):
θmaxE(x,yw,yl)∼D[logpθ(yw≻yl∣x)]等价于最小化负对数似然(Negative Log-Likelihood)。代入 Eq.(6) 的形式:
LDPO(πθ;πref)=−E(x,yw,yl)∼D[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]这就是最终的 DPO 损失函数(论文 Eq.7)。
LDPO=−ED[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]