大模型对齐方法笔记三:不需要参考模型的对齐方法ORPO和SimPO

ORPO

ORPO出自2024年3月的论文《ORPO: Monolithic Preference Optimization without Reference Model》,其将对齐融入到SFT过程中减少对齐成本。
在这里插入图片描述

论文先指出在SFT过程中,增加模型想要输出的概率的同时不经意地增加了不想要输出的概率(如下图示意),作者认为SFT对不想要输出的缺少惩罚。

在这里插入图片描述

对于一个输入序列x,生成长度为m个token的输出序列y的平均对数似然如下式:
log ⁡ P θ ( y ∣ x ) = 1 m ∑ t = 1 m log ⁡ P θ ( y t ∣ x , y < t ) \log P_{\theta}(y|x) = \frac{1}{m} \sum^m_{t=1} \log P_{\theta}(y_t|x, y_{<t}) logPθ(yx)=m1t=1mlogPθ(ytx,y<t)
对于一个输入序列x,生成输出序列y的几率如下式(一个事件的几率(odds)是指该事件发生的概率与该事件不发生的概率的比值):
odds ⁡ θ ( y ∣ x ) = P θ ( y ∣ x ) 1 − P θ ( y ∣ x ) \boldsymbol{\operatorname{odds}}_{\theta}(y|x) = \frac{P_{\theta}(y|x)}{1- P_{\theta}(y|x)} oddsθ(yx)=1Pθ(yx)Pθ(yx)
定义 O R θ ( y w , y l ) \mathbf{O R}_{\theta}(y_w, y_l) ORθ(yw,yl)为被选择输出 y w y_w yw和被拒绝输出 y l y_l yl输出的几率比值,用来表明参数为 θ \theta θ的模型对于给定输入x相对于输出 y l y_l yl有多倾向于生成输出 y w y_w yw
O R θ ( y w , y l ) = odds ⁡ θ ( y w ∣ x ) odds ⁡ θ ( y l ∣ x ) \mathbf{O R}_\theta\left(y_w, y_l\right)=\frac{\boldsymbol{\operatorname { o d ds }}_\theta\left(y_w \mid x\right)}{\boldsymbol{\operatorname {odds }}_\theta\left(y_l \mid x\right)} ORθ(yw,yl)=oddsθ(ylx)oddsθ(ywx)
ORPO的目标函数由SFT损失和相对比例损失两部分构成:
L O R P O = E ( x , y w , y l ) [ L S F T + λ ⋅ L O R ] \mathcal{L}_{ORPO} = \mathbb{E}_{(x, y_w, y_l)}[ \mathcal{L}_{SFT} + \lambda \cdot \mathcal{L}_{OR} ] LORPO=E(x,yw,yl)[LSFT+λLOR]

L O R = − log ⁡ σ ( log ⁡ odds ⁡ θ ( y w ∣ x ) odds ⁡ θ ( y l ∣ x ) ) \mathcal{L}_{OR} = -\log \sigma \left( \log \frac{\boldsymbol{\operatorname { o d ds }}_\theta\left(y_w \mid x\right)}{\boldsymbol{\operatorname {odds }}_\theta\left(y_l \mid x\right)} \right) LOR=logσ(logoddsθ(ylx)oddsθ(ywx))

L S F T = − 1 m ∑ k = 1 m log ⁡ P ( x ( k ) , y ( k ) ) = − 1 m ∑ k = 1 m ∑ i = 1 ∣ V ∣ y i ( k ) ⋅ log ⁡ ( p i ( k ) ) \begin{aligned} \mathcal{L}_{SFT} & =-\frac{1}{m} \sum_{k=1}^m \log P\left(\mathbf{x}^{(k)}, \mathbf{y}^{(k)}\right) \\ & =-\frac{1}{m} \sum_{k=1}^m \sum_{i=1}^{|V|} y_i^{(k)} \cdot \log \left(p_i^{(k)}\right) \end{aligned} LSFT=m1k=1mlogP(x(k),y(k))=m1k=1mi=1Vyi(k)log(pi(k))

SimPO

SimPO出自2024年5月的论文《SimPO: Simple Preference Optimization with a Reference-Free Reward》。它使用隐式奖励公式直接与生成指标对齐,因此可以省略参考模型。

在这里插入图片描述

