首页 > 编程语言 >深入理解DPO(Direct Preference Optimization)算法

深入理解DPO(Direct Preference Optimization)算法

时间:2024-08-28 22:51:41浏览次数:11  
标签:frac log text Direct Optimization Preference theta pi ref

目录

1. 什么是DPO?

直接偏好优化(Direct Preference Optimization, DPO)是一种不需要强化学习的对齐算法。由于去除了复杂的强化学习算法,DPO 可以通过与有监督微调(SFT)相似的复杂度实现模型对齐,不再需要在训练过程中针对大语言模型进行采样,同时超参数的选择更加容易。

2. Bradley-Terry模型

Bradley-Terry模型对比较关系进行建模,设 A A A 的实力为 λ 1 \lambda_1 λ1​, B B B 的实力为 λ 2 \lambda_2 λ2​,那么 A A A 和 B B B 对战, A A A 战胜 B B B 的概率为:

P ( A > B ) = e λ 1 e λ 1 + e λ 2 = α 1 α 1 + α 2 , α 1 ≜ e λ 1 , α 2 ≜ e λ 2 P(A>B)=\frac{e^{\lambda_1}}{e^{\lambda_1}+e^{\lambda_2}}=\frac{\alpha_1}{\alpha_1+\alpha_2},\quad \alpha_1\triangleq e^{\lambda_1},\quad \alpha_2\triangleq e^{\lambda_2} P(A>B)=eλ1​+eλ2​eλ1​​=α1​+α2​α1​​,α1​≜eλ1​,α2​≜eλ2​

因为无法保证 λ 1 , λ 2 \lambda_1,\lambda_2 λ1​,λ2​ 一定大于0,所以需要用softmax函数处理一下。

举一个例子,假设有如下的胜负表:

对战
A vs B84
A vs C35

若要求 B B B 战胜 C C C 的概率,我们需要知道 α 2 , α 3 \alpha_2,\alpha_3 α2​,α3​ 的值。首先可以得到似然函数:

L = ( α 1 α 1 + α 2 ) 8 ( α 2 α 1 + α 2 ) 4 ( α 1 α 1 + α 3 ) 3 ( α 3 α 1 + α 3 ) 5 L=\left(\frac{\alpha_1}{\alpha_1+\alpha_2}\right)^8 \left(\frac{\alpha_2}{\alpha_1+\alpha_2}\right)^4 \left(\frac{\alpha_1}{\alpha_1+\alpha_3}\right)^3 \left(\frac{\alpha_3}{\alpha_1+\alpha_3}\right)^5 L=(α1​+α2​α1​​)8(α1​+α2​α2​​)4(α1​+α3​α1​​)3(α1​+α3​α3​​)5

对对数似然函数求偏导可以得到 α 2 = 1 2 α 1 ,   α 3 = 5 3 α 1 \alpha_2=\frac12\alpha_1,\,\alpha_3=\frac53\alpha_1 α2​=21​α1​,α3​=35​α1​。于是

P ( B > C ) = α 2 α 2 + α 3 = 1 2 1 2 + 5 3 = 3 13 P(B>C)=\frac{\alpha_2}{\alpha_2+\alpha_3}=\frac{\frac12}{\frac12+\frac53}=\frac{3}{13} P(B>C)=α2​+α3​α2​​=21​+35​21​​=133​

2.1 奖励模型的训练

奖励模型的训练涉及到正例 ( x , y + ) (x,y^+) (x,y+) 和负例 ( x , y − ) (x,y^-) (x,y−),其中 x x x 是prompt, y y y 是response。由于 r ( x , y ) r(x,y) r(x,y) 可能是负数,因此在使用Bradley-Terry建模时,需要预先过一下softmax:

