大型语言模型训练的三个阶段:Pre-Train、Instruction Fine-tuning、RLHF (PPO / DPO / GRPO)
前言
如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。
当前的大型语言模型训练大致可以分为如下三个阶段:
- Pre-train:根据大量可获得的文本资料,采用自监督学习-预测 next token 的方式,训练得到预训练模型;
- Instruction Fine-tuning:根据大量任务上的指令标记数据,采用监督学习的方式微调模型,使得模型可以理解人类指令;
- RLHF:基于人类的反馈,采用强化学习的方式,使模型可以产出符合人类偏好的回答。
GPT Pre-train 系列历史
- GPT-1 (2018):模型参数量为 117M,使用了大约 7000 本书的数据量;
- GPT-2 (2019):模型参数量为 1542M(扩大了十倍),使用了大约 40GB 的资料;
- GPT-3 (2020):模型参数量为 175B(再次扩大一百倍),使用了大约 580GB 的资料,包含 300B 的 token,类似于哈利波特全集的 30 万遍。
- 下图来自 GPT-3 论文,可以看到随模型参数量扩大,模型性能逐步提高,但仍然没有发生质变,模型的使用体验也与当前的 GPT-4 等其它模型相差甚远。
- GPT-1、2、3 系列均采用自监督学习 (Self-Supervised Learning) 训练得到,即使用 predict next token 的方式,将句子中的下一个 token 作为 label 进行训练,无需人工标注数据。
Instruction Fine-tuning
通过自监督学习出来的模型,虽然已展现了一定程度的语言理解能力,但其性能依然有较大的提升空间。
因此在后续的 GPT 系列中,自监督学习只是模型训练的第一阶段。该阶段作为预训练 (Pre-train),无需人工标注,有大量的可训练数据,其训练得到的模型,将作为后续训练阶段的初始参数。
下述例子来自于开源指令微调数据集,要求模型输出的内容尽可能与 Target 一致:
Input:
对联,要求对仗工整:
上联:桃李争春齐献媚
Output:
下联:鹏鹄比翼各称雄
Input:
说话时面带惯常的微笑。
翻译成英文:
Output:
His face with the usual smile.
在指令微调的过程中,可以发现大模型表现出的一些「举一反三」的能力,即在多种语言上做预训练后,只要在某一个语言的某一个任务上做微调,就可以自动学会其他语言上同样的任务。如下图所示, 在 104 种语言上做 Pre-train,English QA 上做 Fine-tune,在 Chinese QA 上做 Testing,也可以取得 78.8% 的 F1 score。
先前 Fine-tuning 的思路通常是给定一个大型预训练模型,然后在各下游任务的数据集上各自训练,打造一堆专才,且微调的数据集规模通常不大。
不同于上述打造专才的思路,Instruct GPT 在大范围的任务集上进行了 Fine-tuning,并且在仅依赖 1.3B 模型参数量和上万条标注数据的情况下打败了拥有 175B 参数量的 GPT-3.
Self-Instruct
Instruction Fine-tuning 效果非常显著,其所需的训练数据通常无需太多,但要求是高质量的标注数据。由于标注数据有一定的获取门槛,因此有人提出对 ChatGPT 进行逆向工程,即 Self-Instruct,生成大量标注数据。
具体流程如下:
- 先让 ChatGPT 想大量的任务(例如撰写邮件、修改文章、撰写报告摘要等);
- 再让 ChatGPT 根据任务产生大量可能的输入;
- 最后让 ChatGPT 根据产生的大量输入,输出具体的答案,组成一组标注数据。
Reinforcement Learning from Human Feedback (RLHF)
RLHF 即根据人类的反馈(例如判断某两个回答哪个更好),采用强化学习的方式,进一步提升模型的性能。
在先前的两个训练阶段,模型不断地在判断 next token 的输出是否正确,缺乏对整个文本内容全面的考量。在第三阶段,RLHF 通过人类反馈的 response 间的优劣关系,站在更全局性的视角,进一步地对模型进行优化。换句话说,前两个阶段更加关注 response 输出的过程,而 RLHF 这个阶段则更关注最终的结果,即整个 response 的质量。
在 RLHF 的过程中,首先需要训练一个 Reward Model,其输入为一个 response,输出为这个 response 的得分,可以根据人类给出的两个 response 之间的排序,训练这个奖励模型。
得到 Reward Model 后,最直接的用法是:让 LLM 对于特定的输入,输出多个回答,再根据 Reward Model 选择得分最高的回答。
进一步地,也可以使用 Reward Model 继续微调 LLM,即对于所有的输入,让 LLM 输出的得分低的 response 出现的概率更低,让 LLM 输出的得分高的 response 出现的概率更高。
Proximal Policy Optimization (PPO)
PPO 就是一种在 Reward Model 基础上,进一步优化模型参数的强化学习优化方法。
在强化学习流程中, t t t 时刻环境的状态为 s t s_t st,采取动作 a t a_t at 后,得到奖励 r t r_t rt,环境变成 s t + 1 s_{t+1} st+1。整个学习过程的目的是找到一个最佳策略,使得其能够根据环境状态选择最佳的动作。
上述的
r
t
r_t
rt 仅为即时收益,为在决策过程中考虑未来多步的收益,强化学习中引入了状态价值函数
V
t
V_t
Vt,其表示从当前状态开始,未来所有时刻所能累积的收益,通常表达为:
V
t
=
r
t
+
γ
⋅
V
t
+
1
,
V_t=r_{t}+\gamma \cdot V_{t+1},
Vt=rt+γ⋅Vt+1,
其中 γ \gamma γ 作为折扣因子,使决策在短期奖励和长期收益间取得平衡,并且确保无限时间下累计的奖励和使有限的,避免累积奖励发散。
在 LLM 语境下,模型会在 t t t 时刻根据上文,产出一个 token o t o_t ot(对应动作 a t a_t at),对应即时奖励 r t r_{t} rt 和未来总收益 V t V_{t} Vt;由于 r t r_{t} rt 和 V t V_{t} Vt 都无法直接获取,整个 RLHF-PPO 阶段一共包含四个主要模型,分别是:
- Actor Model:输出每个时刻的 token,即我们想要继续优化的 LLM(通常采用指令微调后的模型初始化);
- Critic Model:根据 s t s_t st 估计时刻 t t t 的总收益 V t V_{t} Vt;
- Reward Model:即前文根据人类反馈数据训练得到的奖励模型;
- Reference Model:参考模型,避免语言模型在 RLHF 阶段训歪(同样通常采用指令微调后的模型初始化)。
不难发现 Reward Model 和 Reference Model 在 PPO 阶段都是参数冻结的,因此主要关键在于如何训练 Actor Model 和 Critic Model。
在介绍具体 loss 函数前,我们首先探究一下如何表示 r t r_{t} rt?由于前文训练得到的 Reward Model 仅能根据最终的 response 输出最终的奖励 r φ ( q , o ≤ T ) r_\varphi(q,o_{\leq T}) rφ(q,o≤T)(假设输入为 q q q,输出共 T T T 个 token),中间过程的奖励 r t r_{t} rt 无法通过 Reward Model 直接得到,因此在 deepspeed-chat 的 RLHF 实践中,采用 Actor Model 和 Reference Model 输出的差异(可以理解为动作分布的差异)来表示中间过程的奖励( β \beta β 为超参数):
r t = { − β ∗ ( log P ( o t ∣ q , o < t ) P r e f ( o t ∣ q , o < t ) ) , t ≠ T r φ ( q , o ≤ T ) − β ∗ ( log P ( o t ∣ q , o < t ) P r e f ( o t ∣ q , o < t ) ) , t = T r_{t}=\left\{\begin{array}{l} -\beta *\left(\log \frac{P\left(o_t \mid q,o_{<t}\right)}{P_{r e f}\left(o_t \mid q,o_{<t}\right)}\right), \quad t \neq T \\ r_\varphi(q,o_{\leq T})-\beta *\left(\log \frac{P\left(o_t \mid q,o_{<t}\right)}{P_{r e f}\left(o_t \mid q,o_{<t}\right)}\right), \quad t=T \end{array}\right. rt=⎩ ⎨ ⎧−β∗(logPref(ot∣q,o<t)P(ot∣q,o<t)),t=Trφ(q,o≤T)−β∗(logPref(ot∣q,o<t)P(ot∣q,o<t)),t=T
即
P
(
o
t
∣
q
,
o
<
t
)
P(o_t\mid q,o_{<t})
P(ot∣q,o<t) 越大(和参考模型的输出越相似),即时奖励
r
t
r_{t}
rt 越大。需要注意的是,上述仅是
r
t
r_{t}
rt 的某一种设计。在 PPO 中,我们希望最大化如下目标(
π
θ
\pi_{\theta}
πθ 为具体的策略,代表 Actor 模型参数;
τ
\tau
τ 代表一条轨迹,对应一个 response):
J
(
θ
)
=
E
τ
∼
π
θ
[
R
(
τ
)
]
=
∑
τ
R
(
τ
)
P
(
τ
∣
π
θ
)
.
\mathcal{J}\left(\theta\right)=E_{\tau \sim \pi_\theta}[R(\tau)]=\sum_\tau R(\tau) P\left(\tau \mid \pi_\theta\right).
J(θ)=Eτ∼πθ[R(τ)]=τ∑R(τ)P(τ∣πθ).
其相应梯度如下:
∇
J
(
θ
)
=
∑
τ
R
(
τ
)
∇
P
(
τ
∣
π
θ
)
=
∑
τ
R
(
τ
)
P
(
τ
∣
π
θ
)
∇
P
(
τ
∣
π
θ
)
P
(
τ
∣
π
θ
)
=
∑
τ
R
(
τ
)
P
(
τ
∣
π
θ
)
∇
log
(
P
(
τ
∣
π
θ
)
)
=
E
τ
∼
π
θ
[
R
(
τ
)
∇
log
(
P
(
τ
∣
π
θ
)
)
]
\begin{aligned} \nabla \mathcal{J}\left(\theta\right) & =\sum_\tau R(\tau) \nabla P\left(\tau \mid \pi_\theta\right) \\ & =\sum_\tau R(\tau) P\left(\tau \mid \pi_\theta\right) \frac{\nabla P\left(\tau \mid \pi_\theta\right)}{P\left(\tau \mid \pi_\theta\right)} \\ & =\sum_\tau R(\tau) P\left(\tau \mid \pi_\theta\right) \nabla \log \left(P\left(\tau \mid \pi_\theta\right)\right) \\ & =E_{\tau \sim \pi_\theta}\left[R(\tau) \nabla \log \left(P\left(\tau \mid \pi_\theta\right)\right)\right] \end{aligned}
∇J(θ)=τ∑R(τ)∇P(τ∣πθ)=τ∑R(τ)P(τ∣πθ)P(τ∣πθ)∇P(τ∣πθ)=τ∑R(τ)P(τ∣πθ)∇log(P(τ∣πθ))=Eτ∼πθ[R(τ)∇log(P(τ∣πθ))]
假设每条轨迹共有
T
T
T 个节点,则
P
(
τ
∣
π
θ
)
=
ρ
0
(
s
0
)
∏
t
=
1
T
P
(
s
t
+
1
∣
s
t
,
a
t
)
π
θ
(
a
t
∣
s
t
)
P\left(\tau \mid \pi_\theta\right)=\rho_0\left(s_0\right) \prod_{t=1}^{T} P\left(s_{t+1} \mid s_t, a_t\right) \pi_\theta\left(a_t \mid s_t\right)
P(τ∣πθ)=ρ0(s0)∏t=1TP(st+1∣st,at)πθ(at∣st),代入
∇
J
(
θ
)
\nabla \mathcal{J}\left(\theta\right)
∇J(θ) 得到:
∇
J
(
θ
)
=
E
τ
∼
π
θ
[
R
(
τ
)
∇
log
(
P
(
τ
∣
π
θ
)
)
]
=
E
τ
∼
π
θ
[
R
(
τ
)
∑
t
=
1
T
∇
log
π
θ
(
a
t
∣
s
t
)
]
\begin{aligned} \nabla \mathcal{J}\left(\theta\right) & =E_{\tau \sim \pi_\theta}\left[R(\tau) \nabla \log \left(P\left(\tau \mid \pi_\theta\right)\right)\right] \\ & =E_{\tau \sim \pi_\theta}\left[R(\tau) \sum_{t=1}^{T} \nabla \log \pi_\theta\left(a_t \mid s_t\right)\right] \end{aligned}
∇J(θ)=Eτ∼πθ[R(τ)∇log(P(τ∣πθ))]=Eτ∼πθ[R(τ)t=1∑T∇logπθ(at∣st)]
将
R
(
τ
)
R(\tau)
R(τ) 拆分到每一步中,可以得到:
∇
J
(
θ
)
=
E
τ
∼
π
θ
[
∑
t
=
1
T
Ψ
t
∇
log
π
θ
(
a
t
∣
s
t
)
]
\begin{aligned} \nabla \mathcal{J}\left(\theta\right) & =E_{\tau \sim \pi_\theta}\left[\sum_{t=1}^{T} \Psi_t \nabla \log \pi_\theta\left(a_t \mid s_t\right)\right] \end{aligned}
∇J(θ)=Eτ∼πθ[t=1∑TΨt∇logπθ(at∣st)]
此处的
Ψ
t
\Psi_t
Ψt 代表了当前的价值度量,其最好能同时表示「单步即时奖励」和「未来轨迹的整体收益」,在 PPO 中采用广义优势估计 (GAE) 中的优势函数
A
t
A_t
At 表示,其定义为:
A
t
=
∑
l
=
0
∞
(
γ
λ
)
l
δ
t
+
l
,
A_t=\sum_{l=0}^{\infty}(\gamma \lambda)^l \delta_{t+l},
At=l=0∑∞(γλ)lδt+l,
其中
λ
∈
[
0
,
1
]
\lambda\in [0,1]
λ∈[0,1],
δ
t
\delta_t
δt 为 TD error,其代表采取行动
a
t
a_t
at 后实际价值与预估价值之间的差距,即
δ
t
=
r
t
+
γ
⋅
V
t
+
1
−
V
t
\delta_t=r_t+\gamma\cdot V_{t+1}-V_t
δt=rt+γ⋅Vt+1−Vt,即此处的
A
t
A_t
At 表示未来多步 TD error 的加权和,其可以表示为如下递归形式:
A
t
=
δ
t
+
γ
λ
A
t
+
1
.
A_t=\delta_t+\gamma\lambda A_{t+1}.
At=δt+γλAt+1.
由于轨迹结束时
A
T
=
0
A_T=0
AT=0,因此
A
t
A_t
At 可在轨迹确定后,从后往前递归求解。由此我们可以得到下述大模型语境下,PPO 对应优化目标的梯度:
∇
J
P
P
O
(
θ
)
=
E
[
q
∼
P
(
Q
)
,
o
∼
π
θ
(
O
∣
q
)
]
∑
t
=
1
∣
o
∣
A
t
∇
log
π
θ
(
o
t
∣
q
,
o
<
t
)
.
\nabla \mathcal{J}_{P P O}(\theta)=\mathbb{E}\left[q \sim P(Q), o \sim \pi_{\theta}(O \mid q)\right] \sum_{t=1}^{|o|}A_t \nabla \log \pi_\theta\left(o_t \mid q, o_{<t}\right) .
∇JPPO(θ)=E[q∼P(Q),o∼πθ(O∣q)]t=1∑∣o∣At∇logπθ(ot∣q,o<t).
在实际优化过程中,为提高样本利用率,
π
θ
\pi_{\theta}
πθ 采样得到的轨迹
o
o
o 会被重复使用来优化
π
θ
\pi_\theta
πθ,即采样轨迹
o
o
o 的
π
θ
o
l
d
\pi_{\theta_{old}}
πθold 和要优化的
π
θ
\pi_{\theta}
πθ 不一样(off-policy),因此可以采用 Importance Sampling 的方式修正上述梯度:
∇
J
P
P
O
(
θ
)
=
E
[
q
∼
P
(
Q
)
,
o
∼
π
θ
o
l
d
(
O
∣
q
)
]
∑
t
=
1
∣
o
∣
π
θ
(
o
t
∣
q
,
o
<
t
)
π
θ
o
l
d
(
o
t
∣
q
,
o
<
t
)
A
t
∇
log
π
θ
(
o
t
∣
q
,
o
<
t
)
.
\nabla \mathcal{J}_{P P O}(\theta)=\mathbb{E}\left[q \sim P(Q), o \sim \pi_{\theta_{old}}(O \mid q)\right] \sum_{t=1}^{|o|} \frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}(o_t \mid q, o_{<t})} A_t \nabla \log \pi_\theta\left(o_t \mid q, o_{<t}\right) .
∇JPPO(θ)=E[q∼P(Q),o∼πθold(O∣q)]t=1∑∣o∣πθold(ot∣q,o<t)πθ(ot∣q,o<t)At∇logπθ(ot∣q,o<t).
由于
∇
log
f
(
θ
)
=
∇
f
(
θ
)
f
(
θ
)
\nabla \log f(\theta)=\frac{\nabla f(\theta)}{f(\theta)}
∇logf(θ)=f(θ)∇f(θ),上述梯度对应的优化目标如下:
J
P
P
O
(
θ
)
=
E
[
q
∼
P
(
Q
)
,
o
∼
π
θ
o
l
d
(
O
∣
q
)
]
∑
t
=
1
∣
o
∣
π
θ
(
o
t
∣
q
,
o
<
t
)
π
θ
o
l
d
(
o
t
∣
q
,
o
<
t
)
A
t
.
\mathcal{J}_{P P O}(\theta)=\mathbb{E}\left[q \sim P(Q), o \sim \pi_{\theta_{old}}(O \mid q)\right] \sum_{t=1}^{|o|} \frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}(o_t \mid q, o_{<t})} A_t.
JPPO(θ)=E[q∼P(Q),o∼πθold(O∣q)]t=1∑∣o∣πθold(ot∣q,o<t)πθ(ot∣q,o<t)At.
为了使整体训练更稳定,最终的优化目标会对
π
θ
(
o
t
∣
q
,
o
<
t
)
π
θ
o
l
d
(
o
t
∣
q
,
o
<
t
)
\frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}(o_t \mid q, o_{<t})}
πθold(ot∣q,o<t)πθ(ot∣q,o<t) 进行裁剪,避免该值过大或者过小;并且由于不同轨迹可能长度差异很大,优化目标会对轨迹长度进行归一化;最终 PPO 所要最大化的目标如下所示:
J
P
P
O
(
θ
)
=
E
[
q
∼
P
(
Q
)
,
o
∼
π
θ
o
l
d
(
O
∣
q
)
]
1
∣
o
∣
∑
t
=
1
∣
o
∣
min
[
π
θ
(
o
t
∣
q
,
o
<
t
)
π
θ
o
l
d
(
o
t
∣
q
,
o
<
t
)
A
t
,
clip
(
π
θ
(
o
t
∣
q
,
o
<
t
)
π
θ
o
l
d
(
o
t
∣
q
,
o
<
t
)
,
1
−
ε
,
1
+
ε
)
A
t
]
.
\mathcal{J}_{P P O}(\theta)=\mathbb{E}\left[q \sim P(Q), o \sim \pi_{\theta_{o l d}}(O \mid q)\right] \frac{1}{|o|} \sum_{t=1}^{|o|} \min \left[\frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}\left(o_t \mid q, o_{<t}\right)} A_t, \operatorname{clip}\left(\frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}\left(o_t \mid q, o_{<t}\right)}, 1-\varepsilon, 1+\varepsilon\right) A_t\right].
JPPO(θ)=E[q∼P(Q),o∼πθold(O∣q)]∣o∣1t=1∑∣o∣min[πθold(ot∣q,o<t)πθ(ot∣q,o<t)At,clip(πθold(ot∣q,o<t)πθ(ot∣q,o<t),1−ε,1+ε)At].
相对应地,Critic 模型的优化目标可以理解为最小化优势
A
t
A_t
At,即让
V
t
V_t
Vt 对局面的评估更加精准,具体目标可写作如下形式:
arg
min
V
ϕ
E
t
[
max
[
(
V
t
−
(
A
t
+
V
t
o
l
d
)
)
2
,
(
V
t
c
l
i
p
−
(
A
t
+
V
t
o
l
d
)
)
2
]
]
,
\arg \min _{V_\phi} \mathbb{E}_t\left[\max\left[(V_t-(A_t+V_t^{old}))^2,(V_t^{clip}-(A_t+V_t^{old}))^2\right]\right],
argVϕminEt[max[(Vt−(At+Vtold))2,(Vtclip−(At+Vtold))2]],
其中 V t c l i p = clip ( V t , V t o l d − ϵ , V t o l d + ϵ ) V_t^{clip}=\text{clip}(V_t,V_t^{old}-\epsilon,V_t^{old}+\epsilon) Vtclip=clip(Vt,Vtold−ϵ,Vtold+ϵ).
Direct Preference Optimization (DPO)
在上述 RLHF-PPO 的训练中,存在「显存占用大」、「超参多」以及「模型训练不稳定」等一系列问题,为简化整体训练过程,DPO 应运而生,其对 PPO 的改进主要为如下两点(如下图所示):
- 不再训练 Reward Model,而是直接基于人类反馈的数据,一步到位训练最终的模型;
- 简化原始训练目标,不再使用强化学习的方法,而是通过类似于监督微调的方式进行训练。
首先,RLHF 阶段整体目标如下(
π
θ
,
π
ref
,
r
ϕ
\pi_{\theta},\pi_{\text{ref}},r_{\phi}
πθ,πref,rϕ 分别对应上述的 Actor、参考模型以及 Reward Model):
- 最大化奖励的同时,避免训练后得到的
π
θ
\pi_{\theta}
πθ 与参考模型
π
ref
\pi_{\text{ref}}
πref 差异过大.
max π θ E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ϕ ( x , y ) ] − β D K L [ π θ ( y ∣ x ) ∥ π r e f ( y ∣ x ) ] . \max _{\pi_\theta} \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_\theta(y \mid x)}\left[r_\phi(x, y)\right]-\beta \mathbb{D}_{\mathrm{KL}}\left[\pi_\theta(y \mid x) \| \pi_{\mathrm{ref}}(y \mid x)\right]. πθmaxEx∼D,y∼πθ(y∣x)[rϕ(x,y)]−βDKL[πθ(y∣x)∥πref(y∣x)].
为了绕过 Reward Model,上述式子可以进行如下推导:
max
π
E
x
∼
D
,
y
∼
π
(
y
∣
x
)
[
r
(
x
,
y
)
]
−
β
D
K
L
[
π
(
y
∣
x
)
∥
π
r
e
f
(
y
∣
x
)
]
=
max
π
E
x
∼
D
E
y
∼
π
(
y
∣
x
)
[
r
(
x
,
y
)
−
β
log
π
(
y
∣
x
)
π
r
e
f
(
y
∣
x
)
]
=
min
π
E
x
∼
D
E
y
∼
π
(
y
∣
x
)
[
log
π
(
y
∣
x
)
π
r
e
f
(
y
∣
x
)
−
1
β
r
(
x
,
y
)
]
=
min
π
E
x
∼
D
E
y
∼
π
(
y
∣
x
)
[
log
π
(
y
∣
x
)
1
Z
(
x
)
π
r
e
f
(
y
∣
x
)
exp
(
1
β
r
(
x
,
y
)
)
−
log
Z
(
x
)
]
.
\begin{aligned} & \ \ \ \ \max _\pi \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi(y \mid x)} {[r(x, y)]-\beta \mathbb{D}_{\mathrm{KL}}\left[\pi(y \mid x) \| \pi_{\mathrm{ref}}(y \mid x)\right] } \\ & =\max _\pi \mathbb{E}_{x \sim \mathcal{D}} \mathbb{E}_{y \sim \pi(y \mid x)}\left[r(x, y)-\beta \log \frac{\pi(y \mid x)}{\pi_{\mathrm{ref}}(y \mid x)}\right] \\ & =\min _\pi \mathbb{E}_{x \sim \mathcal{D}} \mathbb{E}_{y \sim \pi(y \mid x)}\left[\log \frac{\pi(y \mid x)}{\pi_{\mathrm{ref}}(y \mid x)}-\frac{1}{\beta} r(x, y)\right] \\ & =\min _\pi \mathbb{E}_{x \sim \mathcal{D}} \mathbb{E}_{y \sim \pi(y \mid x)}\left[\log \frac{\pi(y\mid x)}{\frac{1}{Z(x)} \pi_{\mathrm{ref}}(y \mid x) \exp \left(\frac{1}{\beta} r(x, y)\right)}-\log Z(x)\right]. \end{aligned}
πmaxEx∼D,y∼π(y∣x)[r(x,y)]−βDKL[π(y∣x)∥πref(y∣x)]=πmaxEx∼DEy∼π(y∣x)[r(x,y)−βlogπref(y∣x)π(y∣x)]=πminEx∼DEy∼π(y∣x)[logπref(y∣x)π(y∣x)−β1r(x,y)]=πminEx∼DEy∼π(y∣x)
logZ(x)1πref(y∣x)exp(β1r(x,y))π(y∣x)−logZ(x)
.
令
Z
(
x
)
=
∑
y
π
r
e
f
(
y
∣
x
)
exp
(
1
β
r
(
x
,
y
)
)
Z(x)=\sum_y \pi_{\mathrm{ref}}(y \mid x) \exp \left(\frac{1}{\beta} r(x, y)\right)
Z(x)=∑yπref(y∣x)exp(β1r(x,y)),可以将上述式子中
log
\log
log 项分母部分转化为一个概率分布,整体优化目标可以视作最小化
π
(
y
∣
x
)
\pi(y\mid x)
π(y∣x) 和
1
Z
(
x
)
π
r
e
f
(
y
∣
x
)
exp
(
1
β
r
(
x
,
y
)
)
\frac{1}{Z(x)} \pi_{\mathrm{ref}}(y \mid x) \exp \left(\frac{1}{\beta} r(x, y)\right)
Z(x)1πref(y∣x)exp(β1r(x,y)) 之间的 KL 散度。由于
Z
(
x
)
Z(x)
Z(x) 与
π
\pi
π 无关,因此上述式子的最优解
π
∗
\pi^*
π∗ 可以表示为:
π
∗
(
y
∣
x
)
=
1
Z
(
x
)
π
ref
(
y
∣
x
)
exp
(
1
β
r
(
x
,
y
)
)
.
\pi^*(y \mid x)=\frac{1}{Z(x)} \pi_{\text {ref }}(y \mid x) \exp \left(\frac{1}{\beta} r(x, y)\right).
π∗(y∣x)=Z(x)1πref (y∣x)exp(β1r(x,y)).
相对应地,奖励模型
r
r
r 也可以表示为如下形式:
r
∗
(
x
,
y
)
=
β
log
π
∗
(
y
∣
x
)
π
r
e
f
(
y
∣
x
)
+
β
log
Z
(
x
)
.
r^*(x, y)=\beta \log \frac{\pi^*(y \mid x)}{\pi_{\mathrm{ref}}(y \mid x)}+\beta \log Z(x).
r∗(x,y)=βlogπref(y∣x)π∗(y∣x)+βlogZ(x).
接下来,只要我们在奖励模型的训练目标中代入上式,即可实现直接对最终策略 π ∗ \pi^* π∗ 的优化。在奖励模型的训练中,通常有如下 2 种偏好排序方法:
- 只对两个回答进行排序,即对于 prompt x x x,回答 y 1 y_1 y1 优于 y 2 y_2 y2,对应的优化目标采用 Bradley-Terry 模型进行建模;
- 对 K K K 个回答进行排序,即对于 prompt x x x,排序顺序为 y 1 > y 2 > . . . > y K y_1>y_2>...>y_K y1>y2>...>yK,对应的优化目标采用 Plackett-Luce 模型进行建模。
DPO Objective Under the Bradley-Terry Model
在 BT 模型下,回答
y
1
y_1
y1 优于
y
2
y_2
y2 的概率建模如下:
p
∗
(
y
1
≻
y
2
∣
x
)
=
exp
(
r
∗
(
x
,
y
1
)
)
exp
(
r
∗
(
x
,
y
1
)
)
+
exp
(
r
∗
(
x
,
y
2
)
)
.
p^*\left(y_1 \succ y_2 \mid x\right)=\frac{\exp \left(r^*\left(x, y_1\right)\right)}{\exp \left(r^*\left(x, y_1\right)\right)+\exp \left(r^*\left(x, y_2\right)\right)}.
p∗(y1≻y2∣x)=exp(r∗(x,y1))+exp(r∗(x,y2))exp(r∗(x,y1)).
代入
π
∗
\pi^*
π∗,可以将上述式子进行如下转换:
p
∗
(
y
1
≻
y
2
∣
x
)
=
exp
(
β
log
π
∗
(
y
1
∣
x
)
π
ref
(
y
1
∣
x
)
+
β
log
Z
(
x
)
)
exp
(
β
log
π
∗
(
y
1
∣
x
)
π
ref
(
y
1
∣
x
)
+
β
log
Z
(
x
)
)
+
exp
(
β
log
π
∗
(
y
2
∣
x
)
π
ref
(
y
2
∣
x
)
+
β
log
Z
(
x
)
)
=
1
1
+
exp
(
β
log
π
∗
(
y
2
∣
x
)
π
ref
(
y
2
∣
x
)
−
β
log
π
∗
(
y
1
∣
x
)
π
ref
(
y
1
∣
x
)
)
=
σ
(
β
log
π
∗
(
y
1
∣
x
)
π
ref
(
y
1
∣
x
)
−
β
log
π
∗
(
y
2
∣
x
)
π
ref
(
y
2
∣
x
)
)
.
\begin{aligned} p^*\left(y_1 \succ y_2 \mid x\right) & =\frac{\exp \left(\beta \log \frac{\pi^*\left(y_1 \mid x\right)}{\pi_{\text {ref }}\left(y_1 \mid x\right)}+\beta \log Z(x)\right)}{\exp \left(\beta \log \frac{\pi^*\left(y_1 \mid x\right)}{\pi_{\text {ref }}\left(y_1 \mid x\right)}+\beta \log Z(x)\right)+\exp \left(\beta \log \frac{\pi^*\left(y_2 \mid x\right)}{\pi_{\text {ref }}\left(y_2 \mid x\right)}+\beta \log Z(x)\right)} \\ & =\frac{1}{1+\exp \left(\beta \log \frac{\pi^*\left(y_2 \mid x\right)}{\pi_{\text {ref }}\left(y_2 \mid x\right)}-\beta \log \frac{\pi^*\left(y_1 \mid x\right)}{\pi_{\text {ref }}\left(y_1 \mid x\right)}\right)} \\ & =\sigma\left(\beta \log \frac{\pi^*\left(y_1 \mid x\right)}{\pi_{\text {ref }}\left(y_1 \mid x\right)}-\beta \log \frac{\pi^*\left(y_2 \mid x\right)}{\pi_{\text {ref }}\left(y_2 \mid x\right)}\right) . \end{aligned}
p∗(y1≻y2∣x)=exp(βlogπref (y1∣x)π∗(y1∣x)+βlogZ(x))+exp(βlogπref (y2∣x)π∗(y2∣x)+βlogZ(x))exp(βlogπref (y1∣x)π∗(y1∣x)+βlogZ(x))=1+exp(βlogπref (y2∣x)π∗(y2∣x)−βlogπref (y1∣x)π∗(y1∣x))1=σ(βlogπref (y1∣x)π∗(y1∣x)−βlogπref (y2∣x)π∗(y2∣x)).
由于我们希望
y
w
y_w
yw (更符合人类偏好的回答) 的概率尽可能大于
y
l
y_l
yl (未被选中的回答),因此整体优化目标可以写作如下形式:
L
D
P
O
(
π
θ
;
π
r
e
f
)
=
−
E
(
x
,
y
w
,
y
l
)
∼
D
[
log
p
(
y
w
≻
y
l
∣
x
)
]
=
−
E
(
x
,
y
w
,
y
l
)
∼
D
[
log
σ
(
β
log
π
θ
(
y
w
∣
x
)
π
r
e
f
(
y
w
∣
x
)
−
β
log
π
θ
(
y
l
∣
x
)
π
r
e
f
(
y
l
∣
x
)
)
]
.
\begin{aligned} \mathcal{L}_{\mathrm{DPO}}\left(\pi_\theta ; \pi_{\mathrm{ref}}\right)&= -\mathbb{E}_{\left(x, y_w, y_l\right) \sim \mathcal{D}}[\log p(y_w \succ y_l \mid x)]\\ &=- \mathbb{E}_{\left(x, y_w, y_l\right) \sim \mathcal{D}}\left[\log \sigma\left(\beta \log \frac{\pi_\theta\left(y_w \mid x\right)}{\pi_{\mathrm{ref}}\left(y_w \mid x\right)}-\beta \log \frac{\pi_\theta\left(y_l \mid x\right)}{\pi_{\mathrm{ref}}\left(y_l \mid x\right)}\right)\right]. \end{aligned}
LDPO(πθ;πref)=−E(x,yw,yl)∼D[logp(yw≻yl∣x)]=−E(x,yw,yl)∼D[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))].
上述优化目标中不包含 Reward Model,由此可以绕过训练 Reward Model 的环节,直接用成对的偏好数据,采用类似 SFT 的方式训练对齐模型。
DPO Objective Under the Plackett-Luce Model
类似地,在 PL 模型下,偏好排序
τ
\tau
τ(
y
1
>
y
2
>
.
.
.
>
y
K
y_1>y_2>...>y_K
y1>y2>...>yK)的概率建模如下:
p
∗
(
τ
∣
y
1
,
…
,
y
K
,
x
)
=
∏
k
=
1
K
exp
(
r
∗
(
x
,
y
τ
(
k
)
)
)
∑
j
=
k
K
exp
(
r
∗
(
x
,
y
τ
(
j
)
)
)
.
p^*\left(\tau \mid y_1, \ldots, y_K, x\right)=\prod_{k=1}^K \frac{\exp \left(r^*\left(x, y_{\tau(k)}\right)\right)}{\sum_{j=k}^K \exp \left(r^*\left(x, y_{\tau(j)}\right)\right)}.
p∗(τ∣y1,…,yK,x)=k=1∏K∑j=kKexp(r∗(x,yτ(j)))exp(r∗(x,yτ(k))).
代入
π
∗
\pi^*
π∗,可以得到如下优化目标(由于
Z
(
x
)
Z(x)
Z(x) 与
π
θ
\pi_{\theta}
πθ 无关,因此下式中省去了
Z
(
x
)
Z(x)
Z(x)):
L
D
P
O
(
π
θ
;
π
r
e
f
)
=
−
E
τ
,
y
1
,
…
,
y
K
,
x
∼
D
[
log
p
(
τ
∣
y
1
,
…
,
y
K
,
x
)
]
=
−
E
τ
,
y
1
,
…
,
y
K
,
x
∼
D
[
log
∏
k
=
1
K
exp
(
β
log
π
θ
(
y
τ
(
k
)
∣
x
)
π
r
e
f
(
y
τ
(
k
)
∣
x
)
)
∑
j
=
k
K
exp
(
β
log
π
θ
(
y
τ
(
j
)
∣
x
)
π
r
e
f
(
y
τ
(
j
)
∣
x
)
)
]
.
\begin{aligned} \mathcal{L}_{\mathrm{DPO}}\left(\pi_\theta ; \pi_{\mathrm{ref}}\right)&= -\mathbb{E}_{\tau, y_1, \ldots, y_K, x \sim \mathcal{D}}[\log p(\tau \mid y_1, \ldots, y_K, x)]\\ &=-\mathbb{E}_{\tau, y_1, \ldots, y_K, x \sim \mathcal{D}}\left[\log \prod_{k=1}^K \frac{\exp \left(\beta \log \frac{\pi_\theta\left(y_{\tau(k)} \mid x\right)}{\pi_{\mathrm{ref}}\left(y_{\tau(k)} \mid x\right)}\right)}{\sum_{j=k}^K \exp \left(\beta \log \frac{\pi_\theta\left(y_{\tau(j)} \mid x\right)}{\pi_{\mathrm{ref}}\left(y_{\tau(j)} \mid x\right)}\right)}\right]. \end{aligned}
LDPO(πθ;πref)=−Eτ,y1,…,yK,x∼D[logp(τ∣y1,…,yK,x)]=−Eτ,y1,…,yK,x∼D
logk=1∏K∑j=kKexp(βlogπref(yτ(j)∣x)πθ(yτ(j)∣x))exp(βlogπref(yτ(k)∣x)πθ(yτ(k)∣x))
.
Group Relative Policy Optimization (GRPO)
GRPO 是在 PPO 上的进一步变化,其省略了 PPO 过程中对 Critic Model (Value Model) 的建模,并且不再对中间过程的 reward 进行建模,而是直接优化整个回答的 reward,其 Policy Model 最大化的目标函数如下:
J
G
R
P
O
(
θ
)
=
E
[
q
∼
P
(
Q
)
,
{
o
i
}
i
=
1
G
∼
π
θ
o
l
d
(
O
∣
q
)
]
1
G
∑
i
=
1
G
1
∣
o
i
∣
∑
t
=
1
∣
o
i
∣
{
min
[
π
θ
(
o
i
,
t
∣
q
,
o
i
,
<
t
)
π
θ
o
l
d
(
o
i
,
t
∣
q
,
o
i
,
<
t
)
A
^
i
,
t
,
clip
(
π
θ
(
o
i
,
t
∣
q
,
o
i
,
<
t
)
π
θ
o
l
d
(
o
i
,
t
∣
q
,
o
i
,
<
t
)
,
1
−
ε
,
1
+
ε
)
A
^
i
,
t
]
−
β
D
K
L
[
π
θ
∣
∣
π
r
e
f
]
}
.
\begin{aligned} \mathcal{J}_{G R P O}(\theta) & =\mathbb{E}\left[q \sim P(Q),\left\{o_i\right\}_{i=1}^G \sim \pi_{\theta_{o l d}}(O \mid q)\right] \\ & \frac{1}{G} \sum_{i=1}^G \frac{1}{\left|o_i\right|} \sum_{t=1}^{\left|o_i\right|}\left\{\min \left[\frac{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_{\theta_{o l d}}\left(o_{i, t} \mid q, o_{i,<t}\right)} \hat{A}_{i, t}, \operatorname{clip}\left(\frac{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_{\theta_{o l d}}\left(o_{i, t} \mid q, o_{i,<t}\right)}, 1-\varepsilon, 1+\varepsilon\right) \hat{A}_{i, t}\right]-\beta \mathbb{D}_{K L}\left[\pi_\theta| | \pi_{r e f}\right]\right\}. \end{aligned}
JGRPO(θ)=E[q∼P(Q),{oi}i=1G∼πθold(O∣q)]G1i=1∑G∣oi∣1t=1∑∣oi∣{min[πθold(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t)A^i,t,clip(πθold(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t),1−ε,1+ε)A^i,t]−βDKL[πθ∣∣πref]}.
不同于 PPO 的优化目标,GRPO 一次性采样一组输出
{
o
i
}
i
=
1
G
\{o_i\}_{i=1}^G
{oi}i=1G,其对应的整体 reward 为
r
=
{
r
i
}
i
=
1
G
\boldsymbol{r}=\{r_i\}_{i=1}^G
r={ri}i=1G(由 Reward Model 得到),随后
A
^
i
,
t
\hat{A}_{i,t}
A^i,t 被定义为
o
i
o_i
oi 所对应的标准化后的 reward,即:
A
^
i
,
t
=
r
^
i
=
r
i
−
mean
(
r
)
std
(
r
)
.
\hat{A}_{i,t}=\hat{r}_i=\frac{r_i-\text{mean}(\boldsymbol{r})}{\text{std}(\boldsymbol{r})}.
A^i,t=r^i=std(r)ri−mean(r).
在复杂数学任务场景下,每个 reasoning step 也有其对应的 reward,即:
R
=
{
{
r
1
index
(
1
)
,
⋯
,
r
1
index
(
K
1
)
}
,
⋯
,
{
r
G
index
(
1
)
,
⋯
,
r
G
index
(
K
G
)
}
}
,
\mathbf{R}=\left\{\left\{r_1^{\text {index }(1)}, \cdots, r_1^{\operatorname{index}\left(K_1\right)}\right\}, \cdots,\left\{r_G^{\operatorname{index}(1)}, \cdots, r_G^{\operatorname{index}\left(K_G\right)}\right\}\right\},
R={{r1index (1),⋯,r1index(K1)},⋯,{rGindex(1),⋯,rGindex(KG)}},
其中
index
(
j
)
\text{index}(j)
index(j) 为第
j
j
j 步推理结束时的 token index,此时的
A
^
i
,
t
\hat{A}_{i,t}
A^i,t 可以进行如下定义:
A
^
i
,
t
=
∑
index
(
j
)
≥
t
r
^
i
index
(
j
)
,
r
^
i
index
(
j
)
=
r
i
index
(
j
)
−
mean
(
R
)
std
(
R
)
.
\hat{A}_{i, t}=\sum_{\text {index }(j) \geq t} \hat{r}_i^{\text {index }(j)}, \hat{r}_i^{\text {index }(j)}=\frac{r_i^{\text {index }(j)}-\operatorname{mean}(\mathbf{R})}{\operatorname{std}(\mathbf{R})}.
A^i,t=index (j)≥t∑r^iindex (j),r^iindex (j)=std(R)riindex (j)−mean(R).
另外由于上述 reward 定义中不再包含与
π
r
e
f
\pi_{ref}
πref 的 KL 散度约束,因此直接将
D
K
L
[
π
θ
∣
∣
π
r
e
f
]
\mathbb{D}_{K L}\left[\pi_\theta| | \pi_{r e f}\right]
DKL[πθ∣∣πref] 显式建模在了
J
G
R
P
O
(
θ
)
\mathcal{J}_{G R P O}(\theta)
JGRPO(θ) 之中,其具体式子如下:
D
K
L
[
π
θ
∣
∣
π
r
e
f
]
=
π
r
e
f
(
o
i
,
t
∣
q
,
o
i
,
<
t
)
π
θ
(
o
i
,
t
∣
q
,
o
i
,
<
t
)
−
log
π
r
e
f
(
o
i
,
t
∣
q
,
o
i
,
<
t
)
π
θ
(
o
i
,
t
∣
q
,
o
i
,
<
t
)
−
1
,
\mathbb{D}_{K L}\left[\pi_\theta| | \pi_{r e f}\right]=\frac{\pi_{r e f}\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}-\log \frac{\pi_{r e f}\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}-1,
DKL[πθ∣∣πref]=πθ(oi,t∣q,oi,<t)πref(oi,t∣q,oi,<t)−logπθ(oi,t∣q,oi,<t)πref(oi,t∣q,oi,<t)−1,
上述式子为对 D K L [ π θ ∣ ∣ π r e f ] \mathbb{D}_{K L}\left[\pi_\theta| | \pi_{r e f}\right] DKL[πθ∣∣πref] 的无偏估计,即期望相同。整体优化算法的伪代码如下所示:
GRPO 与 PPO 的方法对比图如下,可以看到 GRPO 中不再需要训练 Value Model:
Other Discussion
除了 RLHF,也可以使用 RLAIF,即让 LLM 自己来判断哪个回答更好,根据 LLM 判断的结果再来微调具体的模型,判断回答好的 LLM 既可以使用类似 GPT-4 等已有模型,甚至也可以使用正在训练的这个模型。
此外,RLHF 仍然面临一个困难,即 “好” 这件事并没有一个固定的标准,例如对于一个不太安全的问题,一个回答更考虑 Safety,而另一个回答与问题关系更密切,此时应该选择哪一个答案呢?另外,许多回答,即使人类来判断,也难以辨别哪个更好,此时 RLHF 又该如何继续提升呢?
参考资料
- Hung-yi Lee: 生成式 AI 导论 2024 - 第 6 讲
- Hung-yi Lee: 生成式 AI 导论 2024 - 第 7 讲
- Hung-yi Lee: 生成式 AI 导论 2024 - 第 8 讲
- arXiv20 GPT3 - Language Models are Few-Shot Learners
- arXiv22 Instruct GPT - Training language models to follow instructions with human feedback
- arXiv22 Self-Instruct: Aligning Language Models with Self-Generated Instructions
- arXiv23 DPO: Direct Preference Optimization: Your Language Model is Secretly a Reward Model
- arXiv24 Self-Rewarding Language Models
- arXiv24 GRPO: DeepSeekMath - Pushing the Limits of Mathematical Reasoning in Open Language Models
- 知乎 - PPO 原理与源码解读 / RL-PPO理论知识 / DPO 数学原理 / 如何理解 PPO 和 GRPO