前言
GPT3是OpenAI公司在2020年发布的一篇技术报告,名字叫做《Language Models are Few-Shot Learners》语言模型是少样本学习器,在GPT2的zero-shot延伸到few-shot,在数据量和模型规模上相比较于GPT2扩大了很多,效果也有了很大的提升,在多个NLP任务上表现出色,并且其生成的文本质量很难让人分辨出来这是AI写的。接下来将对GPT3进行介绍。
一、GPT3理论
1.论文总结
GPT3的论文摘要说当前的语言模型都是先在大规模数据集上进行预训练,然后再不同的下游任务上进行微调,这样是比较麻烦的,因为微调的时候也需要很多的带标签的数据。但是人类却可以通过几个简单的例子就可以在新的语言任务上表现得很好,GPT3就是想看一下通过扩大模型结构和数据集预训练出来的模型可不可以像人类一样在下游任务上仅通过在输入中给你几个例子和prompt然后让模型进行推理得出答案,而不用在进行微调,也就是few-shot。
2.模型结构
GPT3的模型结构相比较于GPT2来说变化不大,仍然是由Transformer的解码器堆叠而成。主要是把self-attention变成了sparse-attention(稀疏注意力)。sparse-attention只关注序列中的一小部分元素,而不是所有元素。GPT3提供了8个尺寸,最大的尺寸参数量达到了175亿。(GPT2最大的参数量仅为15亿)下表为GPT3中参数最大的模型的尺寸。其输入的最大tokens达到了2048。其在预训练过程中的数据集达到了45TB。
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 | n h e a d s n_{heads} nheads | d h e a d d_{head} dhead | Batcg Size |
---|---|---|---|---|---|
175亿 | 96 | 12288 | 96 | 128 | 3.2M |
二、GPT3推理
GPT3在不同的下游任务进行预测时,不用进行参数的微调,因为参数太多想要微调要不是一件容易的事情,只需要在输入中加入任务的描述,然后提供几个例子即可。例如,如果想进行机器翻译的few-shot,则输入形式大概为:
把中文翻译成英文
我爱吃梨—>I love eating pears.
…
动手学深度学习—>
如果想进行情感分类的few-shot,则输入形式大概为:
对句子进行情感分类
今天玩的很开心—>高兴
…
这部电影不好看—>
总结
GPT3展现出了强大的文本生成能力以及对于下游任务的few-shot能力,但是其还存在着一些不足,例如在训练时语料中的所有词都被同等看待,对于一些虚词同样需要花费很多的计算量去学,无法区分重点。并且在长文本的生成方面比较困难。论文里提到GPT3对于不同下游任务的few-shot能力,有可能是因为模型真的学习到了这些语言之间的关系,也有可能是因为参与训练的文本中有相关的下游任务输入,可解释性较差。