【深度学习】GPT-2

news2025/1/8 12:41:47

        在GPT1问世不久,和GPT很相似的BERT横空出世,并且在各方面都超越GPT-1。OpenAI在《Language Models are Unsupervised Multitask Learners》中于2019年提出的GPT-2,全称为Generative Pre-Training 2.0。提出语言模型式无监督的多任务学习 ,通过无监督学习也能达到和finetune一样的效果,并且拥有更强的泛化能能力。 

1.GPT-2提出背景

        现有基于监督学习训练的模型的泛化性不是很好,在一个任务上训练好的模型也很难迁移到下一个任务上。多任务学习(Multitask learning)是指在训练一个模型时,同时看多个任务的数据集,而且可能通过多个损失函数来达到一个模式在多个任务上都能用的效果,但是在NLP领域用的不多。NLP领域主流的做法还是像GPT-1或BERT那样先在大量无标签数据上预训练语言模型,然后在每个下游任务上进行有监督的fine-tune,但是这样也有两个问题:

  • 对于下游的每个任务,还是要重新训练模型
  • 需要收集有标签的数据

        这样导致在拓展到新任务上时还是有一定的成本。因此,GPT-2提出利用语言模型做下游任务时,不需要下游任务的任何标注信息,即zero-shot设定,也不用训练模型。因此基本实现一劳永逸,训练一个模型,在多个任务上都能用。

2.GPT-2简介

        GPT-2继续沿用了原来在GPT中使用的单向 Transformer 模型,尽可能利用单向Transformer的优势,做一些BERT使用的双向Transformer所做不到的事。那就是通过上文生成下文文本。

​        GPT-2的目标是为了训练一个泛化能力更强的词向量模型,它并没有对GPT-1的网络机构进行过多的结构创新和设计,只是使用了更大的数据集和更大的网络参数。更大的数据集和更大的模型(15亿个参数),用于zero-shot(不作任何训练直接用于下游任务)效果还不错:在某些任务上和当前的模型效果差不多,但是某些任务上效果很一般。

            GPT-2适用于文本生成任务,并且仍然固执地用单向语言模型,而不是双向语言模型。生成内容后续单词这种模式,单向语言模型更方便;想证明通过增加数据量和模型结构,单向模型未必输双向模型。

2-1. GPT-2的核心思想

        GPT-2的学习目标是使用无监督的预训练模型做有监督的任务。因为文本数据的时序性,一个输出序列可以表示为一系列条件概率的乘积p(s_n|s_1,s_2,...s_{n-1})。它的实际意义是根据已知的上文,预测未知的下文。这种模型之所以效果好是因为在每个新单词产生后,该单词就被添加在之前生成的单词序列后面,这个序列会成为模型下一步的新输入。语言模型其实也是在给序列的条件概率建模。这种机制叫做自回归(auto-regression),同时也是令 RNN 模型效果拔群的重要思想。

        基于上面的思想,当一个语言模型的容量足够大时,它就足以覆盖所有的有监督任务,也就是说所有的有监督学习都是无监督语言模型的一个子集。例如当模型训练完“Micheal Jordan is the best basketball player in the history”语料的语言模型之后,便也学会了(question:“who is the best basketball player in the history ?”,answer:“Micheal Jordan”)的Q&A任务。

        综上,GPT-2的核心思想概括为:任何有监督任务都是语言模型的一个子集,当模型的容量非常大且数据量足够丰富时,仅仅靠训练语言模型的学习便可以完成其他有监督学习的任务。

