【强化学习漫谈】3.RLHF:从Reward Model到DPO
目录
- DPO 的动机和灵感
- Reward Model 是怎么训练的
- Bradley-Terry(BT 模型)
- Plackett-Luce(PT 模型)
- 如何将 Reward Model Loss 融入 DPO Loss
- DPO 做了哪些简化
- DPO 的显示解
- 用 Reward Loss 表示 DPO Loss
- DPO 的优势和局限性
系列文章:
- 【强化学习漫谈】1.RLHF:从PPO到GRPO
DPO 的动机和灵感
我们在前面的文章里详细讨论过 PPO,虽然效果不错,但LLM中使用PPO一个最大的问题是 成本太高。首先 PPO 中涉及到四个模型 :
- Reference Model
- Reward Model
- Actor Model
- Critic Model
其中 Actor Model 和 Critic Model 是需要训练的模型,Reference Model 和 Reward Model 虽然不需要训练,但也要做很多采样/inference,这也涉及到不小的计算量。而且 Reward Model 虽然在 PPO 中是不需要训练的,但由于 PPO 要使用 Reward Model ,所以需要事先训练一个 Reward Model,按理说也要算作 PPO 的成本。
我们使用 PPO 的主要目的是为了“对齐人类偏好”, 那么有什么办法可以绕过 PPO,甚至绕过强化学习,但依然可以“对齐人类偏好”呢?我们注意到 Reward Model 的目标虽然是给不同的 response 打分,但从某种角度来说,打分的依据其实就是是否符合 人类偏好,这也是一种对齐的方式。只是说 Reward Model 是打分模型,而我们想要的是一个生成模型,那么把训练 Reward Model 时学习人类偏好的方法,用到一个生成模型的训练中不就可以了吗?
DPO(Direct Preference Optimization)应运而生,那么它是如何将训练 Reward Model 时学习人类偏好的方法,用到生成模型的训练当中的呢?我们先来看看 Reward Model 是怎么学习人类偏好的。
Reward Model 是怎么训练的
Reward Model 通常使用 偏好排序 这种数据标注方式来训练的,一般有两种偏好排序方法:
- 每个 prompt 生成两个回答 <prompt x x x, chosen y 1 y_1 y1, reject y 2 y_2 y2>:我们希望 Reward Model 对 y 1 y_1 y1 的打分尽量高,而对 y 2 y_2 y2 的打分尽量低
- 每个 prompt 生成 k 个回答 <prompt x x x, y 1 y_1 y1, y 2 y_2 y2, …, y k y_k yk>:然后需要人工标注偏好顺序,例如: y 2 > y 1 > y k > . . . > y k − 1 y_2 > y_1 > y_k > ...> y_{k-1} y2>y1>yk>...>yk−1。我们希望 Reward Model 对这 k 个回答的打分,也是上述人工标注的顺序
Bradley-Terry(BT 模型)
对于只有两个回答 <prompt x x x, chosen y 1 y_1 y1, reject y 2 y_2 y2> 的场景,常用的是 BT 模型。这个模型最开始用于体育赛事中胜率的估计,假设有两只队伍 i i i 和 j j j,它们各自的胜率记为 λ i \lambda_i λi 和 λ j \lambda_j λj。当队伍 i i i 和 j j j 对战时,BT 模型建模 队伍 i i i 战胜队伍 j j j 的概率 为:
P ( i ≻ j ) = λ i λ i + λ j P(i \succ j) = \frac{\lambda_i}{\lambda_i + \lambda_j} P(i≻j)=λi+λjλi
对上述公式取对数几率:
l o g ( P ( i ≻ j ) P ( j ≻ i ) ) = l o g ( λ i ) − l o g ( λ j ) log(\frac{P(i \succ j)}{P(j \succ i)}) = log(\lambda_i) - log(\lambda_j) log(P(j≻i)P(i≻j))=log(λi)−log(λj)
类似于逻辑回归中的线性预测器:
l o g ( P ( Y = 1 ∣ x ) P ( Y = 0 ∣ x ) ) = β ⋅ x log(\frac{P(Y=1|x)}{P(Y=0|x)}) = \beta \cdot x log(P(Y=0∣x)P(Y=1∣x))=β⋅x
表明 胜率的对数几率取决于两支队伍的 “能力差异”。Reward Model 中,每个 response 的“胜率”可以用它的得分 r ( x , y ) r(x, y) r(x,y) 来表示,但由于 r ( x , y ) r(x, y) r(x,y) 可能是负的,而 BT 模型要求胜率是正数,因此 Reward Model 实际使用的是:
P ( y 1 ≻ y 2 ) = e r ( x , y 1 ) e r ( x , y 1 ) + e r ( x , y 2 ) P(y_1 \succ y_2) = \frac{e^{r(x,y_1)}}{e^{r(x,y_1)} + e^{r(x,y_2)}} P(y1≻y2)=er(x,y1)+er(x,y2)er(x,y1)
Reward Model 目标函数:
E x ∼ D x , ( y c , y r ) ∼ D y [ log P ( y c ≻ y r ) ] = E x ∼ D x , ( y c , y r ) ∼ D y [ log e r ( x , y c ) e r ( x , y c ) + e r ( x , y r ) ] = E x ∼ D x , ( y c , y r ) ∼ D y [ log 1 1 + e r ( x , y r ) e r ( x , y c ) ] = E x ∼ D x , ( y c , y r ) ∼ D y [ log 1 1 + e − ( r ( x , y c ) − r ( x , y r ) ) ] = E x ∼ D x , ( y c , y r ) ∼ D y [ log σ ( r ( x , y c ) − r ( x , y r ) ) ] \begin{aligned} E_{x \sim \mathcal{D_x},(y_c,y_r) \sim \mathcal{D_y}}[\text{log} P(y_c \succ y_r)] &= E_{x \sim \mathcal{D_x},(y_c,y_r) \sim \mathcal{D_y}}[\text{log} \frac{e^{r(x,y_c)}}{e^{r(x,y_c)} + e^{r(x,y_r)}}]\\ &= E_{x \sim \mathcal{D_x},(y_c,y_r) \sim \mathcal{D_y}}[\text{log} \frac{1}{1 + \frac{e^{r(x,y_r)}}{e^{r(x,y_c)}}}] \\ &= E_{x \sim \mathcal{D_x},(y_c,y_r) \sim \mathcal{D_y}}[\text{log} \frac{1}{1 + e^{-(r(x,y_c) - r(x,y_r))}}] \\ &= E_{x \sim \mathcal{D_x},(y_c,y_r) \sim \mathcal{D_y}}[\text{log} \sigma(r(x,y_c) - r(x,y_r))] \end{aligned} Ex∼Dx,(yc,yr)∼Dy[logP(yc≻yr)]=Ex∼Dx,(yc,yr)∼Dy[loger(x,yc)+er(x,yr)er(x,yc)]=Ex∼Dx,(yc,yr)∼Dy[log1+er(x,yc)er(x,yr)1]=Ex∼Dx,(yc,yr)∼Dy[log1+e−(r(x,yc)−r(x,yr))1]=Ex∼Dx,(yc,yr)∼Dy[logσ(r(x,yc)−r(x,yr))]
Plackett-Luce(PT 模型)
对于 K 个回答 <prompt x x x, y 1 y_1 y1, y 2 y_2 y2, …, y K y_K yK> 的情况,我们 既可以把它打散成若干个“成对”的回答,也可以使用 PT 模型对多数据的偏好进行建模。对于人工标注出的排序序列 τ \tau τ,类似 BT 模型,PT 模型建模 “最优排序 τ \tau τ 打败其余任何一种排序” 为最大化概率:
P ( τ ∣ y 1 , . . . , y K , x ) = ∏ k = 1 K e r ( x , y τ k ) ∑ j = k K e r ( x , y τ j ) P(\tau|y_1, ...,y_K,x) = \prod_{k=1}^K \frac{e^{r(x,y_{\tau_k})}}{\sum_{j=k}^K e^{r(x,y_{\tau_j})}} P(τ∣y1,...,yK,x)=k=1∏K∑j=kKer(x,yτj)er(x,yτk)
其中 y τ k y_{\tau_k} yτk 表示人类偏好序列 τ \tau τ 中的第 k k k 个 response。最大化上述概率意味着:对于任何偏好序列 y τ k , y τ k + 1 , . . . , y τ K y_{\tau_k}, y_{\tau_{k+1}}, ... ,y_{\tau_K} yτk,yτk+1,...,yτK, y τ k y_{\tau_k} yτk的胜率要高于这个序列中任何其他的 response。不难推理,这个假设可以保证 “最优排序 τ \tau τ 打败其余任何一种排序” 这一论断。
Reward Model 目标函数:
E x ∼ D x , ( y 1 , . . . , y K ) ∼ D y [ log P ( τ ∣ y 1 , . . . , y K , x ) ] = E x ∼ D x , ( y 1 , . . . , y K ) ∼ D y [ ∑ k = 1 K log e r ( x , y τ k ) ∑ j = k K e r ( x , y τ j ) ] E_{x \sim \mathcal{D_x},(y_1,...,y_K) \sim \mathcal{D_y}}[\text{log} P(\tau|y_1, ...,y_K,x)] = E_{x \sim \mathcal{D_x},(y_1,...,y_K) \sim \mathcal{D_y}}[\sum_{k=1}^K \text{log}\frac{e^{r(x,y_{\tau_k})}}{\sum_{j=k}^K e^{r(x,y_{\tau_j})}}] Ex∼Dx,(y1,...,yK)∼Dy[logP(τ∣y1,...,yK,x)]=Ex∼Dx,(y1,...,yK)∼Dy[k=1∑Klog∑j=kKer(x,yτj)er(x,yτk)]
如何将 Reward Model Loss 融入 DPO Loss
先来看下 RLHF 中 PPO 的目标函数:
J ( θ ) = E τ ∼ π θ [ ∑ t = 0 T p p o _ f u n c ( Q ^ π θ ( a t , s t ) − V ( s t ) ) ] J(\theta) = E_{\tau \sim \pi_{\theta}}[\sum_{t=0}^T ppo\_func(\hat{Q}_{\pi_{\theta}}(a_t,s_t) - V(s_t))] J(θ)=Eτ∼πθ[t=0∑Tppo_func(Q^πθ(at,st)−V(st))]
这里 p p o _ f u n c ppo\_func ppo_func 指的是 重要性采样+PPO-Clip 。其中
Q ^ π θ ( a t , s t ) = E [ ∑ t ′ = t T γ t ′ − t r ^ t ′ ] \hat{Q}_{\pi_{\theta}}(a_t,s_t) = E[\sum_{t'=t}^T \gamma^{t'-t} \hat{r}_{t'}] Q^πθ(at,st)=E[t′=t∑Tγt′−tr^t′]
由于 RLHF 中,Reward Model 不是逐 token 打分的,而是一条 response 只有一个得分,其他 token 使用 KL 散度来作为得分,因此有:
r ^ t = { − β D K L [ π θ ( a t ∣ s t ) ∣ ∣ π r e f ( a t ∣ s t ) ] t = 1 , . . , T − 1 r ( τ ) − β D K L [ π θ ( a t ∣ s t ) ∣ ∣ π r e f ( a t ∣ s t ) ] t = T \hat{r}_{t} =\begin{cases} -\beta D_{KL}[\pi_{\theta}(a_t|s_t) || \pi_{ref}(a_t|s_t)]& t=1,..,T-1\\ r(\tau) - \beta D_{KL}[\pi_{\theta}(a_t|s_t) || \pi_{ref}(a_t|s_t)]& t=T \end{cases} r^t={−βDKL[πθ(at∣st)∣∣πref(at∣st)]r(τ)−βDKL[πθ(at∣st)∣∣πref(at∣st)]t=1,..,T−1t=T
DPO 做了哪些简化
DPO 最核心的简化是
- 采样的简化:PPO 是 on-policy 算法,它的样本是从当前策略中采的,就算为了效率重复使用了一部分数据,也通过“重要性采样”把 Loss 进行了调整。而 DPO 使用的是一批固定的数据,不随着模型训练而发生改变
- 样本形式的简化:PPO 的一个样本是通过 { s 0 , a 0 , r 0 , s 1 , . . . . , s T } \{s_0, a_0, r_0, s_1, ...., s_T\} {s0,a0,r0,s1,....,sT} 这样一条 trajectory 采集的,loss 也是逐 token 累加的。而 DPO 把完整的 response y y y 看作一个样本,loss 只给到了 response 层面。
即样本 从 { a 0 , a 1 , . . . , a T } ∼ π p p o \{a_0,a_1,...,a_T\} \sim \pi_{ppo} {a0,a1,...,aT}∼πppo 变成了 y ∼ D y y \sim \mathcal{D_y} y∼Dy,这里 D y \mathcal{D_y} Dy 指的是采样时使用的分布,可以是某个效果比较好的 LLM,也可以是人工生成和标注。上述变化也会让目标函数发生相应变化:
- 采样分布从当前策略 π p p o \pi_{ppo} πppo 变成 D y \mathcal{D_y} Dy
- 不需要预期分数线 V ( s t ) V(s_t) V(st) 了
- 不需要考虑 “累计折扣奖励” Q ^ π θ ( a t , s t ) \hat{Q}_{\pi_{\theta}}(a_t,s_t) Q^πθ(at,st) 了,奖励直接“退化”成 r ( x , y ) − β D K L [ π ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ] r(x,y) - \beta D_{KL}[\pi(y|x) || \pi_{ref}(y|x)] r(x,y)−βDKL[π(y∣x)∣∣πref(y∣x)]
因此 DPO 的目标函数退化成:
E x ∼ D x , y ∼ D y [ r ( x , y ) − β D K L [ π ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ] ] E_{x \sim \mathcal{D_x},y \sim \mathcal{D_y}}[r(x,y) - \beta D_{KL}[\pi(y|x) || \pi_{ref}(y|x)]] Ex∼Dx,y∼Dy[r(x,y)−βDKL[π(y∣x)∣∣πref(y∣x)]]
DPO 的显示解
是的,上述目标函数是可以求显示解的,接下来是一些推理过程:
max π E x ∼ D x , y ∼ D y [ r ( x , y ) − β D K L [ π ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ] ] = max π E x ∼ D x , y ∼ D y [ r ( x , y ) − β log π ( y ∣ x ) π r e f ( y ∣ x ) ] = min π E x ∼ D x , y ∼ D y [ log π ( y ∣ x ) π r e f ( y ∣ x ) − 1 β r ( x , y ) ] = min π E x ∼ D x , y ∼ D y [ log π ( y ∣ x ) π r e f ( y ∣ x ) − 1 β r ( x , y ) ] = min π E x ∼ D x , y ∼ D y [ log ( π ( y ∣ x ) π r e f ( y ∣ x ) ⋅ e 1 β r ( x , y ) ) ] \begin{aligned} \text{max}_{\pi}E_{x \sim \mathcal{D_x},y \sim \mathcal{D_y}}&[r(x,y) - \beta D_{KL}[\pi(y|x) || \pi_{ref}(y|x)]]\\ &= \text{max}_{\pi}E_{x \sim \mathcal{D_x},y \sim \mathcal{D_y}} [r(x,y) - \beta \text{log} \frac{\pi(y|x)}{\pi_{ref}(y|x)}] \\ &= \text{min}_{\pi}E_{x \sim \mathcal{D_x},y \sim \mathcal{D_y}} [\text{log} \frac{\pi(y|x)}{\pi_{ref}(y|x)} - \frac{1}{\beta} r(x,y)]\\ &= \text{min}_{\pi}E_{x \sim \mathcal{D_x},y \sim \mathcal{D_y}} [\text{log} \frac{\pi(y|x)}{\pi_{ref}(y|x)} - \frac{1}{\beta} r(x,y)]\\ &= \text{min}_{\pi}E_{x \sim \mathcal{D_x},y \sim \mathcal{D_y}} [\text{log}( \frac{\pi(y|x)}{\pi_{ref}(y|x) \cdot e^{\frac{1}{\beta} r(x,y)}} )] \end{aligned} maxπEx∼Dx,y∼Dy[r(x,y)−βDKL[π(y∣x)∣∣πref(y∣x)]]=maxπEx∼Dx,y∼Dy[r(x,y)−βlogπref(y∣x)π(y∣x)]=minπEx∼Dx,y∼Dy[logπref(y∣x)π(y∣x)−β1r(x,y)]=minπEx∼Dx,y∼Dy[logπref(y∣x)π(y∣x)−β1r(x,y)]=minπEx∼Dx,y∼Dy[log(πref(y∣x)⋅eβ1r(x,y)π(y∣x))]
接下来可以使用常见的 配分函数技巧 ,构造配分函数:
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(x,y)} Z(x)=y∑πref(y∣x)eβ1r(x,y)
上下同时除以配分函数,上式等于:
min π E x ∼ D x , y ∼ D y [ log ( π ( y ∣ x ) Z ( x ) π r e f ( y ∣ x ) ⋅ e 1 β r ( x , y ) Z ( x ) ) ] = min π E x ∼ D x , y ∼ D y [ log ( π ( y ∣ x ) ϕ ( y ∣ x ) ) − log Z ( x ) ] 记 ϕ ( y ∣ x ) = π r e f ( y ∣ x ) ⋅ e 1 β r ( x , y ) Z ( x ) = Z(x) 与 π 无关 min π E x ∼ D x , y ∼ D y [ log ( π ( y ∣ x ) ϕ ( y ∣ x ) ) ] = min π E x ∼ D x [ D K L [ π ( y ∣ x ) ∣ ∣ ϕ ( y ∣ x ) ] ] \begin{aligned} \text{min}_{\pi}&E_{x \sim \mathcal{D_x},y \sim \mathcal{D_y}} [\text{log}( \frac{\frac{\pi(y|x)}{Z(x)}}{\frac{\pi_{ref}(y|x) \cdot e^{\frac{1}{\beta} r(x,y)}}{Z(x)}} )] \\ &= \text{min}_{\pi} E_{x \sim \mathcal{D_x},y \sim \mathcal{D_y}} [\text{log}(\frac{\pi(y|x)}{\phi(y|x)}) - \text{log}Z(x)] \qquad \text{记} \phi(y|x) = \frac{\pi_{ref}(y|x) \cdot e^{\frac{1}{\beta} r(x,y)}}{Z(x)}\\ &\overset{\text{Z(x) 与 $\pi$ 无关}}{=} \text{min}_{\pi} E_{x \sim \mathcal{D_x},y \sim \mathcal{D_y}} [\text{log}(\frac{\pi(y|x)}{\phi(y|x)})] \\ &= \text{min}_{\pi}E_{x \sim \mathcal{D_x}} [D_{KL}[\pi(y|x) || \phi(y|x)]] \end{aligned} minπEx∼Dx,y∼Dy[log(Z(x)πref(y∣x)⋅eβ1r(x,y)Z(x)π(y∣x))]=minπEx∼Dx,y∼Dy[log(ϕ(y∣x)π(y∣x))−logZ(x)]记ϕ(y∣x)=Z(x)πref(y∣x)⋅eβ1r(x,y)=Z(x) 与 π 无关minπEx∼Dx,y∼Dy[log(ϕ(y∣x)π(y∣x))]=minπEx∼Dx[DKL[π(y∣x)∣∣ϕ(y∣x)]]
由于 K L KL KL 散度在两个分布相同时最小,因此 DPO 的显示解 为:
π ∗ ( y ∣ x ) = ϕ ( y ∣ x ) = π r e f ( y ∣ x ) ⋅ e 1 β r ( x , y ) Z ( x ) \pi^{*}(y|x) = \phi(y|x) = \frac{\pi_{ref}(y|x) \cdot e^{\frac{1}{\beta} r(x,y)}}{Z(x)} π∗(y∣x)=ϕ(y∣x)=Z(x)πref(y∣x)⋅eβ1r(x,y)
关键的地方来了,由于 π ( y ∣ x ) \pi(y|x) π(y∣x) 依赖 Reward Model 的效果,所以我们可以说最优的生成模型 π ∗ ( y ∣ x ) \pi^{*}(y|x) π∗(y∣x) 使用的 Reward Model 也是最优的奖励模型 r ∗ ( x , y ) r^{*}(x,y) r∗(x,y),那么上式同时也可以推导 Reward Model 的显示解:
r ∗ ( x , y ) = β log π ∗ ( y ∣ x ) π r e f ( y ∣ x ) + β log Z ( x ) r^{*}(x,y) = \beta \text{log} \frac{\pi^{*}(y|x)}{\pi_{ref}(y|x)} + \beta \text{log}Z(x) r∗(x,y)=βlogπref(y∣x)π∗(y∣x)+βlogZ(x)
用 Reward Loss 表示 DPO Loss
前面说过,不管是两个偏好回答还是 K 个偏好回答,都可以用 BT 模型来建模 Reward Loss,所以我们这里只推导这种情形下的 DPO Loss,PT 模型下的 DPO Loss 是同理的。先看 Reward Loss:
E x ∼ D x , y c , y r ∼ D y [ log P ( y c ≻ y r ) ] = E x ∼ D x , y c , y r ∼ D y [ log σ ( r ( x , y c ) − r ( x , y r ) ) ] \begin{aligned} E_{x \sim \mathcal{D_x},y_c,y_r \sim \mathcal{D_y}}[\text{log} P(y_c \succ y_r)] = E_{x \sim \mathcal{D_x},y_c,y_r \sim \mathcal{D_y}}[\text{log} \sigma(r(x,y_c) - r(x,y_r))] \end{aligned} Ex∼Dx,yc,yr∼Dy[logP(yc≻yr)]=Ex∼Dx,yc,yr∼Dy[logσ(r(x,yc)−r(x,yr))]
由于 r ∗ ( x , y ) = β log π ∗ ( y ∣ x ) π r e f ( y ∣ x ) + β log Z ( x ) r^{*}(x,y) = \beta \text{log} \frac{\pi^{*}(y|x)}{\pi_{ref}(y|x)} + \beta \text{log}Z(x) r∗(x,y)=βlogπref(y∣x)π∗(y∣x)+βlogZ(x),因此上述目标函数可以写成:
E x ∼ D x , y c , y r ∼ D y [ log σ ( β π ∗ ( y c ∣ x ) π r e f ( y c ∣ x ) − β π ∗ ( y r ∣ x ) π r e f ( y r ∣ x ) ) ] E_{x \sim \mathcal{D_x},y_c,y_r \sim \mathcal{D_y}}[\text{log} \sigma(\beta \frac{\pi^{*}(y_c|x)}{\pi_{ref}(y_c|x)} - \beta \frac{\pi^{*}(y_r|x)}{\pi_{ref}(y_r|x)})] Ex∼Dx,yc,yr∼Dy[logσ(βπref(yc∣x)π∗(yc∣x)−βπref(yr∣x)π∗(yr∣x))]
注意看,上式里面的未知量只有 π ∗ \pi^{*} π∗ 了,因此最优化上述目标,就是在找最优的生成模型 π ∗ \pi^{*} π∗ !!。也就是说,通过上述目标函数,我们只需要收集偏好数据 < x , y c , y r > <x, y_c, y_r> <x,yc,yr> ,就可以一步到位直接训练生成模型 π \pi π。也就达到了最前面说的:使用训练奖励模型的方式,直接训练一个生成模型。
DPO 的优势和局限性
优势
一开始的时候就说过,发明 DPO 的动机就是以 PPO 为代表的强化学习算法,在LLM中成本太高了,再回顾一下 PPO 的成本:
模型名称 | 模型大小 | 是否训练 | 是否推理 |
---|---|---|---|
Reference Model | base model size | 否 | 是(在线) |
Reward Model | base model size | 是 | 是(在线) |
Generation(Actor) Model | base model size | 是 | 是(在线) |
Critic Model | base model size | 是 | 是(在线) |
而 DPO 的成本如下:
模型名称 | 模型大小 | 是否训练 | 是否推理 |
---|---|---|---|
Reference Model | base model size | 否 | 是(离线) |
Reward Model | base model size | 否 | 否 |
Generation Model | base model size | 是 | 是(在线) |
Critic Model | base model size | 否 | 否 |
可以看出,不论是训练时的显存,还是计算量,DPO 相比起 PPO,都可谓是有大幅度的下降。
局限性
然而天下没有免费的午餐,很多实践也证明 DPO 的效果有些时候的确是没有那么好的。而 DPO 的主要问题就出在它相对于 PPO 做的一些简化:
采样的简化
PPO 是 on-policy 的,而 DPO 是 off-policy 的。 on-policy 和 off-policy 的对比我们用 “小明学习考试” 这个例子直观讨论过,这里再贴一下:
- off-policy:小明可以通过观察其他同学,或者看网友分享的学习经验,来调整自己的学习方式
- 缺点:别人的学习方法不一定适合小明
- 优点:学习样本丰富,而且可以直接学习别人总结的精华,效率高
- on-policy:小明通过自己进行尝试,然后参加考试,根据考试分数,来判断哪种学习方式效果比较好
- 缺点:速度慢,样本没那么丰富
- 优点:自己摸索出来的经验往往是最适用于小明的
可以看到 off-policy 的优点是 效率高,学得快。但缺点是学的东西不一定是有用的,或者说非常依赖采样(找的得是对症的学习方法才行)。一些对 DPO 的改进工作例如:iterative DPO,Online DPO 基本都是朝着这个方向在使劲。
样本形式的简化
PPO 的一个样本是通过 { s 0 , a 0 , r 0 , s 1 , . . . . , s T } \{s_0, a_0, r_0, s_1, ...., s_T\} {s0,a0,r0,s1,....,sT} 这样一条 trajectory 采集的,loss 也是逐 token 累加的。而 DPO 把完整的 response y y y 看作一个样本。还是用 “小明学习考试” 这个场景来类比:
- 逐 token 学习:好比每周学了新知识小明都会拿到一个考试成绩(假设只有总分,没有批改详情),但小明仍然可以知道是哪周的知识点自己学得好或者学薄弱了,从而可以调整学习方法或者学习重点
- 直接看 response 得分:好比小明只能在学期末拿到一个总成绩,就比较难总结到底哪里学的好,哪里没学好,进而改进学习方式或重点
不过相对第一点,这一点要改进比较难,因为 DPO 的重点就是把稠密的奖励信号简化成了稀疏的奖励信号,否则就又回到强化学习的路上了。因此目前大部分关于 DPO 的改进工作还是集中在对采样的改进。