【深度学习】GPT-3

news2024/11/19 9:39:40

        2020年5月,OpenAI在长达72页的论文《https://arxiv.org/pdf/2005.14165Language Models are Few-Shot Learners》中发布了GPT-3,共有1750亿参数量,需要700G的硬盘存储,(GPT-2有15亿个参数),它比GPT-2有了极大的改进。根据论文描述,GPT-3非常强大,给予任何文本提示,GPT-3将返回一个文本试图匹配用户给它的模式。用户可以给它 "编程",只需向它展示几个希望它做的例子,它就会提供一篇完整的文章或故事。GPT-3在许多NLP数据集上都取得了很强的性能,包括翻译、问题回答和cloze任务,以及一些需要即时推理或领域适应的任务,如在句子中使用一个新词或执行3位数运算。GPT-3可以生成人类评估人员难以区分的新闻文章样本。

1.GPT-3 提出背景

        OpenAI在发布GPT2后,并没有引起业界太大的影响和关注,究其原因,并不是zero-shot这种想法不够吸引人,而是GPT2表现出来的效果依然差强人意,仍然属于“人工智障”的阶段,然而OpenAI认为他们的方向没有问题,不在特定领域上做太多的微调,甚至不做微调(这样就能避免1.人工标注数据和2.重新训练模型)才是大规模语言模型的未来,因此在不久之后他们又提出了GPT-3,GPT-3也就是chatGPT的前生。

        提出问题:许多基于RNN或Transformer结构的语言模型通过“pre-train + fine-tune”在许多NLP任务和基准方面取得了实质性进展。但这种方法必须拥有大量的下游任务fine-tune样本才能取得很好的性能。相比之下,人类通常只需要几个例子或简单的指令就能完成一项新的语言任务——这是当前NLP系统仍难以做到的。GPT-3主要聚焦于更通用的NLP模型,解决当前BERT类模型的两个缺点:

        1.对领域内有标签数据的过分依赖:虽然有了预训练+精调的两段式框架,但还是少不了一定量的领域标注数据,否则很难取得不错的效果,而标注数据的成本又是很高的。

        2.对于领域数据分布的过拟合:在精调阶段,因为领域数据有限,模型只能拟合训练数据分布,如果数据较少的话就可能造成过拟合,致使模型的泛华能力下降,更加无法应用到其他领域。

2.GPT-3 简介

         GPT-3这是一个具有1750亿个参数的自回归语言模型,比之前的任何非稀疏语言模型大至少10倍,并在few-shot设置下测试其性能。对于所有任务,GPT-3都是在没有任何梯度更新或微调的情况下应用的,仅通过与模型的文本交互来指定任务。GPT-3的主要目标是用更少的领域数据、且不经过精调步骤去解决问题。

        主要贡献:证明了通过增大参数量就能让语言模型显著提高下游任务在Few-shot(仅给定任务说明和少量示例)设置下的性能。有时甚至达到了与现有最先进的微调方法相比的竞争力。 

        GPT-3模型移除fine-tune有2个解决方案:

        1.meta-learning

        模型在训练阶段具备了一系列模式识别的能力和方法,并通过在预测过程中利用这些能力和方法以快速适应一个下游任务。最近的一些研究尝试通过称为in-context learning的方法来实现上述过程,然而效果距离期待的相差甚远。

        2.Large scale transformers

        Transformer语言模型参数的每一次增大都会让文本理解能力和其他的NLP下游任务的性能得到提升。此外,有研究指出描述许多下游任务性能的log损失能让模型的性能和参数之间服从一个平滑趋势。考虑到in-context learning会将学习到的知识和方法存在模型的参数中,假设:模型的情境学习能力也会随着参数规模的增长而增长