2-2. GPT-2其他知识

        1.语言模型其实也是在给序列的条件概率建模,即𝑝(𝑠𝑛−𝑘,...,𝑠𝑛|𝑠1,𝑠2,...,𝑠𝑛−𝑘−1)。

        2.任何有监督任务,其实都是在估计𝑝(𝑜𝑢𝑡𝑝𝑢𝑡|𝑖𝑛𝑝𝑢𝑡),通常我们会用特定的网络结构去给任务建模,但如果要做通用模型,它需要对𝑝(𝑜𝑢𝑡𝑝𝑢𝑡|𝑖𝑛𝑝𝑢𝑡,𝑡𝑎𝑠𝑘)建模。对于NLP任务的input和output,我们平常都可以用向量表示,而对于task,其实也是一样的。18年已经有研究对task进行过建模了,这种模型的一条训练样本可以表示为:(translate to french,English text,french text),或者表示为:(answer the question,document,question,answer)。已经证实了,以这种数据形式可以有监督地训练一个single model,其实也就是对一个模型进行有监督的多任务学习

        3.语言模型=无监督多任务学习相比于有监督的多任务学习,语言模型只是不需要显示地定义哪些字段是要预测的输出,所以,实际上有监督的输出只是语言模型序列中的一个子集。举个例子,比如我在训练语言模型时,有一句话“The translation of word Machine Learning in chinese is 机器学习”,那在训练完这句话时,语言模型就自然地将翻译任务和任务的输入输出都学到了。再比如,又碰到一句话“美国的总统是特朗普”,这一句话训练完,也就是一个小的问答了。

2-3. GPT-2的训练细节

        GPT-2核心是构建通用NLP模型。

        通常会用特定的网络结构去给任务建模,GPT2构建通用NLP模型,对p(output | input, task)建模。output ,input, task三者都用向量表示。

        在训练的时候,采用了多任务的方式,不单单只在一个任务上进行学习,而是多个,每一个任务都要保证其损失函数能收敛,不同任务是共享主体Transformer参数的,进一步提升模型的泛化能力,因此在即使没有fine-tuning的情况下,依旧有非常不错的表现。

        在fine-tuning有监督任务阶段,GPT-2根据给定输入与任务来做出相应的输出,那么模型就可以表示成下面这个样子:𝑝(𝑜𝑢𝑡𝑝𝑢𝑡∣𝑖𝑛𝑝𝑢𝑡,𝑡𝑎𝑠𝑘),例如可以直接输入:(“自然语言处理”, 中文翻译)来得到我们需要的结果(“Nature Language Processing”),因此提出的模型可以将机器翻译,自然语言推理,语义分析,关系提取等10类任务统一建模为一个任务,而不再为每一个子任务单独设计一个模型。

        用无监督的预训练模型去做有监督任务:把第二阶段替换由Finetuning有监督,换成了无监督做下游任务,因为它扔进去了好多任务数据,且有提示词。GPT2训练好的语言模型,如何无监督适应下游任务,比如文本摘要,怎么知道是在做文本摘要任务呢?首先,所有任务都采取相同的往出蹦字的输出模式。GPT2.0给出了一种新颖的生成式任务的做法,就是一个字一个字往出蹦,然后拼接出输出内容作为翻译结果或者摘要结果。GPT-2的输入也会加入提示词,比如输入格式是 文本+TL;DR:,GPT-2模型就会知道是做摘要工作了。

2-4. GPT-2的工作流程

        GPT-2 可以处理最长 1024 个单词的序列。每个单词都会和它的前续路径一起「流过」所有的解码器模块。

        想要运行一个训练好的 GPT-2 模型,最简单的方法就是让它自己随机工作(从技术上说,叫做生成无条件样本)。换句话说,我们也可以给它一点提示,让它说一些关于特定主题的话(即生成交互式条件样本)。在随机情况下,我们只简单地提供一个预先定义好的起始单词(训练好的模型使用「|endoftext|」作为它的起始单词,不妨将其称为<s>),然后让它自己生成文字。

        此时,模型的输入只有一个单词,所以只有这个单词的路径是活跃的。单词经过层层处理,最终得到一个向量。向量可以对于词汇表的每个单词计算一个概率(词汇表是模型能「说出」的所有单词,GPT-2 的词汇表中有 50000 个单词)。在本例中,我们选择概率最高的单词「The」作为下一个单词。

        但有时这样会出问题——就像如果我们持续点击输入法推荐单词的第一个,它可能会陷入推荐同一个词的循环中,只有你点击第二或第三个推荐词,才能跳出这种循环。同样的,GPT-2 也有一个叫做「top-k」的参数,模型会从概率前 k 大的单词中抽样选取下一个单词。显然,在之前的情况下,top-k = 1。

        接下来,我们将输出的单词添加在输入序列的尾部构建新的输入序列,让模型进行下一步的预测: 

       第二个单词的路径是当前唯一活跃的路径了。GPT-2 的每一层都保留了它们对第一个单词的解释,并且将运用这些信息处理第二个单词(具体将在下面一节对自注意力机制的讲解中详述),GPT-2 不会根据第二个单词重新解释第一个单词。 