P ( y + > y − ∣ x ) = exp ⁡ ( r ( x , y + ) ) exp ⁡ ( r ( x , y + ) ) + exp ⁡ ( r ( x , y − ) ) = 1 1 + exp ⁡ ( r ( x , y − ) − r ( x , y + ) ) = σ ( r ( x , y + ) − r ( x , y − ) ) \begin{aligned} P(y^+>y^-|x)&=\frac{\exp (r(x,y^+))}{\exp (r(x,y^+))+\exp (r(x,y^-))}=\frac{1}{1+\exp(r(x,y^-)- r(x,y^+))} \\ &=\sigma (r(x,y^+)-r(x,y^-)) \end{aligned} P(y+>y−∣x)​=exp(r(x,y+))+exp(r(x,y−))exp(r(x,y+))​=1+exp(r(x,y−)−r(x,y+))1​=σ(r(x,y+)−r(x,y−))​

其中 σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+e−x1​ 是Sigmoid函数。训练奖励模型实际上就是最大化 P ( y + > y − ∣ x ) P(y^+>y^-|x) P(y+>y−∣x) 的过程,这等价于最小化 − log ⁡ P ( y + > y − ∣ x ) -\log P(y^+>y^-|x) −logP(y+>y−∣x),因此可以得到奖励模型训练的损失函数:

L RM = − E ( x , y + , y − ) ∼ D [   log ⁡ σ ( r ( x , y + ) − r ( x , y − ) ) ] \mathcal{L}_{\text{RM}} =-\mathbb{E}_{(x,y^+,y^-)\sim \mathcal{D}} [\,\log\sigma(r(x,y^+)-r(x,y^-))] LRM​=−E(x,y+,y−)∼D​[logσ(r(x,y+)−r(x,y−))]

这一过程实际上是对比学习,奖励模型需要学习在提升正例分数的同时,进一步降低负例的分数,以最大化正例和负例之间的分数差异。

3. 从PPO到DPO

传统的RLHF算法需要先在人类偏好数据上训练一个奖励模型,然后再使用这个奖励模型和相关的强化学习算法(如PPO)去指导LLM进一步学习,但这种做法有如下弊端:

  • 奖励建模的过程较为复杂,需要额外的计算开销。
  • 强化学习流程复杂,过程不稳定,且对超参数敏感。

DPO可以直接让策略模型在人类偏好数据上学习,省去了构建奖励模型和进行强化学习的步骤,故得名直接偏好优化(Direct Preference Optimization)。

我们先来看使用KL散度作为正则项的PPO算法,为了推导更为简便,我们可以将优化目标重写为下式:

max ⁡ π θ E x ∼ D , y ∼ π θ [ r ( x , y ) ] − β KL [ π θ ( y ∣ x )   ∥   π ref ( y ∣ x ) ] \max_{\pi_{\theta}} \mathbb{E}_{x\sim D,y\sim \pi_{\theta}} [r(x,y)]-\beta \text{KL} [\pi_{\theta}(y|x) \,\|\, \pi_{\text{ref}}(y|x)] πθ​max​Ex∼D,y∼πθ​​[r(x,y)]−βKL[πθ​(y∣x)∥πref​(y∣x)]

其中 r ( x , y ) r(x,y) r(x,y) 是奖励函数, π θ \pi_{\theta} πθ​ 是策略模型(待训练的模型), π ref \pi_{\text{ref}} πref​ 是参考模型(冻结),两者均从SFT模型初始化得来。在RLHF阶段,我们一方面需要最大化奖励,一方面又不能让策略模型偏离参考模型太远。

注意到 P ( y + > y − ∣ x ) P(y^+>y^-|x) P(y+>y−∣x) 仅跟 r ( x , y ) r(x,y) r(x,y) 有关,如果我们能够找到 π θ \pi_{\theta} πθ​ 和 r ( x , y ) r(x,y) r(x,y) 之间的关系,我们就能用 π θ \pi_{\theta} πθ​ 去表示 P ( y + > y − ∣ x ) P(y^+>y^-|x) P(y+>y−∣x),进而就能规避奖励建模的过程。这样一来,LLM就能够通过与强化学习等价的形式学习到人类的价值观和偏好。

考虑对PPO的优化目标进行变换:

max ⁡ π θ E x ∼ D , y ∼ π θ [ r ( x , y ) ] − β KL [ π θ ( y ∣ x )   ∥   π ref ( y ∣ x ) ] = max ⁡ π θ E x ∼ D E y ∼ π θ ( y ∣ x ) [ r ( x , y ) − β log ⁡ π θ ( y ∣ x ) π ref ( y ∣ x ) ] = min ⁡ π θ E x ∼ D E y ∼ π θ ( y ∣ x ) [ log ⁡ π θ ( y ∣ x ) π ref ( y ∣ x ) − 1 β r ( x , y ) ] = min ⁡ π θ E x ∼ D E y ∼ π θ ( y ∣ x ) [ log ⁡ π θ ( y ∣ x ) π ref ( y ∣ x ) + log ⁡ 1 exp ⁡ ( 1 β r ( x , y ) ) + log ⁡ 1 1 Z ( x ) − log ⁡ Z ( x ) ] = min ⁡ π θ E x ∼ D E y ∼ π θ ( y ∣ x ) [ log ⁡ π θ ( y ∣ x ) 1 Z ( x ) π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) − log ⁡ Z ( x ) ] \begin{aligned} &\max_{\pi_{\theta}} \mathbb{E}_{x\sim D,y\sim \pi_{\theta}} [r(x,y)]-\beta \text{KL} [\pi_{\theta}(y|x) \,\|\, \pi_{\text{ref}}(y|x)] \\ =&\max_{\pi_{\theta}} \mathbb{E}_{x\sim D} \mathbb{E}_{y\sim \pi_{\theta}(y|x)}\left[ r(x,y)-\beta\log\frac{\pi_{\theta}(y|x)}{\pi_{\text{ref}}(y|x)}\right] \\ =&\min_{\pi_{\theta}} \mathbb{E}_{x\sim D} \mathbb{E}_{y\sim \pi_{\theta}(y|x)}\left[ \log\frac{\pi_{\theta}(y|x)}{\pi_{\text{ref}}(y|x)}-\frac{1}{\beta}r(x,y)\right] \\ =&\min_{\pi_{\theta}} \mathbb{E}_{x\sim D} \mathbb{E}_{y\sim \pi_{\theta}(y|x)}\left[ \log\frac{\pi_{\theta}(y|x)}{\pi_{\text{ref}}(y|x)}+\log\frac{1}{\exp(\frac{1}{\beta}r(x,y))}+\log\frac{1}{\frac{1}{Z(x)}}-\log Z(x)\right] \\ =&\min_{\pi_{\theta}} \mathbb{E}_{x\sim D} \mathbb{E}_{y\sim \pi_{\theta}(y|x)}\left[ \log\frac{\pi_{\theta}(y|x)}{\frac{1}{Z(x)}\pi_{\text{ref}}(y|x)\exp(\frac{1}{\beta}r(x,y))}-\log Z(x)\right] \\ \end{aligned} ====​πθ​max​Ex∼D,y∼πθ​​[r(x,y)]−βKL[πθ​(y∣x)∥πref​(y∣x)]πθ​max​Ex∼D​Ey∼πθ​(y∣x)​[r(x,y)−βlogπref​(y∣x)πθ​(y∣x)​]πθ​min​Ex∼D​Ey∼πθ​(y∣x)​[logπref​(y∣x)πθ​(y∣x)​−β1​r(x,y)]πθ​min​Ex∼D​Ey∼πθ​(y∣x)​[logπref​(y∣x)πθ​(y∣x)​+logexp(β1​r(x,y))1​+logZ(x)1​1​−logZ(x)]πθ​min​Ex∼D​Ey∼πθ​(y∣x)​[logZ(x)1​πref​(y∣x)exp(β1​r(x,y))πθ​(y∣x)​−logZ(x)]​

其中 Z ( x ) Z(x) Z(x) 是我们额外引入的配分函数,定义为

Z ( x ) = ∑ y π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) Z(x)=\sum_y \pi_{\text{ref}}(y|x)\exp\left(\frac{1}{\beta}r(x,y)\right) Z(x)=y∑​πref​(y∣x)exp(β1​r(x,y))