2-1 In-context learning

        In-context learning是论文中介绍的一个重要概念,要理解in-context learning,我们需要先理解meta-learning(元学习)。对于一个少样本的任务来说,模型的初始化值非常重要,从一个好的初始化值作为起点,模型能够尽快收敛,使得到的结果非常快的逼近全局最优解。元学习的核心思想在于通过少量的数据寻找一个合适的初始化范围,使得模型能够在有限的数据集上快速拟合,并获得不错的效果。在语言模型的背景下,这意味着该模型在训练时培养了广泛的技能和模式识别能力,然后在推理时使用这些能力来快速适应或识别期望的任务

       In-context learning在训练时,使用预先训练的语言模型的文本输入作为任务规范的形式:该模型以自然语言指令和/或任务的一些演示为条件,然后通过预测下一步将发生什么来完成任务。尽管它已经显示出一些初步的希望,但这种方法仍然取得了远不如微调的结果。元学习显然需要大幅改进,才能成为解决语言任务的实用方法。

        这里的介绍使用的是MAML(Model-Agnostic Meta-Learning)算法,正常的监督学习是将一个批次的数据打包成一个batch进行学习。但是元学习是将一个个任务打包成batch,每个batch分为支持集(support set)和质询集(query set),类似于学习任务中的训练集和测试集。

        对一个网络模型f,其参数表示为θ,它的初始化值被叫做meta-initialization。MAML的目标则是学习一组meta-initialization,能够快速应用到其它任务中。MAML的迭代涉及两次参数更新,分别是内循环(inner loop)和外循环(outer loop)。内循环是根据任务标签快速的对具体的任务进行学习和适应,而外学习则是对meta-initialization进行更新。直观的理解,我用一组meta-initialization去学习多个任务,如果每个任务都学得比较好,则说明这组meta-initialization是一个不错的初始化值,否则我们就去对这组值进行更新,如图所示。目前的实验结果表明元学习距离学习一个通用的词向量模型还是有很多工作要做的。

        语言建模的另一个最新趋势可能提供了前进的方向。近年来,基于Transformer语言模型的容量大幅增加,从1亿个参数[RNSS18],到3亿个参数[DCLT18],到15亿个参数/RWC+19],到80亿个参数[SSP+19],110亿个参数RSR+19],最后是170亿个参数[Tur20]。每一次增加都带来了文本生成以及下游NLP任务的改进,有证据表明,log loss与许多下游任务密切相关,随着规模的增长,log loss呈现平稳的改善趋势[KMH+20]。由于in-context learning在模型的参数范围内吸收许多技能和任务,因此,in-context learning能力可能会随着规模的增长而表现出同样强大的增益。

2-2 Few-shot,one-shot,zero-shot learning

        情境学习(in-context learning):在被给定的几个任务示例或一个任务说明的情况下,模型应该能通过简单预测以补全任务中其他的实例。即,情境学习要求预训练模型要对任务本身进行理解。情境学习三种分类的定义和示例如下:

        1.few-shot learning

        定义:允许输入数条范例和一则任务说明

        示例:向模型输入“这个任务要求将中文翻译为英文。你好->hello,再见->goodbye,购买->purchase,销售->”,然后要求模型预测下一个输出应该是什么,正确答案应为“sell”。

        2.one-shot learning

        定义:只允许输入一条范例和一则任务说明

        示例:向模型输入“这个任务要求将中文翻译为英文。你好->hello,销售->”,然后要求模型预测下一个输出应该是什么,正确答案应为“sell”。

        3.zero-shot learning

        定义:不允许输入任何范例,只允许输入一则任务说明

        示例:向模型输入“这个任务要求将中文翻译为英文。销售->”,然后要求模型预测下一个输出应该是什么,正确答案应为“sell”。

        在few-shot learning中,提供若干个( 10 - 100 个)示例和任务描述供模型学习。one-shot laerning是提供1个示例和任务描述。zero-shot则不提供示例,只是在测试时提供任务相关的具体描述。作者对这3种学习方式分别进行了实验,实验结果表明,三个学习方式的效果都会随着模型容量的上升而上升,且few shot > one shot > zero show。

2-3 数据集

        GPT-3共训练了5个不同的语料,分别是低质量的Common Crawl,高质量的WebText2,Books1,Books2和Wikipedia,GPT-3根据数据集的不同的质量赋予了不同的权值,权值越高的在训练的时候越容易抽样到,如表所示。

2-4 模型结构

