Training language models to follow instructions with human feedback解读
- 前置知识
- 方法
- 数据集
- 结论
前置知识
- GPT的全称是Generative Pre-Trained Transformer,预训练模型自诞生之始,一个备受诟病的问题就是预训练模型的偏见性。因为预训练模型都是通过海量数据在超大参数量级的模型上训练出来的,对比完全由人工规则控制的专家系统来说,预训练模型就像一个黑盒子。没有人能够保证预训练模型不会生成一些包含种族歧视,性别歧视等危险内容,因为它的几十GB甚至几十TB的训练数据里几乎肯定包含类似的训练样本。这也就是InstructGPT和ChatGPT的提出动机,即通过一定方式方法使模型输出完成对齐,论文中用3H概括了它们的优化目标:
有用的(Helpful);可信的(Honest);无害的(Harmless)。 - InstructGPT作为ChatGPT的前身,他们的模型结构,训练方式都完全一致,即都是用了instrcut learning和RLHF指导模型学习。区别可能就是微调的元模型不同(InstructGPT是在GPT3基础上,而ChatGPT是在GPT3.5)
InstructGPT对标GPT3:
1、增强上下文理解:InstructGPT使用prompt对输入的训练数据进行重新的定义和引导,帮助模型更好的理解当下的语境和任务,从而避免误解或忽略特定的上下文信息。
2、排除推广偏见和不当内容:InstructGPT通过人工干预,指导和约束尽量减少模型生成的偏见性言论或不适当内容,提升生成文本的准确性和中立性。 - SFT监督微调(Supervised Fine-Tuning)是一种在大语言模型上进行微调的技术,它利用有标签的数据来调整预训练的语言模型,使其更适合特定的任务。这种方法通常适用于自然语言处理领域,如文本分类、翻译等。以训练语言模型GPT-3为例。GPT-3是一个强大的语言模型,它能够生成连贯的文本,回答问题,甚至编写代码。然而,为了使其能够适应特定的任务,比如编写新闻文章,我们就需要进行SFT监督微调。
首先,我们需要收集一个带有标签的新闻文章数据集。这些数据集包含了各种各样的新闻文章,每篇文章都有一个或多个标签,比如“政治”、“经济”、“体育”等。然后,我们将这个数据集输入到预训练的GPT-3模型中进行监督微调。在这个过程中,模型的学习率会被设置得非常小,以避免在微调过程中破坏掉预训练阶段学到的通用语言知识。经过一段时间的微调后,模型就能够更好地理解新闻文章的语义和结构,从而在编写新闻文章的任务上取得更好的表现。 - RM奖励模型(Reward Model)是一种在大型语言模型(LLM)训练中使用的技术,旨在改进模型输出的质量,使之更符合人类的预期和偏好。具体来说,RM奖励模型通过评估和排序模型生成的文本,引导模型生成更符合人类日常理解习惯和期望的答案。
在训练过程中,RM奖励模型分为两个主要部分:训练数据的获取和模型训练。首先,需要构建一个人类偏好排序的数据集,这通常涉及到人工标注工作,即由人类评估者对模型生成的文本进行评分和排序。这些评分和排序信息随后被用来训练奖励模型,该模型能够学习到哪些文本更受人类偏好,从而在后续的生成任务中指导模型生成更优质的文本。 - RLHF,即人类反馈强化学习(Reinforcement Learning from Human Feedback),是一种结合了人类智慧和机器学习技术的创新方法。这种方法的核心在于利用人类的直接反馈来训练一个“奖励模型”,随后通过强化学习来优化人工智能代理的行为。简而言之,RLHF 让机器学会按照人类的偏好来行动,从而提升其在特定任务中的表现。
RLHF 在大型语言模型(LLM)的训练中扮演着至关重要的角色。例如,ChatGPT 和 Llama 2 等基于 transformer 的现代 LLM 训练流程通常包括三个主要步骤:预训练、监督式微调和对齐。在这些步骤中,RLHF 被用来将对齐阶段与人类偏好结合起来,使模型能够更好地理解和生成对人类有用的响应。 - PPO算法,全称为Proximal Policy Optimization算法,是一种强化学习算法,它属于策略梯度方法的一种,并因其出色的性能和易于实现的特性而被广泛应用于强化学习领域。PPO算法的设计初衷是为了克服传统策略梯度方法的一些缺陷,尤其是针对采样效率低下和训练不稳定的问题。
在PPO算法中,核心思想是限制策略更新时的步长,避免策略变化过大,这样可以维持策略的稳定性和收敛性。具体来说,PPO算法采用了两种主要的策略更新方法:KL散度惩罚(KL penalty)和裁剪法(clipping)。这两种方法都旨在控制新旧策略之间的差异,防止策略更新偏离原始策略太远。 - PPO-ptx中的"ptx"指的是预训练分布(Pre-training Distribution)。这是一种在PPO算法基础上引入的策略,旨在通过结合预训练的知识来改善模型的性能。
在PPO-ptx算法中,预训练分布的概念被用来确保在强化学习过程中,模型不会忘记在预训练阶段学到的知识。这通过在损失函数中引入一项额外的预训练损失(pretrain loss)来实现,这项损失鼓励模型在更新策略时保留预训练阶段学到的知识。
具体来说,PPO-ptx的损失函数由三部分组成:第一部分是奖励模型给出的奖励,第二部分是KL散度奖励,用于约束当前策略与初始策略之间的距离,第三部分就是预训练损失,用于防止策略遗忘预训练阶段学到的知识。
这种结合预训练知识的策略,有助于提高模型在新任务上的泛化能力和学习效率,同时也保证了模型在强化学习过程中的稳定性和可靠性。
方法
- Step1:收集示范数据,进行有监督微调SFT
标注数据:根据prompts(提示,这里就是写的各种各样的问题),人类会撰写一系列demonstrations(演示)作为模型的期望输出。
模型微调:将prompts和人类标注的答案拼在一起,作为人工标注的数据集,然后使用这部分数据集对预训练的GPT-3进行监督微调,得到第一个模型SFT。 - Step2:收集比较数据,训练奖励模型RM
标注数据:生成式标注是很贵的一件事,所以第二步是进行排序式/判别式标注。用上一步得到的SFT模型生成各种问题的答案,标注者(labelers)会对这些输出进行比较和排序(由好到坏,比如图2 D>C>A=B)。
训练模型:基于这个数据集,训练一个RM(reward model)。训练好了之后这个RM模型就可以对生成的答案进行打分,且打出的分数能够满足人工排序的关系。 - Step3:使用强化学习的机制,优化SFT模型,得到最终的RL模型(InstructGPT)
微调模型:将新的标注数据输入到SFT模型得到输出,并将输出输入RM进行打分,通过强化学习来优化SFT模型的参数。具体使用 PPO 针对奖励模型优化策略,使用 RM 的输出作为标量奖励,使用 PPO 算法微调监督策略以优化此奖励。 - RM将 SFT 模型最后一层的 softmax 去掉,即最后一层不用 softmax,改成一个线性层。RM 模型的输入是问题和答案,输出是一个标量即分数。
具体的讲,每个prompt,SFT 模型会随机生成 K个输出,然后它们向每个labeler成对的展示输出结果,也就是每个prompt共展示C2K个结果,然后用户从中选择效果更好的输出。在训练时,InstructGPT将每个prompt的C2K个响应对作为一个batch,这种按prompt为batch的训练方式要比传统的按样本为batch的方式更不容易过拟合,因为这种方式每个prompt会且仅会输入到模型中一次。 - 损失函数:这里使用的是排序中常见的pairwise ranking loss。这是因为人工标注的是答案的顺序,而不是分数,所以中间需要转换一下。这个损失函数的目标是最大化labeler更喜欢的响应和不喜欢的响应之间的差值。
- 不少科研工作者说强化学习并不是一个非常适合应用到预训练模型中,因为很难通过模型的输出内容建立奖励机制。InstructGPT做到了这点,它通过结合人工标注,将强化学习引入到预训练语言模型是这个算法最大的创新点。
由三部分组成:打分损失+KL损失+GPT3预训练损失
数据集
- SFT数据集(step 1):
SFT数据集是用来训练step 1的GPT3模型,即按照GPT3的训练方式对GPT3进行微调。因为GPT3是一个自回归基于提示学习的生成模型,因此SFT数据集也是由提示-答复对组成的样本。
SFT数据一部分来自使用OpenAI的PlayGround的用户,另一部分来自OpenAI雇佣的40名标注工(labeler),在SFT中,标注工作是根据内容自己编写指示,并且要求编写的指示满足下面三点:
简单任务:labeler给出任意一个简单的任务,同时要确保任务的多样性;
Few-shot任务:labeler给出一个指示,以及该指示的多个查询-响应对;
用户相关的:从接口中获取用例,然后让labeler根据这些用例编写指示。
(SFT数据集包含13k个训练提示) - M数据集用来训练step 2的奖励模型,为InstructGPT的训练设置一个奖励目标,要尽可能全面且真实的对齐需要模型生成的内容。很自然的,可以通过人工标注的方式来提供这个奖励,通过人工对可以给那些涉及偏见的生成内容更低的分从而鼓励模型不去生成这些人类不喜欢的内容。InstructGPT的做法是先让模型生成一批候选文本,让后通过labeler根据生成数据的质量对这些生成内容进行排序。
(RM 数据集有 33k 个训练提示) - PPO数据集用来训练强化模型,即InstructGPT。InstructGPT的PPO数据没有进行标注,它均来自GPT-3的API的用户。既又不同用户提供的不同种类的生成任务
结论
- InstructGPT与GPT3相比:
优点:
1.InstructGPT/ChatGPT的效果比GPT-3更加真实
2.InstructGPT/ChatGPT在模型的无害性上比GPT-3效果要有些许提升
3.InstructGPT/ChatGPT具有很强的Coding能力
缺点:
1.InstructGPT会降低模型在通用NLP任务上的效果
2.InstructGPT对指示非常敏感 - 1、仅仅40人的标注团队不够大,而且标注结果会以个人的自我意志为转移。
2、仍然有一些偏见不安全的输出,而且通过某些prompt时可能会产生比同等大小GPT-3更有害的内容。
3、模型输出是否有害取决于部署它的环境;例如,模型要作为数据增强的一部分,使用语言模型生成有害的输出可能是有益的。
4、减轻对齐税,如预训练数据合并到RLHF调优中来,但并不能完全改善性能回归(通用NLP任务的性能下降)
解读到此结束,觉得对您有帮助的话欢迎关注、点赞、收藏和留言交流。
相关文章:
Training language models to follow instructions with human feedback解读
前置知识方法数据集结论 前置知识 GPT的全称是Generative Pre-Trained Transformer,预训练模型自诞生之始,一个备受诟病的问题就是预训练模型的偏见性。因为预训练模型都是通过海量数据在超大参数量级的模型上训练出来的,对比完全由人工规则…...
线性回归矩阵求解和梯度求解
正规方程求解线性回归 首先正规方程如下: Θ ( X T X ) − 1 X T y \begin{equation} \Theta (X^T X)^{-1} X^T y \end{equation} Θ(XTX)−1XTy 接下来通过线性代数的角度理解这个问题。 二维空间 在二维空间上,有两个向量 a a a和 b b b&…...
M3U8不知道如何转MP4?包能学会的4种格式转换教学!
在流媒体视频大量生产的今天,M3U8作为一种基于HTTP Live Streaming(HLS)协议的播放列表格式,广泛应用于网络视频直播和点播中。它包含了媒体播放列表的信息,指向了视频文件被分割成的多个TS(Transport Stre…...
C++第4课——swap、switch-case-for循环(含视频讲解)
文章目录 1、课程代码2、课程视频 1、课程代码 #include<iostream> using namespace std; int main(){/* //第一个任务:学会swap int a,b,c;//从小到大排序输出 升序 cin>>a>>b>>c;//5 4 3if(a>b)swap(a,b);//4 5 3 swap()函数是用于交…...
大数据新视界 -- 大数据大厂之大数据重塑影视娱乐产业的未来(4 - 4)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
在Java中,需要每120分钟刷新一次的`assetoken`,并且你想使用Redis作为缓存来存储和管理这个令牌
学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…...
linux网络编程7——协程设计原理与汇编实现
文章目录 协程设计原理与汇编实现1. 协程概念2. 协程的实现2.1 setjmp2.2 ucontext2.3 汇编实现2.4 优缺点2.5 实现协程原语2.5.1 create()2.5.2 yield()2.5.3 resume()2.5.4 exit()2.5.5 switch()2.5.6 sleep() 2.6 协程调度器 3. 利用hook使用协程版本的库函数学习参考 协程设…...
Ubuntu22.04版本左右,扩充用户可使用内存
1 取得root权限后,输入命令 lsblk 查看所有磁盘和分区,找到想要替换用户可使用文件夹内存的磁盘和分区。若没有进行分区,并转为所需要的分区数据类型,先进行分区与格式化,过程自行查阅。 扩充替换过程,例如…...
基于ArcMap中Python 批量处理栅格数据(以按掩膜提取为例)
注:图片来源于公众号,公众号也是我自己的。 ArcMap中的python编辑器是很多本科生使用ArcMap时容易忽略的一个工具,本人最近正在读一本书《ArcGIS Python 编程基础与应用》,在此和大家分享、交流一些相关的知识。 这篇文章主要分享…...
【flink】之集成mybatis对mysql进行读写
背景: 在现代大数据应用中,数据的高效处理和存储是核心需求之一。Flink作为一款强大的流处理框架,能够处理大规模的实时数据流,提供丰富的数据处理功能,如窗口操作、连接操作、聚合操作等。而MyBatis则是一款优秀的持…...
Java设计模式—观察者模式详解
引言 模式角色 UML图 示例代码 应用场景 优点 缺点 结论 引言 观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知…...
【Cri-Dockerd】安装cri-dockerd
cri-dockerd的作用: 在k8s1.24之前。k8s会通过dockershim来调用docker进行容器运行时containerd,并且会自动安装dockershim,但是从1.24版本之前k8s为了降低容器运行时的调用的复杂度和效率,直接调用containerd了,并且…...
GCC及GDB的使用
参考视频及博客 https://www.bilibili.com/video/BV1EK411g7Li/?spm_id_from333.999.0.0&vd_sourceb3723521e243814388688d813c9d475f https://www.bilibili.com/video/BV1ei4y1V758/?buvidXU932919AEC08339E30CE57D39A2BABF6A44F&from_spmidsearch.search-result.0…...
大数据新视界 -- 大数据大厂之大数据重塑影视娱乐产业的未来(4 - 3)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
数据结构——基础知识补充
1.队列 1.普通队列 queue.Queue 是 Python 标准库 queue 模块中的一个类,适用于多线程环境。它实现了线程安全的 FIFO(先进先出)队列。 2.双端队列 双端队列(Deque,Double-Ended Queue)是一种具有队列和…...
只有.git文件夹时如何恢复项目
有时候误删文件但由于.git是隐藏文件夹而幸存,或者项目太大,单单甩给你一个.git文件夹让你自己恢复整个项目,该怎么办呢? 不用担心,只要进行以下步骤,即可把原项目重新搭建起来: 创建一个文件…...
anchor、anchor box、bounding box之间关系
最近学YOLO接触到这些概念,一下子有点蒙,简单总结一下。 anchor和anchor box Anchor:表示一组预定义的尺寸比例,用来代表常见物体的宽高比。可以把它看成是一个模板或规格,定义了物体框的“形状”和“比例”ÿ…...
代码随想录算法训练营第三十天 | 452.用最少数量的箭引爆气球 435.无重叠区间 763.划分字母区间
LeetCode 452.用最少数量的箭引爆气球: 文章链接 题目链接:452.用最少数量的箭引爆气球 思路: 气球的区间有重叠部分,只要弓箭从重叠部分射出来,那么就能减少所使用的弓箭数 **局部最优:**只要有重叠部分…...
海亮科技亮相第84届中国教装展 尽显生于校园 长于校园教育基因
10月25日,第84届中国教育装备展示会(以下简称“教装展”)在昆明滇池国际会展中心开幕。作为国内教育装备领域规模最大、影响最广的专业展会,本届教装展以“数字赋能教育,创新引领未来”为主题,为教育领域新…...
C语言数据结构学习:栈
C语言 数据结构学习 汇总入口: C语言数据结构学习:[汇总] 1. 栈 栈,实际上是一种特殊的线性表。这里使用的是链表栈,链表栈的博客:C语言数据结构学习:单链表 2. 栈的特点 只能在一端进行存取操作&#x…...
如何快速分析音频中的各种频率成分
从视频中提取音频 from moviepy.editor import VideoFileClip# Load the video file and extract audio video_path "/mnt/data/WeChat_20241026235630.mp4" video_clip VideoFileClip(video_path)# Extract audio and save as a temporary file for further anal…...
MongoDB 6.0 主从复制配置
以下是 MongoDB 6.0 版本配置主从的详细安装步骤: 1. 安装 MongoDB:可以从官网下载 MongoDB 6.0 的安装包并进行安装,或者使用相应的包管理工具进行安装。 2. 配置主节点:在主节点的 MongoDB 配置文件(默认路径为 …...
NPU 神经网络处理单元
Ⅰ 什么是 NPU? 当前正处于神经网络和机器学习处理需求爆发的初期。传统的 CPU(中央处理器)/GPU(图形处理器)可以执行类似任务,但专门为神经网络优化的 NPU(神经处理单元)比 CPU/GP…...
安宝特分享 | AR技术引领:跨国工业远程协作创新模式
在当今高度互联的工业环境中,跨国合作与沟通变得日益重要。然而,语言障碍常常成为高效协作的绊脚石。安宝特AR眼镜凭借其强大的多语言自动翻译和播报功能,正在改变这一局面,让远程协作变得更加顺畅。 01 多语言翻译优势 安宝特A…...
Vulkan 开发(五):Vulkan 逻辑设备
图片来自《Vulkan 应用开发指南》 Vulkan 开发系列文章: 1. 开篇,Vulkan 概述 2. Vulkan 实例 3. Vulkan 物理设备 4. Vulkan 设备队列 在 Vulkan 中,逻辑设备(Logical Device)是与物理设备(Physical D…...
Kafka 解决消息丢失、乱序与重复消费
一、引言 在分布式系统中,Apache Kafka 作为一种高吞吐量的分布式发布订阅消息系统,被广泛应用于日志收集、流式处理、消息队列等场景。然而,在实际使用过程中,可能会遇到消息丢失、乱序、重复消费等问题,这些问题可能…...
计算机专业毕业生面试工具推荐:白瓜面试
随着毕业季的临近,计算机专业的毕业生们即将步入职场,面试成为了他们必须面对的挑战。在这个过程中,选择合适的面试工具可以大大提高求职成功率。今天,我要向大家推荐一款专为计算机专业毕业生设计的面试工具——白瓜面试。 为什…...
数字IC开发:布局布线
数字IC开发:布局布线 前端经过DFT,综合后输出网表文件给后端,由后端通过布局布线,将网表转换为GDSII文件;网表文件只包含单元器件及其连接等信息,GDS文件则包含其物理位置,具体的走线࿱…...
高空作业未系安全带监测系统 安全带穿戴识别预警系统
在各类高空作业场景中,安全带是保障作业人员生命安全的关键防线。然而,由于人为疏忽或其他原因,作业人员未正确系挂安全带的情况时有发生,这给高空作业带来了巨大的安全隐患。为有效解决这一问题,高空作业未系安全带监…...
k8s的配置和存储(ConfigMap、Secret、Hostpath、EmptyDir以及NFS的服务使用)
ConfigMap 简介 在 Kubernetes 中,ConfigMap 是一种用于存储非敏感信息的 Kubernetes 对象。它用于存储配置数据,如键值对、整个配置文件或 JSON 数据等。ConfigMap 通常用于容器镜像中的配置文件、命令行参数和环境变量等。 ConfigMap 可以通过三种方…...
网站建设好推荐/推广类软文
最全的cmap的用法 此文是复制来的0.0 1. map最基本的构造函数;map<string ,int>mapstring; map<int,string >mapint;map<sring,char>mapstring; map< char ,string>mapchar;map<char,int>mapchar; map<int ,char>mapint&#x…...
品牌seo公司/seo关键词优化公司哪家好
No valid host was found. There are not enough hosts available ascii codec cant decode byte 0xe6 in position 0: ordinal not in range(128)...
卖高仿名牌手表网站/国内看不到的中文新闻网站
链接: https://uva.onlinejudge.org/index.php?optioncom_onlinejudge&Itemid8&pageshow_problem&problem3371 题意: 可以用表达式树来表示一个表达式。在本题中,运算符均为二元的,且运算符和运算数均用1~…...
外贸订单网站有哪些/百度人工客服
前言: 在讲解Kafka的架构前我们先了解一下什么是消息队列 1. 消息队列的讲解 消息: 应用之间的信息相互传递 消息队列(Message Queue): 将消息放在队列中保证消息可靠传递 1.1 消息队列的特点 应用系统之间解耦----12306–用户系统后台消息驱动:以消息驱动应用…...
公司为什么建立网站/整合营销策略有哪些
关于讲理老公:你不讲理。老婆:和你我从来就没讲过理,家就不是讲理的地方。再说你是男的,还比我大8个月呢,你就得让着我。关于钱老公:以后我挣的钱,按比例给你吧,我挣的多时留得也多一…...
做众筹网站怎么赚钱/他达拉非片正确服用方法
随着经济增长变缓和全球竞争日益激烈,中国加工工业在性能提高、成本降低和工业升级方面已面临诸多挑战。中国加工工业如何才能实现从“中国制造”成功转型至“中国智造”?我们来看看霍尼韦尔过程控制部全球副总裁兼中国区总经理王春文先生如何回答这一问…...