现定义

π ∗ ( y ∣ x ) = 1 Z ( x ) π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) \pi^*(y|x)=\frac{1}{Z(x)}\pi_{\text{ref}}(y|x)\exp\left(\frac{1}{\beta}r(x,y)\right) π∗(y∣x)=Z(x)1​πref​(y∣x)exp(β1​r(x,y))

容易发现 π ∗ \pi^* π∗ 满足以下两个性质:

  • π ∗ ( y ∣ x ) ≥ 0 \pi^*(y|x)\geq 0 π∗(y∣x)≥0。
  • ∑ y π ∗ ( y ∣ x ) = 1 \sum_y \pi^*(y|x)=1 ∑y​π∗(y∣x)=1。

这说明 π ∗ \pi^* π∗ 是一个概率分布,我们将它代回原式并继续推导:

min ⁡ π θ E x ∼ D E y ∼ π θ ( y ∣ x ) [ log ⁡ π θ ( y ∣ x ) π ∗ ( y ∣ x ) − log ⁡ Z ( x ) ] = min ⁡ π θ E x ∼ D [ E y ∼ π θ ( y ∣ x ) [ log ⁡ π θ ( y ∣ x ) π ∗ ( y ∣ x ) ] − log ⁡ Z ( x ) ] = min ⁡ π θ E x ∼ D [ KL [ π θ ( y ∣ x )   ∥   π ∗ ( y ∣ x ) ] − log ⁡ Z ( x ) ] \begin{aligned} &\min_{\pi_{\theta}} \mathbb{E}_{x\sim D} \mathbb{E}_{y\sim \pi_{\theta}(y|x)}\left[ \log\frac{\pi_{\theta}(y|x)}{\pi^*(y|x)}-\log Z(x)\right] \\ =&\min_{\pi_{\theta}} \mathbb{E}_{x\sim D} \left[ \mathbb{E}_{y\sim \pi_{\theta}(y|x)}\left[ \log\frac{\pi_{\theta}(y|x)}{\pi^*(y|x)} \right]-\log Z(x) \right] \\ =&\min_{\pi_{\theta}} \mathbb{E}_{x\sim D} \left[ \text{KL}[\pi_{\theta}(y|x) \,\|\, \pi^*(y|x)]-\log Z(x) \right] \\ \end{aligned} ==​πθ​min​Ex∼D​Ey∼πθ​(y∣x)​[logπ∗(y∣x)πθ​(y∣x)​−logZ(x)]πθ​min​Ex∼D​[Ey∼πθ​(y∣x)​[logπ∗(y∣x)πθ​(y∣x)​]−logZ(x)]πθ​min​Ex∼D​[KL[πθ​(y∣x)∥π∗(y∣x)]−logZ(x)]​

注意到配分函数 Z ( x ) Z(x) Z(x) 与 π θ \pi_{\theta} πθ​ 无关,因此可以视为常数,所以只需要最小化KL散度这一项。根据Gibbs不等式,我们可以直接得到最优解

π θ ( y ∣ x ) = π ∗ ( y ∣ x ) = 1 Z ( x ) π ref ( y ∣ x ) exp ⁡ ( 1 β r ( x , y ) ) \pi_{\theta}(y|x)=\pi^*(y|x)=\frac{1}{Z(x)}\pi_{\text{ref}}(y|x)\exp\left(\frac{1}{\beta}r(x,y)\right) πθ​(y∣x)=π∗(y∣x)=Z(x)1​πref​(y∣x)exp(β1​r(x,y))

接下来推导 r ( x , y ) r(x,y) r(x,y) 和 π θ \pi_{\theta} πθ​ 之间的关系。对上式移项可得:

exp ⁡ ( 1 β r ( x , y ) ) = π θ ( y ∣ x ) π ref ( y ∣ x ) ⋅ Z ( x ) r ( x , y ) = β log ⁡ π θ ( y ∣ x ) π ref ( y ∣ x ) + β log ⁡ Z ( x ) \begin{aligned} \exp\left(\frac{1}{\beta}r(x,y)\right)&=\frac{\pi_{\theta}(y|x)}{\pi_{\text{ref}}(y|x)}\cdot Z(x)\\ r(x,y)&=\beta\log\frac{\pi_{\theta}(y|x)}{\pi_{\text{ref}}(y|x)}+\beta \log Z(x) \end{aligned} exp(β1​r(x,y))r(x,y)​=πref​(y∣x)πθ​(y∣x)​⋅Z(x)=βlogπref​(y∣x)πθ​(y∣x)​+βlogZ(x)​

我们将这个表达式代入到之前的 P ( y + > y − ∣ x ) P(y^+>y^-|x) P(y+>y−∣x) 中可得:

P ( y + > y − ∣ x ) = σ ( r ( x , y + ) − r ( x , y − ) ) = σ ( β log ⁡ π θ ( y + ∣ x ) π ref ( y + ∣ x ) + β log ⁡ Z ( x ) − β log ⁡ π θ ( y − ∣ x ) π ref ( y − ∣ x ) − β log ⁡ Z ( x ) ) = σ ( β log ⁡ π θ ( y + ∣ x ) π ref ( y + ∣ x ) − β log ⁡ π θ ( y − ∣ x ) π ref ( y − ∣ x ) ) \begin{aligned} P(y^+>y^-|x)&=\sigma (r(x,y^+)-r(x,y^-)) \\ &=\sigma\left(\beta\log\frac{\pi_{\theta}(y^+|x)}{\pi_{\text{ref}}(y^+|x)}+\beta \log Z(x)-\beta\log\frac{\pi_{\theta}(y^-|x)}{\pi_{\text{ref}}(y^-|x)}-\beta \log Z(x) \right) \\ &=\sigma\left(\beta\log\frac{\pi_{\theta}(y^+|x)}{\pi_{\text{ref}}(y^+|x)}-\beta\log\frac{\pi_{\theta}(y^-|x)}{\pi_{\text{ref}}(y^-|x)} \right) \\ \end{aligned} P(y+>y−∣x)​=σ(r(x,y+)−r(x,y−))=σ(βlogπref​(y+∣x)πθ​(y+∣x)​+βlogZ(x)−βlogπref​(y−∣x)πθ​(y−∣x)​−βlogZ(x))=σ(βlogπref​(y+∣x)πθ​(y+∣x)​−βlogπref​(y−∣x)πθ​(y−∣x)​)​

最终得到DPO的目标函数:

L DPO = − E ( x , y + , y − ) ∼ D [ log ⁡ σ ( β log ⁡ π θ ( y + ∣ x ) π ref ( y + ∣ x ) − β log ⁡ π θ ( y − ∣ x ) π ref ( y − ∣ x ) ) ] \mathcal{L}_{\text{DPO}}=-\mathbb{E}_{(x,y^+,y^-)\sim \mathcal{D}} \left[ \log\sigma\left(\beta\log\frac{\pi_{\theta}(y^+|x)}{\pi_{\text{ref}}(y^+|x)}-\beta\log\frac{\pi_{\theta}(y^-|x)}{\pi_{\text{ref}}(y^-|x)} \right) \right] LDPO​=−E(x,y+,y−)∼D​[logσ(βlogπref​(y+∣x)πθ​(y+∣x)​−βlogπref​(y−∣x)πθ​(y−∣x)​)]

可以发现 L DPO \mathcal{L}_{\text{DPO}} LDPO​ 与 L RM \mathcal{L}_{\text{RM}} LRM​ 的形式十分接近,即DPO具有以下形式的隐式奖励函数:

r θ ( x , y ) = β log ⁡ π θ ( y ∣ x ) π ref ( y ∣ x ) r_{\theta}(x,y)=\beta\log\frac{\pi_{\theta}(y|x)}{\pi_{\text{ref}}(y|x)} rθ​(x,y)=βlogπref​(y∣x)πθ​(y∣x)​

