如果我搬出RLHF+GAN这个设定,你如何应对

卷友们好,我是rumor。

前阵子腾讯AI Lab悄悄挂出了一篇文章:Adversarial Preference Optimization (APO)[1],看到设定我就惊呆了:RLHF+GAN,难道还嫌RLHF本身不够难训吗?但读下来发现作者其实是想解决RLHF一个很重要的问题,而且给出的方法既fancy又优雅

下面,我们直接有请一作本人程鹏宇大佬来讲一下心路历程🎉。

注:文中有公式,请切换到白色背景查看。

f9dc14c93978d4e98037442ea4e18e44.png

RLHF辛酸泪

先从RLHF的任务讲起吧,RLHF的全称是 reinforcement learning from human feedback。字面意思就是用RL的方法把大模型训练得更加符合人们的反馈。这里反馈其实就是人们对大模型回复质量的评价。还是蛮主观的一件事,尤其是对一些开放性问题,其实很难讲大模型的回复到底好到什么程度。但是如果对同一个问题给出两个回复,通过对比人们至少能在两个回复里挑出一个更好的,这大概就是所谓的“没有比较就没有伤害”吧。

于是人类反馈数据都长成了一个问题和两个比较过的回复的格式 。因为每次反馈就是从两个回复里挑个更好的,代表了标注人员的偏好,所以RLHF解决的任务也被称为偏好对齐(Human Preference Alignment)。

然而,从两个回复里面挑一个好的,这个事情真的会容易吗?

我们在自己的业务场景试着去对齐了一下大模型,结果在数据标注的环节就被卡到怀疑人生😭。一开始我们想着这个挑回复的事情应该不复杂,想着组织一下实习生们,十几个人每人标一些,数据应该很快就标完了。结果才进行了两天,实习生已经扛不住了,有些甚至想回学校好好学习了。。。

我们表示不能理解,又不用自己写回复,两个里面挑一个不是扫一眼就知道怎么选了吗?于是我们每人亲自上手试着标了一两百条,才真正理解了里面的痛。很多输入文本不是我们想象的一个简单的问题,可能有着很长的一段问题描述,甚至是多轮对话的上下文,有点时候光理解问题就要花好几分钟的时间。然后回复的文本如果差别很大还比较容易区分,如果回复内容接近又很长的话,真是可以在回复的选择中纠结到地老天荒。。。

94790aba1d128047d176f4a9723eacd1.png

亲手标过数据之后,我们已经见识到这个人类反馈任务的可怕。更可怕的是,在大模型对齐的过程中还存在样本分布偏移的问题:当大模型经过一段时间迭代后,输出文本分布会产生偏移,但是在新分布下的模型输出并没有进行过偏好标注,这会导致对齐算法的效率大幅下降

如下图,偏好标注(红色虚线)原本可以覆盖模型的输出分布(左图蓝色曲线),但当模型更新后,样本输出分布(右图绿色曲线)与偏好标注范围产生不一致。

e67cac0538cf26790635e883b39a8cee.png
样本分布偏移

针对分布偏移问题,我们先看看Meta的LLaMA-2文章里是怎么说的:

Llama 2-Chat improvement also shifted the model’s data distribution. Since reward model accuracy can quickly degrade if not exposed to this new sample distribution, i.e., from hyper-specialization (Scialom et al., 2020b), it is important before a new Llama 2-Chat tuning iteration to gather new preference data using the latest Llama 2-Chat iterations. This step helps keep the reward model on-distribution and maintain an accurate reward for the latest model.

这里reward model(RM)是指通过人类反馈学习出来的奖励模型,可以代表人类的偏好,并对模型的回复打分。上面这句话翻译翻译就是大模型迭代之后输出分布会变,所以要让大模型重新生成回复样本,然后在新样本上重新进行人工标注。。。也就是说在一个完整的大模型对齐训练中,我们还要被人类反馈标注反复的蹂躏。。。

