LLM - DPO
DPO 概述
大模型预训练是从大量语料中进行无监督学习,语料库内容混杂,训练的目标是语言模型损失,任务是next token prediction,生成的token 不可控,为了让大模型能生成符合人类偏好的答案(无毒无害等)一般都会进行微调和人类对齐,通常采用的方法是 基于人类反馈的强化学习方法RLHF. RLHF 是一个复杂且经常不稳定的过程,RLHF 分为2个步骤:
- 首先,训练一个SFT模型
- 然后,训练一个反映人类偏好的奖励模型 (Reward model),
- 最后,使用强化学习微调大型无监督 LM,以最大化这种估计奖励,而不会偏离原始模型太远。
DPO论文证明现有方法使用的基于 RL 的目标可以通过简单的二元交叉熵目标精确优化,大大简化了偏好学习管道。我们的方法利用了奖励模型参数化的特定选择,它可以在没有 RL 训练循环的情况下以封闭形式提取其最优策略。DPO是稳定的、高性能的、计算量轻的,在微调或执行显著的超参数调优时不需要从LM中采样。我们的实验表明,DPO可以微调LM,使其与人类偏好保持一致,甚至比现有方法更好。
核心就是:不需要显示地训练一个Reward Model,而是利用 从奖励函数到最优策略的解析映射,从而将 奖励函数上的偏好损失函数转换为策略上的偏好损失函数。
具体做法是给定人类对模型响应的偏好数据集,DPO使用简单的二元交叉熵目标优化策略,而无需在训练期间明确学习奖励函数或从策略中采样
DPO 目标函数推导
首先,DPO的目标函数是根据RLHF的2步骤的目标函数进行推理得到的。我们先看 RLHF步骤中的 目标函数:
一个是RewardModel:
m
a
x
r
θ
E
(
x
,
y
w
,
y
l
)
∈
D
[
l
o
g
(
σ
(
r
ϕ
(
x
,
y
w
)
−
r
ϕ
(
x
,
y
l
)
)
)
]
max_{r_{\theta}}E_{(x,y_w,y_l)\in D}[log(\sigma(r_{\phi}(x,y_w) - r_{\phi}(x,y_l)))]
maxrθE(x,yw,yl)∈D[log(σ(rϕ(x,yw)−rϕ(x,yl)))]
一个是RL目标函数:
m
a
x
π
θ
E
(
x
∈
D
,
y
∈
π
θ
(
y
∣
x
)
)
[
r
ϕ
(
x
,
y
)
]
−
β
D
K
L
[
π
θ
(
y
∣
x
)
∣
∣
π
r
e
f
(
y
∣
x
)
]
max_{\pi_{\theta}}E_{(x \in D,y \in \pi_{\theta}(y|x))}[r_{\phi}(x,y)] - \beta D_{KL}[\pi_{\theta}(y|x)||\pi_{ref}(y|x)]
maxπθE(x∈D,y∈πθ(y∣x))[rϕ(x,y)]−βDKL[πθ(y∣x)∣∣πref(y∣x)]
下面我们针对RL的目标函数进行推导,看DPO的目标是如何得到的。
-
对于RL目标函数进行展开计算:
m a x π θ E ( x ∈ D , y ∈ π θ ( y ∣ x ) ) [ r ϕ ( x , y ) ] − β D K L [ π θ ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ] max_{\pi_{\theta}}E_{(x \in D,y \in \pi_{\theta}(y|x))}[r_{\phi}(x,y)] - \beta D_{KL}[\pi_{\theta}(y|x)||\pi_{ref}(y|x)] maxπθE(x∈D,y∈πθ(y∣x))[rϕ(x,y)]−βDKL[πθ(y∣x)∣∣πref(y∣x)]
= m a x π θ E ( x ∈ D , y ∈ π θ ( y ∣ x ) ) [ r ϕ ( x , y ) ] − β l o g π θ ( y ∣ x ) π r e f ( y ∣ x ) =max_{\pi_{\theta}}E_{(x \in D,y \in \pi_{\theta}(y|x))}[r_{\phi}(x,y)] - \beta log\frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)} =maxπθE(x∈D,y∈πθ(y∣x))[rϕ(x,y)]−βlogπref(y∣x)πθ(y∣x)
= m i n π θ E ( x ∈ D , y ∈ π θ ( y ∣ x ) ) [ β l o g π θ ( y ∣ x ) π r e f ( y ∣ x ) − r ϕ ( x , y ) ] =min_{\pi_{\theta}}E_{(x \in D,y \in \pi_{\theta}(y|x))}[\beta log\frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)} - r_{\phi}(x,y)] =minπθE(x∈D,y∈πθ(y∣x))[βlogπref(y∣x)πθ(y∣x)−rϕ(x,y)]
= m i n π θ E ( x ∈ D , y ∈ π θ ( y ∣ x ) ) [ l o g π θ ( y ∣ x ) π r e f ( y ∣ x ) − 1 β r ϕ ( x , y ) ] =min_{\pi_{\theta}}E_{(x \in D,y \in \pi_{\theta}(y|x))}[log\frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)} - \frac{1}{\beta }r_{\phi}(x,y)] =minπθE(x∈D,y∈πθ(y∣x))[logπref(y∣x)πθ(y∣x)−β1rϕ(x,y)]
= m i n π θ E ( x ∈ D , y ∈ π θ ( y ∣ x ) ) [ l o g π θ ( y ∣ x ) π r e f ( y ∣ x ) − l o g ( e 1 β r ϕ ( x , y ) ) ] =min_{\pi_{\theta}}E_{(x \in D,y \in \pi_{\theta}(y|x))}[log\frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)} - log(e^{\frac{1}{\beta }r_{\phi}(x,y)})] =minπθE(x∈D,y∈πθ(y∣x))[logπref(y∣x)πθ(y∣x)−log(eβ1rϕ(x,y))]
= m i n π θ E ( x ∈ D , y ∈ π θ ( y ∣ x ) ) [ l o g π θ ( y ∣ x ) π r e f ( y ∣ x ) e 1 β r ϕ ( x , y ) ] =min_{\pi_{\theta}}E_{(x \in D,y \in \pi_{\theta}(y|x))}[log\frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)e^{\frac{1}{\beta }r_{\phi}(x,y)}}] =minπθE(x∈D,y∈πθ(y∣x))[logπref(y∣x)eβ1rϕ(x,y)πθ(y∣x)] -
还是针对RL目标函数,假定在奖励函数 r r r下,最优策略为 π r \pi_{r} πr,那么 RL的目标就是要得到最优策略,因此RL的目标可以等价为 最小化 π θ \pi_{\theta} πθ与 π r \pi_{r} πr的KL散度,即:
m a x π θ E ( x ∈ D , y ∈ π θ ( y ∣ x ) ) [ r ϕ ( x , y ) ] − β D K L [ π θ ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ] max_{\pi_{\theta}}E_{(x \in D,y \in \pi_{\theta}(y|x))}[r_{\phi}(x,y)] - \beta D_{KL}[\pi_{\theta}(y|x)||\pi_{ref}(y|x)] maxπθE(x∈D,y∈πθ(y∣x))[rϕ(x,y)]−βDKL[πθ(y∣x)∣∣πref(y∣x)]
= m i n π θ D K L [ π θ ( y ∣ x ) ∣ ∣ π r ( y ∣ x ) ] =min_{\pi_{\theta}}D_{KL}[\pi_{\theta}(y|x) || \pi_{r}(y|x)] =minπθDKL[πθ(y∣x)∣∣πr(y∣x)]
= m i n π θ E ( x ∈ D , y ∈ π θ ( y ∣ x ) ) [ l o g π θ ( y ∣ x ) π r ( y ∣ x ) ] =min_{\pi_{\theta}}E_{(x \in D,y \in \pi_{\theta}(y|x))}[log\frac{\pi_{\theta}(y|x)}{\pi_{r}(y|x)}] =minπθE(x∈D,y∈πθ(y∣x))[logπr(y∣x)πθ(y∣x)] -
综合上面两个推导,可以得到
m i n π θ E ( x ∈ D , y ∈ π θ ( y ∣ x ) ) [ l o g π θ ( y ∣ x ) π r e f ( y ∣ x ) e 1 β r ϕ ( x , y ) ] = m i n π θ E ( x ∈ D , y ∈ π θ ( y ∣ x ) ) [ l o g π θ ( y ∣ x ) π r ( y ∣ x ) ] min_{\pi_{\theta}}E_{(x \in D,y \in \pi_{\theta}(y|x))}[log\frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)e^{\frac{1}{\beta }r_{\phi}(x,y)}}] =min_{\pi_{\theta}}E_{(x \in D,y \in \pi_{\theta}(y|x))}[log\frac{\pi_{\theta}(y|x)}{\pi_{r}(y|x)}] minπθE(x∈D,y∈πθ(y∣x))[logπref(y∣x)eβ1rϕ(x,y)πθ(y∣x)]=minπθE(x∈D,y∈πθ(y∣x))[logπr(y∣x)πθ(y∣x)]
从而可知 π r ( y ∣ x ) \pi_r(y|x) πr(y∣x)与 π r e f ( y ∣ x ) e 1 β r ϕ ( x , y ) \pi_{ref}(y|x)e^{\frac{1}{\beta }r_{\phi}(x,y)} πref(y∣x)eβ1rϕ(x,y) 正相关。
因此设 π r ( y ∣ x ) = 1 Z ( x ) π r e f ( y ∣ x ) e 1 β r ϕ ( x , y ) \pi_r(y|x) = \frac{1}{Z(x)}\pi_{ref}(y|x)e^{\frac{1}{\beta }r_{\phi}(x,y)} πr(y∣x)=Z(x)1πref(y∣x)eβ1rϕ(x,y)
其中 Z ( x ) = ∑ y π r e f ( y ∣ x ) e 1 β r ϕ ( x , y ) Z(x) = \sum_y \pi_{ref}(y|x)e^{\frac{1}{\beta }r_{\phi}(x,y)} Z(x)=∑yπref(y∣x)eβ1rϕ(x,y) ,这里 Z ( x ) Z(x) Z(x) 函只和 基线策略 π r e f \pi_{ref} πref有关,而不依赖与策略函数 π \pi π,其目的是使得右边满足取值在[0,1]范围内,相当于起到一个归一化作用。( π r \pi_{r} πr本质是一个概率,概率的特性之一就是归一化的,所以这里要有一个归一化项) -
为了根据最优策略 π r \pi_r πr,基线策略 π r e f \pi_{ref} πref 和位置的分配函数 Z ( x ) Z(x) Z(x),来表示奖励函数,我们对 π r ( y ∣ x ) = 1 Z ( x ) π r e f ( y ∣ x ) e 1 β r ϕ ( x , y ) \pi_r(y|x) = \frac{1}{Z(x)}\pi_{ref}(y|x)e^{\frac{1}{\beta }r_{\phi}(x,y)} πr(y∣x)=Z(x)1πref(y∣x)eβ1rϕ(x,y) 进行推导,两边取对数,然后进行推导,得到 r ϕ ( x , y ) r_{\phi}(x,y) rϕ(x,y)
-
l
o
g
π
r
(
y
∣
x
)
=
l
o
g
(
1
Z
(
x
)
π
r
e
f
(
y
∣
x
)
e
1
β
r
ϕ
(
x
,
y
)
)
log \pi_r(y|x) = log (\frac{1}{Z(x)}\pi_{ref}(y|x)e^{\frac{1}{\beta }r_{\phi}(x,y)})
logπr(y∣x)=log(Z(x)1πref(y∣x)eβ1rϕ(x,y)) (取log)
l o g π r ( y ∣ x ) = l o g ( π r e f ( y ∣ x ) ) + l o g ( e 1 β r ϕ ( x , y ) ) − l o g ( Z ( x ) ) log \pi_r(y|x) = log (\pi_{ref}(y|x))+log(e^{\frac{1}{\beta }r_{\phi}(x,y)}) - log(Z(x)) logπr(y∣x)=log(πref(y∣x))+log(eβ1rϕ(x,y))−log(Z(x)) (拆分对数运行)
l o g ( e 1 β r ϕ ( x , y ) ) = l o g π r ( y ∣ x ) − l o g ( π r e f ( y ∣ x ) ) + l o g ( Z ( x ) ) log(e^{\frac{1}{\beta }r_{\phi}(x,y)}) = log \pi_r(y|x) -log (\pi_{ref}(y|x))+log(Z(x)) log(eβ1rϕ(x,y))=logπr(y∣x)−log(πref(y∣x))+log(Z(x))
1 β r ϕ ( x , y ) = l o g π r ( y ∣ x ) − l o g ( π r e f ( y ∣ x ) ) + l o g ( Z ( x ) ) {\frac{1}{\beta }r_{\phi}(x,y)} = log \pi_r(y|x) -log (\pi_{ref}(y|x))+log(Z(x)) β1rϕ(x,y)=logπr(y∣x)−log(πref(y∣x))+log(Z(x))
r ϕ ( x , y ) = β l o g π r ( y ∣ x ) − β l o g ( π r e f ( y ∣ x ) ) + l o g ( Z ( x ) ) r_{\phi}(x,y) = \beta log \pi_r(y|x) -\beta log (\pi_{ref}(y|x))+log(Z(x)) rϕ(x,y)=βlogπr(y∣x)−βlog(πref(y∣x))+log(Z(x))
r ϕ ( x , y ) = β l o g π r ( y ∣ x ) π r e f ( y ∣ x ) + l o g ( Z ( x ) ) r_{\phi}(x,y) = \beta log \frac{\pi_r(y|x)}{\pi_{ref}(y|x)}+log(Z(x)) rϕ(x,y)=βlogπref(y∣x)πr(y∣x)+log(Z(x))
假定最优奖励函数 r ∗ r* r∗下对应的最优模型策略是 π ∗ \pi* π∗,那么
r ∗ ϕ ( x , y ) = β l o g π ∗ r ( y ∣ x ) π r e f ( y ∣ x ) + l o g ( Z ( x ) ) r*_{\phi}(x,y) = \beta log \frac{\pi*_r(y|x)}{\pi_{ref}(y|x)}+log(Z(x)) r∗ϕ(x,y)=βlogπref(y∣x)π∗r(y∣x)+log(Z(x)) -
l
o
g
π
r
(
y
∣
x
)
=
l
o
g
(
1
Z
(
x
)
π
r
e
f
(
y
∣
x
)
e
1
β
r
ϕ
(
x
,
y
)
)
log \pi_r(y|x) = log (\frac{1}{Z(x)}\pi_{ref}(y|x)e^{\frac{1}{\beta }r_{\phi}(x,y)})
logπr(y∣x)=log(Z(x)1πref(y∣x)eβ1rϕ(x,y)) (取log)
-
考虑到最优策略的不确定性,因此使用参数化的策略 π θ \pi_{\theta} πθ来表示,相应的奖励函数则表示为 r θ ( x , y ) = β l o g π θ ( y ∣ x ) π r e f ( y ∣ x ) + l o g ( Z ( x ) ) r_{\theta}(x,y) = \beta log \frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)}+log(Z(x)) rθ(x,y)=βlogπref(y∣x)πθ(y∣x)+log(Z(x))
-
此时,我们可以为策略 π θ \pi_{\theta} πθ构建最大似然目标,类似于奖励建模方法,最大化偏好答案于非偏好答案奖励的差值。那么我们的策略目标变为: L D P O ( θ ) = − E x , y w , y l ∈ D [ l o g σ ( r θ ( x , y w ) − r θ ( x , y l ) ) ] L_{DPO}(\theta) = -E_{{x,y_w,y_l}\in D}[log\sigma(r_{\theta}(x,y_w) - r_{\theta}(x,y_l))] LDPO(θ)=−Ex,yw,yl∈D[logσ(rθ(x,yw)−rθ(x,yl))]
= − E x , y w , y l ∈ D [ l o g σ ( β l o g π θ ( y w ∣ x ) π r e f ( y w ∣ x ) − β l o g π θ ( y l ∣ x ) π r e f ( y l ∣ x ) ) ] = -E_{{x,y_w,y_l}\in D}[log\sigma(\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)})] =−Ex,yw,yl∈D[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]
上面推导出奖励函数 r 与策略 π \pi π的关系,就是为了把 RL 目标函数中的 r 替换掉,从而实现DPO的目标,不需要训练奖励函数。
DPO 这个目标函数的意义:
- 当一个答案是好的答案时,我们要尽可能增大其被策略模型生成的概率(且这个的概率尽可能大于被基线模型生成的概率,举个例子,既然是好的,就要比初期更大胆的趋近之)
- 当一个答案是差的答案时,我们要尽可能降低其被策略模型生成的概率(且这个的概率尽可能小于被基线模型生成的概率,换言之,既然是差的,则要比初期尽可能远离之)
由于我们追求的是让目标函数最大(虽说我们一般要求loss最小化,但毕竟整个目标函数的最前面加了个负号),故意味着针对大括号里的这个式子而言 [ l o g σ ( β l o g π θ ( y w ∣ x ) π r e f ( y w ∣ x ) − β l o g π θ ( y l ∣ x ) π r e f ( y l ∣ x ) ) ] [log\sigma(\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)})] [logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]
我们希望左边尽可能大,而右边尽可能小,那左边、右边分别意味着什么呢?
- 左半部分代表生成good response相较于初期生成good response的累积概率差值
- 右半部分代表生成bad response 相较于初期生成 bad response 的累计概率差值
有三种可能的情况:
- 左边变大,右边变小,理想情况,good response相对概率提升,bad response相对概率下降
- 左边变小,右边更小,good response相对概率下降,但是bad response相对概率下降的更多,生成的时候还是倾向于good response
- 左边变的更大,右边只大了一点点,和上一条 同理
DPO 目标函数梯度的推导
我们看DPO目标函数的梯度如何推导:
L
D
P
O
(
θ
)
=
−
E
x
,
y
w
,
y
l
∈
D
[
l
o
g
σ
(
β
l
o
g
π
θ
(
y
w
∣
x
)
π
r
e
f
(
y
w
∣
x
)
−
β
l
o
g
π
θ
(
y
l
∣
x
)
π
r
e
f
(
y
l
∣
x
)
)
]
L_{DPO}(\theta) = -E_{{x,y_w,y_l}\in D}[log\sigma(\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)})]
LDPO(θ)=−Ex,yw,yl∈D[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]
令 u = ( β l o g π θ ( y w ∣ x ) π r e f ( y w ∣ x ) − β l o g π θ ( y l ∣ x ) π r e f ( y l ∣ x ) ) u = (\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)}) u=(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))
- ∇ θ L D P O = − E x , y w , y l ∈ D [ ∇ θ l o g σ ( u ) ] \nabla_{\theta}L_{DPO} = -E_{{x,y_w,y_l}\in D} [\nabla_{\theta} log\sigma(u)] ∇θLDPO=−Ex,yw,yl∈D[∇θlogσ(u)] = − E x , y w , y l ∈ D [ 1 σ ( u ) ∇ θ σ ( u ) ] = -E_{{x,y_w,y_l}\in D} [\frac{1}{\sigma(u)}\nabla_{\theta} \sigma(u)] =−Ex,yw,yl∈D[σ(u)1∇θσ(u)] = − E x , y w , y l ∈ D [ σ ′ ( u ) σ ( u ) ∇ θ u ] = -E_{{x,y_w,y_l}\in D} [\frac{\sigma'(u)}{\sigma(u)}\nabla_{\theta} u] =−Ex,yw,yl∈D[σ(u)σ′(u)∇θu]
根据sigmoid函数的性质
σ
′
(
x
)
=
σ
(
x
)
(
1
−
σ
(
x
)
\sigma'(x) = \sigma(x)(1-\sigma(x)
σ′(x)=σ(x)(1−σ(x) 以及
σ
′
(
−
x
)
=
(
1
−
σ
(
x
)
)
\sigma'(-x) =(1-\sigma(x))
σ′(−x)=(1−σ(x))
可得
其中 r θ = β l o g π θ ( y w ∣ x ) π r e f ( y w ∣ x ) r_{\theta}=\beta log\frac{\pi_{\theta}(y_w|x)}{\pi_{ref}(y_w|x)} rθ=βlogπref(yw∣x)πθ(yw∣x)可以看作对 ( x , y ) (x,y) (x,y)的奖励的估计。红色部分表示当非偏好答案 y l y_l yl的奖励大于偏好答案 y w y_w yw的奖励时,梯度越大。绿色部分会增加偏好答案 y w y_w yw的概率,蓝色部分会减小非偏好答案 y l y_l yl的概率。