这也回应了DPO论文标题中的「Your Language Model is Secretly a Reward Model」。

接下来可以总结一下DPO的流程了:

  • 从 π SFT \pi^{\text{SFT}} πSFT 初始化 π θ ,   π ref \pi_{\theta},\,\pi_{\text{ref}} πθ​,πref​。
  • 对于每个 x x x,用 π ref \pi_{\text{ref}} πref​ 采样一对答案 ( y 1 , y 2 ) (y_1,y_2) (y1​,y2​),再让人工标注者去标注,以离线的方式构建人类偏好数据集 D = { x i , y i + , y i − } i = 1 N \mathcal{D}=\{x_i,y_i^+,y_i^-\}_{i=1}^N D={xi​,yi+​,yi−​}i=1N​。
  • 通过最小化 L DPO \mathcal{L}_{\text{DPO}} LDPO​ 来不断优化 π θ \pi_{\theta} πθ​。

4. DPO的简单实现

为方便计算,我们对 L DPO \mathcal{L}_{\text{DPO}} LDPO​ 做个简单的变形:

L DPO = − E ( x , y + , y − ) ∼ D [ log ⁡ σ ( β log ⁡ π θ ( y + ∣ x ) π θ ( y − ∣ x ) − β log ⁡ π ref ( y + ∣ x ) π ref ( y − ∣ x ) ) ] \mathcal{L}_{\text{DPO}}=-\mathbb{E}_{(x,y^+,y^-)\sim \mathcal{D}} \left[ \log\sigma\left(\beta\log\frac{\pi_{\theta}(y^+|x)}{\pi_{\theta}(y^-|x)}-\beta\log\frac{\pi_{\text{ref}}(y^+|x)}{\pi_{\text{ref}}(y^-|x)} \right) \right] LDPO​=−E(x,y+,y−)∼D​[logσ(βlogπθ​(y−∣x)πθ​(y+∣x)​−βlogπref​(y−∣x)πref​(y+∣x)​)]

一种简单的实现:

def dpo_loss(policy_chosen_logps, policy_rejected_logps, ref_chosen_logps, ref_rejected_logps, beta):
    """
    Compute the simplified DPO loss with sigmoid loss type.

    Args:
        policy_chosen_logps: Log probabilities of the policy model for the chosen responses. Shape: (batch_size,)
        policy_rejected_logps: Log probabilities of the policy model for the rejected responses. Shape: (batch_size,)
        ref_chosen_logps: Log probabilities of the reference model for the chosen responses. Shape: (batch_size,)
        ref_rejected_logps: Log probabilities of the reference model for the rejected responses. Shape: (batch_size,)
        beta: Temperature controlling strength of KL penalty

    Returns:
        losses: The DPO loss for each example in the batch.
        chosen_rewards: Rewards for the chosen responses.
        rejected_rewards: Rewards for the rejected responses.
    """

    # Calculate log-ratios
    policy_logratios = policy_chosen_logps - policy_rejected_logps
    ref_logratios = ref_chosen_logps - ref_rejected_logps

    # Compute logits for sigmoid loss
    logits = policy_logratios - ref_logratios

    # Sigmoid loss type
    losses = -F.logsigmoid(beta * logits)

    # Compute rewards
    chosen_rewards = beta * (policy_chosen_logps - ref_chosen_logps).detach()
    rejected_rewards = beta * (policy_rejected_logps - ref_rejected_logps).detach()

    return losses, chosen_rewards, rejected_rewards

5. 梯度分析

通过对DPO的目标函数求导,我们可以深入理解DPO算法如何针对LLM的参数进行优化。

令 u = β log ⁡ π θ ( y + ∣ x ) π ref ( y + ∣ x ) − β log ⁡ π θ ( y − ∣ x ) π ref ( y − ∣ x ) u=\beta\log\frac{\pi_{\theta}(y^+|x)}{\pi_{\text{ref}}(y^+|x)}-\beta\log\frac{\pi_{\theta}(y^-|x)}{\pi_{\text{ref}}(y^-|x)} u=βlogπref​(y+∣x)πθ​(y+∣x)​−βlogπref​(y−∣x)πθ​(y−∣x)​,利用Sigmoid函数的性质,我们有:

