偏好对齐RLHF-OpenAI·DeepMind·Anthropic对比分析(二)

发布时间:2024年01月21日

Anthropic

  • paper: Red Teaming Language Models to Reduce Harms Methods,Scaling Behaviors and Lessons Learned

  • paper: A General Language Assistant as a Laboratory for Alignment

  • paper:Training a Helpful and Harmless Assistant with Reinforcement Learning from Human Feedback

  • 数据:https://huggingface.co/datasets/Anthropic/hh-rlhf

样本构建

从论文标题不难看出,Anthropic也只考虑了2H,有害性和有用性。并且着重研究了对抗有害样本的生成,受限于篇幅这里不展开。我个人也更偏好2H,因为我始终没太想明白Honesty如何能通过对齐实现。因为部分非事实性是来自预训练样本中的噪声,例如预训练样本中是"鲲之大一锅炖不下",如何通过对齐让模型学到"鲲之大,不知其几千里也"?部分非事实性来自训练样本的有限性,需要像Bing一样通过引入实时信息来解决,要是大家有不一样的观点也欢迎留言评论。

同样是拆分了2个标注任务,和DeepMind的差异是,Anthropic是把有害性和有用性分成了两个标注任务,针对开放的对话主题进行4轮左右的对话。

  • 有害性标注:和DeepMind相同使用了红蓝对抗的方案,目标是引导模型生成有害回复。每一轮模型会生成2个回答,选择更有害的一个

img

  • 有用性标注:同样是每轮2选一,选择更有帮助的一条回复,并不强制进行事实性检查

对抗/引导式的数据标注方式,对比OpenAI直接标注,可以更充分挖掘偏好中更有用和更有害的数据,对于解决模型安全性有更大的帮助,但感觉可能缺少中间部分偏好的样本,如果能和OpenAI直接标注的方案结合是否会更好?

除了2H的任务分开标注之外,每个标注同学进行对话的模型虽然都是52B的模型,但会随机来自3个不同版本的模型

  • HHH Context-Ditill:类似3Hprompt(helpful,harmless, honest)加持的基础模型,最初只有这个模型

  • Rejection Sampling(RS):使用3H模型生成16个回复,使用训练后的PM模型对结果排序,选择有害性最小的2个回复

  • RLHF微调后的模型:后续的数据收集会基于微调后多个版本的模型持续进行

奖励模型

Anthropic的奖励模型同样是基于样本排序进行训练的,有用得分高于无用,无害得分高于有害,并且更详细论证了相对排序模型的效果要好于二分类模型,要好于语言模型。

为了降低对微调数据的需求,Anthropic加入了Preference Model Pretraining(PMP)的继续预训练过程,使用Reddit, StackExchange等开源问答的数据让模型先部分学习什么是好的什么是坏的回答。

除此之外Anthropic还讨论了PM模型大小对模型稳健性的影响。通过把数据集一分为二,一半训练,一半验证,越稳健的PM模型应该在不同数据上有相似的打分分布。论文使用PM模型在两份数据上打分的KL散度来衡量稳定性,得到两个结论

  • PM模型越大,KL散度越低

  • PM模型打分在低分区一致性较高,在高分区一致性较低

第二个结论很符合直觉,因为有害内容的标注一致性更高更易识别,而优质回复的评价更模糊,另一个原因是模型当前的能力可能导致高分区的样本比较稀疏。

但第一个结论,感觉有可能是因为越大的模型预测的置信度越高,打分更容易聚集在一起,才导致的KL散度更低,这个置信度的差异似乎没有被考虑进去。

RLHF

  1. RL起点

Anthropic选择了3H Context Distillation的模型,通过在样本前加入3H指令词,引导模型生成更安全有用的回复,并记录模型生成的每个位置Top50的词和概率,把这个概率作为Teacher;然后去掉3H指令词,对预训练模型进行微调,微调目标就是去拟合之前有3H时Top50 Token的预测概率,其实就是Teacher-Student蒸馏的思路。

  1. RL样本

为了让模型在更大范围的指令样本上进行偏好学习,使用了Self-Instruct,随机采样10个已有的真实请求让模型来生成新的请求,最终是137K真实请求和369K模型生成请求混合作为训练样本

  1. RL训练:整体和openAI类似

和OpenAI相同,Anthropic也提到了online iter训练,但论文的出发点是前面提到的PM模型在高分部分不稳定的问题。因为微调后的模型生成的回复会更好,在更优的模型中持续收集样本,可以持续补充高分样本。注意这里的online和常规意义的online不同,这里每次训练会混合多个snapshot模型收集的偏好数据和最初的偏好样本,重头训练PM,并重新微调RLHF。

  1. Insight:有用性和无害性的矛盾统一

和OpenAI相似,Anthropic也举报了有用性和无害性的标注矛盾。在RLHF微调过程中,只要用户的请求有轻微不满,模型就让用户去看医生哈哈哈哈~其实我们在不充分微调的ChatGLM中也发现了类似的现象。经过分析模型是过度拟合了有害性,而对有用性欠拟合,导致模型虽然无害但也没啥用