3.GPT-2的改进

        1. 去掉了fine-tuning层:只有无监督的pre-training阶段,不再针对不同任务分别进行微调建模,而是不定义这个模型应该做什么任务,模型会自动识别出来需要做什么任务。这就好比一个人博览群书,你问他什么类型的问题,他都可以顺手拈来,GPT-2就是这样一个博览群书的模型。学习的是一个通用NLP模型。

        2. 增加数据集:GPT-2使用了更加广泛,数量更多的语料组成数据集。GPT-2的文章取自于Reddit上高赞的文章,命名为WebText。数据集共有约800万篇文章,累计体积约40G。为了避免和测试集的冲突,WebText移除了涉及Wikipedia的文章。这些数据是经过过滤后得到的高质量文本。GPT2需要的是带有任务信息的数据

        3. 增加网络参数:GPT-2将Transformer堆叠的层数增加到48层,隐层的维度为1600,参数量达到了15亿。(5倍于BERT的参数量)。(Bert large是3.4亿)。「小号」12 层,「中号」24 层,「大号」36 层,「特大号」48 层。GPT-2训练了4组不同的层数和词向量的长度的模型。

        4. 调整Transformer:将layer normalization放到每个sub-block之前,并在最后一个self-attention后再增加一个layer normalization。

        5.增加词表:GPT-2将词汇表数量增加到50257个;最大的上下文大小从GPT-1的512提升到了1024 tokens;batch-size增加到512。

4.模型参数

        1.同样使用了使用字节对(BPE)编码构建字典,字典的大小为50257   ;

        2.滑动窗口的大小为1024 ;

        3.batchsize的大小为512;

        4.Layer Normalization移动到了每一块的输入部分,在每个self-attention之后额外添加了一个Layer Normalization;

        5.将残差层的初始化值用\frac{1}{\sqrt{N}}进行缩放,其中N是残差层的个数。

        6.​ GPT-2训练了4组不同的层数和词向量的长度的模型,具体值见表2。通过这4个模型的实验结果我们可以看出随着模型的增大,模型的效果是不断提升的。

参数量层数词向量长度
117M(GPT-1)12769
345M241024
762M361280
1542M481600

5. 总结

        GPT-2的最大贡献是验证了通过海量数据和大量参数训练出来的词向量模型有迁移到其它类别任务中而不需要额外的训练。但是很多实验也表明,GPT-2的无监督学习的能力还有很大的提升空间,甚至在有些任务上的表现不比随机的好。GPT-2表明随着模型容量和数据量的增大,其潜能还有进一步开发的空间。

        当一个大型语言模型被训练在一个足够大和多样的数据集上时,它能够在许多域和数据集上表现良好。在八分之七的测试语言模型数据集上,GPT-2 zero-shot 到最先进的性能。该模型能够在zero-shot setting下执行的任务的多样性表明,经过训练以使文本语料库充分变化的可能性最大化的高容量模型开始学习如何执行数量惊人的任务,而不需要明确的监督。

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

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

相关文章

DDS 信号发生器实验

目录 DDS 信号发生器实验 1、DDS 简介 2、实验任务 3、程序设计 3.1、DDS 顶层模块代码 3.2、clk_wiz IP 核 3.3、ILA IP 核&#xff08;集成逻辑分析器&#xff1a;Integrated Logic Analyzer&#xff0c;ILA&#xff09; 3.4、各波形参考代码 3.4.1、正弦信号波形采…

