当前位置:   article > 正文

GPT-3《Language Models are Few-Shot Learners》

language models are few-shot learners

前言

本篇论文也是由OpenAI提出的大名鼎鼎的GPT-3工作。GPT-3的规模再一次扩大,参数更是达到了175billion,是之前任何一个非稀疏模型的10倍。言简意赅地说,GPT-3是一个 "大力出奇迹"的工作 。GPT-3也在很多自然语言处理任务中,表现的十分出色,比如翻译,问答,推理,数学运算等等。同时,作者也发现GPT-3能够生成一些新闻文章,这些新闻文章人类是很难去分辨到底是人类还是AI生成的,这也算是GPT-3的一大卖点。当然,GPT-3的另一大卖点是不需要任何的梯度更新和微调,这点和之前的语言模型都不同。

当然,作者也就为什么要直接使用预训练的模型,不需要进行微调说了如下几个原因:

  • 第一个原因当然也是从实际应用的角度出发,如果每一个新的下游子任务都需要一个大的带标签的数据集来为我们的模型做微调,这本质上会限制我们的语言模型的应用。事实上,在实际工作中,也存在各种各样的语言任务,我们很难去针对每个特定的任务去做一个有监督的带标签的数据集,特别是,每做一个新任务,就要收集一个新的数据集,这是几乎不可能做到的。
  • 第二个原因是作者认为通过pre-train然后fine-tune出来的模型泛化性能会没那么好,因为这样的模型是过于专门适应训练数据的分布,而并不能很好的泛化训练数据以外的数据。所以作者认为这样的模型在实际表现上会有夸大的表现。
  • 第三点其实是作者认为人类在做大多数语言任务的时候并不需要很多有监督的数据集,只需要一些简短的描述或者一些示例就可以去执行任务。

所以作者在这里把模型直接在预训练的时候训练足够大的、各种各样的数据集,然后不用做微调直接在子任务上应用的学习方式称之为meta-learning, 也叫做 in-context learning。再简单来解释这两个词的意思就是说语言模型在训练的时候就训练出了足够的能力,然后可以在各种任务上得以运用。在做任务的时候,我们可以给出具体的任务描述以及一些指示,和例子,让模型能够根据指示和例子,完成接下来的工作。

在这篇论文中,作者对于指示和例子,是用"prompt"和"shot"这两个单词来阐明的。作者提出了Zero-ShotOne-ShotFew-shot。下图是作者对此进行的实验说明:

在这里插入图片描述
从图中我们可以得到如下几个信息:

  • 参数越大的模型精确率会更好,GPT-3得益于其超多的模型参数,效果远比之前的好
  • 在例子不是很多的情况下,有明确的prompt,模型效果会更好些。
  • Few-shot效果会比Zero-shotOne-shot更好些。

作者同样用如下另外一张图来说明Few-shot表现会更好这个结论。
在这里插入图片描述
从上图可以得出,尽管随着参数的增加,Zero-shot的模型表现已经在快速上升,但是Few-shot的模型表现上升速度更快,精度更高。

设计方案与模型结构

作者主要用一张图来说明刚刚说到的三种不同设置的in-context learning与传统的fine-tuning模型有什么不同。
在这里插入图片描述
从上图我们可以看出传统的fine-tuning模型需要使用大量的数据然后不断地更新梯度来让模型执行任务,但是对于in-context learning而言,并不需要更新梯度,只需要告诉模型任务是什么,可以给一个例子,或者不给例子,又或者给几个例子,来让模型更好的完成任务。

关于模型的架构介绍,作者其实在这里没有用很多的篇幅介绍,只是简要地说明了下是使用了和GPT-2相同的基本架构,那其实GPT-3也采用了Transformer架构,当然也做了一些调整,包括修改过的模型的初始化,预归一化,可逆初始化,以及在Transformer中使用的是交替的密集和局部带状稀疏注意力模式类似于Sparse Transformer

这里想对这几个调整再进一步解释一下,说下自己的理解,如果有不对,还请指出。

  • 修改过模型初始化 :这里是指在模型开始训练的时候对权重和偏差进行特定的初始化,以改善模型的收敛速度和性能。
  • ** 预归一化**: 这里是指在将数据输入模型之前对其进行规范化,以确保数据在不同特征之间具有相似的尺度。这通常有助于提高模型的训练效率。
  • 可逆标化: 这里是指一种将输入文本转换为模型可以处理的数值表示的方法,同时允许从模型的输出重构原始文本。
  • 交替的密集和局部带状稀疏注意力模式:这是指在Transformer的层中使用一种特殊的注意力模式。在标准的Transformer中,每个位置的注意力是密集的,意味着它与输入序列中的每个位置都有关联。然而,原文中作者是使用了一种交替的模式,其中一些层具有密集的注意力,而其他层具有局部带状稀疏的注意力。局部带状稀疏注意力意味着每个位置只与输入序列中的一小部分位置有关联。这种方法通常用于减少计算复杂度和内存需求。

作者也同时制作了有关GPT-3的好几个模型版本,如下图所示:

在这里插入图片描述
我们可以看到关于GPT-3,作者一共是做了8个版本。 n p a r a m s n_{params} nparams是总共可训练的参数, n l a y e r s n_{layers} nlayers是层数, d m o d e l d_{model} dmodel是模型的维度, d h e a d s d_{heads} dheads是注意力机制的维度。值得注意的一点是随着模型的增大,Batch Size 是慢慢增大的,但是学习率是逐渐的减小的。

