ChatGPT追祖寻宗:GPT-3技术报告要点解读

news2024/11/24 20:53:24

论文地址:https://arxiv.org/abs/2005.14165

往期相关文章:

  • ChatGPT追祖寻宗:GPT-1论文要点解读_五点钟科技的博客-CSDN博客
  • ChatGPT追祖寻宗:GPT-2论文要点解读_五点钟科技的博客-CSDN博客

本文的标题之所以取名技术报告而不是论文,是因为长达63页的GPT-3的这篇文章它不是一个发表的论文,而是一份报告,文中也没有针对模型的结构和整个训练过程的细节介绍,基本上都是在讨论,因此本博客也只挑一些个人觉得值得关注的点介绍一下。 

Abstract

回顾一下GPT-1和GPT-2,GPT-1中主要用到了改变输入样式的方式让模型学会执行不同任务,GPT-2作者通篇在强调零样本学习,放弃用在输入中加入特殊符号区分不同任务的做法,改用纯自然语言输入的方式执行不同的任务,而在GPT-3中,作者又不再强调零样本的事了,也认为依靠大量的标注数据进行任务相关的微调不是个好主意,因为作者提到,人类对于新的任务的学习,往往只需要少量的样本就能学到新知识,估计作者认为也不能一个样本都不给,因此,作者想到了一个few-shot的方法,牛掰!当然也提到了one-shot的方法,这个后面会说。摘要中作者主要说明了他们开发出一个包含1750亿个参数的GPT-3,比之前非稀疏的模型大10倍,为啥是非稀疏的,因为稀疏模型的权重存在很多0,会导致模型虚大,所以 没有对比意义。其次,作者发现GPT-3生成的新闻文本连人类都难以分辨真假是不是人写的。

1. Instruct 

接下来,作者提到了目前对于语言模型训练的范式,就是在一个任务无关的数据集上预训练,再在特定任务数据集上做微调,但是这种范式存在很大的问题,就是这样训练模型仍然需要大量的标注数据去做微调,具体地,作者列出了3个问题:

总结来说,主要是3个方面的问题:

  • 标注数据集的依赖,即模型的训练需要大量的标注数据,这是十分困难的;
  • 在微调模型表现的好不见得是因为预训练模型泛化能力强,有可能是因为预训练使用的大批量数据涵盖了微调数据的信息,如果微调的数据在预训练中没有相应的分布,那么模型的表现可能就变差了。
  • 人类在学习某个新的任务时,往往不需要有大量的例子进行辅助,比如让你认识猫,那么其实给你几只猫的样子,后期不管什么颜色什么品种的猫,你都大概率能区分出它是只猫。而GPT-3就想类比人类学习的过程,认为模型也不需要大量的任务相关的例子来学习,这就是few-shot。

为了解决上述的问题,作者也提出了他们的思路,这一段中作者提到了一个比较新的名词,叫元学习(meta-learning),还提到了“in-context learning”,这是上下文学习的意思。对于元学习,其实也没那么高深,说白了就是将大量的不同任务的样本同时送给模型做预训练,和GPT2中的多任务学习形似,而在做in-context learning的时候,根据示例样本的多少,区分zero-shot、one-shot和few-shot,所以这个in-context learning过程有没有在做梯度更新?是没有的。作者对于元学习和in-context learning在本页的尾部做了解释:

作者说了,之前提到的零样本学习不是真的从零样本的情况下学习,为了避免这种歧义,所以用了元学习来代替预训练过程,用in-context leaning代表前向传播过程(注意,可以认为是推理,因为不涉及到梯度的更新)。而且根据在推理过程所依赖示例样本的多少划分零样本、单样本和少样本。说实话,有点绕,如果不深入分析作者的意思的话,困扰更大。作者还附上了一幅图来说明这个过程:

