2024年大模型Alignment偏好优化技术:从PPO, SPO到MCTS-DPO

来源 | Paperweekly

今年做过一段时间的 alignment 工作,做得有点不开心,各种 social 的原因,觉得自己的发挥受到了限制,最近又闲下来了,所以看了一些相关的论文,但是对这个方向还是挺感兴趣的,这里来分享一下我对 alignment 的一些理解。

对齐一般使用的是 chat 或者 instruct 模型,而不是 base 模型,自从 OpenAI 利用 RLHF 做人类偏好对齐后,开源社区就涌现了一些列的对齐技术。RL 技术中,典型的是 PPO(缺点是训练不太稳定,效率低),如果数据集是人类标注的就是 RLHF,如果是 GPT,PaLM2 等模型标注的,就是 RLAIF。

后面出现了非 RL 的技术,典型的就是 DPO(直接构造偏好数据集进行优化),然后有一些工作觉得 SFT+RLHF 不是 end2end,索性直接在 SFT 上加一个 alignment 的 loss,这个典型的就是 ORPO。

还有一部分工作觉得 DPO 训练的 pair-wise(x,y_w,yl)的数据集获取很困难,于是有了 point-wise(x,y,label)的方法,典型的是 KTO,还有一些就是优化 Alignment 的输出长度的,加了一个类似正则化项的限制等等。

最近又出现了一种 step-wise 的优化方法(例如 Step-DPO),直接对 reasoning 的过程进行优化限制(step-level),而不是等模型输出完了再进行优化(Instance-level)。

另外,有人觉得 reward model 无法优化 general perference(不可传递性偏好,比如 a>b,b>c, c>a 的情况)于是有了 DNO,SPO(引入了纳什均衡,Nash equilibrium),有的人觉得 DPO 优化的是单轮,因此对多轮的偏好优化做了拓展(multi-turn DPO)。

最后还有一波人,索性直接摆烂,方法超不过你,就直接合成数据,用 MCTS(exploration and exploitation 保证多样性和质量)等方式造完数据,直接 DPO 开始训练就完了,完美的数据闭环,alignment 的论文有一个特点,就是数学推导过程超级的长(可能最初的就是强化学习的理论得来,数学基因在那里,也可能作者写论文的时候没啥好写的,开始秀起数学能力了,能占篇幅哈哈哈)。

图片

DPO 我这里简单介绍一下,因为后面的改进都跟它有关,它跟 PPO 主要区别就是不用单独训练一个 reward 模型了,直接构造偏好数据集对齐原来的模型即可。

图片

图片

这里面的 y-w 就是正样本(你期望的输出),y-l 就是负样本(你不期望的输出),然后数据集就是(x,y-w,y-l)这样的 pair-wise 偏好数据集。下面是一些 RLHF 在 2024 年发展的一些代表性的技术,如果想了解 2023 年的一些 alignment 迭代方法,可以参考下面的链接,跟本文有少量交叉,另外,欢迎读者给出一些改进意见:

https://zhuanlan.zhihu.com/p/662753985

图片

KTO

Kahneman 和 Tversky 的前景理论告诉我们,人类以一种有偏见但定义明确的方式感知随机变量;例如,人类以厌恶损失而闻名。我们表明,将 LLM 与人类反馈相匹配的目标隐含地包含了许多这些偏见——这些目标(如 DPO)在交叉熵最小化方面的成功部分可以归因于它们属于我们称之为人类感知损失(HALO)的损失函数家族。

然而,这些方法赋予人类的效用函数仍然与前景理论文献中的效用函数不同。使用 Kahneman-Tversky 人类效用模型,论文提出了一种直接最大化生成效用的 HALO,而不是像目前的方法那样最大化偏好的对数可能性。

这种方法称为 KTO,它在 1B 到 30B 的尺度上与基于偏好的方法的性能相匹配或超过,尽管它只从二进制信号(0 或者 1)中学习输出是否可取。更广泛地说,我们的工作表明,没有一个 HALO 是普遍优越的;最佳损失取决于最适合给定设置的归纳偏差,这是一个经常被忽视的考虑因素。

KTO 的损失函数如下,本质上就是把 pair-wise 的公式变成了 point-wise 的方式:

图片

为了更稳定的训练,我们不通过 z0 (当成类似常量的值,仅仅是求出来,也不产生梯度)进行反向传播;它纯粹是为了控制损失饱和而存在的。直观地说,KTO 的工作原理如下:如果模型以直接地(blunt manner,不知道咋翻译)的方式增加了理想示例的奖励,那么 KL 惩罚也会增加,并且不会取得任何进步。

这迫使模型准确地了解是什么让输出变得理想,这样就可以增加奖励,同时保持 KL 项持平(甚至减少)。在实际实现中,KL term 是通过当前 batch 里面的正负样本进行估计得到的,详细可以 debug KTOTrainer 的源代码:

KTO: Model Alignment as Prospect Theoretic Optimization

https://arxiv.org/abs/2402.01306

https://github.com/huggingface/trl/blob/main/trl/trainer/kto_trainer.py#L256

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值