NLP预训练模型-GPT-3

NLP预训练模型


系列文章

1. BERT

2. GPT

3. GPT-2

4. GPT-3


目录

NLP预训练模型系列文章

文章目录

前言

1. Abstract

2. Introduction

3. Approach

3.1 模型和架构

3.2 训练数据集

 3.3 训练过程

3.4 评估

4. Results

总结





前言

Open AI GPT-3最近在科技界引起轩然大波。这个巨大的语言模型看上去已经具备了一定的语言创作能力了。这篇文章就来看看GPT-3到底做了什么,有多少参数,烧了多少卡才具备这样的令人惊叹的能力。


GPT-3文章的标题是《Language Models are Few-Shot Learners》。它似乎想告诉我们,语言模型在很少的样本下就能学到适用于下游任务的经验。

这篇文章足足有75页...... 这里只是粗略的有所详略的介绍这文章。




1. Abstract

摘要中说到,当前的NLP预训练方法,仍需要下游任务的微调,这需要很多的数据样本,而人类往往可以通过少样本学习完成新的语言任务。而GPT-3可以做少样本学习,我们将语言模型扩大原来的非稀疏模型的10倍,GPT-3这样一个自回归语言模型有1750 亿的参数。我们在few-shot setting下测试模型,所有任务都不进行微调和参数更新,只通过文本和模型交互。GPT-3在很多任务上取得良好性能,包括翻译,问答,完型填空,以及一些需要动态推理或域适应的任务,如词语解读(unscrambling words)。最后,我们发现GPT-3能生成出让人难辨真假的新闻文章。(有点通过图灵测试的味道了)




2. Introduction

        


NLP预训练语言表示的历史:首先是单层表示(word2vec),然后是使用RNN的多层表示(但仍旧是任务相关的架构),再然后是预训练的RNN或Transformer(直接fine-tuned,不需要任务相关的架构)。最后一个范式取得了很多NLP任务的进展,如阅读理解,问答,文本蕴含等。但是这个范式仍然有缺点,即虽然架构是任务无关的,但是数据集是任务相关的,且需要任务相关的fine-tuning。

        移除这些限制是非常需要的,有以下几个原因:

        1. 首先从实用角度,每个新任务都要大量标记样本的数据集限制了语言模型的可用性。

        2. 其次,利用训练数据中的虚假相关性的可能性从根本上随着模型的表达能力和训练分布的狭窄而增加。这会给预训练+微调的范式带来问题,模型被设计的很大,在预训练期间吸收信息,但随后在非常狭窄的任务分布上进行微调。

        3. 人类不需要大的监督数据集来学习大多数语言任务。

        解决这些问题的一个潜在途径是元学习(有时被称为zero-shot transfer),在语言模型的背景下,这意味着模型在训练时发展了广泛的技能和模式识别能力,然后在推理时使用这些能力快速适应或识别所需的任务。最近的工作尝试使用语境学习(in-context learning)来实现这个,即使用预训练语言模型的文本输入作为一种任务说明的形式,模型以自然语言指示为条件(conditioned on a natural language instruction),或者少量的任务样例,期望模型以预测接下来的文本的方式来完成之后的实例。尽管这种方法有一些希望,但是和微调相比还是差很多,显然元学习还需要大量的改进,才能成为解决语言任务切实可行的方法。

        语言模型元学习:语境学习描述的是内循环。NLP预训练模型-GPT-3_第1张图片

        语言模型的另一个趋势是transformer语言模型容量的不断增大,从1亿(GPT)参数到3亿(BERT),到15亿(GPT-2),到80亿(Megatron-LM),到110亿(T5),到170亿(Turing-NLG)。每一次增长都带来了文本合成性能的提升,并且log loss没有平滑的趋势,因为语境学习需要模型参数内吸收许多技能和任务,因此语境学习能力可能在随着规模增长变的更强是合理的。

        因此,这篇文章我们训练一个1750亿参数的自回归语言模型(GPT-3)来验证这一假设,并测试它的语境学习(in-conext leanrning)能力。具体来说,我们在超过24个NLP数据上评估了GPT-3,以及几个用于测试快速适应任务的能力的新任务。

        每个任务,GPT-3都在3中设置下评估:

  •  “few-shot learning/ in-context learning”: 允许尽可能多的演示输入模型的上下文窗口(10~100)。
  • “one-shot learning”: 只允许输入一个演示示例。
  • “zero-shot learning”:没有示例可以输入,只能给模型一个自然语言指示。