outer loop部分是无监督预训练过程,底下蓝色部分就是in-context learning。单从图上来看,整个outer loop部分是无监督预训练,在这个过程中,分别包含了不同的in-context learning阶段,可是按照文中的意思,预训练过程是不可能不做梯度更新的,而in-context learning又是不做梯度更新的,所以上图可能表示的有些问题,所以我认为,这个图并不是在讲GPT-3是怎么训练的,而是告诉我们有这么个组成阶段,具体的就是,有个无监督预训练阶段,而in-context learning只发生在前向传播阶段,作者想告诉我们,在预训练阶段,只要数据量足够大,那么就很有可能包括了in-context learning过程中的任务相关的示例样本。大家看看就好,挺奇怪的反正是。当然,由于GPT-3未开源,所以这些只是猜测。

这段话作者想说明随着模型参数量的不断增大,模型的性能也的确在不断改善,总结就是模型的参数量对模型的性能确实有直接的影响。

作者对不同shot做的实验对比图,从图上来看,few-shot貌似是最好的,注意图上三条实线取的是n次实验的平均值。也就是说,随着给的示例样本的增多,模型的性能大体也越来越好。但值得注意的是,给的示例样本并非用来给模型进行微调训练的,而是在不更新梯度的条件下让模型能够根据示例样本执行相关的任务,这的确有点像人类执行新任务的过程。

作者也提到了说GPT-3在自然语言推断方面的任务仍然有很大的改进空间,他们也会继续在少样本学习方面加大改进研究的力度。 

这几段话主要概括了接下来作者要在文中讨论的内容。包括数据集、模型尺寸、不同训练方式、模型的局限、社会影响等方面,没啥可说的。

2. Approach 

接下来作者又介绍了一遍什么是微调、少样本学习、单样本学习、零样本学习,以及他们是怎么做的。这里值得一提的是,作者在少样本学习中介绍了他们实验的示例样本范围是10到100个,也提到了少样本学习的一个主要缺点是它仍然比目前最好的有微调过程的模型表现的差。而零样本学习是最接近人类学习新任务的情形。下面是一张示例图,分别对微调、零样本、单样本、少样本学习剧了不同的例子:

从上图可以清楚的明白4个不同过程究竟是怎么一回事:微调就是在预训练模型的基础上用一定量的带标签的样本进行增量训练(有梯度更新);零样本就是只有提示词,没有示例样本;单样本就是有提示词,也有一个示例;少样本就是提示词加上少量的示例。示例就是为了让模型推理的时候也给个例子让模型看,使模型能够知道你要让它干嘛。比如上图的提示词“translate English to French:”,提示词下面就是示例样本和待预测样本,“=>”左端序列指的是原始文本(English),右边是目标文本(French),最后一条不存在目标文本的序列就是需要模型做预测的待预测的样本。

接下来,作者列举了他们在文章中所设计的不同大小的模型的参数情况:

这个大家看图就一目了然了,其中,GPT-3 Small的参数和Bert-base类似,GPT-3 Medium和Bert-Large差不多。GPT-3 XL的参数量和GPT-2的相当,但是其向量维度会比GPT-2宽一些,层数比GPT-2深一些,GPT-2是48层的。至于这些参数为什么这么设定,我想应该是作者们的玄学思维发挥了作用。。。比较好奇的是,随着GPT层数的增加,其向量维度增加的程度并不高,而且随着batchsize的增加,学习率也往小了调,我感觉这有点和我们的认识反着来。通常层数增加的倍数要和向量维度增加的倍数相当,因为层数增加了,就要有更多的向量维度去记住更多的信息,当batchsize增大,学习率应该也有所增大才是,因为在那么一大批量的样本上,应该先要有个大的学习率快速的接近最优空间,总之这块挺玄学的。

2.1 Model and Architectures

到了大家最关心的模型结构问题,很可惜,最重要的地方篇幅却很少。开头作者就说,GPT-3和GPT-2在模型结构上没有本质区别,唯一不同的就是GPT-3在注意力机制这块GPT-3采用了一种叫做Sparse Transformer的网络结构,抱歉,这个模型我还没仔细研究过,暂且不做讨论。所有的8个模型作者均采用了2048个token的输入限制,也就是说GPT-3支持最多2048个token。文中作者还简要提了一下工程上的问题,把模型的深度和宽度分布在多台机器上并行,这样可以减少计算复杂度。