SimPO先对DPO进行分析,基于其缺点提出SimPO思路。DPO使用带最优策略的闭式表达式来对奖励函数r进行重新参数化:
r ( x , y ) = β log ⁡ ( π θ ( y ∣ x ) π ref  ( y ∣ x ) ) + β log ⁡ ( Z ( x ) ) ( 1 ) r(x, y)=\beta \log \left(\frac{\pi_{\theta}(y \mid x)}{\pi_{\text {ref }}(y \mid x)}\right)+\beta \log (Z(x)) \qquad (1) r(x,y)=βlog(πref (yx)πθ(yx))+βlog(Z(x))(1)
式中的 π θ \pi_{\theta} πθ是策略模型, π ref \pi_{\text{ref}} πref是参考策略, Z ( x ) Z(x) Z(x)是配分函数。将上述奖励函数整合到Bradley-Terry (BT)排序目标 p ( y w ≻ y l ∣ x ) = σ ( r ϕ ( x , y w ) − r ϕ ( x , y l ) ) p(y_w \succ y_l |x) = \sigma(r_{\phi}(x, y_w) - r_{\phi}(x, y_l)) p(ywylx)=σ(rϕ(x,yw)rϕ(x,yl))后,DPO可以将目标函数表示成不需要奖励模型的如下形式:
L DPO ( π θ ; π ref ) = − E ( x , y w , y l ) ∼ D [ σ ( β log ⁡ ( π θ ( y w ∣ x ) π ref  ( y w ∣ x ) ) − β log ⁡ ( π θ ( y l ∣ x ) π ref  ( y l ∣ x ) ) ) ] ( 2 ) \mathcal{L}_{\text{DPO}}(\pi_{\theta};\pi_{\text{ref}}) = - \mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}} \left[ \sigma \left( \beta \log \left(\frac{\pi_{\theta}(y_w \mid x)}{\pi_{\text {ref }}(y_w \mid x)}\right) - \beta \log \left(\frac{\pi_{\theta}(y_l \mid x)}{\pi_{\text {ref }}(y_l \mid x)}\right) \right) \right] \qquad (2) LDPO(πθ;πref)=E(x,yw,yl)D[σ(βlog(πref (ywx)πθ(ywx))βlog(πref (ylx)πθ(ylx)))](2)
SimPO的作者认为DPO使用的隐式奖励表达式有两个缺点:1. 在训练过程中需要参考模型 π ref \pi_{\text{ref}} πref导致额外的内存和计算开销;2. 训练过程中优化的奖励与推理时的生成指标存在差异性,在生成阶段策略模型 π θ \pi_{\theta} πθ被用来生成满足最大平均对数似然的序列(如下式表示)。在DPO中,对于任意三元组 ( x , y w , y l ) (x, y_w, y_l) (x,yw,yl)满足奖励排序 r ( x , y w ) > r ( x , y l ) r(x, y_w) > r(x, y_l) r(x,yw)>r(x,yl)不一定意味着似然排序 p θ ( y w ∣ x ) > p θ ( y l ∣ x ) p_{\theta}(y_w |x) >p_{\theta}(y_l|x) pθ(ywx)>pθ(ylx)同样满足,实际上DPO的留出数据集中只有大约50%的三元组满足这个条件。
p θ ( y ∣ x ) = 1 ∣ y ∣ log ⁡ π θ ( y ∣ x ) = 1 ∣ y ∣ ∑ i = 1 ∣ y ∣ log ⁡ π θ ( y i ∣ x , y < i ) ( 3 ) p_{\theta}(y|x) = \frac{1}{|y|} \log \pi_{\theta}(y|x) =\frac{1}{|y|} \sum_{i=1}^{|y|} \log \pi_{\theta}\left(y_{i} \mid x, y_{<i}\right) \qquad (3) pθ(yx)=y1logπθ(yx)=y1i=1ylogπθ(yix,y<i)(3)
基于这两个缺点,SimPO使用上述公式(3)来替换DPO的奖励形式,这样就与生成过程中的似然指标是对齐的:
r SimPO ( x , y ) = β ∣ y ∣ log ⁡ π θ ( y ∣ x ) = β ∣ y ∣ ∑ i = 1 ∣ y ∣ log ⁡ π θ ( y i ∣ x , y < i ) ( 4 ) r_{\text{SimPO}}(x, y) = \frac{\beta}{|y|} \log \pi_{\theta}(y|x) =\frac{\beta}{|y|} \sum_{i=1}^{|y|} \log \pi_{\theta}\left(y_{i} \mid x, y_{<i}\right) \qquad (4) rSimPO(x,y)=yβlogπθ(yx)=yβi=1ylogπθ(yix,y<i)(4)
上式中的 β \beta β是用来控制奖励差异大小的常量,SimPO作者发现根据输出长度对奖励进行归一化非常关键,如果移除掉长度归一化会导致模型倾向于生成更长但质量更低的序列。

SimPO对于Bradley-Terry (BT)排序目标引入了一个差额项 γ > 0 \gamma >0 γ>0,用来保证获胜输出的奖励 r ( x , y w ) r(x, y_w) r(x,yw)超过失败输出的奖励 r ( x , y l ) r(x, y_l) r(x,yl)至少 γ \gamma γ,作者在实践时发现一开始增加差额项可以提高生成质量,但是当差额项太大时就会使得输出质量下降。
p ( y w ≻ y l ∣ x ) = σ ( r ϕ ( x , y w ) − r ϕ ( x , y l ) − γ ) ( 5 ) p(y_w \succ y_l |x) = \sigma(r_{\phi}(x, y_w) - r_{\phi}(x, y_l) - \gamma) \qquad (5) p(ywylx)=σ(rϕ(x,yw)rϕ(x,yl)γ)(5)
将公式(4)代入到公式(5)之后就可得到了SimPO的目标
L SimPO ( π θ ) = − E ( x , y w , y l ) ∼ D [ log ⁡ σ ( β ∣ y w ∣ log ⁡ π θ ( y w ∣ x ) − β ∣ y l ∣ log ⁡ π θ ( y l ∣ x ) − γ ) ] ( 2 ) \mathcal{L}_{\text{SimPO}}(\pi_{\theta}) = - \mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}} \left[\log \sigma \left( \frac{\beta}{|y_w|} \log \pi_{\theta}(y_w \mid x) - \frac{\beta}{|y_l|} \log \pi_{\theta}(y_l \mid x) - \gamma \right) \right] \qquad (2) LSimPO(πθ)=E(x,yw,yl)D[logσ(ywβlogπθ(ywx)ylβlogπθ(ylx)γ)](2)
下图是论文中给出的与其他对齐方法目标函数超参范围的对比。
在这里插入图片描述

参考资料

  1. ORPO: arxiv, github, 用ORPO微调llama3 blog
  2. SimPO: arxiv, github, 机器之心报道
  • 21
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值