GPT-3沿用了GPT-2的结构,但是在网络容量上做了很大的提升,具体如下:

        1.GPT-3采用了 96 层的多头transformer,头的个数为 96 ;

        2.词向量的长度是 12,888 ;

        3.上下文划窗的窗口大小提升至 2,048 个token;

        4.使用了alternating dense和locally banded sparse attention。

2-5 GPT-3的性能

        在大量的语言模型数据集中,GPT-3超过了绝大多数的zero-shot或者few-shot的state-of-the-art方法。另外GPT-3在很多复杂的NLP任务中也超过了fine-tune之后的state-of-the-art方法,例如闭卷问答,模式解析,机器翻译等。除了这些传统的NLP任务,GPT-3在一些其他的领域也取得了非常震惊的效果,例如进行数学加法,文章生成,编写代码等。

        GPT3整个模型的参数量达到了1750亿个,且做few-shot时不改变模型,而是在输入指定任务后,再输入一些针对任务的样例,如要求英语翻法语,就在translate English to French:后面加上一些翻译的样例,最后再输入你的问题如cheese => 其中=>也是提示词,示意模型进行输出。这是基于transformer架构的自注意力机制实现的。但是每一次都要给样本,因为模型没法存下样本的影响。

3. 总结

        GPT系列从1到3,通通采用的是transformer架构,可以说模型结构并没有创新性的设计。在微软的资金支持下,这更像是一场赤裸裸的炫富:1750亿的参数,31个分工明确的作者,超强算力的计算机( 285,000 个CPU, 10,000 个GPU),1200万的训练费用,45TB的训练数据(维基百科的全部数据只相当于其中的 0.6% )。甚至在训练GPT-3时出现了一个bug,OpenAI自己也没有资金重新训练了。

        GPT-3的本质还是通过海量的参数学习海量的数据,然后依赖transformer强大的拟合能力使得模型能够收敛。基于这个原因,GPT-3学到的模型分布也很难摆脱这个数据集的分布情况。得益于庞大的数据集,GPT-3可以完成一些令人感到惊喜的任务,但是GPT-3也不是万能的,对于一些明显不在这个分布或者和这个分布有冲突的任务来说,GPT-3还是无能为力的。例如通过目前的测试来看,GPT-3还有很多缺点的:

        1.对于一些命题没有意义的问题,GPT-3不会判断命题有效与否,而是拟合一个没有意义的答案出来;

        2.由于40TB海量数据的存在,很难保证GPT-3生成的文章不包含一些非常敏感的内容,例如种族歧视,性别歧视,宗教偏见等;

        3.受限于transformer的建模能力,GPT-3并不能保证生成的一篇长文章或者一本书籍的连贯性,存在下文不停重复上文的问题。

        4.难以生成长文本,序列太长效果就会差。由于采用的是解码器,不能从后往前看,在gpt里每个词都是同样重要的,没有重点并且难以解释究竟是模型记住了样例还是模型学到了具体意义,难以解释每个权重是做什么的,可解释性差。

        GPT-3如此强大性能的语言模型的提出,为下游各种类型的NLP任务提供了非常优秀的词向量模型。近年来,硬件的性能在飞速发展,而算法的研究似乎遇见了瓶颈,GPT-3给冷清的AI领域注入了一剂强心剂,告诉各大硬件厂商它们的工作还要加油,只要算力足够强,AI的性能还有不断提升的上界。

4.思考

4-1 有监督模型向半监督甚至无监督方向发展

        数据的规模的增长速度远远超过了数据的标注速度,这也就导致了大量无标签数据的产生。这些无标签的数据并非没有价值,相反,如果找到合适的“炼金术”,将可以从这些海量的数据中获取意想不到的价值。如何利用上这些无标签的数据来改善任务的表现变成了一个越来越无法轻视的问题。