身份识别与访问管理(IAM)工具

AD360 是一款企业 IAM 解决方案&#xff0c;可帮助管理身份、保护访问并确保合规性。它具有强大的功能&#xff0c;例如自动化身份生命周期管理、安全 SSO、自适应 MFA、基于审批的工作流、UBA 驱动的身份威胁防护和历史审计报告。AD360 直观的界面和强大的功能使其成为满足现代…

行业云统领2023十大技术趋势,新华三把脉数实融合演进路径

“每一年的科技突破与环境变局&#xff0c;有一定的随机性又有一定的必然性&#xff0c;导致人类社会永远处于动态塑形的过程。”中国工程院院士陈晓红在想像未来的技术变化时认为&#xff1a;“无论怎么变化&#xff0c;人类未来图景仍然源于社会生活与经济发展的真实需求”。…

了解MySQL配置文件:位置、结构和选项

目录 1 MySQL配置文件的位置2 MySQL配置文件的结构3 MySQL配置选项4 [mysqld]部分&#xff1a;5 [client]部分&#xff1a;6 MySQL配置文件的重要性7 总结 本文详细介绍了MySQL配置文件的位置、结构和常用选项。了解如何使用MySQL配置文件来管理和配置MySQL服务器的行为和属性。…

5. QT环境下使用OPenCV(基于TCP实现摄像头图像数据的多线程传输)

1. 说明 通常情况下对于图像数据的采集可以放在后端进行,采集到的图像数据如果有需要可以通过通信将数据传输到前端进行显示,这其中需要使用到TCP数据传输协议和QT下的多线程开发技术。QT当中主线程一般是界面层次的,在主线程中执行耗时较长的数据操作,会引起界面的卡顿,…

React学习9 Router6

使用 userRoutes路由表 注册路由 Outlet指定路由组件呈现位置 ***很重要&#xff0c;userNavigate()实现编程式路由导航 函数式组件接收params参数的hook useParams() 接受search参数 接收state参数 userNavigate 实现前进后退 判断是否处于路由组件中&#xff0c;在路由器管理…

网站加密防止拷贝的php域名授权方法

1 public function getdata()2 $method DES-ECB;//加密方法3 $passwd qq496631085;//加密密钥4 $options 0;//数据格式选项&#xff08;可选&#xff09;5 $iv ;//加密初始化向量&#xff08;可选&#xff09;6 $url ba…

双因素身份验证在远程访问中的重要性

在快速发展的数字环境中&#xff0c;远程访问计算机和其他设备已成为企业运营的必要条件。无论是在家庭办公室运营的小型初创公司&#xff0c;还是团队分散在全球各地的跨国公司&#xff0c;远程访问解决方案都能保证工作效率和连接性&#xff0c;能够跨越距离和时间的阻碍。 …

MQTT(二)Java整合MQTT

Java整合MQTT 上一节知道MQTT是一个通信协议&#xff0c;需要一个代理服务Broker&#xff1b;通信设备作为客户端Client&#xff0c;后台系统服务器也作为客户端Client。 经过了解选用EMQX作为代理服务Broker&#xff08;支持WEB界面查看&#xff09; 后台服务使用Spring In…

【教学类-36-01】Midjounery生成的四张图片切片成四张小图

作品展示&#xff1a; 把一张正方形图片的四个等大小图切割成四张图片 背景需求 最近在学习ChatGPT的绘画&#xff08;midjounery AI艺术&#xff09; 我想给中班孩子找卡通动物图片&#xff08;黑白线条&#xff09;&#xff0c;打印下来&#xff0c;孩子们练习描边、涂色…

【发布】ChatGLM2-6B:性能大幅提升,8-32k上下文,推理提速42%

自3月14日发布以来&#xff0c; ChatGLM-6B 深受广大开发者喜爱&#xff0c;截至 6 月24日&#xff0c;来自 Huggingface 上的下载量已经超过 300w。 为了更进一步促进大模型开源社区的发展&#xff0c;我们再次升级 ChatGLM-6B&#xff0c;发布 ChatGLM2-6B 。 在主要评估LLM模…

