DPO算法推导

DPO

  • 核心思想:直接使用偏好数据进行策略优化,省去 reward 模型策略优化。

  • 技术背景知识:

    首先给定prompt x,生成两个答案 ( y 1 , y 2 )   Π S F T ( y ∣ x ) (y_1,y_2)~\Pi^{SFT}(y|x) (y1,y2) ΠSFT(yx) ,并通过人工标注对比 y 1 , y 2 y_1,y_2 y1,y2 ,获得偏好结果(preference) y w ≻ y l ∣ x y_w\succ y_l|x ywylx,其中 w w w l l l表示winlose

    引入奖励模型 r r r , y 1 > y 2 y_1 > y_2 y1>y2 的概率可以表示为
    p ( y 1 > y 2 ) = r ∗ ( x , y 1 ) r ∗ ( x , y 1 ) + r ∗ ( x , y 2 ) p(y_1 > y_2) = \frac{r^*(x,y_1)}{r^*(x,y_1)+ r^*(x,y_2)} p(y1>y2)=r(x,y1)+r(x,y2)r(x,y1)
    为使得奖励函数均为正数,引入Bradley-Terry 模型。

    • Bradley-Terry
      p ∗ ( y w ≻ y l ∣ x ) = e x p ( r ∗ ( x , y 1 ) ) e x p ( r ∗ ( x , y 1 ) ) + e x p ( r ∗ ( x , y 2 ) ) p^{*}(y_w\succ y_l|x) = \frac{exp(r^*(x,y_1))}{exp(r^*(x,y_1))+ exp(r^*(x,y_2))} p(ywylx)=exp(r(x,y1))+exp(r(x,y2))exp(r(x,y1))
      交叉熵:

      a x = e x p ( r ∗ ( x , y 1 ) ) a_x = exp(r^*(x,y_1)) ax=exp(r(x,y1)), a y = e x p ( r ∗ ( x , y 2 ) ) a_y = exp(r^*(x,y_2)) ay=exp(r(x,y2))
      L o s s = − E ( a x , a y ) ∼ D [ l n a x a x + a y ] = − E ( x , y w , y l ) ∼ D [ l n e x p ( r ∗ ( x , y w ) ) e x p ( r ∗ ( x , y w ) ) + e x p ( r ∗ ( x , y l ) ) ] = − E ( x , y w , y l ) ∼ D [ l n 1 1 + e x p ( r ∗ ( x , y l ) − r ∗ ( x , y w ) ) ] = − E ( x , y w , y l ) ∼ D [ l n σ ( r ∗ ( x , y w ) − r ∗ ( x , y l ) ) ] Loss = -E_{(a_x,a_y)\sim D}[ln\frac{a_x}{a_x+a_y}] \\ = - E_{(x,y_w,y_l)\sim D}[ln\frac{exp(r^*(x,y_w))}{exp(r^*(x,y_w))+exp(r^*(x,y_l))}] \\ = - E_{(x,y_w,y_l)\sim D}[ln\frac{1}{1+exp(r^*(x,y_l)-r^*(x,y_w))}] \\ = - E_{(x,y_w,y_l)\sim D}[ln \sigma(r^*(x,y_w) -r^*(x,y_l))] \\ Loss=E(ax,ay)D[lnax+ayax]=E(x,yw,yl)D[lnexp(r(x,yw))+exp(r(x,yl))exp(r(x,yw))]=E(x,yw,yl)D[ln1+exp(r(x,yl)r(x,yw))1]=E(x,yw,yl)D[l(r(x,yw)r(x,yl))]

    • KL 散度:
      K L ( P ∣ ∣ Q ) = ∑ x ∈ X P ( X ) l o g ( P ( X ) Q ( X ) ) KL(P||Q) = \sum_{x\in X}P(X)log(\frac{P(X)}{Q(X)}) KL(P∣∣Q)=xXP(X)log(Q(X)P(X))
      P ( x ) , Q ( x ) P(x),Q(x) P(x),Q(x) 分别是数据真实分布和模型预测分布。

  • DPO 目标函数:获取更多的奖励,并尽可能保证与基准模型一致。
    m a x π E x ∈ X , y ∈ π [ r ( x , y ) ] − β ⋅ D K L [ π ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ] = m a x π E x ∈ X , y ∈ π [ r ( x , y ) ] − E x ∈ X , y ∈ π [ β ⋅ l o g π ( y ∣ x ) π r e f ( y ∣ x ) ] = m a x π E x ∈ X , y ∈ π [ r ( x , y ) − β ⋅ l o g π ( y ∣ x ) π r e f ( y ∣ x ) ] = m a x π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π r e f ( y ∣ x ) − 1 β r ( x , y ) ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π r e f ( y ∣ x ) − l o g    e x p ( 1 β r ( x , y ) ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) 1 Z ( x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) − l o g    Z ( x ) ] \underset{\pi}{max} E_{x\in X, y \in \pi}[r(x,y)] - \beta·\mathbb{D}_{KL}[\pi(y|x) || \pi_{ref}(y|x)] \\ = \underset{\pi}{max} E_{x\in X, y \in \pi}[r(x,y)] - E_{x\in X, y \in \pi}[\beta·log \frac{\pi(y|x)}{\pi_{ref}(y|x)}] \\ = \underset{\pi}{max} E_{x\in X, y \in \pi}[r(x,y) - \beta·log \frac{\pi(y|x)}{\pi_{ref}(y|x)}] \\ = \underset{\pi}{max} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi_{ref}(y|x)}- \frac{1}{\beta}r(x,y))] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi_{ref}(y|x)}- log \ \ exp(\frac{1}{\beta}r(x,y))] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y))} ] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\frac{1}{Z(x)}\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y))} - log \ \ Z(x) ] \\ πmaxExX,yπ[r(x,y)]βDKL[π(yx)∣∣πref(yx)]=πmaxExX,yπ[r(x,y)]ExX,yπ[βlogπref(yx)π(yx)]=πmaxExX,yπ[r(x,y)βlogπref(yx)π(yx)]=πmaxExX,yπ[logπref(yx)π(yx)β1r(x,y))]=πminExX,yπ[logπref(yx)π(yx)log  exp(β1r(x,y))]=πminExX,yπ[logπref(yx)exp(β1r(x,y))π(yx)]=πminExX,yπ[logZ(x)1πref(yx)exp(β1r(x,y))π(yx)log  Z(x)]
    Z ( x ) Z(x) Z(x) 表示如下:
    Z ( x ) = ∑ y π r e f ( y ∣ x ) e x p ( 1 β r ( x , y ) ) Z(x) = \underset{y}{\sum} \pi_{ref}(y|x) exp(\frac{1}{\beta}r(x,y) ) Z(x)=yπref(yx)exp(β1r(x,y))
    令:
    1 Z ( x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) = π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) ∑ y π r e f ( y ∣ x ) e x p ( 1 β r ( x , y ) ) = π ∗ ( y ∣ x ) \frac{1}{Z(x)}\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y)) = \frac{\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y))}{\underset{y}{\sum} \pi_{ref}(y|x) exp(\frac{1}{\beta}r(x,y) )} \\ = \pi^*(y|x) Z(x)1πref(yx)exp(β1r(x,y))=yπref(yx)exp(β1r(x,y))πref(yx)exp(β1r(x,y))=π(yx)
    接下来继续对``dpo` 目标函数进行化简:
    m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) 1 Z ( x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) − l o g    Z ( x ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π ∗ ( y ∣ x ) − l o g    Z ( x ) ] \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\frac{1}{Z(x)}\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y))} - log \ \ Z(x) ] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi^*(y|x)} - log \ \ Z(x) ] \\ πminExX,yπ[logZ(x)1πref(yx)exp(β1r(x,y))π(yx)log  Z(x)]=πminExX,yπ[logπ(yx)π(yx)log  Z(x)]
    由于 Z ( x ) Z(x) Z(x) 表达式与 π \pi π 不相关,优化可以直接省去。
    m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π ∗ ( y ∣ x ) − l o g    Z ( x ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π ∗ ( y ∣ x ) ] = m i n π E x ∼ D [ D K L ( π ( y ∣ x ) ∣ ∣ π ∗ ( y ∣ x ) ) ] \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi^*(y|x)} - log \ \ Z(x) ] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi^*(y|x)} ] \\ = \underset{\pi}{min} E_{x \sim D}[\mathbb{D}_{KL}(\pi(y|x) || \pi^*(y|x))] \\ πminExX,yπ[logπ(yx)π(yx)log  Z(x)]=πminExX,yπ[logπ(yx)π(yx)]=πminExD[DKL(π(yx)∣∣π(yx))]
    当 目标函数最小化,也就是 D K L \mathbb{D}_{KL} DKL 最小化,所满足的条件为:
    π ( y ∣ x ) = π ∗ ( y ∣ x ) = 1 Z ( x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) \pi(y|x) = \pi^*(y|x) = \frac{1}{Z(x)}\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y)) π(yx)=π(yx)=Z(x)1πref(yx)exp(β1r(x,y))
    反解奖励函数 r ( x , y ) r(x,y) r(x,y)
    r ( x , y ) = β π ( y ∣ x ) π r e f ( y ∣ x ) + β ⋅ l n Z ( x ) r(x,y) = \beta \frac{\pi(y|x)}{\pi_{ref}(y|x)} + \beta · ln \Z(x) r(x,y)=βπref(yx)π(yx)+βlnZ(x)

求解奖励函数隐式表达后,带入Bradley-Terry 交叉熵函数:
L o s s = − E ( x , y w , y l ) ∼ D [ l n σ ( r ∗ ( x , y w ) − r ∗ ( x , y l ) ) ] = − E ( x , y w , y l ) ∼ D [ l n σ ( β l o g π ( y w ∣ x ) π r e f ( y w ∣ x ) − β l o g π ( y l ∣ x ) π r e f ( y l ∣ x ) ) ] Loss = - E_{(x,y_w,y_l)\sim D}[ln \sigma(r^*(x,y_w) -r^*(x,y_l))] \\ =- E_{(x,y_w,y_l)\sim D}[ln \sigma(\beta log\frac{\pi(y_w|x)}{\pi_{ref}(y_w|x)} - \beta log \frac{\pi(y_l|x)}{\pi_{ref}(y_l|x)})] Loss=E(x,yw,yl)D[l(r(x,yw)r(x,yl))]=E(x,yw,yl)D[l(βlogπref(ywx)π(ywx)βlogπref(ylx)π(ylx))]
到此,整个数学部分已推导完毕,不得不说句牛逼plus。

  • 梯度表征:

    将上述损失进行梯度求导
    ∇ θ L o s s ( π θ ; π r e f ) = − E ( x , y w , y l ) ∼ D [ β σ ( β 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 o g π ( y w ∣ x ) − ∇ θ l o g π ( y l ∣ x ) ] ] \nabla_\theta Loss(\pi_{\theta};\pi_{ref}) = - E_{(x,y_w,y_l)\sim D}[\beta \sigma(\beta log\frac{\pi(y_w|x)}{\pi_{ref}(y_w|x)} - \beta log \frac{\pi(y_l|x)}{\pi_{ref}(y_l|x)}) [\nabla_{\theta}log \pi(y_w|x) - \nabla_{\theta}log \pi(y_l|x) ]] θLoss(πθ;πref)=E(x,yw,yl)D[βσ(βlogπref(ywx)π(ywx)βlogπref(ylx)π(ylx))[θlogπ(ywx)θlogπ(ylx)]]
    再令:
    r ^ ( x , y ) = β π θ ( y ∣ x ) π r e f ( y ∣ x ) \hat{r}(x,y) = \beta \frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)} r^(x,y)=βπref(yx)πθ(yx)
    最终形式:
    ∇ θ L o s s ( π θ ; π r e f ) = − β E ( x , y w , y l ) ∼ D [ σ ( r ^ ∗ ( x , y w ) − r ^ ∗ ( x , y l ) ) ⏟ h i g h e r   w e i g h t   w h e n   r e w a r d   e s t i m a t e   i s   w r o n g [ ∇ θ l o g π ( y w ∣ x ) ⏟           i n c r e a s e   l i k e l i h o o d   o f   y w − ∇ θ l o g π ( y l ∣ x ) ⏟ d e c r e a s e   l i k e l i h o o d   o f   y l ] ] \nabla_\theta Loss(\pi_{\theta};\pi_{ref}) = -\beta E_{(x,y_w,y_l)\sim D}[\underbrace{\sigma(\hat{r}^*(x,y_w) -\hat{r}^*(x,y_l))}_{higher\ weight\ when\ reward\ estimate\ is\ wrong} [\underbrace{\nabla_{\theta}log \pi(y_w|x)}_{\ \ \ \ \ \ \ \ \ increase \ likelihood\ of\ y_w} - \underbrace{\nabla_{\theta}log \pi(y_l|x)}_{decrease \ likelihood \ of \ y_l} ]] θLoss(πθ;πref)=βE(x,yw,yl)D[higher weight when reward estimate is wrong σ(r^(x,yw)r^(x,yl))[         increase likelihood of yw θlogπ(ywx)decrease likelihood of yl θlogπ(ylx)]]

  • 改进方法ODPO

    dpo缺陷主要是:采用Bradley–Terry model只给出了一个response比另一个response好的概率,而没有告诉我们好的程度。

odpo 核心思想: 把这个好的程度的差距信息引入到偏好的建模里,应该能带来收益,及在dpo损失里添加margin , 这相当于要求偏好回应的评估分数要比非偏好回应的评估分数大,且要大offset值这么多。目的是:加大对靠得比较近的数据对的惩罚力度。
L o s s o d p o = − E ( x , y w , y l ) ∼ D [ l n σ ( r ∗ ( x , y w ) − r ∗ ( x , y l ) ) − δ r ] δ r = α   l o g ( r ( y w ) − r ( y l ) ) Loss^{odpo}= - E_{(x,y_w,y_l)\sim D}[ln \sigma(r^*(x,y_w) -r^*(x,y_l)) - \delta_r] \\ \delta_r = \alpha \ log(r(y_w)- r(y_l)) Lossodpo=E(x,yw,yl)D[l(r(x,yw)r(x,yl))δr]δr=α log(r(yw)r(yl))

  • 相似改进方法:

    IPO KTO 都是不需要奖励模型的;

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang S

讨论研讨

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值