引言
今天来介绍下牛逼的GPT-31,它是一个拥有1750亿参数的巨大的自回归(autoregressive)语言模型。
GPT-3简介
之前最大的语言模型是Turing NLG,它由170亿参数,而GPT-3的参数量是它的10倍。
由于它的参数量过于巨大,如果你想自己训练一个GPT-3模型,需要花费1200万美元,呵呵,这真的是炫富。
15亿的参数需要6G的硬盘来保存,175亿的参数至少需要700G!
而且GPT-3论文的页数页数冠绝群雄,它由72页!
我特地去看了一下,显示有75页。
GPT-3想要做的事情是Zero-Shot Learning(零次学习)
过去我们使用BERT的时候,我们先预训练一个模型,然后根据不同的任务,准备不同的数据对预训练的模型进行微调。所以你还是需要收集一些下游任务的数据。
而GPT-3想要做的就是拿掉微调部分,它想用来直接解决下游任务。
就像我们做题一样,我们会看到题型说明,可能还会有一些有答案的例题,然后我们需要解出剩下的试题。
而GPT系列想要做的就是类似的事情。
它由三种情形,如上图所示。以翻译为例,在Few-shot Learinng中,首先给模型看一个任务说明的句子“Translate English to French”,接下来让模型看几个例子(没有梯度下降),然后问模型“cheese”应该翻译成什么;
而One-shot Learing和上面一样,不过只给一个例子;最牛的是Zero-shot Learing,只给说明,不给例子,直接问模型问题。
横轴是模型大小,纵轴是准确率,可以看到,随着模型越来越大,正确率也越来越高。
接下来看几个GPT-3的神奇之处,Closed Book QA的意思是,直接问训练好的GPT-3模型,比如“喜马拉雅山有多高”,但不提供关于喜马拉雅山的描述资料,让GPT-3回答问题。
上图是GPT-3的表现,可以看到,Few-Shot Learning的结果竟然超过了微调好的SOTA。
上图左边是应用于SuperGLUE任务,随着参数量越来越多,表现越来越好。右边显示在进行Few-Shot Learning时,随着给的例子越来越多,对GPT-3表现的影响。可以看到,只要给到32个,就能超过微调好的BERT Large模型。
因为GPT-3是语言模型,所以也可以用来产生文章(比如新闻)。上图的纵轴代表让人类去判断产生的新闻的真假的正确率,最小面的正确率只有50%,意味着GPT-3产生的新闻太像真的了,真实到人类无法判断到底是真的还是假的。
GPT-3还可以用来造句。
GPT-3还会做数学问题,输入“17减去14是多少”,它会回答“3”。
如果使用参数量最大的模型,可以看到,在两位数的加减法(Two Digit Addition/Subtraction)任务中,可以得到100%的正确率。
上面介绍的都是GPT-3行的地方,下面介绍一下它不太行的地方。
在NLI任务中,GPT-3的表现不太行,除了给定50个例子的Few-Shot Learing还有一丝希望。
还有一个有趣的事情是,训练这个巨大的模型时,数据通常来自于网络,而网络中的数据可能会包含下游任务的数据。作者们希望尽可能排除掉这些下游任务数据,他们看成是一个BUG,但是由于模型的花费太大了,几乎不可能重新训练。 他们把下游任务的数据分成了clean data(GPT-3在训练的时候没有看过)和dirty data(GPT-3在训练的时候已经看过了)。
然后在上图0%横向下面的点(任务),表示看过dirty data的表现比较好,在上面的点,比较没有看到的比较好。
为了检验模型了解人类的语言到什么程度,有一个叫Turing Advice Challenge的比赛。让模型在reddit上面给人类建议。
reddit上面会有很多帖子,比如有个女生说,她处了8个月的男朋友给她准备的生日礼物是,纹了她的名字和脸在她男朋友的背上,并且在生日聚会上,他男朋友把衣服一脱,露出了他的背,让聚会上所有人都看到了。她觉得不太好,然后机器给的回复是:建议分手
让机器给出合理的建议有点难度。
总结来说,这些参数量巨大的模型,给出的建议从语法上来看没啥毛病,但是不知道在说什么。
这是有GPT-3之前,有人实验了不同模型的建议效果,哪怕是T5这个模型,也只有9%的认可率。
说明模型在应用人类语言上面还是有一些欠缺。