LM详解 GPT3,GPT2, GPT1 论文译读
T5,Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer,2019
arxiv https://arxiv.org/abs/1910.10683
中译 https://zhuanlan.zhihu.com/p/89719631
讨论 https://www.zhihu.com/question/352227934
摘要
迁移学习是一种在自然语言处理中强大的技术,模型首先要针对数据丰富的任务进行预训练,然后再
针对下游任务进行微调。本文通过引入统一的框架来探索NLP迁移学习技术的前景:将问题都转换为
text-to-text 格式,并在数十种语言理解任务研究比较了预训练目标,架构,未标记的数据集,
迁移方法和其他因素。结合实验所得以及 C4 数据集,在许多基准上获得了最新的结果,这些基准
涵盖了摘要,问题回答,文本分类等等。
大部分问题可以转变为QA。
GPT-3, Language Models are Few-Shot Learners,(FSL)
摘要
通过对大量文本进行预训练,然后对特定任务进行微调,最近的工作证明了在许多NLP任务和基准方面的
巨大收益。尽管在架构上通常与任务无关,但是此类方法仍然需要特定于任务的微调数据集,该数据集包
含成千上万个示例。相比之下,人类通常能够通过几个示例或简单的指令来执行新的语言任务,而当前的
NLP系统在很大程度上仍难以做到这些。
我们在这里表明,扩张语言模型规模可以极大地提升任务无关的少样本学习性能,有时甚至达到可以跟
先前微调SOTA相媲美的性能。具体来说,我们训练了GPT-3,具有1750亿参数的自回归语言模型,这比
以前的任何非稀疏语言模型大10倍,并在少样本学习的设置下测试其性能。所有任务应用GPT-3模型时
均不进行任何梯度更新或微调,而只是通过与模型的文本交互指定任务和少样本学习演示。 GPT-3在
许多NLP数据集上均具有出色的性能,包括翻译,问题解答和完形填空,以及一些需要即时推理或领域
适应的任务,例如解读词语,新词使用,算术运算。但是,我们还确定一些数据集,GPT-3的少样本
学习仍然困难重重;以及一些数据集,GPT-3面临与训练大型Web语料库有关的方法论问题的。
最后,我们发现GPT-3可以生成新闻文章的样本,人类评估很难将其与人类撰写的文章区分开来。我们
将讨论这一发现以及GPT-3的广泛社会影响。
1 导论
-
-
-
在本文中,通过训练1750亿个参数自回归语言模型,我们称为GPT-3,检验该假设,并测量其在上下文
中的学习能力来。具体来说,我们在超过两打NLP数据集上评估了GPT-3,以及几个设计的新颖任务,
旨在测试快速适应哪些不太可能直接包含在训练集中任务的能力。对于每项任务,我们在3种条件下评
估GPT-3: (a)少样本学习或情境学习(in-context learning),我们允许尽可能多的演示填充模型的
上下文窗口(典型为10-100),(b)“单样本学习”,我们只允许一个演示;以及(c)“零样本学习”,
不允许演示,并且仅向模型提供自然语言的指令。 GPT-3原则上也可以在传统的微调设定中进行评估,
但我们将其留待以后的工作。
-
图 1.2 说明了我们研究的条件,并显示了对简单任务的少样本学习,该任务要求模型从单词中删除多余的
符号。通过添加自然语言任务描述以及模型上下文中的示例数量,模型性能得以改善。少样本学习也随模型
大小而急剧提升。尽管在这种情况下的结果特别引人注目,但是对于我们研究的大多数任务,模型大小和
上下文中示例数量的总体趋势仍然适用。我们强调,这些“学习”曲线不涉及梯度更新或微调,而只是增加
了作为条件的演示数量。
广义上讲,在NLP任务上,GPT-3在零样本学习和单一样本学习设置中取得了可喜的结果,而在少样本学习
中,有时甚至可以与最先进的SOTA竞争,甚至超越(尽管SOTA是由微调模型取得的)。例如,GPT-3在
零样本设置下在CoQA上F1达到81.5 ,在单一样本学习下在CoQA上 F1达到84.0,在少样本设置下 F1
达到85.0。同样,GPT-3在零样本设置下的TriviaQA上达到64.3%的准确度,在单一样本设置下达到68.0%,
在少样本设置下达到71.2%,最后一个是SOTA结果,相对于在运行在同样闭卷设置的微调模型。
GPT-3在旨在测试快速适应性或即时推理的任务上也能显示出单样本或少样本学习能力,包括解读单词,
执行算术运算,及在句子中使用仅看到一次定义的新颖单词。我们还显示,在少样本学习设置下,
GPT-3可以生成人工合成的新闻文章,人类评估人员很难将其与人工写作的文章区分开。
同时,即使在GPT-3的规模上,我们也发现了少样本学习性能表现差任务。这包括自然语言推理任务
(例如ANLI数据集)和一些阅读理解数据集(例如RACE或QuAC)。通过展示GPT-3的优点和缺点的
广泛特征,包括这些局限性,我们希望能激发对语言模型的少样本学习的研究,并吸引注意最需要进步
的地方。
可以从图看出启发性的整体结果 1.3中 ,它汇总了各种任务(尽管它本身不应被视为严格或有意义的基准)。
-
我们还对“数据污染”进行了系统的研究-当在诸如Common Crawl之类的数据集上训练高容量模型时,
这是一个日益严重的问题,这可能潜在地包含来自测试数据集的内容,因为这些内容通常存在于网络上。
在本文中,我们开发了系统的工具来测量数据污染并量化其失真影响。尽管我们发现数据污染对大多数
数据集的GPT-3性能影响不大,但我们确实确定了一些可能夸大结果的数据集,并且我们没有报告这些
数据集的结果,或者用星号标记它们,根据严重程度而定。
除上述所有功能外,我们还训练了一系列较小的模型(从1.25亿个参数到130亿个参数),以便将其在
零样本,单一样本和少样本设置下的性能与GPT-3进行比较。概括地说,对于大多数任务,我们发现在
所有三种设置下,模型容量都可以相对平滑地缩放。一个值得注意的模式是零样本,单一样本和少样本
性能之间的差距通常随模型容量而增大,这可能表明较大的模型是更熟练的元学习者。
最后,鉴于GPT-3显示的广泛功能,我们讨论了有关偏见,公平和更广泛的社会影响的担忧,并尝试就此
方面对GPT-3的特征进行初步分析。
本文的其余部分组织如下。第2节 ,我们描述了训练和评估GPT-3的方法和方法。第3节介绍了零样本,
单一样本和少样本设置下所有任务的结果。第4节解决了数据污染(火车测试重叠)的问题。第5节讨论了
GPT-3的局限性。第6节讨论了更广泛的影响。第7节回顾了相关工作,第8节总结。
2 方法
我们的基本预训练方法(包括模型,数据和训练)与GPT-2[RWC+19]中描述的过程相似,只是相对直接地
扩大了模型大小,数据集大小和多样性以及训练时间。我们在上下文学习中的使用也类似于[RWC+19],
但是在这项工作中,我们系统地探索了在上下文中进行学习的不同设置。因此,我们从明确定义和对比
不同设置展开本节,评估GPT-3模型或原则上评估GPT-3模型。这些设置可以看作是依赖光谱,
展示模型多大程度上倾向于依赖特定任务的数据。
具体来说,我们至少可以识别光谱上的四个点(请参见Figure 2.1 ):
-
•微调(FT)是近年来最常用的方法,包括通过以下方式更新预训练模型的权重:在特定于所需任务的监督
数据集上进行训练。通常使用成千上万的标签样本。微调的主要优点是在许多基准上均具有出色的性能。
主要缺点是需要为每个任务使用新的大型数据集,分布以外的潜在较差泛化[MPL19],潜在利用训练数据
的虚假特征[GSL+18, NK19],,潜在导致与人类表现的不公平比较。本文我们不会微调GPT-3,因为我们聚焦
与任务无关的性能,但是GPT-3原则上可以微调,这是未来工作的有希望的方向。
•少样本(FS)是我们在这项工作中使用的术语,是指模型设置条件,在推理时只给模型少量的示例任务样本
[RWC+19],但不允许权重更新。如图所示 2.1 ,典型的数据集,示例具有上下文和所需的结果
(例如英语句子和法语翻译),少样本的工作条件是K个上下文示例样本和结果,然后是一个最终上下文样本,
及模型被期望提供的结果。我们通常将K设置在10到100的范围内,因为这是模型的上下文窗口可以容纳
多少示例( = 2048)。少样本的主要优点是,大大减少了对特定于任务的数据的需求,并减少了从庞大但
狭窄的微调数据集中学习过窄分布的可能性。主要的缺点是,到目前为止,这种方法的结果要比SOTA微调模
型差很多。同样,仍然需要少量的任务特定数据。顾名思义,此处针对语言模型描述的少样本学习与其他
上下文中使用的少样本学习ML [HYC01, VBL+16]——都涉及基于广泛任务分配的学习(在这种情况会隐含
在预训练数据中),并迅速适应新任务。
•单样本(1S)与少样本相同,除了对任务的自然语言描述外,仅允许一个示例样本,如Figure 1.所示。区分
单样本、少样本和零样本(下述)的原因是,它与某些任务传达给人类的方式最接近。例如,当要求人员生成
有关人员服务(例如Mechanical Turk)的数据集时,通常会对此任务进行一次示例。相反,如果没有给出示例,
则有时很难传达任务的内容或格式。
•零样本(0S)与单样本相同,不同之处在于不允许示例样本,并且仅向模型提供了描述任务的自然语言指
令。这种方法提供了最大的便利性,潜在鲁棒性,避免了虚假相关(除非它们广泛分布在预训练数据中),
但这也是最具挑战性的设置。在某些情况下,如果没有先前的示例样本,对于人类来说甚至可能很难理解
任务的格式,因此在某些情况下,这种设置是“不公平的”。例如,如果有人要求“为200m短跑创建一个
世界记录表”,则此请求可能会模棱两可,因为可能不清楚该表应采用何种格式或应包含什么格式
(即使进行了仔细的说明,也很难准确地了解所需的内容)。但是,对于至少某些设置,零样本最接近
人类执行任务的方式——例如,在 Figure 2.1中的翻译示例, 人类可能仅会从文本指令中知道要做什么。
Figure 2.1 以将英语翻译为法语的示例显示了四种方法。在本文中,我们将重点放在零样本,单一样本
和少零样本上,目的是进行比较,而不是将它们作为竞争替代品,而是作为不同的问题设置进行比较,
这些问题提供了特定基准性能与样本效率之间的不同权衡。我们特别强调一下少样本学习结果,因为其
许多结果仅稍微落后于SOTA微调模型。然而,最终,单一样本,甚至有时是零样本,似乎是对人类绩效
的最公平的比较,并且是未来工作的重要目标。
下文第2.1 - 2.3节 将分别详细说明模型,训练数据和训练过程。第2.4节讨论了如何进行少样本、单样本
和零样本评估的细节。
2.1 模型和架构
我们使用与GPT-2 相同的模型和架构 [RWC+19],包括其中修改的初始化,预归一化和其中描述的可逆分词,
不同之处是我们在Transformer的各层中交替使用稠密和局部带状稀疏注意力模式,类似于稀疏Transformer
[ CGRS19 ]。为了研究ML性能对模型大小的依赖性,我们训练了8种不同大小的模型,范围从1.25亿参数到
1,750亿参数,超过三个数量级,最后一个模型称为GPT-3。先前的工作[ KMH + 20 ]建议,在有足够的训练
数据的情况下,验证损失的缩放比例应近似为平滑幂律(power law as a function of size);许多不同规模
的训练模型使我们能够针对验证损失和下游语言任务测试假设。
-
-
Table-2.1 显示了我们8种模型的大小和架构。这里数是可训练参数的总数,是总层数,
是每个瓶颈层的单元数(我们总是将前馈层设为瓶颈层大小的四倍, ),
是每个注意头的维度。所有模型都使用 个符号的上下文窗口。我们沿着深度和宽度维度
在GPU上划分模型,最小化节点之间的数据传输。基于计算效率和跨GPU的模型布局的负载平衡来选择
每个模型的精确架构参数。先前的工作[ KMH + 20 ]表明,验证损失对这些参数在相当宽的范围内并不
强烈敏感。
2.2 训练数据
语言模型的数据集已经迅速扩展,最终达到了的Common Crawl数据集 [ RSR + 19],包含近一万亿个单词。
庞大的数据集足以训练我们最大的模型,甚至不需要在同一序列上进行两次更新。但是,我们发现,
与经过精心挑选的数据集相比,未经过滤或经过轻微过滤的Common Crawl版本的质量往往较低。
因此,我们采取了3个步骤来提高数据集的平均质量:
(1)我们根据与一系列高质量参考语料库的相似性下载并过滤了CommonCrawl版本,
(2)我们在文档级执行了模糊去重,以防止冗余并保留我们另外验证集的完整性,以作为过拟合的
准确度量;
(3)我们还向训练组合中添加了已知的高质量参考语料库,以增强CommonCrawl并增加其多样性。
附录中描述了(1)(2)的详细信息(处理CommonCrawl) 。第(3)点,我们添加了一些精选的高质量
数据集,包括扩展版WebText数据集[RWC+19],它是通过较长时间链接收集的,并且首先在
[ KMH + 20 ]中进行了介绍,两个互联网基于书籍的语料库(Books1和Books2)和英语Wikipedia。
-
Table 2.2 显示了我们在训练中使用的数据集的最终混合。 CommonCrawl数据是从2016年至2019年的每月
CommonCrawl的41个分片中下载的,构成了过滤前的45TB压缩明文和过滤后的570GB,大致相当于
4000亿字节对编码的分词符号。请注意,在训练过程中,并非按大小比例对数据集进行采样,而是对我们
视为更高质量的数据集进行更高频采样,例如CommonCrawl和Books2数据集在训练期间的采样次数少于一次,
而其他数据集则采样2 -3次。从本质上讲,这会接受少量的过度拟合,以换取更高质量的训练数据。
在大量互联网数据上进行预训练的语言模型,尤其是具有大量内容的记忆能力的大型模型,主要的方法学
问题是在预训练过程中无意中看到了它们的测试集或开发集,从而可能污染下游任务。为了消除这种污染,
我们寻求并尝试消除与本文研究的所有基准测试的开发和测试集的任何重叠。不幸的是,过滤中的错误导致
我们忽略了一些重叠,并且由于训练的成本,重新训练模型是不可行的。在第4节中, 我们将描述其余
重叠的影响,在将来的工作中,我们将更积极地消除数据污染。
2.3训练过程和细节
如[ KMH + 20 , MKAT18 ]中所述,较大的模型典型使用较大的训练批次大小,但需要的学习率较小。
我们在训练过程中测量梯度噪声标度,并用它来指导我们选择批次大小[ MKAT18 ]。Table 2.1 显示了
我们使用的参数设置。为了在不耗尽内存的情况下训练更大的模型,我们在每个矩阵乘法中使用
模型并行性,并在网络各层中使用模型并行性。所有模型都在Microsoft提供的高带宽群集中的V100
GPU上进行了培训。训练过程和超参数设置的详细信息在附录进行了描述 B中 。
-
2.4评估
对于少样本学习,我们通过从任务训练集中随机抽取K个示例作为条件来评估评估集中的每个示例,根据任务
以1或2个换行符分隔。对于LAMBADA和Storycloze,没有可用的监督训练集,因此我们从开发集中提取条件
示例,并在测试集上进行评估。对于Winograd(原始版本,而不是SuperGLUE版本),只有一个数据集,因
此我们直接从中获取条件示例。
K可以是0到模型上下文窗口允许的最大值之间的任何值,所有模型,通常适合10到100个示例。
通常,较大的K值通常但不一定总是较好的,因此,当有单独的开发和测试集可用时,我们会在开发集上尝试
几个K值,然后在测试集上运行最佳值。对于某些任务(请参阅附录 G ),除了样本(或对于K = 0,作为代替)
,我们还使用自然语言提示。
对于涉及从多个选项中选择一个正确完成(多项选择)的任务,我们提供了K个上下文加上正确完成的示例,
后面仅提供了一个示例,然后比较每个完成的LM可能性。对于大多数任务,我们会比较每个令牌的可能性
(对长度进行归一化),但是在少数数据集(ARC,OpenBookQA和RACE)上,
通过每次结果的无条件概率进行归一化,我们在开发集上获得了额外的收益通过计算,
P(completion|context)/P(completion|answer_context)。其中answer context是字符串“ Answer:”
或“ A:”,用于提示结果应该是一个答案,但通常是通用的。
对于涉及二分类的任务,我们给选项赋予更多语义上有意义的名称(例如,“ True”或“ False”,而不是0
或1),然后将任务视为多项选择;有时,我们还会将任务的框架设计为类似于[ RSR + 19 ](请参见附录 G )
所执行的操作,以获取详细信息。
对于具有自由形式完成的任务,我们使用与[RSR + 19 ]相同的参数的集束搜索 :集束宽度为4,长度惩罚
。我们根据现有数据集的标准,使用F1相似性评分,BLEU或完全匹配对模型评分。
对于每种模型尺寸和学习设置(零,一次和少样本),最终结果都会在测试集上公开发布,并在测试集
上报告。当测试集为私有时,我们的模型通常太大而无法容纳在测试服务器上,因此我们在开发集上报告
结果。我们确实在少数能够完成提交工作的数据集(SuperGLUE,TriviaQA,PiQa)上提交给测试服务器,
并且仅提交了200B的少量结果,并报告了其他所有内容的开发集结果。
3结果
-略。
GPT-3 源代码
GPT-3 Language Models are Few-Shot Learners
https://arxiv.org/abs/2005.14165
https://github.com/openai/gpt-3
GPT-3阅读笔记 https://zhuanlan.zhihu.com/p/200978538
GPT-3论文翻译 https://zhuanlan.zhihu.com/p/144597974
==========================================================
GPT-2, Language Models are Unsupervised Multitask Learners, (ZSL)
摘要
自然语言处理任务(例如问题解答,机器翻译,阅读理解和总结)典型方法是通过在任务相关的数据集上进行
监督学习。我们证明,语言模型在没有任何明确监督的情况下开始学习这些任务,训练数据集为数百万个网页
的新数据集WebText。当以文档加问题为条件时,语言模型生成的答案在CoQA数据集上F1达到55-在不使用
127,000多个训练数据的情况下,可以匹配或超过4个基准系统其中3个的性能。
语言模型的能力对零样本学习任务迁移成功至关重要,并且提高其性能可以对数线性方式跨越任务。我们最大
的模型GPT-2是一个15亿参数的Transformer,在零样本设置下,在8个语言模型数据集中的7个取得SOTA结果,
但仍然欠拟合WebText数据集。该模型的样本反映了这些改进,并包含了连贯的文本段落。这些发现为构建语言
处理系统提供了一条有前途的道路,该系统将从自然发生的演示中学习执行任务。
2 方法
我们方法的核心是语言建模。语言建模通常被框架化为来自一组样本的无监督分布估计。由于语言具有
天然的顺序排列,因此通常将符号上的联合概率分解为条件概率的乘积(Jelinek&Mercer, 1980)
(Bengio , 2003):
-
这种方法允许可处理的采样和估计p(x)以及任意条件概率p。近年来,可以计算这些条件概
率的模型表达方式有了重大改进,诸如Transformer之类的自注意式架构(Vaswani, 2017)。
学习执行单个任务可以在概率框架下表示为估计条件分布p(output|input)。由于通用系统应能够执行
许多不同的任务,即使对于相同的输入,因此它不仅以输入为条件,还应以执行的任务为条件。
也就是说,它应该建模p(output|input; task)。在多任务和元学习设置下已经存在多种形式建模。
任务条件通常在架构级别实施,例如特定于任务的编码器和解码器(Kaiser, 2017年),或者在算法级别,
例如内部和外部循环优化框架MAML(Finn,2017)。但正如例子所言(McCann,2018),
语言提供了一种灵活的方式来将任务,输入和输出指定为一系列符号。例如,翻译训练样本可以标记为
序列(translate to french, english text, french text)。同样,阅读理解训练样本可以标记为
(answer the question, document, question, answer)。(McCann, 2018)证明了可以训练单个模型
MQAN,来推断和执行具有此类格式的样本的许多不同任务。
原则上,语言建模也能够学习(McCann, 2018)的任务,而无需明确监督——哪些符号是要预测的输出。
由于有监督目标与无监督目标相同,只是评估序列的子集,因此无监督目标的全局最小值也是
有监督目标的全局最小值。在这种略微的玩具设置中,将密度估计作为主要训练目标的讨论
在(Sutskever, 2015年)中被避开。问题变化为,实践中,我们是否能够优化无监督目标以实现收敛。
初步实验证实,足够大的语言模型可以在这种玩具般的设置中执行多任务学习,但学习速度
要比明确监督的方法慢得多。
尽管从上述适当设置到“野外语言”的混乱是一大步,但(Weston,2016年)认为,在对话的
上下文中,需要开发能够直接从自然语言中学习的系统,并演示了概念验证——通过使用教师输出的前向
预测来学习没有报仇信号的QA任务。尽管对话方式是一种有吸引力的方法,但我们担心它过于严格。
互联网包含大量信息,这些信息可以被动地获得,而无需进行交互通信。我们的推测是
,有足够能力的语言模型,能够学习推断和执行以自然语言顺序演示的任务,以便更好地预测
它们,而与其获取方式无关。如果语言模型能够做到这一点,实际上在执行无监督的多任务学
习。通过分析语言模型在零样本设置下各种任务上的性能,我们测试是否是这种情况。
2.1 训练数据集
多数先前的工作是在单个文本域上训练语言模型,例如新闻文章(Jozefowicz, 2016),维基百科
(Merity,2016)或小说书籍(Kiros, 2015)。我们的方法鼓励建立尽可能大型、不同种类的数
据集,以便在尽可能多的领域和环境中收集任务的自然语言演示。
Web爬取(Common Crawl)是多种多样且几乎无限文本的一个有希望的来源。尽管这些档案
比当前的语言建模数据集大许多数量级,但它们存在重大的数据质量问题。(Trinh&Le 2018)
在常识推理工作中使用了Common Crawl,但指出大量文档“其内容大多难以理解”。在使用
Common Crawl进行的初始实验中,我们观察到了类似的数据问题。Trinh&Le 2018)的最佳结
果是使用Common Crawl的一小部分子样本实现的,该子样本仅包含最类似于其目标数据集
Winograd Schema Challenge的文档。尽管这是一种提高特定任务性能的实用方法,但我们想要
避免在执行任务之前做出假设。
取而代之,我们创建了一个新的网络抓取工具,注重文档质量。为此,我们只抓取经过人类
策划/过滤的网页。手动过滤完整的Web抓取将非常昂贵,因此,作为一个起点,我们从社交媒体
平台Reddit抓取了所有出站链接,至少获得了3个推荐。可以将其视为用户是否发现链接有趣,
有教育意义或仅仅是有趣的启发式指示器。
结果数据集WebText包含这4500万个链接的文本子集。为了从HTML响应中提取文本,我们组合使
用了Dragnet(Peters&Lecocq, 2013年)和Newspaper 内容提取器。本文介绍的所有结果均使
用WebText的初步版本,该版本不包含2017年12月之后创建的链接,并且在重复数据删除和基于
启发式的清理之后,该链接包含略超过800万份文档,总计40 GB的文本。我们从WebText中删除
了所有Wikipedia文档,因为它是其他数据集的通用数据源,并且由于将培训数据与测试评估任务
相重叠而可能使分析复杂化。
2.2 输入表示
通用语言模型LM应该能够计算(也能生成)任何字符串的概率。当前的大型LM包括一些预处理步骤,
小写字母,分词,词汇表外符号,限制可建模字符串的空间。在将Unicode字符串作为UTF-8字节序列
处理时,优雅地满足了这一要求,例如(Gillick 2015年)的工作,目前在大规模数据集
One Billion Word Benchmark上,字节级LM无法同单词级LM竞争 (Al-Rfou , 2018)。
我们自己尝试在WebText上训练标准字节级LM的尝试中,我们观察到了类似的性能差距。
字节对编码(Byte Pair Encoding,BPE)(Sennrich et al., 2015) 是字符和单词级语言建模之间的
实用中间地带,可有效地在单词级输入的频繁符号序列和字符级输入的不频繁符号序列之间进行插值。
尽管其名称,参考BPE实现通常在Unicode代码点而不是字节序列上运行。这些实现将需要包括
Unicode符号的全部空间,以便为所有Unicode字符串建模。在添加任何多符号标记之前,这将导致
基本词汇量超过130,000。与BPE经常使用的32,000到64,000分词词汇表相比,这个数目太大了。
相反,BPE的字节级版本仅需要大小为256的基本词汇表。但是,由于BPE使用基于贪婪频率的启发式方法
来构建分词词汇表,因此直接将BPE应用于字节序列会导致次优合并。我们观察到BPE包括很多常见
单词(如dog)的版本,因为它们以多种形式出现,例如dog。狗!狗? 。这导致有限的词汇空位和
模型容量的次优分配。为避免这种情况,我们阻止BPE在任何字节序列的字符类别之间进行合并。我
们为空格添加了一个例外,该例外可显着提高压缩效率,同时仅在多个vocab分词之间添加最小的
单词碎片。
这种输入表示形式使我们可以将单词级LM的经验优势与字节级方法的一般性结合起来。由于我们
的方法可以将概率分配给任何Unicode字符串,因此我们可以在任何数据集上评估LM,和预处理,
分词或vocab大小无关。
2.3 模型架构
我们的LM使用Transformer基础架构(Vaswani, 2017)。该模型大致遵循了OpenAI
GPT模型的细节(Radford, 2018),并做了一些修改。移动LayerNorm到每个子块的输入,
类似于激活前的残差网络(He ,2016),增加额外的LayerNorm到最终的自注意块之后。
修改了初始化,考虑残差路径在模型深度上的累积。在初始化时按的比例缩放残差层的权重,
其中N是残差层的数量。词汇表已扩展到50,257。我们还将上下文大小从512个增加到1024个标记,
并且使用了更大样本的训练批次512。
3.实验
我们以近似对数均匀间隔的大小训练了四个LM,并对它们进行了基准测试。Table 2 总结了这些体系结
构。最小的模型等效于原始GPT,第二最小的模型等效于BERT的最大模型(Devlin, 2018)。
我们最大模型称为GPT-2,比GPT具有更多数量级的参数。手动调整每种模型的学习率,以在5%
的WebText样本中获得最佳的困惑度。所有模型在WebText数据集上仍然欠拟合,通增加更多
训练时间,一直维持的困惑度得到了改善。
-
3.1 语言建模
作为迈向零样本任务迁移的第一步,我们有兴趣了解WebText LM零样本域迁移在主要训练任务上
如何执行——语言建模。由于我们的模型在字节级别上运行,并且不需要有损的预处理或分词,
因此我们可以用任意语言模型基准进行评估。语言模型数据集上的结果通常以每个规范预测单位
(通常是字符,字节或单词)的平均负对数概率的缩放或幂形式来报告。我们通过根据WebText LM
计算数据集的对数概率并除以规范单位数来评估相同数量。对于许多这些数据集,WebText的LM将
被测试显著outof- distribution,具有预测积极标准化文本,标记化伪影,例如断的开标点符号和收缩,
打乱的句子,甚至字符串
我们在表报告了我们的主要结果结果3中,这些使用了可逆的去令牌器,它们消除了尽可能
多的这些令牌化/预处理工件。由于这些去令牌器是可逆的,因此我们仍然可以计算数据集的对数概
率,并且可以将它们视为域自适应的一种简单形式。使用这些去分词器,我们发现GPT-2的困惑度
提高了2.5到5。
WebText LM可以在域和数据集之间很好地传输,从而在零镜头设置下改善了8个数据集中的7个数
据集的最新状态。在小型数据集(例如Penn Treebank和WikiText-2)上发现了很大的进改,这些数
据集只有1到2百万个训练令牌。在为测量长期依赖性而创建的数据集(如(上也注意到了很大的改
进LAMBADAPaperno等人, 2016)和儿童图书测试(Hill等人, 2015))。我们的模型仍然比先前在
“十亿字基准”研究上的工作要差得多(Chelba等, 2013)。这可能是由于它既是最大的数据集又具
有一些最具破坏性的预处理功能的组合-1BW的句子级改组删除了所有远程结构。
以下是具体测试。
6.讨论
许多研究致力于学习(Hill, 2016),理解(Levy&Goldberg, 2014)以及批判性评估(Wieting
&Kiela, 2019)有监督和无监督的预训练方法的表示。
我们的结果表明,无监督任务学习是另外一个有希望的研究领域。这些发现可能有助于解释用于下游
NLP任务的预训练技术的广泛成功,因为我们证明,在一定程度上,这些预训练技术之一开始学习
直接执行任务,而无需进行有监督的适应或修改。
在阅读理解上,GPT-2的性能与零样本学习设置下的监督基准竞争。但是,在诸如汇总之类的其他任务
上,虽然它是定性执行任务,但根据定量指标,其性能仍然只是基本的。尽管作为研究结果具有启
发性,但就实际应用而言,GPT-2的零样本学习性能仍远远不能使用。
我们已经研究了WebText LM在许多规范的NLP任务上的零样本学习性能,但是还可以评估许多其他任
务。毫无疑问,在许多实际任务中,GPT-2的性能仍然不比随机性好。即使在我们评估过的常见任
务(例如问题解答和翻译)上,语言模型也只有在具有足够的能力时才开始超越琐碎的基准。
虽然零样本学习性能为许多任务建立了GPT-2潜在性能的基线,但尚不清楚微调的最高限度在哪里。
在某些任务上,GPT-2的完全抽象输出与基于提取指针网络的输出(有很大的不同,基于提取指针网络
Vinyals等人, 2015)的输出目前在许多问题解答和阅读理解数据集上都是最新的。鉴于GPT的微调
已取得成功,我们计划在decaNLP和GLUE等基准上研究微调,尤其是因为尚不清楚额外的训练数据
和GPT-2的能力是否足以克服BERT展示的单向表示的低效率问题。
7.结论
当在足够大和多样的数据集上训练大型语言模型时,它能够在许多领域和数据集上表现良好。
GPT-2对8个经过测试的语言建模数据集中的7个进行了最新性能的零样本学习。该模型能够在零样本设
置下执行的任务的多样性表明,经过训练以使文本语料库充分变化的可能性最大化的高容量模型开
始学习如何执行数量惊人的任务,而无需明确的监督。
GPT 源代码
GPT-2 Language Models are Unsupervised Multitask Learners
https://openai.com/blog/better-language-models/
https://github.com/openai/gpt-2
=============================================================
GPT-1, Improving Language Understanding by Generative Pre-Training,(GPT)
摘要:genertive pre-training到discriminative fine-tuning
自然语言理解包括各种各样的任务,例如文本蕴含,问题回答,语义相似性评估和文档分类。 尽管大型的
未标记文本语料库很丰富,但是学习这些特定任务的标记数据却很少,这使得经过严格训练的模型
难以充分发挥作用。
我们证明,通过在各种未标记文本的语料库上对语言模型进行生成式预训练(GPT,genertive pre-training),
然后对每个特定任务进行判别性微调(DFT,discriminative fine-tuning),这些任务实现了巨大收益。
与以前的方法相比,我们在微调过程中利用了任务感知的输入转换来实现有效的迁移,同时只要求模型架构的
更改最小。
在广泛的自然语言理解基准测试中我们证明了上述方法的有效性。我们通用的任务无关的模型优于
使用专门为每个任务设计的体系的经过严格训练的模型,在12个任务中有9个显著提升了现有技术水平。
例如,我们在常识推理(Stories Cloze Test)上实现了8.9%的绝对改进,在回答问题(RACE)上实现了
5.7%的绝对改进,在文本蕴含(MultiNLI)上实现了1.5%的绝对改进。
3.框架
训练过程包括两个阶段。第一阶段是学习大量文本语料库上的高容量语言模型;第二阶段
是微调,使模型适应带有标签数据的判别性任务。
-
-
3.1无监督预训练
给定无监督的分词语料,使用标准的语言建模目标,最大化似然估计:
, 记为方程1
其中k是上下文窗口的大小,以及条件概率P,这些参数使用随机梯度下降训练。
我们的实验使用多层Transformer解码器作为语言模型,这是Transformer的一种变体。(如Transformer)
模型对输入上下文分词应用多头自注意操作,继之以位置相关前馈层,在目标分词上产生输出分布:
-
U为上下文分词向量,n为层数,W是分词,位置嵌入矩阵。
3.2 有监督微调
在使用方程1训练模型之后,我们将使模型参数适应有监督的目标任务。假设一个标记数据集C,
其中每个实例由一系列输入分词组成X,以及标签y,微调训练数据
获得最终的Transformer-Block的激活,然后喂入线性输出层:
为参数,y是预测值。有以下目标函数:
我们还发现,将语言建模作为微调的辅助目标,有助于通过学习(a)改进监督模型的泛化,
(b)加速收敛。这与先前的工作一致,其他人也观察到使用这种辅助目标可以改善性能。
具体而言,我们优化了以下目标:
总之,在微调期间我们唯一需要的额外参数是 ,以及定界符标记的嵌入(在下面的第3.3
节中进行介绍)。
3.3 特定输入迁移
-
对于某些任务,例如文本分类,我们可以如上所述直接微调模型。
其他任务,例如问题解答或文本蕴含,具有结构化的输入,例如有序句子对、<文档,问题,答案>
三元组。由于我们的预训练模型是在连续的文本序列上训练的,因此我们需要进行一些修改才能
将其应用于这些任务。先前的工作提出了在迁移表示之上的学习任务特定的架构[44]。
这种方法重新引入了大量的特定于任务的定制化,并且不将迁移学习用于这些额外的架构组件。
替代方案,我们使用遍历样式的方法[52],其中将结构化输入转换为我们的预训练模型可以处理
的有序序列。这些输入转换使我们能够避免跨越任务对架构进行大量更改。我们在下面提供了
这些输入转换的简短描述,图1提供了直观的图示。所有转换都包括添加随机初始化的
起始符号和结束符号(,
文本蕴含
对于蕴含任务,我们连接前提p和假设h为符号序列,在在两者之间插入定界符($)。
相似度
对于相似度任务,没有两个被比较句子的固有顺序。为了反映这一点,我们修改了输入序
列以包含两个可能的句子顺序(之间有一个定界符),并分别进行独立处理以产生两个序
列表示 ,它们在被馈送到线性输出层之前逐个元素地添加。
问题解答和常识推理
对于这些任务,我们获得了上下文文档z,问题q和一组可能的答案{a}。我们将文档上下文和
问题与每个可能的答案连接起来,在两者之间添加定界符标记[z; q; $;a ]。这些序列中的
每一个都由我们的模型独立处理,然后通过softmax层进行归一化以在可能的答案上产生输出分布。
4.实验
4.1设置
无监督的预训练。我们使用BooksCorpus数据集训练语言模型。它包含7,000多种不同类
型的未出版书籍,包括冒险,幻想和浪漫。至关重要的是,它包含长段连续的文本,
这使生成模型可以在长范围信息学习条件概率。另一种数据集1B Word Benchmark,
被ELMo以类似的方式使用,其大小大致相同,但在句子级别被打乱-破坏了长范围结构。
我们的语言模型在该语料库上实现了极低的符号级困惑度Perplexity 18.4 。
模型规格(架构)
我们的模型大体遵循原始的Transformer工作。我们训练了12层Transformer解码器,
带有遮挡式自注意头(768维状态,12个自注意头),对于位置前馈网络,我们使用了
3072维内部状态。我们使用Adam优化方案,最大学习率为2.5e-4。在最初的2000次
更新中,学习率从零开始线性增加,并使用余弦学习调度表将其退火为零。
我们在512个符号的连续序列,64个随机采样的小批量上训练100个epochs。
由于layernorm在整个模型中广泛使用,因此简单的权重初始化N(0, 0.02)就足够了。
我们使用字节对编码(BPE)词汇表进行了40,000次合并以及残差,嵌入和注意力比率0.1的Dropout,
用于正则化。我们还采用了[37]中提出的L2正则化的修改版本,所有非偏置或增益
权重均w = 0.01。对于激活函数,我们使用了高斯误差线性单位(GELU)。
我们使用学习的位置嵌入来代替原始工作中提出的正弦形式。我们使用fify库 清理BooksCorpus
中的原始文本,标准化一些标点符号和空格,并使用spaCy标记器。
微调细节
除非另有说明,否则我们将重用来自无监督预训练的超参数设置。我们向分类器添加了0.1
比率的Dropout。对于大多数任务,我们使用的学习率为6.25e-5,批处理大小为32。
我们的模型可以快速进行微调,3个epochs的训练对于大多数情况就足够了。
我们使用线性学习率衰减调度表,预热超过训练时间的0.2%。设为0.5。
4.2有监督的微调
我们对各种有监督的任务进行了实验,包括自然语言推断,问题回答,语义相似性和文本
分类。其中一些任务可作为我们最近使用的GLUE多任务基准测试的一部分获得。Table1
概述了所有任务和数据集。
5.分析
层数转移的重要性
零样本学习行为
消融研究
GPT-1 源代码:
GPT-1 Improving Language Understanding by Generative Pre-Training
https://openai.com/blog/language-unsupervised/
https://github.com/openai/finetune-transformer-lm
==================================
效果惊人的GPT 2.0模型:它告诉了我们什么
https://zhuanlan.zhihu.com/p/56865533
=======================================
Ref
GPT解读(论文 + TensorFlow实现)
https://blog.csdn.net/Magical_Bubble/article/details/89497002
GPT-2解读(论文 + TensorFlow实现)
https://blog.csdn.net/Magical_Bubble/article/details/89499275