4-2 从少量数据复杂模型到大量数据简单模型

        深度神经网络的拟合能力非常的强大,一个简单的神经网络模型就足以拟合任何函数。但无奈使用越简单的网络结构完成同一个任务,对数据量的要求也更高。数据量越是上升,数据质量越是提高,往往对模型的要求就会越会降低。数据量越大,模型就越容易捕捉到符合真实世界分布的特征。Word2Vec就是一个例子,它所使用的目标函数非常的简单,但是由于使用了大量的文本,于是训练出的词向量中就包含了许多有趣的特性。

 4-3 从专用模型向通用模型发展

        GPT、BERT、MT-DNN、GPT-2都使用了经过预训练的通用模型来继续进行下游的机器学习任务,并不需要对模型本身再做太多的修改。如果一个模型的表达能力足够的强,训练时候使用的数据量足够的大,那么模型的通用性就会更强,就不需要针对特定的任务做太多的修改。最极端的情况就像是GPT-2这个样子,训练时甚至完全不需要知道后续的下游任务是什么,就能够训练出一个通用的多任务模型。

4-4 对数据的规模和质量提高

        GPT、BERT、MT-DNN、GPT-2虽然先后刷榜,在成绩的提升中,数据规模的提升占有比结构调整更大的比重。随着模型的通用化和简单化,为提升模型的性能,今后更多的注意力将会从如何设计一个复杂、专用的模型转移到如何获取、清洗、精化出质量更加出众的、大量的数据上。数据的处理方式调整的作用将会大于模型结构调整的作用。

Reference:
1.https://www.zhihu.com/question/398114261/answer/1253942032
2.预训练语言模型之GPT-1,GPT-2和GPT-3 - 知乎

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

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

相关文章

PX4常见解锁失败报错及解决方法

文章目录 一、Kill switch engagen二、电源检查CBRK_SUPPLY_CHK三、USB连接检查CBRK_USB_CHK四、安全开关检查CBRK_IO_SAFETY五、high Accelerometer bios六、high gyro bios七、compasss inconsistent八、GPS报错九、Accels inconsistent十、偏航角一直漂移十一、PREFLIGHT FA…

同步编程和异步编程的区别

我在这里用几个例子(附带图文)给你们讲解一下,具体区别。 第一个例子 一、同步 执行步骤: step1 》 step2 》step3 先打印 hello moon, 再打印图片, 等待图片打印完,再打印 hello Jupiter …

全国青少年信息素养大赛Scratch图形化编程_初赛_模拟一卷

全国青少年电子信息智能创新大赛Scratch图形化编程_初赛_模拟一卷 一、选择题 第 1 题 单选题 能让角色在整个舞台范围内的任意位置出现的程序是?( ) A. B. C. D. 第 2 题 单选题 猫抓老鼠游戏的封面上有“开始”按钮和“游戏规则”两…

实战:Docker+Jenkins+Gitee构建CICD流水线

文章目录 前言Jenkins部署创建Jenkins docker-compose配置maven源启动Jenkins容器安装插件Gitee ssh公匙配置与测试项目提交 Jenkins创建流水线写在最后 前言 持续集成和持续交付一直是当下流行的开发运维方式,CICD省去了大量的运维时间,也能够提高开发…

Windows环境部署安装Chatglm2-6B-int4

chatglm2-6B是最近比较火爆的大模型,可以在消费级显卡上部署使用,适合学习。但是一般人也不一定有那么高的硬件配置,所以部署个int4版本应该是大多数人的最好选择。我就在家里部署起了int4版本的chatglm2-6B,记录一下免得忘了。 …

Docker资源限制

Docker资源限制 一、cpu资源控制1、 设置cpu使用率上限2、设置cpu资源占用比(设置多个容器时才有效)3、设置容器绑定指定的CPU 三、内存资源控制四、磁盘IO配额控制1、限制Block IO2、限制bps和iops进行限制 一、cpu资源控制 cgroups是一个非常强大的li…

VMware虚拟机无法自动获取IP地址的解决办法

安装好虚拟机后,网络是ok的,但是关机后,再次开启就不能用了。网上找了好多方法,都不管用,最后恢复默认设置搞定了,实在没办法的可以试一试

【致敬未来的攻城狮计划】第3期 作业汇总贴 + 获奖公布(文末荐书)

