LLM预训练之RLHF(一):RLHF及其变种

news2024/11/23 10:29:10

      在ChatGPT引领的大型语言模型时代,国内外的大模型呈现爆发式发展,尤其是以年初的LLaMA模型为首的开源大模型和最近百川智能的baichuan模型,但无一例外,都使用了「基于人类反馈的强化学习」(RLHF)来提升语言模型的性能,并在模型重注入了人类的偏好,以提高模型的有用性和安全性。不过RLHF也早已更新换代,我们以如下目录进行详细讲述RLHF及其变种:

  • LLM的经典预训练Pipeline
  • Llama 2中的RLHF
  • RLHF替代方案

一、LLM的经典预训练Pipeline

       目前基于Transformer decoder的LLM,比如ChatGPT、LLaMA、baichuan等,通常都会有基于预训练的base模型和在base模型至少使用RLHF微调的Chat模型,Chat模型的训练一般都包括如下三个步骤:预训练,有监督微调和对齐。

       在预训练阶段,模型会从大量无标注文本数据集中学习通用知识,然后使用「有监督微调」(SFT)优化模型以更好地遵守特定指令,最后使用对齐技术使LLM可以更有用且更安全地响应用户提示。

1.1 预训练(Pre-training)

      预训练阶段通常需要包含数十亿到数万亿个token的庞大文本语料库,但训练目标是模型需要根据提供的文本来预测「下一个单词」。

1.2 有监督微调(Supervised Tinetuning)

       SFT的训练过程类似Pre-training阶段,也是预测「下一个单词」,但是需要人工标注的指令数据集,其中模型的输入是一个指令(根据任务的不同,也可能包含一段输入文本),输出为模型的预期回复内容。

数据形式类似于:

Instruction: "Write a limerick about a pelican."

指令:“写一首关于鹈鹕的打油诗。“

Output: "There once was a pelican so fine..."

输出:“从前有一只鹈鹕很好...“

       模型会把“Write a limerick about a pelican”作为输入,逐个token进行预测,输出“There once was a pelican so fine...”

      虽然两个阶段都采用类似的训练目标,但有监督微调数据集通常比预训练数据小得多,指令数据集需要人类(或其他高质量的LLM)提供标注结果,所以无法大规模应用。

1.3 对齐(Alignment)

       第三阶段依然是微调,不过其主要目标在于将语言模型与人类的偏好、价值观进行对齐,这也是RLHF机制发挥的地方。

二、Reinforcement Learning with Human Feedback (RLHF) 

      上节,我们讨论了现代LLM的三个训练过程;本小节,我们重点讨论「上述两个微调阶段」(Supervised Tinetuning和Alignment)中使用的RLHF技术。

RLHF主要包括三步:

  1. 在预训练好的模型上进行「有监督微调」(SFT);

  2. 在有监督微调模型基础上创建一个reward model(RM)模型;

  3. 基于RM模型使用PPO算法微调SFT模型;

2.1 在预训练好的模型上进行有监督微调

       先收集一个Prompts集合,并要求标注人员写出高质量的回复,然后使用该数据集以监督的方式微调预训练的基础模型。

       该步骤与上小节的Supervised Tinetuning类似,但这是RLHF不可或缺的一个步骤。

2.2 在有监督微调模型基础上创建一个RM模型

       对于每个Prompt,要求有监督微调后的LLM生成四到九个回复,再由标注人员根据个人偏好对所有回复进行排序。虽然排序过程很耗时,但工作量还是比第一步的有监督数据集构建要少一些。

      在处理排序数据时,使用了一个奖励模型RM,RM来自RLHF第一步的「有监督微调语言模型」(SFT),SFT的输出通过一个回归层(单个输出节点)转换为奖励分数,即可称为RM模型。

2.3 基于RM模型使用PPO算法微调SFT模型

        基于RM模型使用proximal policy optimization (PPO)算法微调SFT模型

PPO的具体技术细节可以参考InstructGPT或下面的论文列表。

  1. Asynchronous Methods for Deep Reinforcement Learning (2016) ,https://arxiv.org/abs/1602.01783

  2. Proximal Policy Optimization Algorithms (2017),https://arxiv.org/abs/1707.06347

  3. Fine-Tuning Language Models from Human Preferences (2020),https://arxiv.org/abs/1909.08593

  4. Learning to Summarize from Human Feedback (2022) ,https://arxiv.org/abs/2009.01325