∇ L DPO = − E ( x , y + , y − ) ∼ D [ ∇ log ⁡ σ ( u ) ] = − E ( x , y + , y − ) ∼ D [ ∇ σ ( u ) σ ( u ) ∇ u ] = − E ( x , y + , y − ) ∼ D [ σ ( − u ) ∇ u ] = − E ( x , y + , y − ) ∼ D [ σ ( r θ ( x , y − ) − r θ ( x , y + ) ) ⋅ ( ∇ log ⁡ π θ ( y + ∣ x ) − ∇ log ⁡ π θ ( y − ∣ x ) ) ] \begin{aligned} \nabla \mathcal{L}_{\text{DPO}}&=-\mathbb{E}_{(x,y^+,y^-)\sim \mathcal{D}}[\nabla\log\sigma(u)]= -\mathbb{E}_{(x,y^+,y^-)\sim \mathcal{D}}\left[\frac{\nabla \sigma(u)}{\sigma(u)}\nabla u\right] \\ &=-\mathbb{E}_{(x,y^+,y^-)\sim \mathcal{D}}\left[ \sigma(-u)\nabla u \right] \\ &=-\mathbb{E}_{(x,y^+,y^-)\sim \mathcal{D}}\left[ \sigma(r_{\theta}(x,y^-)-r_{\theta}(x,y^+)) \cdot (\nabla \log \pi_{\theta}(y^+|x) - \nabla \log \pi_{\theta}(y^-|x)) \right] \end{aligned} ∇LDPO​​=−E(x,y+,y−)∼D​[∇logσ(u)]=−E(x,y+,y−)∼D​[σ(u)∇σ(u)​∇u]=−E(x,y+,y−)∼D​[σ(−u)∇u]=−E(x,y+,y−)∼D​[σ(rθ​(x,y−)−rθ​(x,y+))⋅(∇logπθ​(y+∣x)−∇logπθ​(y−∣x))]​

其中 r θ r_{\theta} rθ​ 是上文提到的隐式奖励函数。

通过对上述目标函数的导数进行分析,可以发现优化过程中会增大 log ⁡ π θ ( y + ∣ x ) \log \pi_\theta(y^+|x) logπθ​(y+∣x) 与 log ⁡ π θ ( y − ∣ x ) \log \pi_\theta(y^-|x) logπθ​(y−∣x) 之间的差异。这表明优化过程中训练模型向符合人类偏好的内容靠近 ( y + ) (y^+) (y+),同时尽量避免生成不符合人类偏好的内容 ( y − ) (y^-) (y−)。

此外,公式的前半部分 σ ( r θ ( x , y − ) − r θ ( x , y + ) ) \sigma(r_\theta(x,y^-) - r_\theta(x,y^+)) σ(rθ​(x,y−)−rθ​(x,y+)) 可以看作是梯度的系数,动态地控制梯度下降的步长。可以发现,当策略模型更倾向于生成不符合人类偏好的内容 y − y^- y− 时, r θ ( x , y − ) r_\theta(x,y^-) rθ​(x,y−) 和 r θ ( x , y + ) r_\theta(x,y^+) rθ​(x,y+) 之间的差值变大,导致梯度下降的步长变大,从而进行更为激进的参数更新,以避免生成 y − y^- y−。反之,当策略模型倾向于生成符合人类偏好的内容 y + y^+ y+ 时,说明策略模型当前具备较好的参数。此时梯度的系数变小,这会使得策略模型的参数的更新幅度降低,防止更新步长过大使得策略模型的性能出现震荡,增加训练的稳定性。


Ref

[1] https://www.bilibili.com/video/BV1GF4m1L7Nt/?spm_id_from=333.337.search-card.all.click
[2] 《大模型综述》
[3] https://en.wikipedia.org/wiki/Bradley%E2%80%93Terry_model

