大模型对齐方法笔记三:不需要参考模型的对齐方法ORPO和SimPO
不需要参考模型的对齐方法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θ(y∣x)=m1t=1∑mlogPθ(yt∣x,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θ(y∣x)=1−Pθ(y∣x)Pθ(y∣x)
定义 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θ(yl∣x)oddsθ(yw∣x)
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θ(yl∣x)oddsθ(yw∣x))
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=1∑mlogP(x(k),y(k))=−m1k=1∑mi=1∑∣V∣yi(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 (y∣x)πθ(y∣x))+β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(yw≻yl∣x)=σ(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 (yw∣x)πθ(yw∣x))−βlog(πref (yl∣x)πθ(yl∣x)))](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θ(yw∣x)>pθ(yl∣x)同样满足,实际上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θ(y∣x)=∣y∣1logπθ(y∣x)=∣y∣1i=1∑∣y∣logπθ(yi∣x,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πθ(y∣x)=∣y∣βi=1∑∣y∣logπθ(yi∣x,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(yw≻yl∣x)=σ(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πθ(yw∣x)−∣yl∣βlogπθ(yl∣x)−γ)](2)
下图是论文中给出的与其他对齐方法目标函数超参范围的对比。
参考资料

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)