2.2 Training Dataset

当要的到GPT-3这么大的模型时,就不得不考虑大数据了。作者在这一节里介绍了他们的主要数据来源是基于Common Crawl来采样的。

在GPT-2那篇文章中,作者有提到说这个数据集质量低,所以他们没有采用,而是采取了其它方式构建了新的数据集,但在GPT-3中,为了训练如此大的模型,作者不得不采用该数据集了。为了提高数据集的质量,作者采取了3个步骤来提高数据集的平均质量:(1)下载并筛选了与一系列高质量参考语料库相似的Common Crawl版本,简单来讲,就是拿一个质量高的参考语料,经过对比来筛选出common crawl中的高质量语料,对比的方法我看网上有人说用的二分类,就是把common crawl数据集中质量低的当成负样本,其它质量高的数据集当成正样本,训练一个二分类模型,然后再用二分类模型去筛选common crawl,这是一种方法,反正无所谓了,只要能够较好的完成这项工作,用什么方式去筛选都行,属于数据特征工程的任务;(2)在文档层面进行了模糊去重,防止冗余并保持验证集的完整性,以此作为准确衡量过拟合的依据,我想这么大批量的去重,十有八九就是用到哈希的方法,类似于LSH;(3)向训练混合中添加了已知的高质量参考语料库,以增加Common Crawl的多样性和丰富性,比如GPT-2、Bert之类的所用到的语料。

从上表中可以看到,虽然common crawl基数很大,但是它的采样率不及下面几个数据集的采样率,这可能是因为作者仍然认为common crawl数据集的质量较低,所以应当降低其采样比例。 

作者提到对在大量互联网数据上预训练的语言模型,特别是具有记住大量内容能力的大模型,存在一个主要的方法论问题,即预训练过程中可能会无意中看到测试集或开发集,从而对下游任务产生潜在的污染。其实就是模型的“作弊”问题,这容易导致模型性能虚高。虽然作者做了一些去重,但是由于过滤器设计上的一些缺陷,导致了去重不彻底,也就是GPT-3的数据集中,仍然存在着许多训练样本和测试样本重叠的情况,对于这一问题,重新训练是不可能的,因为成本太高了,所以作者想把它放在后续研究中来解决。

2.3 Training Process

这一小节稍微介绍了一下训练过程(细节无),没有太多值得关注的。

这段话主要了解一下作者他们用的是v100分布式训练的,其它的没啥,可以看下附录B里的内容: 

从附录B可以提炼出以下几点:

  • Adam优化器的参数是β1=0.9,β2=0.95,\epsilon=10^-8;
  • 学习率在前260亿个tokens之前,以余弦衰减策略将学习率从初始值衰减到其10%,之后就保持不变,并在3.75亿个tokens之前采用线性学习率预热策略;
  • 根据模型大小,在训练的前4-12亿个tokens期间,逐步将batchsize线性地从一个小值(32k个tokens)增加到全值;
  • 训练阶段的数据采样是不放回抽取;
  • 所有模型以0.1比例进行权重衰减;
  • 输入长度限制在2048个tokens,当一篇文档的总token数小于2048时,用其它文档补齐,总之每条输入序列保证是2048个tokens。如果一条序列是由多个文档组成的,那么文档与文档之间用一个特殊的结束符来区分;

2.4 Evaluation

本节就是关于实验评估的一些介绍,不同的是,作者采用的是上下文学习的方式,由于这里不涉及微调,所以对GPT-3的评估就是直接用预训练好的模型拿不同数量的示例样本进行评估了。

写到这里,其实关于GPT-3比较重要的部分都介绍完了,后面的一堆内容就是关于各种实验任务的介绍,以及一堆附录,感兴趣的小伙伴根据自己的需求挑着看就行。