目录 一、写在前面 二、种子学员介绍 三、作业贴汇总 四、小小总结 五、获奖公布 六、学员有话说 七、特别致谢 八、友情荐书 一、写在前面 时间过得真快,距离 【致敬未来的攻城狮计划】第3期 的发起,已经过去有些时间了,让我们一起…

FileHub使用教程:Github Token获取步骤,使用快人一步

FileHub介绍 filehub是我开发的一个免费文件存储软件,可存万物。软件仓库:GitHub - Sjj1024/s-hub: 一个使用github作为资源存储的软件 软件下载地址:。有问题可以留言或者提Issue, 使用第一步:获取Github Token 使…

苹果手机充电充不进去什么原因?2023最新解决方法!

最近新买了一部苹果手机,才开心没两天呢,今天突然就发现苹果手机充电充不进了,这是为什么呢?有没有朋友知道呀?” 苹果手机作为目前年轻人比较喜欢的一款手机,也渐渐走进我们的生活。但在使用苹果手机时&am…

windows下载安装nvm并使用安装node

nvm安装 NVM(Node Version Manager)是一个用于管理 Node.js 版本的工具,可以在同一台计算机上安装和切换不同版本的 Node.js 1.官网下载 官网:https://github.com/coreybutler/nvm-windows/releases 2.安装步骤 解压后点击e…

网访问内网机器:基于frp的内网穿透

随缘更新些我自己的博客网站里的文章吧 因为经常需要远程访问自己的机器,所以写一个博客记录一下 公网访问内网机器:基于frp的内网穿透 从公网中访问自己的私有设备向来是一件难事儿。 1. 为什么需要内网穿透? A. 计算机网络 如何在自己的机…

【Lua学习笔记】Lua进阶——Table,迭代器

文章目录 官方唯一指定数据结构--tabletable的一万种用法字典和数组 迭代器ipairs()pairs() 回到Table 在【Lua学习笔记】Lua入门中我们讲到了Lua的一些入门知识点,本文将补充Lua的一些进阶知识 官方唯一指定数据结构–table 在上篇文章的最后,我们指出…

【windows】连接共享打印机提示:0x0000011B

【问题现象】 添加共享打印机的时候, 提示错误:0x0000011B。 【解决方法】 按winr键,在运行输入regedit 然后在注册表中找到路径: 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print 打开后,在右侧…

Android 之 Canvas API 详解 (Part 3) Matrix 和 drawBitmapMesh

本节引言: 在Canvas的API文档中,我们看到这样一个方法:drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint) 这个Matrix可是有大文章的,前面我们在学Paint的API中的ColorFilter中曾讲过ColorMatrix 颜色矩阵,一个4…

Python 生成随机图片验证码

Python 生成随机图片验证码 在写一个Web项目的时候一般要写登录操作,而为了安全起见,现在的登录功能都会加上输入图片验证码这一功能,在利用Django开发Web项目的过程中,可以使用 Python 生成一个如下所示的图片验证码&#xff1a…

MVC与MVVM模式的区别

一、MVC Model(模型):用于处理应用程序数据逻辑,负责在数据库中存取数据。处理数据的crud View(视图):处理数据显示的部分。通常视图是依据模型数据创建的。 Controller(控制器&…

Leetcode-每日一题【剑指 Offer 51. 数组中的逆序对】

题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 示例 1: 解题思路 前置知识 分治法 设计思想: 将规模为n的问题分解为k个规模较小的子问题…

解析LED防蓝光灯珠技术原理

LED防蓝光灯珠能有效减少蓝光对眼睛的持续伤害,通过便携式光谱分析仪对比检测,使用LED防蓝光灯珠后,手机屏幕发出的蓝光强度得到了有效抑制,减少了有害蓝光对眼睛的伤害。LED防蓝光灯珠主要是通过将有害蓝光进行反射,或…

(css)AI智能问答页面布局

(css)AI智能问答页面布局 效果&#xff1a; html <!-- AI框 --><div class"chat-top"><div class"chat-main" ref"chatList"><div v-if"!chatList.length" class"no-message"><span>欢迎使…