训练数据集

正如之前在本文中一直提到的那样,训练像GPT-3这样的模型需要巨大的数据集。以下是训练GPT-3模型用到的数据集。

在这里插入图片描述
可以看到GPT-3模型是由Common Crawl,Web Text2, Books1, Books2, Wikipedia组成。 值得注意的是尽管Common Crawl数据集量达到了惊人的410billion,但是在整个训练过程中,只占到了60%权重,作者也说了他们是故意不按照数据集大小比例来训练的,这样做的好处是能确保模型在不同类型的数据上都能保持良好的性能。

实验结论

下图是各种GPT-3三种设置以及在这之前语言模型在补全任务(completion task)上取得的最好的成绩。
在这里插入图片描述
我们可以看到GPT-3几乎在这几个表现上都取得了很不错的表现,当然在StoryCloze,HellaSwag上表现没有超过SOTA,在LAMBADA上超过了SOTA。值得注意的是在Few-Shot设定下,GPT-3表现的是最好的。下图是GPT-3在Lambada上的具体表现。

在这里插入图片描述
根据上图我们可以看出,三种设置的GPT-3都是随着参数增加,在Lambda的表现上精度越来越好。同时,Few-Shot下的GPT-3的表现更加突出,甚至在参数量175B的情况下表现已经接近了人类。我们也完全有理由相信,在计算资源允许的情况下,随着参数量的进一步增长,语言模型的表现是完全可以超过人类的。

在问答任务(QA tasks)中,GPT-3及其他模型取得的表现如下所示:

在这里插入图片描述
我们可以看到在TriviaQAZero-Shot的GPT-3的表现已经超过T5-11B了,以及在Few-Shot上GPT-3的表现再次比Zero-ShotOne-Shot好。

下图是三种不同设置下GPT-3在TriviaQA上的表现。
在这里插入图片描述

可以看到在Few-Shot下,GPT-3的效果是最好的

WebQS上,Few-Shot的GPT3表现已经超过了T5-11B(Fine-tuned, Closed-Book), 也与T5-11B+SSM很接近。与TriviaQA不同的是,在WebQS上,GPT-3在Zero-Shot,One-ShotFew-Shot上增幅更大。

NaturalQS上,GPT-3Zero-Shot达到了14.6%, One-Shot达到了23.0%, Few-Shot达到了29.9%。与在WebQS上相似的是我们可以看到从Zero-ShotFew-ShotGPT-3实现大幅增益,这可能是因为样本数据分布的变化,这也解释了为什么GPT-3相对于其他两个任务,在NaturalQS上表现会差一点。当然还有一个原因是NaturalQS更倾向于问一些非常细颗粒度的知识,特别是在Wikipedia上,这也是在测试GPT-3模型的知识容量和广泛预训练的极限。

由于这篇论文的实验实在太多,受篇幅影响,这里只讲了如上两个任务的结论,其他任务可参考原论文

GPT-3的局限性

在这篇论文中,作者除了提到了GPT-3优秀的表现外,当然也提到了GPT-3目前的局限性,需要后续进一步的探索。

  • 尽管GPT-3相比于GPT-2有了很大的提升,在文本合成还有其他几个NLP任务上存在着一些薄弱。在长篇幅的文章上丧失连贯性,会自相矛盾,偶尔会包含不合逻辑的段落或句子。
  • GPT-3在一些常识性的物理问题上表现出回答困难。尽管在有的数据集上表现的不错,但是大体上来说GPT-3在回答这类问题上都会表现出困难,比如在回答“把一个cheese放进冰箱里,它会不会融化”这个问题的时候。
  • GPT-3在上下文学习上还是会有一些问题。比如在一些比较任务上,判断两个单词在句子中的用法是否相同,以及一些阅读理解任务上,GPT-3的表现只比随机选择会好一些。
  • GPT-3在架构和算法上也同样存在着一些局限性。比如缺乏双向性,以及没有在训练的时候进行去噪处理,这些和最近的一些研究是不同的。这些局限性也会导致GPT-3在某些任务中表现不好,比如填空任务,涉及回头比较两部扥任务等。

作者认为如果制作一个与GPT-3规模相当的双向模型,或者尝试让双向模型与少样本或零样本学习一起工作,也是未来的一个研究方向,可以实现两全其美。

当然作者在原论文中还提到了其他更多的局限性,也需要后续进一步的探索,这里只是仅仅总结了一些主要的点。比如作者在原论文中也提到了还需要提高预训练样本的效率,以及语言模型的可解释性等

GPT-3的影响力

作者在这篇论文中还谈到了GPT-3的社会影响力,包括能帮助人们写代码,写作补全,回答问题,提升搜索响应等,但同样GPT-3如果不被正确使用的话,也会带来一些有害的影响,比如人们不能分辨有的文章到底是人类写的还是它写的。所以作者在这里还特别从性别,宗教,种族,等方面谈论了GPT-3会带来的影响,以及它会产生的问题。

总结

通过这篇论文我们可以发现GPT-3的模型参数,训练数据都是惊人的,以及作者做了大量的实验来说明GPT-3在不同的语言任务上的出色表现,以及未来更多探索的方向。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/667769
推荐阅读
相关标签
  

闽ICP备14008679号