d2aaa63702877c1526f9ad630853f150.png

解决方案

那有没有什么办法可以减少偏好数据的标注量去提高对齐效率呢?对于这个问题,我们尝试了两个思路:

  1. 提高偏好数据的sample efficiency

  2. 更高效地构造偏好数据。

第一条路我们作出了几个尝试:

  • 我们借鉴了NLP领域常用的“预训练+领域数据微调”的思路,把公开的各偏好数据集作为“通用偏好数据”对RM先进行预训练,然后在把我们收集的少量“定制化偏好数据”做二阶段微调,通过这种方法提高了定制化偏好数据的sample efficienc。具体细节可以看我们这篇《Everyone Deserves A Reward: Learning Customized Human Preferences》[2]

d2693676e5e5ed2e6da49fac38bc84a3.png
从通用偏好到定制化偏好的多阶段训练
  • 针对偏好数据中的噪声问题(不同的标注人员的标注结果可能不一致,不同的数据集的偏好也可能冲突),我们提出了通过多目标优化的方法让Reward Model学到不同数据集的帕累托最优,缓解数据中的噪声问题。具体细节可以看我们的《On Diversified Preferences for Large Language Model Alignment》[3]

我们来重点讲讲第二条路,如何更高效地构造偏好数据

回到LLaMA-2解决LLM分布偏移的话题上,在每次对模型新生成的样本进行标注的过程中,生成新样本其实是很容易实现的,只要不断地用 queries 去调用模型 ,就可以采样多个回复 。

LLaMA的偏好标注方法是让回复 相互之间两两组合,然后再人工标注哪个更好(听着就很痛苦。。。)

我们就在想,有没有办法不用标注就知道哪个回复好呢?这些LLaMA模型生成的回复不能判断,那我们直接拿一个更牛逼的模型,比如GPT-4,直接生成一个碾压LLaMA回复的金标准 ,那不是想都不用想 要比 要好嘛,这样不是就自动把偏好数据生成出来了嘛。

Wait a minute!在这个过程里RM需要用金标准  跟模型输出的 进行对比,而LLM需要不断提升输出 在RM评价下的打分,这个故事怎么那么熟悉似曾相识?GAN内味出来了有木有?LLM充当一个generator,RM充当一个discriminator,开始对抗起来了有木有?马上把公式写出来看看!我们记大模型输出策略为,偏好打分模型为,那么:

  • 这是大模型对齐的目标:

  • 我们先把金标数据加进来,由于跟 无关,不会影响LLM的优化:

  • 然后RM不是要对抗起来嘛,那就 min-max game一下:

  • 在RL优化大模型对齐的时候,为了防止不稳定,需要加正则项约束一下 , 不要跟reference 偏的太远,需要加入KL散度的正则项:

  • 对抗训练也是出了名的不稳定,所以我们也在RM上加一个正则项:

这样一个基于RM和LLM的对抗博弈就构造完成,就叫它Adversarial Preference Optimization (APO) 吧!

这里 是用来限制RM的偏好分布不要和真实的偏好分布差距太大,具体细节可以在我们文章里查看。

再直观解释一下APO的博弈过程:LLM模型 需要不断提高回复质量,使得自己的回复和金标数据之间的得分差距减小,而RM模型 需要不断将LLM回复和金标回复的得分差距拉大。同时两个KL正则项会约束RM和LLM不要对抗得过于离谱。通过这种博弈,RM可以跟随LLM的变化而迭代,模型分布偏移的问题也就得到缓解了。

39eaf724d34c572be2a08d2fb0f459a8.png
APO的RM和LLM交替训练流程