三、LLaMA 2的RLHF

      Meta AI在创建Llama-2-chat模型时也使用了RLHF技术,不过与ChatGPT相比还是有些细微区别。

      简单来说,Llama-2-chat在第一步RLHF微调上使用相同的指令数据,但在第二步使用了两个奖励模型;通过多个阶段的不断进化,奖励模型也会根据Llama-2-chat模型出现的错误进行更新;并且增加了拒绝采样(rejection sampling)步骤。

3.1 Margin Loss

       在标准InstructGPT中使用的RLHF PPO方法,研究人员需要收集同一个提示下的4-9个模型输出并进行排序,比如四个回复的排序结果为A<C< D<B,那么就可以得到六个对比结果:A < C,A < D ,A < B,C < D,C < B,D < B。

       Llama 2的数据集也采用类似的方式,不过标注人员每次只能看到两个(而非4-9个)回复并进行对比,但新增了一个边际(margin)标签,对比结果可以为「显著更好」(significantly better)和「好的不明显」(negligibly better)。

      在排序训练时中,Llama 2相比InstructGPT增加了边际损失:

      其中,rθ(x,y)是提示x和生成的回复y的标量分数输出; θ为模型权重; σ是将层输出转换为范围从0到1的分数的逻辑S形函数; yc是由标注人员选择的更优回复; yr是较差的回复。m(r)可以调节两个回复之间的差值,如果对比结果为「显著更好」,则会增加梯度值,加快更新速度。

3.2 两个RM模型

       Llama 2中的两个奖励模型分别侧重「有用性」(helpfulness)和「安全性」(safety),用于模型优化的最终奖励函数会将两个分数进行线性组合。

3.3 拒绝采样

       Llama 2的作者使用了一个训练流水线,同时使用PPO和拒绝采样算法,迭代地产生多个RLHF模型(从RLHF-V1到RLHF-V5),模型在拒绝采样时会得到K个输出,并使用最高奖励的输出更新梯度,而PPO每次只基于单样本进行更新。

       在监督微调的初始阶段之后,模型只使用拒绝采样进行训练,然后再结合拒绝采样和PPO。

      从实验结果来看,RLHF微调模型在无害性和有用性上都得到了改善,并且在最后阶段RLHF-v5使用PPO算法的性能最好。

四、RLHF的替代方案

       RLHF在InstructGPT和Llama 2论文中被证明是有效的,但是RLHF的过程是比较复杂的,下面将介绍一下最近RLHF的替代方案:

4.1 Constitutional AI: Harmlessness from AI Feedback (Dec 2022, https://arxiv.org/abs/2212.08073)

       研究人员提出了一种基于人类提供的规则列表的自我训练机制。与前面提到的InstructGPT论文类似,也使用了强化学习方法。

      上图中的「红队」(Red Team)指的是测试目标系统的防御能力,即外部或内部专家模拟潜在对手的过程,通过模仿现实世界攻击者的战术、技术和程序来挑战、测试并最终改进系统。

4.2 The Wisdom of Hindsight Makes Language Models Better Instruction Followers (Feb 2023, https://arxiv.org/abs/2302.05206)

      研究人员提出了一种基于重新标记的监督微调方法HIR,该方法在12个BigBench任务上优于RLHF。

       HIR是如何工作的?简而言之,HIR方法包括两个步骤,即采样和训练。在采样步骤中,Prompt和指令输入给LLM来获取答案,根据对齐得分,在训练阶段适当的地方重新标注指令;然后,重新标记的指令和原始的Prompt用于微调LLM。使用这种重新标记的方法,研究人员有效地将失败案例(LLM创建的输出与原始指令不匹配的案例)转化为有用的训练数据,用于监督学习。

4.3 Direct Preference Optimization: Your Language Model is Secretly a Reward Model (https://arxiv.org/abs/2305.18290, May 2023)

       直接偏好优化(DPO)是具有PPO的RLHF的替代方案,其中研究人员表明,在RLHF中拟合奖励模型的交叉熵损失可以直接用于微调LLM。根据他们的基准,使用DPO更有效,而且在响应质量方面通常也优于RLHF/PPO。

4.4 Reinforced Self-Training (ReST) for Language Modeling (Aug 2023, https://arxiv.org/abs/2308.08998)

       ReST是人类反馈强化学习(RLHF)的一种替代方案,它使LLM与人类偏好保持一致。ReST使用采样方法创建改进的数据集,在质量越来越高的子集上迭代训练,以完善其奖励函数。根据作者的说法,与标准的在线RLHF方法(如具有近端策略优化的RLHF,PPO)相比,ReST通过离线生成训练数据集实现了更高的效率,但缺少与InstructGPT或Llama 2中使用的标准RLHF PPO方法的全面比较。

4.5 RLAIF: Scaling Reinforcement Learning from Human Feedback with AI Feedback (Sep 2023, https://arxiv.org/abs/2309.00267)

       最近的人工智能反馈强化学习(RLAIF)研究表明,RLHF中奖励模型训练的评级不一定必须由人类提供,而是可以由LLM生成(此处:PaLM 2)。标注人员在一半的案例中更喜欢RLAIF模型,也就意味着两个模型的差距并不大,RLHF和RLAIF都大大优于纯通过监督指令微调训练的模型。

       这项研究的结果非常有用和有趣,因为它基本上意味着我们可能能够使基于RLHF的训练更加高效和容易。然而,这些RLAIF模型在专注于信息内容的安全性和真实性的定性研究中的表现还有待观察,而人类偏好研究仅部分捕捉到了这一点。

参考文献:

[1] https://magazine.sebastianraschka.com/p/llm-training-rlhf-and-its-alternatives

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1021200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

football 篮球数据集-目标检测548张

“篮球&#xff08;basketball&#xff09;&#xff0c;是以手为中心的身体对抗性体育运动&#xff0c;是奥运会核心比赛项目。1891年12月21日&#xff0c;由美国马萨诸塞州斯普林菲尔德基督教青年会训练学校体育教师詹姆士奈史密斯发明。1896年&#xff0c;篮球运动传入中国天…

扩散原理详解与实战

学习一下扩散模型的数学原理。 前向扩散 q ( x t ∣ x 0 ) N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q\left(\mathbf{x}_t \mid \mathbf{x}_0\right)\mathcal{N}\left(\mathbf{x}_t ; \sqrt{\bar{\alpha}_t} \mathbf{x}_0,\left(1-\bar{\alpha}_t\right) \mathbf{I}\rig…

【Graph Net学习】GNN/GCN代码实战

一、简介 GNN&#xff08;Graph Neural Network&#xff09;和GCN&#xff08;Graph Convolutional Network&#xff09;都是基于图结构的神经网络模型。本文目标就是打代码基础&#xff0c;未用PyG&#xff0c;来扒一扒Graph Net两个基础算法的原理。直接上代码。 二、代码 …

Vue3记录

Vue3快速上手 1.Vue3简介 2020年9月18日&#xff0c;Vue.js发布3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;海贼王&#xff09;耗时2年多、2600次提交、30个RFC、600次PR、99位贡献者github上的tags地址&#xff1a;https://github.com/vuejs/vue-next/releas…

使用Python构建网络爬虫:从网页中提取数据

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 网络爬虫是一种强大的工…

libevent学习——Reactor模式

Reactor模式 Reator的事件处理机制 Reactor翻译为“反应堆”&#xff0c;是一种事件驱动机制。该机制和普通函数调用的不同在于&#xff1a;应用程序不是主动调用某个API完成处理&#xff0c;相反&#xff0c;Reactor逆置了事件处理流程&#xff0c;应用程序需要提供相应的接…

前后端分离毕设项目之基于springboot+vue的笔记记录分享网站设计与实现(内含源码+文档+部署教程)

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

练习敲代码速度

2023年9月18日&#xff0c;周一晚上 今晚不想学习&#xff0c;但又不想玩游戏&#xff0c;于是找了一些练习敲代码的网站来玩玩&#xff0c;顺便练习一下敲代码的速度 目录 参考资料个人推荐第一个 第二个第三个 参考资料 电脑打字慢&#xff0c;有哪些比较好的练打字软件&a…

xxl-job的原理(1)

xxl-job的架构 系统组成 调度中心&#xff1a;进行任务统一调度&#xff0c;可以新增和管理执行器和任务&#xff1b;执行器&#xff1a;任务执行依赖的组件&#xff0c;一个执行器可以关联多个任务&#xff0c;添加的执行器可以自动注册到调度中心上&#xff1b;任务&#x…

全国职业技能大赛云计算--高职组赛题卷②(私有云)

全国职业技能大赛云计算--高职组赛题卷②&#xff08;私有云&#xff09; 第一场次题目&#xff1a;OpenStack平台部署与运维任务1 基础运维任务&#xff08;5分&#xff09;任务2 OpenStack搭建任务&#xff08;15分&#xff09;任务3 OpenStack云平台运维&#xff08;15分&am…

mysq 主从同步错误之 Error_code 1032 handler error HA_ERR_KEY_NOT_FOUND

错误说明&#xff1a; MySQL主从同步的1032错误&#xff0c;一般是指要更改的数据不存在&#xff0c;SQL_THREAD提取的日志无法应用故报错&#xff0c;造成同步失败 &#xff08;Update、Delete、Insert一条已经delete的数据&#xff09;。 1032的错误本身对数据一致性没什么影…

VScode断点调试vue

VScode断点调试vue 1、修改launch.js文件&#xff08;没有这个文件就新建&#xff09;。 {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlin…

ChatGLM 通俗理解大模型的各大微调方法:从LoRA、QLoRA到P-Tuning V1/V2

前言 PEFT 方法仅微调少量(额外)模型参数,同时冻结预训练 LLM 的大部分参数 第一部分 高效参数微调的发展史 1.1 Google之Adapter Tuning:嵌入在transformer里 原有参数不变 只微调新增的Adapter 谷歌的研究人员首次在论文《Parameter-Efficient Transfer Learning for N…

CSS选择器练习小游戏

请结合CSS选择器练习小游戏进行阅读&#xff08;网页的动态效果是没有办法通过静态图片展示的&#xff09; 网址&#xff1a;请点击 有些题有多种答案&#xff0c;本文就不一一列出了 第一题 答案&#xff1a;plate第二题 答案&#xff1a;bento第三题 答案&#xff1a;#fa…

前后端分离管理系统day01---Springboot+MybatisPlus

目录 目录 软件 基础知识 一创建后端项目 注意&#xff1a; 删除多余项 创建测试类 二 加入mybatis-plus依赖支持 1.加入依赖码 2.创建数据库实例/创建用户表/插入默认数据 创建数据库实例 创建表 插入数据 3.配置yml文件 注意&#xff1a;wms01必须是数据库的名字&…

JVM——8.内存分配方式

这篇文章我们来讲一下jvm的内存分配方式 目录 1.概述 1.1jvm运行时数据区 1.2堆空间的分代 1.3对象分配的整体流程 2.具体的内存分配方式 2.1指针碰撞法 2.2空闲列表法 2.3Java虚拟机选择策略 3.小结 1.概述 我们前面在GC那篇文章中写了JVM的内存分配策略&#xff0…

计算机竞赛 深度学习 opencv python 实现中国交通标志识别

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…

JWT~~

概述 回顾登录的流程&#xff1a; 接下来的问题是&#xff1a;这个出入证&#xff08;令牌&#xff09;里面到底存啥&#xff1f; 一种比较简单的办法就是直接存储用户信息的JSON串&#xff0c;这会造成下面的几个问题&#xff1a; 非浏览器环境&#xff0c;如何在令牌中记录…

【ABAP】一文了解如何实现ALV下拉列表编辑(附完整示例代码)

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;阿里云社区专家博主&#xff0c;华为云云享专家&#xff0c;腾讯云社区认证作者&#xff0c;CSDN SAP应用技术领域优质创作者。在学习工作中&#xff0c;我通常使用偏后端的开发语言ABAP&#xff0c;SQL进行任务的完成…

聚焦数据库和新兴硬件的技术合力 中科驭数受邀分享基于DPU的数据库异构加速方案

随着新型硬件成本逐渐降低&#xff0c;充分利用新兴硬件资源提升数据库性能是未来数据库发展的重要方向之一&#xff0c;SIGMOD、VLDB、CICE数据库顶会上出现越来越多新兴硬件的论文和专题。在需求侧&#xff0c;随着数据量暴增和实时性的要求越来越高&#xff0c;数据库围绕处…