Rafailov, Rafael, et al. “Direct preference optimization: Your language model is secretly a reward model.” Advances in Neural Information Processing Systems 36 (2023): 53728-53741.
本文整理了 DPO 论文中两个核心结论的推导,包括参考策略距离约束下的最优策略的形式,以及损失函数的设计。
文章目录
1. 参考策略距离约束下的最优策略
在强化学习中,特别是在策略优化的背景下,我们经常需要在最大化奖励的同时,保持策略与某个参考策略(如初始策略或专家策略)之间的相似性。这种相似性通常通过KL散度(Kullback-Leibler divergence)来衡量。
最优策略
∝
原始模型
×
exp
(
奖励函数
/
β
)
最优策略∝原始模型×\exp(奖励函数/β)
最优策略∝原始模型×exp(奖励函数/β) 这一公式,实际上是解决了一个带约束的优化问题,即在最大化期望奖励的同时,限制策略与原始模型之间的KL散度。下面我们将详细推导这一公式的证明过程。
定义优化问题
我们希望找到一个策略 π π π,使得在给定状态分布 p ( x ) p(x) p(x) 下,期望奖励最大化,同时保持策略 π π π 与参考策略 π ref π_\text{ref} πref 之间的KL散度不超过某个阈值。数学上,这可以表示为:
max π E x ∼ p ( x ) , y ∼ π ( y ∣ x ) [ r ( x , y ) ] s.t. E x ∼ p ( x ) [ D KL ( π ( y ∣ x ) ∥ π ref ( y ∣ x ) ) ] ≤ ϵ \begin{aligned} \max_{\pi} \quad & \mathbb{E}_{x \sim p(x), y \sim \pi(y|x)}[r(x, y)] \\ \text{s.t.} \quad & \mathbb{E}_{x \sim p(x)}[D_{\text{KL}}(\pi(y|x) \| \pi_{\text{ref}}(y|x))] \leq \epsilon \end{aligned} πmaxs.t.Ex∼p(x),y∼π(y∣x)[r(x,y)]Ex∼p(x)[DKL(π(y∣x)∥πref(y∣x))]≤ϵ
其中, r ( x , y ) r(x, y) r(x,y) 是奖励函数, D KL D_\text{KL} DKL 是KL散度,ε是允许的最大散度。
拉格朗日乘数法
为了求解这个带约束的优化问题,我们可以使用拉格朗日乘数法。引入拉格朗日乘子β,构造拉格朗日函数:
L ( π , β ) = E x ∼ p ( x ) , y ∼ π ( y ∣ x ) [ r ( x , y ) ] − β ( E x ∼ p ( x ) [ D KL ( π ( y ∣ x ) ∥ π ref ( y ∣ x ) ) ] − ϵ ) \mathcal{L}(\pi, \beta) = \mathbb{E}_{x \sim p(x), y \sim \pi(y|x)}[r(x, y)] - \beta \left( \mathbb{E}_{x \sim p(x)}[D_{\text{KL}}(\pi(y|x) \| \pi_{\text{ref}}(y|x))] - \epsilon \right) L(π,β)=Ex∼p(x),y∼π(y∣x)[r(x,y)]−β(Ex∼p(x)[DKL(π(y∣x)∥πref(y∣x))]−ϵ)
我们的目标是最大化这个拉格朗日函数关于 π π π,同时最小化关于 β β β。
对策略π求导
为了找到最优策略π,我们需要对拉格朗日函数关于π求导并令其为零。首先,展开拉格朗日函数:
L ( π , β ) = E x ∼ p ( x ) [ ∑ y π ( y ∣ x ) r ( x , y ) − β ( ∑ y π ( y ∣ x ) log π ( y ∣ x ) π ref ( y ∣ x ) − ϵ ) ] \mathcal{L}(\pi, \beta) = \mathbb{E}_{x \sim p(x)} \left[ \sum_{y} \pi(y|x) r(x, y) - \beta \left( \sum_{y} \pi(y|x) \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} - \epsilon \right) \right] L(π,β)=Ex∼p(x)[y∑π(y∣x)r(x,y)−β(y∑π(y∣x)logπref(y∣x)π(y∣x)−ϵ)]
对 π ( y ∣ x ) π(y|x) π(y∣x) 求导:
∂ L ∂ π ( y ∣ x ) = r ( x , y ) − β ( log π ( y ∣ x ) π ref ( y ∣ x ) + 1 ) \frac{\partial \mathcal{L}}{\partial \pi(y|x)} = r(x, y) - \beta \left( \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} + 1 \right) ∂π(y∣x)∂L=r(x,y)−β(logπref(y∣x)π(y∣x)+1)
令导数为零:
r ( x , y ) − β ( log π ( y ∣ x ) π ref ( y ∣ x ) + 1 ) = 0 r(x, y) - \beta \left( \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} + 1 \right) = 0 r(x,y)−β(logπref(y∣x)π(y∣x)+1)=0
解这个方程,得到:
log π ( y ∣ x ) π ref ( y ∣ x ) = r ( x , y ) β − 1 \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} = \frac{r(x, y)}{\beta} - 1 logπref(y∣x)π(y∣x)=βr(x,y)−1
两边取指数:
π ( y ∣ x ) π ref ( y ∣ x ) = exp ( r ( x , y ) β − 1 ) \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} = \exp\left( \frac{r(x, y)}{\beta} - 1 \right) πref(y∣x)π(y∣x)=exp(βr(x,y)−1)
整理得到:
π ( y ∣ x ) = π ref ( y ∣ x ) exp ( r ( x , y ) β ) ⋅ exp ( − 1 ) \pi(y|x) = \pi_{\text{ref}}(y|x) \exp\left( \frac{r(x, y)}{\beta} \right) \cdot \exp(-1) π(y∣x)=πref(y∣x)exp(βr(x,y))⋅exp(−1)
由于 exp ( − 1 ) \exp(-1) exp(−1) 是一个常数因子,可以将其吸收进归一化因子 Z ( x ) Z(x) Z(x) 中,因此最优策略可以表示为:
π ∗ ( y ∣ x ) ∝ π ref ( y ∣ x ) exp ( r ( x , y ) β ) \pi^*(y|x) \propto \pi_{\text{ref}}(y|x) \exp\left( \frac{r(x, y)}{\beta} \right) π∗(y∣x)∝πref(y∣x)exp(βr(x,y))
归一化因子
为了确保 π ∗ ( y ∣ x ) π^*(y|x) π∗(y∣x) 是一个有效的概率分布,我们需要引入归一化因子Z(x):
Z ( x ) = ∑ y π ref ( y ∣ x ) exp ( r ( x , y ) β ) Z(x) = \sum_{y} \pi_{\text{ref}}(y|x) \exp\left( \frac{r(x, y)}{\beta} \right) Z(x)=y∑πref(y∣x)exp(βr(x,y))
因此,最优策略的完整表达式为:
π ∗ ( y ∣ x ) = π ref ( y ∣ x ) exp ( r ( x , y ) β ) Z ( x ) \pi^*(y|x) = \frac{\pi_{\text{ref}}(y|x) \exp\left( \frac{r(x, y)}{\beta} \right)}{Z(x)} π∗(y∣x)=Z(x)πref(y∣x)exp(βr(x,y))
总结
通过拉格朗日乘数法,我们推导出了在最大化期望奖励的同时,限制与参考策略的KL散度的最优策略。这个最优策略表明,新的策略 π ∗ π^* π∗ 与原始模型 π ref π_\text{ref} πref 成正比,并且通过指数函数调整了奖励函数 r ( x , y ) r(x, y) r(x,y),其中 β β β 是一个控制奖励与原始策略之间权衡的参数。这个公式在强化学习和策略优化中非常有用,因为它提供了一种在探索和利用之间取得平衡的方法,同时保持了策略的稳定性。
2. 损失函数设计
将最优策略与原始模型和奖励函数的关系代入人类偏好的概率模型(如Bradley-Terry模型)后,可以直接通过策略的偏好概率计算损失函数,而无需显式奖励模型的原因在于:通过重新参数化奖励函数,我们可以将偏好概率直接表示为策略的函数,从而将优化问题从奖励空间转移到策略空间。下面是详细的证明过程:
上面已经得到,在带约束的优化问题中,最优策略的形式为:
π
∗
(
y
∣
x
)
∝
π
ref
(
y
∣
x
)
exp
(
r
(
x
,
y
)
β
)
\pi^*(y | x) \propto \pi_{\text{ref}}(y | x) \exp\left( \frac{r(x, y)}{\beta} \right)
π∗(y∣x)∝πref(y∣x)exp(βr(x,y)) 其中,
π
ref
(
y
∣
x
)
\pi_{\text{ref}}(y | x)
πref(y∣x) 是参考策略,
r
(
x
,
y
)
r(x, y)
r(x,y) 是奖励函数,
β
\beta
β 是控制偏差的参数。
Bradley-Terry模型
Bradley-Terry模型是一种用于建模偏好数据的概率模型,其形式为:
p
(
y
1
≻
y
2
∣
x
)
=
exp
(
r
(
x
,
y
1
)
)
exp
(
r
(
x
,
y
1
)
)
+
exp
(
r
(
x
,
y
2
)
)
p(y_1 \succ y_2 | x) = \frac{\exp(r(x, y_1))}{\exp(r(x, y_1)) + \exp(r(x, y_2))}
p(y1≻y2∣x)=exp(r(x,y1))+exp(r(x,y2))exp(r(x,y1))
这里,
y
1
≻
y
2
y_1 \succ y_2
y1≻y2 表示在给定上下文
x
x
x时,
y
1
y_1
y1比
y
2
y_2
y2更受偏好。
代入最优策略
将最优策略的表达式代入Bradley-Terry模型中,我们得到:
p
(
y
1
≻
y
2
∣
x
)
=
exp
(
β
log
π
∗
(
y
1
∣
x
)
π
ref
(
y
1
∣
x
)
)
exp
(
β
log
π
∗
(
y
1
∣
x
)
π
ref
(
y
1
∣
x
)
)
+
exp
(
β
log
π
∗
(
y
2
∣
x
)
π
ref
(
y
2
∣
x
)
)
p(y_1 \succ y_2 | x) = \frac{\exp\left( \beta \log \frac{\pi^*(y_1 | x)}{\pi_{\text{ref}}(y_1 | x)} \right)}{\exp\left( \beta \log \frac{\pi^*(y_1 | x)}{\pi_{\text{ref}}(y_1 | x)} \right) + \exp\left( \beta \log \frac{\pi^*(y_2 | x)}{\pi_{\text{ref}}(y_2 | x)} \right)}
p(y1≻y2∣x)=exp(βlogπref(y1∣x)π∗(y1∣x))+exp(βlogπref(y2∣x)π∗(y2∣x))exp(βlogπref(y1∣x)π∗(y1∣x))
化简后:
p
(
y
1
≻
y
2
∣
x
)
=
π
∗
(
y
1
∣
x
)
β
/
π
ref
(
y
1
∣
x
)
β
π
∗
(
y
1
∣
x
)
β
/
π
ref
(
y
1
∣
x
)
β
+
π
∗
(
y
2
∣
x
)
β
/
π
ref
(
y
2
∣
x
)
β
p(y_1 \succ y_2 | x) = \frac{\pi^*(y_1 | x)^\beta / \pi_{\text{ref}}(y_1 | x)^\beta}{\pi^*(y_1 | x)^\beta / \pi_{\text{ref}}(y_1 | x)^\beta + \pi^*(y_2 | x)^\beta / \pi_{\text{ref}}(y_2 | x)^\beta}
p(y1≻y2∣x)=π∗(y1∣x)β/πref(y1∣x)β+π∗(y2∣x)β/πref(y2∣x)βπ∗(y1∣x)β/πref(y1∣x)β
策略的偏好概率
注意到在最优策略下,
π
∗
(
y
∣
x
)
\pi^*(y | x)
π∗(y∣x)已经包含了奖励函数的信息,因此我们可以直接用策略的概率比值来表示偏好概率:
p
(
y
1
≻
y
2
∣
x
)
=
(
π
∗
(
y
1
∣
x
)
π
ref
(
y
1
∣
x
)
)
β
(
π
∗
(
y
1
∣
x
)
π
ref
(
y
1
∣
x
)
)
β
+
(
π
∗
(
y
2
∣
x
)
π
ref
(
y
2
∣
x
)
)
β
p(y_1 \succ y_2 | x) = \frac{\left( \frac{\pi^*(y_1 | x)}{\pi_{\text{ref}}(y_1 | x)} \right)^\beta}{\left( \frac{\pi^*(y_1 | x)}{\pi_{\text{ref}}(y_1 | x)} \right)^\beta + \left( \frac{\pi^*(y_2 | x)}{\pi_{\text{ref}}(y_2 | x)} \right)^\beta}
p(y1≻y2∣x)=(πref(y1∣x)π∗(y1∣x))β+(πref(y2∣x)π∗(y2∣x))β(πref(y1∣x)π∗(y1∣x))β
构建损失函数
基于上述偏好概率,我们可以构建损失函数。对于给定的偏好数据
(
y
w
,
y
l
)
(y_w, y_l)
(yw,yl),其中
y
w
y_w
yw是偏好的响应,
y
l
y_l
yl是非偏好的响应,损失函数可以表示为:
L
=
−
E
(
x
,
y
w
,
y
l
)
∼
D
[
log
p
(
y
w
≻
y
l
∣
x
)
]
\mathcal{L} = -\mathbb{E}_{(x, y_w, y_l) \sim D} \left[ \log p(y_w \succ y_l | x) \right]
L=−E(x,yw,yl)∼D[logp(yw≻yl∣x)]
代入偏好概率的表达式:
L
=
−
E
(
x
,
y
w
,
y
l
)
∼
D
[
log
(
π
∗
(
y
w
∣
x
)
π
ref
(
y
w
∣
x
)
)
β
(
π
∗
(
y
w
∣
x
)
π
ref
(
y
w
∣
x
)
)
β
+
(
π
∗
(
y
l
∣
x
)
π
ref
(
y
l
∣
x
)
)
β
]
\mathcal{L} = -\mathbb{E}_{(x, y_w, y_l) \sim D} \left[ \log \frac{\left( \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} \right)^\beta}{\left( \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} \right)^\beta + \left( \frac{\pi^*(y_l | x)}{\pi_{\text{ref}}(y_l | x)} \right)^\beta} \right]
L=−E(x,yw,yl)∼D
log(πref(yw∣x)π∗(yw∣x))β+(πref(yl∣x)π∗(yl∣x))β(πref(yw∣x)π∗(yw∣x))β
化简损失函数
通过进一步化简,可以得到:
L
=
−
E
(
x
,
y
w
,
y
l
)
∼
D
[
log
σ
(
β
log
π
∗
(
y
w
∣
x
)
π
ref
(
y
w
∣
x
)
−
β
log
π
∗
(
y
l
∣
x
)
π
ref
(
y
l
∣
x
)
)
]
\mathcal{L} = -\mathbb{E}_{(x, y_w, y_l) \sim D} \left[ \log \sigma\left( \beta \log \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} - \beta \log \frac{\pi^*(y_l | x)}{\pi_{\text{ref}}(y_l | x)} \right) \right]
L=−E(x,yw,yl)∼D[logσ(βlogπref(yw∣x)π∗(yw∣x)−βlogπref(yl∣x)π∗(yl∣x))]
其中,
σ
\sigma
σ是逻辑函数。
详细的化简过程如下:
将偏好概率代入损失函数:
L = − E ( x , y w , y l ) ∼ D [ log ( ( π ∗ ( y w ∣ x ) π ref ( y w ∣ x ) ) β ( π ∗ ( y w ∣ x ) π ref ( y w ∣ x ) ) β + ( π ∗ ( y l ∣ x ) π ref ( y l ∣ x ) ) β ) ] \mathcal{L} = -\mathbb{E}_{(x, y_w, y_l) \sim D} \left[ \log \left( \frac{\left( \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} \right)^\beta}{\left( \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} \right)^\beta + \left( \frac{\pi^*(y_l | x)}{\pi_{\text{ref}}(y_l | x)} \right)^\beta} \right) \right] L=−E(x,yw,yl)∼D log (πref(yw∣x)π∗(yw∣x))β+(πref(yl∣x)π∗(yl∣x))β(πref(yw∣x)π∗(yw∣x))β
利用对数的性质 log ( a b ) = log a − log b \log \left( \frac{a}{b} \right) = \log a - \log b log(ba)=loga−logb,可以将上式拆分为:
L = − E ( x , y w , y l ) ∼ D [ log ( ( π ∗ ( y w ∣ x ) π ref ( y w ∣ x ) ) β ) − log ( ( π ∗ ( y w ∣ x ) π ref ( y w ∣ x ) ) β + ( π ∗ ( y l ∣ x ) π ref ( y l ∣ x ) ) β ) ] \mathcal{L} = -\mathbb{E}_{(x, y_w, y_l) \sim D} \left[ \log \left( \left( \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} \right)^\beta \right) - \log \left( \left( \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} \right)^\beta + \left( \frac{\pi^*(y_l | x)}{\pi_{\text{ref}}(y_l | x)} \right)^\beta \right) \right] L=−E(x,yw,yl)∼D[log((πref(yw∣x)π∗(yw∣x))β)−log((πref(yw∣x)π∗(yw∣x))β+(πref(yl∣x)π∗(yl∣x))β)]
利用对数的性质 log a b = b log a \log a^b = b \log a logab=bloga,可以进一步化简为:
L = − E ( x , y w , y l ) ∼ D [ β log ( π ∗ ( y w ∣ x ) π ref ( y w ∣ x ) ) − log ( ( π ∗ ( y w ∣ x ) π ref ( y w ∣ x ) ) β + ( π ∗ ( y l ∣ x ) π ref ( y l ∣ x ) ) β ) ] \mathcal{L} = -\mathbb{E}_{(x, y_w, y_l) \sim D} \left[ \beta \log \left( \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} \right) - \log \left( \left( \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} \right)^\beta + \left( \frac{\pi^*(y_l | x)}{\pi_{\text{ref}}(y_l | x)} \right)^\beta \right) \right] L=−E(x,yw,yl)∼D[βlog(πref(yw∣x)π∗(yw∣x))−log((πref(yw∣x)π∗(yw∣x))β+(πref(yl∣x)π∗(yl∣x))β)]
注意到 σ ( z ) = 1 1 + exp ( − z ) \sigma(z) = \frac{1}{1 + \exp(-z)} σ(z)=1+exp(−z)1,我们可以将分母中的项转换为 sigmoid 的形式。具体来说,令:
z = β log π ∗ ( y w ∣ x ) π ref ( y w ∣ x ) − β log π ∗ ( y l ∣ x ) π ref ( y l ∣ x ) z = \beta \log \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} - \beta \log \frac{\pi^*(y_l | x)}{\pi_{\text{ref}}(y_l | x)} z=βlogπref(yw∣x)π∗(yw∣x)−βlogπref(yl∣x)π∗(yl∣x) 则:
σ ( z ) = 1 1 + exp ( − z ) = exp ( z ) 1 + exp ( z ) = ( π ∗ ( y w ∣ x ) π ref ( y w ∣ x ) ) β ( π ∗ ( y w ∣ x ) π ref ( y w ∣ x ) ) β + ( π ∗ ( y l ∣ x ) π ref ( y l ∣ x ) ) β \sigma(z) = \frac{1}{1 + \exp(-z)} = \frac{\exp(z)}{1 + \exp(z)} = \frac{\left( \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} \right)^\beta}{\left( \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} \right)^\beta + \left( \frac{\pi^*(y_l | x)}{\pi_{\text{ref}}(y_l | x)} \right)^\beta} σ(z)=1+exp(−z)1=1+exp(z)exp(z)=(πref(yw∣x)π∗(yw∣x))β+(πref(yl∣x)π∗(yl∣x))β(πref(yw∣x)π∗(yw∣x))β
因此,偏好概率可以表示为:
p ( y w ≻ y l ∣ x ) = σ ( β log π ∗ ( y w ∣ x ) π ref ( y w ∣ x ) − β log π ∗ ( y l ∣ x ) π ref ( y l ∣ x ) ) p(y_w \succ y_l | x) = \sigma\left( \beta \log \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} - \beta \log \frac{\pi^*(y_l | x)}{\pi_{\text{ref}}(y_l | x)} \right) p(yw≻yl∣x)=σ(βlogπref(yw∣x)π∗(yw∣x)−βlogπref(yl∣x)π∗(yl∣x))
将上述表达式代入损失函数,得到:
L = − E ( x , y w , y l ) ∼ D [ log σ ( β log π ∗ ( y w ∣ x ) π ref ( y w ∣ x ) − β log π ∗ ( y l ∣ x ) π ref ( y l ∣ x ) ) ] \mathcal{L} = -\mathbb{E}_{(x, y_w, y_l) \sim D} \left[ \log \sigma\left( \beta \log \frac{\pi^*(y_w | x)}{\pi_{\text{ref}}(y_w | x)} - \beta \log \frac{\pi^*(y_l | x)}{\pi_{\text{ref}}(y_l | x)} \right) \right] L=−E(x,yw,yl)∼D[logσ(βlogπref(yw∣x)π∗(yw∣x)−βlogπref(yl∣x)π∗(yl∣x))]
总结
通过将最优策略与原始模型和奖励函数的关系代入Bradley-Terry模型,我们发现可以直接通过策略的偏好概率计算损失函数,而无需显式奖励模型。这种方法不仅简化了优化过程,还保持了对人类偏好的忠实建模,同时避免了奖励建模的复杂性和不稳定性。