总结

总结一下,GPT-1中,作者提出了无监督预训练结合任务相关的微调训练范式,将输入结构改成和任务相关的样子进行微调,这也是后续Bert、T5等模型的训练方式;GPT-2中,作者将任务相关的输入全用自然语言来描述,而不再使用特殊符号区分不同任务,这也是后来指示学习的范式,并提出了零样本在语言模型训练上的应用;GPT-3一改前面模型的训练范式,直接用大规模语料进行模型的训练,而不需要使用特定任务的微调,并在少样本示例上验证了大规模数据训练以及大参数量模型性能的提升,这也是现如今各大语言模型所采用的的基本方式。总结一句话:牛逼!

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

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

相关文章

【差旅游记】初见乌海湖

哈喽,大家好,我是雷工。 最近在乌海出差,有幸见到了传说中在沙漠中看海的“黄河明珠”——乌海湖。 前段时间一直有点忙,现在有点时间,趁还没忘光,简单整理记录下。 那是在上个月,2023年8月8号…

K8S:Pod容器中的存储方式及PV、PVC

文章目录 Pod容器中的存储方式一.emptyDir存储卷1.emptyDir存储卷概念2.emptyDir存储卷示例 二.hostPath存储卷1.hostPath存储卷概念2.hostPath存储卷示例 三.nfs共享存储卷1.nfs共享存储卷示例 四.PV和PVC1.PV、PVC概念2.PVC 的使用逻辑及数据流向3.storageclass插…

Conditional DETR(ICCV 21)

Conditional DETR(ICCV 21) Conditional DETR for Fast Training Convergence 加速detr收敛(50 epoch收敛) DETR收敛慢的原因 DETR训练收敛速度慢,需要500 epochs DETR的Cross Attention高度依赖content embedding…

Go编程规范

文章目录 注释转义符定义变量方法一:指定变量类型,声明后若不赋值,使用默认值方法二:根据值自行判定变量类型(类型推导)方法三:省略var, 注意:左侧的变量不应该是已经声明过的,否则会导致编译错误[推荐]全局…

通讯网关软件001——利用CommGate X2Access-U实现OPC UA数据转储Access

本文介绍利用CommGate X2ACCESS-U实现从OPC UA Server读取数据并同步转储至ACCESS数据库。CommGate X2ACCESS-U是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,实现从OPC UA Server实时读取…

经典指标策略回测一览

编辑 经典指标策略回测一览 关键词 A股市场(沪深京三市) 5000股票20年内日线走势回测,区分除权,前复权,后复权三种模式;由于数据量较大,采用两种方式共享数据,一是 天启网站的数据…

Minor GC、Young GC、Full GC、Old GC、Major GC、Mixed GC 一文搞懂

简介 大家经常会看到各种各样的 GC 名称,比如:Minor GC、Young GC、Full GC、Old GC、Major GC、Mixed GC。 刚开始看到这么多 GC 名词后,真的是心累 哎,没办法,一声国粹之后也只能慢慢的把它们理理顺。 GC分类 我…

(vue2)面经基础版-案例效果分析

配路由 先配一级,一级里面配二级。一级路由:首页(二级:嵌套4个小页面)、详情页 高亮a->router-link,高亮效果对自带高亮类名router-link(-exact)-active设置 注:通过children配置项&#…

【springboot源码】深度解析@Value赋值时机及底层原理

1.Value使用 Value主要是让我们程序动态的将外部值注入到bean中的,使用方式主要如下两种: 1.1Value("${}"):可以获取对应属性文件中定义的属性值。 1.2Value("#{}"):表示 SpEl 表达式通常用来获取 bean 的…

【操作系统】聊聊什么是CPU上下文切换

对于linux来说,本身就是一个多任务运行的操作系统,运行远大于CPU核心数的程序,从用户视角来看是并发执行,而在CPU视角看其实是将不同的CPU时间片进行分割,每个程序执行一下,就切换到别的程序执行。那么这个…