《C++ Primer》--学习7

顺序容器 容器库概览 迭代器 与容器一样&#xff0c;迭代器有着公共的接口&#xff1a;如果一个迭代器提供某个操作&#xff0c;那么所有提供相同操作的迭代器对这个操作的实现方式都是相同的。 迭代器范围 一个迭代器范围是由一对迭代器表示&#xff0c;两个迭代器分别指向…

剪辑必备技巧:轻松去除视频中的多余物体

在视频剪辑过程中&#xff0c;有时我们需要去除视频中的多余物体&#xff0c;以提升视觉效果和观赏体验。今天将为您介绍一些实用的技巧&#xff0c;帮助您轻松去除视频中的多余物体&#xff0c;让您的剪辑作品更加精彩。 一、选择适当的剪辑软件进行剪辑操作 一些专业的剪辑…

基于MATLAB实现KECA、PCA和KPCA的多阶段发酵过程监测方法毕业设计(完整源码+说明文档+PPT+开题报告+数据)

文章目录&#xff0c;完整源码在文末 1. 研究目标2. 主要研究内容3. 技术路线4. 预期成果5. 功能说明6. 参考文献7. 完整仿真源码下载 1. 研究目标 实现基于KECA的青霉素发酵过程故障监测 2. 主要研究内容 1.针对KPCA监测算法在数据降维过程中簇结构信息丢失的问题&#xff…

BootStrap案例

BootStrap是已经写好的css样式 &#xff08;1&#xff09;下载BootStrap 解压后放在 static文件夹–>plugins(存放插件)–>bootstrap-3.4.1 &#xff08;2&#xff09;使用 在页面上引入BootStrap 编写HTML时&#xff0c;按照BootStrap的规定来编写自定制 开发版本(一…

Web服务器群集:部署LNMP平台(yum方式安装)

目录 一、理论 1.yum安装与源码安装的区别 二、实验 1.Nginx安装&#xff08;yum方式&#xff09; 2.MySQL安装&#xff08;yum方式&#xff09; 3.PHP安装&#xff08;yum方式&#xff09; 4.Nginx 配置 三、问题 1.客户端 404 报错 四、总结 一、理论 1.yum安装与…

转行网络安全,报班之后就万事大吉了吗?

最近在网上看到很多人问&#xff0c;“是不是报了培训班就可以高枕无忧&#xff0c;坐等毕业之后拿高工资了&#xff1f;”“是不是学了网络安全&#xff0c;就一定能够实现月入过万了&#xff1f;” 其实&#xff0c;无论你是选择网络安全也好&#xff0c;还是选择其他的Java、…

自我管理型团队:企业组织力提升利器

近年来&#xff0c;软件项目的规模和复杂性在以前所未有的速度增长。因此&#xff0c;快速响应需求变化已经成为互联网行业的常态。在这样的环境下&#xff0c;软件产品的快速开发和迭代对于公司迅速占领市场、抢占商机来说具有至关重要的意义。 所以&#xff0c;越来越多的研…

Mysql高阶语句(二)

Mysql高阶语句&#xff08;二&#xff09; 1、别名2、子查询3、EXISTS4、连接查询5、CREATE VIEW 视图6、UNION 联集7、交集值8、无交集值9、CASE10、算排名12、算累积总计13、算总合百分比14、算累计总合百分比15、空值&#xff08;null&#xff09;和无值&#xff08;’’&am…

大中型灌区信息化监测系统-智慧灌区

系统概述 大中型灌区信息化监测系统主要对对灌区的水情、雨情、土壤墒情、气象等信息进行监测&#xff0c;对重点区域进行视频监控&#xff0c;同时对泵站、闸门进行远程控制&#xff0c;实现了信息的测量、统计、分析、控制、调度等功能。为灌区管理部门科学决策提供了依据&a…