论文给出了的解决思路是遇到有害性请求,模型只学到拒绝回答是很简单的,这就是无用但无害,但是如果模型能学到在拒绝回答的同时,给到拒绝的原因,并劝说用户不要有类似的有害的请求的话,就是有用且无害了。这部分标注数据当前是缺失的。 个人感觉这个思路比OpenAI适配场景去拒绝请求,似乎可行性更高一些。不过论文没有重新标样本,而是选择了折中的方案,加入更大比例Helpful样本来提升模型有用性

对比总结

  • paper: Scaling Laws for Reward Model Over optimization

  • paper: WebGPT: Browser-assisted question-answering with human feedback

  • Measuring Goodhart’s law

粗略看完以上3家超长无比的系列RLHF论文,结合OpenAI对RM模型的一些观点。我们来讨论下文首问题,感悟很玄学!!不一定靠谱!!仅提供一种思路~

RLHF究竟学了啥?

  • 可类比拒绝采样(Best-of-N):让模型随机采样生成N个回复,选择RM打分最高的回复

在WebGPT中OpenAI就把Best-of-N和RL进行了对比,best-of-64的效果甚至超过RLHF,而DeepMind在RL微调后加入best-of-n效果会有进一步提升。感觉RLHF和Best-of-N的差异就是前者把排序择优放在了微调阶段训练耗时,后者放在了推理阶段推理耗时。本质上二者是相似的,都是让模型在相似文本打分的文本序列中,挑选偏好打分更高的序列

那再想一步,Best-of-N的本质是啥?是Rejection-Sampling。啥是拒绝采样?简单说,就是针对无法直接采样的分布F,可以从G采样,例如G服从正态分布, 再通过特定的拒绝策略,拒绝不符合F分布的样本,则得到的样本可以近似F分布。对应到RLHF中,G其实就是RL初始模型生成的回复,拒绝策略是拒绝RM打分低的回复,则得到的就是符合人类偏好F的回复。

偏好对齐使用RL和SFT的差异?

  • 优化整个文本序列 vs 优化token级别的偏好:类似序列标注任务中CrossEntropy对比CRF

同样使用偏好标注数据来进行微调,RL微调是针对整个文本序列的RM打分进行优化,而SFT是对每个token的预测概率进行优化。SFT在偏好优化场景上有几个问题

  • 每个token在损失函数中的权重是相同的

  • 没有考虑文本整体对偏好的影响

  • 针对很多开放问题,最优答案是不固定的,只对1条回答做token级别的拟合,可能会影响泛化

综合以上3点RL似乎更合适,但是针对有标准答案的场景,例如所有非开放生成的NLP任务,摘要,分类,抽取等等,用SFT来拟合偏好似乎也没啥毛病,就像序列标注任务用CrossEntropy效果也不会比CRF差太多。

除此之外RL的另一个优点是可以部分降低人工标注,因为训练的RM模型后续可用于偏好打分,而SFT的每一个偏好样本都需要人工标注。

什么模型适合作为RLHF的初始模型?

  • 从拒绝采样的本质出发,RL的初始模型需要有能够生成人类偏好回答的能力

拒绝采样的前提假设是F分布的集合是G分布集合的子集,因为拒绝采样只是拒绝G采样的部分样本来得到F分布。对应到RLHF其实就是RL的初始模型要有能够生成人类偏好回复的能力,因此通过指令微调来解锁指令理解能力,似乎是RL初始模型的必须条件,毕竟纯续写模型是无法生成人类偏好的回复的。

当前的RL其实还存在很多问题。首先人类偏好本身就是存在噪声的,标注的一致率不到80%;其次奖励模型是对标注偏好的进一步抽象,又受到一步准确率的限制;而使用不完美的奖励模型进一步微调模型,则可能带来更进一步的拟合问题。这些问题还有待进一步解决,这一章我们就先说这么多啦

这一章我们聊聊有哪些方案可以不用微调直接让大模型支持超长文本输入,注意这里主要针对无限输入场景。之前在BERT系列中我们就介绍过稀疏注意力和片段递归的一些长文本建模方案长文本建模 BigBird & Longformer & Reformer & Performer,不过以上方案无一例外都需要在训练阶段引入。针对当前大模型微调成本高的问题,更多研究放到如何在模型外部支持长文本输入。先讨论下为啥当前的大模型会在推理时存在输入长度的限制,主要有以下几点原因

  1. Attention矩阵计算复杂度:在不引入稀疏注意力的条件下,Attention矩阵的内存和计算复杂度是O(序列长度2)�(序列长度2),文本长度的上升会带来显存的指数增长。

  2. 训练耗时:训练阶段的文本长度会显著影响训练速度, 因此2048一般是当前预训练常见的最大长度。

img

  1. 位置编码的外推性: 这里的外推性是指推理长度超过训练长度。包括推理会出现没训练过的位置编码,以及注意力机制需要处理比训练更长的输入。已有的旋转位置编码等相对位置编码已经具有了外推性,既推理长度可以超过训练长度,但在ALibi位置编码的测试中,这种外推性是以大幅性能损失为代价的。

img

针对以上问题本章介绍4种方案:显式搜索的知识库外挂方案,隐式搜索的Unlimiformer, 并行输入的pcw和并行解码NBCE。

文章来源:https://blog.csdn.net/2401_82469710/article/details/135711226
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。