[激光原理与应用-70]:AD8512运算放大器的工作原理与连接电路

目录 概述: 一、AD8512的功能与主要特征 一、AD8510 1.1 管脚说明 1.2 电源电压 1.3 输入信号电压 1.4 偏置电压 1.5 参考连接 1.6 放大倍数 1.7 参考电路 二、AD8512 1.1 管脚说明 1.2 AD8512的电路连接 1.3 如何调整放大倍数 1.4 AD8512半波与全波…

基于 Socket 网络编程

基于 Socket 网络编程 前言一、基于Socket的网络通信传输(传输层)二、UDP 的数据报套接字编程1、UDP 套接字编程 API2、使用 UDP Socket 实现简单通信 三、TCP 流套接字编程1、TCP 流套接字编程 API2、使用 TCP Socket 实现简单通信3、使用 Tcp 协议进行…

【数据链路层】网络基础 -- MAC帧协议与ARP协议

数据链路层认识以太网以太网帧格式(MAC帧)认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对于TCP协议的影响 再谈局域网转发原理(基于协议)ARP协议ARP协议的作用ARP协议的工作流程ARP数据报的格式 数据链路层 用于两…

网工内推 | 雄岸区块链集团,网安工程师,HCIE-Security、CISP优先

01 雄岸区块链集团 招聘岗位:网络安全测试工程师 职责描述: 1、负责安全测试工作,包括渗透测试、漏洞分析、攻防演练和安全评估等。 2、发掘业务系统安全问题,跟进安全整改。 3、出现网络攻击或安全事件时,进行紧急…

Tensorrt8.6.1安装

环境配置:Tensorrt8.6.1 ,cuda11.6, cudnn8.6.0, torch1.13.1cu116, torchvision0.14.1cu116 1.先把cuda11.6, cudnn8.6.0, torch1.13.1cu116, torchvision0.14.1cu116这几个安装完之后 2.下载Tensorrt8.6.1,复制移动以下文件 将include中头…

Nat. Rev. Bioeng. | 中山大学左涛组详述肠道微生态工程化改造

肠道微生态工程化改造 Engineering the gut microbiome Review Article, 2023-6-16, Nature Reviews Bioengineering DOI:10.1038/s44222-023-00072-2 原文链接:https://www.nature.com/articles/s44222-023-00072-2 第一作者:Xiaowu Bai&…

近距离看GPU计算-1

文章目录 前言1.什么是GPU及其分类1.独立GPU(Discrete GPU)2.集成GPU(Integrated GPU)3.移动GPU(Mobile GPU) 2.GPU绘制流水线3.GPU计算的演进之旅1.CUDA的发明2.统一可编程单元3.浮点计算的标准化4.随机存取数据5.存储支持ECC 前言 转自 GPU and Computing 公众号 在前面文章…

Java实现单链表

目录 一.单链表 二.单链表基本操作的实现 1.单链表类、属性的定义 2.求链表长度 3.链表是否包含值为key的节点 4.添加元素 5.删除节点 6.清空链表 三、完整代码 一.单链表 链表是一种在物理存储结构上非连续的存储结构,数据元素的逻辑顺序通过链表中的引用…

【深度学习】卷积神经网络(LeNet)【文章重新修改中】

卷积神经网络 LeNet 前言LeNet 模型代码实现MINST代码分块解析1 构建 LeNet 网络结构2 加载数据集3 初始化模型和优化器4 训练模型5 训练完成 完整代码 Fashion-MINST代码分块解析1 构建 LeNet 网络结构2 初始化模型参数3 加载数据集4 定义损失函数和优化器5 训练模型 完整代码…

AIDAO,将会引领我们走向何方?

人工智能(AI)和分布式自治组织(DAO)都是区块链赛道的热门项目之一,他们看似在不同的领域独立发展,然而,它们之间也存在着巨大的协同潜力。 未来,AI有望成为推动DAO发展的重要动力&a…