具体的算法实现上,我们让RM和LLM交替地进行迭代,流程画在上面的图里:

  • 在LLM迭代步骤中,我们把RM参数固定,那么博弈目标转换为正常的LLM偏好对齐,可以使用PPO、RRHF、DPO、Rejection Sampling等方法求解,详情可以参考rumor姐的《一些RLHF的平替汇总》。流程都是让LLM对训练queries推理出对应回复样本,再用RM对回复进行打分,最后用打分结果来更新LLM。

  • 在RM迭代步骤中,我们把LLM参数固定,让LLM在RM训练queries上推理得到回复样本。然后将生成的回复样本和金标准回复进行组合,得到新的APO偏好数据,用来更新RM。

效果

方法讲的差不多了,那看看APO的实验效果吧。我们在 Helpful&Harmless (HH) 偏好数据集上进行了对齐实验。首先我们把HH训练集里面的queries抽出来,通过调用GPT-4的接口得到一批金标回答。然后我们选择了 rejection sampling 方法作为基线,RM模型选择 LLaMA-7B,LLM的SFT模型选择 Alpaca-7B,进行了三轮对抗迭代。在对抗迭代中,我们尝试了两种RM的更新方式:

  • From Base:每一轮都是基于base RM用新的APO对抗数据进行更新,

  • Sequential:每一轮都是在上一轮RM的checkpoint上用新的APO对抗数据进行训练。

关于RM和LLM表现的实验结果有点多。。我们就画了两个模型表现的图表这样看起来直观一点:

ad9e727be0a1e58a1ac9252630b9bab7.png
  • 左侧的图表展示了APO训练后RM的表现变化,纵轴为RM在测试集上的准确率,横轴为模型的校准误差(Calibration Error)。可以看到,通过加入APO训练数据,RM准确率可以一致地获得提升。尤其是通过Sequential的方式更新RM(从APO-v1 到 APO-v2seq 再到 APO-v3seq)可以将RM的准确率持续提升。但于此同时RM校准表现会有一定的损失。

  • 右侧图表展示了APO训练对大模型对齐的效果增益,纵轴轴为测试RM对LLM回复的平均打分,代表LLM的对齐质量,横轴为对抗迭代的轮数。用From Base训练的RM进行APO对抗的结果(红色虚线)可以持续地跟 rejection sampling 基线(蓝色虚线,仅用 Base RM 进行对齐)拉开差距。而Sequential训练的RM可以在第二轮获得更好的效果,但是在第三轮时效果反而下降,我们推测应该是持续训练轮次太多导致RM overfit的原因。

除此之外我们还让GPT-4对LLM的回复进行了评价。如下图所示,通过APO训练的模型可以相比于RJS基线获得显著提升。

c907cec0c29a38973f7165db09b0fc74.png

总结

总结一下,我们在尝过大模型人类反馈标注的痛之后,痛定思痛,想到一种自动构造偏好数据的方法,随后在这个思路上延伸出了一个RM和LLM对抗博弈对齐方法APO。

APO可以在不增加标注数据量的前提下通过对抗进一步增强RM和LLM的表现,同时缓解LLM的样本分布偏移问题。作为一种通用的训练框架,APO也可以跟一众对齐方法(RLHF,RRHF,DPO等)兼容,可以进一步提升这些对齐方法的效果。

然而大模型对齐的方向道阻且长,希望我们这一点小小的心路分享可以抛砖引玉,期待看到卷友们更多的fancy ideas来更高效地对齐大模型!

参考资料

[1]

Adversarial Preference Optimization: https://arxiv.org/abs/2311.08045

[2]

Everyone Deserves A Reward: Learning Customized Human Preferences: https://arxiv.org/abs/2309.03126

[3]

On Diversified Preferences for Large Language Model Alignment: https://arxiv.org/pdf/2312.07401.pdf

c7091aa52c08781f61fa7751a4216bef.jpeg


我是朋克又极客的AI算法小姐姐rumor

北航本硕,NLP算法工程师,谷歌开发者专家

欢迎关注我,带你学习带你肝

一起在人工智能时代旋转跳跃眨巴眼

「妙啊」7cc409f56b8e627dd6a207e616ff0f50.png

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值