注意,GPT-3原则上可以进行fine-tuning测试,但是这里并没有做,可能是因为模型太大微调成本太高。

下图展示了更大的模型能更加充分的利用上下文信息:

NLP预训练模型-GPT-3_第2张图片

        模型性能随着模型上下文示例的数量增加而增长,随着自然语言任务描述的增加而增长。

        总的来说,GPT-3展现了零样本和少样本的设置的很有前景的效果。并且在快速迁移到推理任务上展现了熟练的能力,比如解释词语,执行算术等。并且在少样本设置下,GPT-3能够合成人类难以判断真假的新闻。此外,GPT-3的一些few-shot性能也很挣扎,比如自然语言推理,一些阅读理解数据集。

        后面谈到了数据污染的问题,对多个大小的GPT-3模型进行了比较,讨论了模型的偏见,公平性和社会影响。

3. Approach

GPT-3的基本训练方法,包括模型,数据,训练都类似于GPT-2。只是扩展了模型大小,数据集大小和多样性,训练时长。

几种评估GPT-3的设置的直观展示如下所示:

NLP预训练模型-GPT-3_第3张图片

3.1 模型和架构

和GPT-2相同,报告修改版的初始化,前置normalization,可逆分词,但是将transformer中attention替换成了Sparse Transformer的稀疏注意力。训练了8个不同大小的模型:

NLP预训练模型-GPT-3_第4张图片

3.2 训练数据集

使用Common Crawl数据集(几乎包含整个互联网的数据),进行了3步过滤操作,增加了一些高质量数据集,最终版的混合数据集输入。

NLP预训练模型-GPT-3_第5张图片

 3.3 训练过程

NLP预训练模型-GPT-3_第6张图片

3.4 评估

对于few-shot learning,我们从任务训练集中随机抽取K个样本作为condition,用换行符分隔。

4. Results

性能(cross-entropy valid loss)随着计算量成幂律趋势。

NLP预训练模型-GPT-3_第7张图片

评估结果:

PTB数据集:

NLP预训练模型-GPT-3_第8张图片

问答和补全任务的结果:

NLP预训练模型-GPT-3_第9张图片

TriviaQA数据集:

NLP预训练模型-GPT-3_第10张图片

 翻译任务:

NLP预训练模型-GPT-3_第11张图片

 NLP预训练模型-GPT-3_第12张图片

 Windograd-Style tasks(确定语法上有歧义语义上无歧义的代词指代):

NLP预训练模型-GPT-3_第13张图片

NLP预训练模型-GPT-3_第14张图片

 常识推理:

NLP预训练模型-GPT-3_第15张图片

 阅读理解:

NLP预训练模型-GPT-3_第16张图片

NLP预训练模型-GPT-3_第17张图片

NLP预训练模型-GPT-3_第18张图片

 自然语言推理:

NLP预训练模型-GPT-3_第19张图片

 综合定性任务:

NLP预训练模型-GPT-3_第20张图片

NLP预训练模型-GPT-3_第21张图片

NLP预训练模型-GPT-3_第22张图片

 NLP预训练模型-GPT-3_第23张图片

新闻生成:

NLP预训练模型-GPT-3_第24张图片

 NLP预训练模型-GPT-3_第25张图片

 NLP预训练模型-GPT-3_第26张图片

 例子:

NLP预训练模型-GPT-3_第27张图片

 NLP预训练模型-GPT-3_第28张图片NLP预训练模型-GPT-3_第29张图片

 后续部分讨论了GPT-3的限制和广泛的影响。



 



总结

GPT-3毫无疑问是NLP领域乃至AI领域取得重大突破的一项工作,1750亿参数的超大规模,使得语言模型具备了生成难辨真假的新闻文章的能力。此后,人工智能将不会显得那么的智障了,而将真正的展现出一定的智能。

你可能感兴趣的:(NLP,机器学习,python,自然语言处理)