标签:frac,log,text,Direct,Optimization,Preference,theta,pi,ref
From: https://blog.csdn.net/raelum/article/details/141612193

相关文章

  • C# reflection slower 2.19X+ than direct
    usingSystem.Diagnostics;usingSystem.IO;usingSystem.Reflection;usingSystem.Text;namespaceConsoleApp58{internalclassProgram{staticList<Book>booksList{get;set;}staticvoidMain(string[]args){......
  • BAdam A Memory Efficient Full Parameter Optimization Method for Large Language M
    目录概BAdam代码LuoQ.,YuH.andLiX.BAdam:Amemoryefficientfullparameteroptimizationmethodforlargelanguagemodels.arXivpreprint,2024.概本文介绍了一种Blockcorrdinatedescent(BCD)的训练方式.BAdam当模型本身很大的时候,训练它会成为一......
  • AppDomain.CurrentDomain.BaseDirectory是什么
    以下为ai解释,用到的知识点都在此记录下AppDomain.CurrentDomain.BaseDirectory是一个属性,它返回当前应用程序域的基目录,即包含应用程序的目录的路径。这个路径通常是安装应用程序的目录,并且通常以反斜杠(\或者\)结尾。如果你想获取这个路径,你可以直接调用这个属性。解决方案1:s......
  • firewalld:direct规则
    一,官方文档:1,选项:https://firewalld.org/documentation/direct/options.html例子:https://firewalld.org/documentation/direct/examples.html手册:https://firewalld.org/documentation/man-pages/firewalld.direct.html2,直接规则的特点:1)直接只用iptables或firewal......
  • AD(Active Directory )域的搭建与操作
    AD域的搭建与操作一、准备工作准备好VM虚拟机和Server的安装包。二、安装Server2022选择标准且有图形界面的进行安装。选择自定义安装方式。为虚拟机server2022安装VMwaretools。回到桌面,右键个性化把计算机和网络图标放出来。三、安装AD域服务......
  • 004.MinIO-DirectPV分布式存储部署
    MinIO部署介绍部署概述Kuberneteshostpath、local和本地静态配置都存在需要事先在node节点准备好可用的块存储或文件系统,例如对插入的硬盘,或者磁盘阵列做分区格式化,文件系统则需提前创建好Kubernetes即将利用的挂载目录,并且两种方法都会有亲和性限制,无法做到让Kubernetes自身的......
  • 003.DirectPV存储管理
    目录DirectPVdrives管理先决条件添加drives列出drives标记drives替换drives移除drives暂停drives修复drives扩容Volume在线扩容删除Volume清理残留Volume暂停VolumeDirectPVdrives使用使用介绍创建PVC创建PodDirectPVdrives管理先决条件已安装DirectPV插件。在Kubernetes......
  • 一文带你读懂vue3中directive指令的那些事
    概述vue3中内置了很多丰富实用的指令,如v-show、v-if/v-else或v-model等,但是实际开发中可能我们还需要某些统一的处理,比如交互按钮的防抖,输入框的自动focus等,这时我们就可以通过vue3的directive注册自定义指令。指令指令钩子vue3的自定义指令通常情况下是由一个包含类似......
  • 002.DirectPV存储安装
    DirectPV简介DirectPV概述DirectPV是直接连接存储的CSI驱动程序。从更简单的意义上说,它是一个分布式持久卷管理器,而不是像SAN或NAS那样的存储系统。它可以用于发现、格式化、挂载、调度和监视跨服务器的硬盘驱动器。由于KuberneteshostPath和本地pv是静态配置的,功......
  • 【App Service】在App Service中配置Virtual applications and directories,访问目录中
    问题描述在AppServiceWindows的环境中,想一个AppServices下部署多个站点,比如/根目录下,从wwwroot中读取项目文件,而/files则通过配置的虚拟目录来读取\mounts\sitefiles目录中的静态文件。在AppService的 ConfigurationPathMapping中配置如下:通过Kudu查看AppService......