李宏毅自然语言处理——GPT3简介

本文原地址:

引言

今天来介绍下牛逼的GPT-31,它是一个拥有1750亿参数的巨大的自回归(autoregressive)语言模型

GPT-3简介

GPT3模型架构 gpt3语言模型_模型预测

之前最大的语言模型是Turing NLG,它由170亿参数,而GPT-3的参数量是它的10倍。

GPT3模型架构 gpt3语言模型_数据_02

由于它的参数量过于巨大,如果你想自己训练一个GPT-3模型,需要花费1200万美元,呵呵,这真的是炫富。

15亿的参数需要6G的硬盘来保存,1750亿的参数至少需要700G!

而且GPT-3论文的页数页数冠绝群雄,它由72页!

GPT3模型架构 gpt3语言模型_模型预测_03

我特地去看了一下,显示有75页。

 

GPT-3想要做的事情是Zero-Shot Learning(零次学习)

  • few-shot learning
  • 定义:允许输入数条范例和一则任务说明
  • 示例:向模型输入“这个任务要求将中文翻译为英文。你好->hello,再见->goodbye,购买->purchase,销售->”,然后要求模型预测下一个输出应该是什么,正确答案应为“sell”。
  • one-shot learning
  • 定义:只允许输入一条范例和一则任务说明
  • 示例:向模型输入“这个任务要求将中文翻译为英文。你好->hello,销售->”,然后要求模型预测下一个输出应该是什么,正确答案应为“sell”。
  • zero-shot learning
  • 定义:不允许输入任何范例,只允许输入一则任务说明
  • 示例:向模型输入“这个任务要求将中文翻译为英文。销售->”,然后要求模型预测下一个输出应该是什么,正确答案应为“sell”。

 

 

过去我们使用BERT的时候,我们先预训练一个模型,然后根据不同的任务,准备不同的数据对预训练的模型进行微调。所以你还是需要收集一些下游任务的数据。

 

GPT3模型架构 gpt3语言模型_数据_04

 

而GPT-3想要做的就是拿掉微调部分,它想用来直接解决下游任务

 

GPT3模型架构 gpt3语言模型_模型预测_05

 

 

 

GPT3模型架构 gpt3语言模型_GPT3模型架构_06

就像我们做题一样,我们会看到题型说明,可能还会有一些有答案的例题,然后我们需要解出剩下的试题

而GPT系列想要做的就是类似的事情。

GPT3模型架构 gpt3语言模型_数据_07

它由三种情形,如上图所示。以翻译为例,

  • 在Few-shot Learinng中,首先给模型看一个任务说明的句子“Translate English to French”,接下来让模型看几个例子(没有梯度下降),然后问模型“cheese”应该翻译成什么;
  • 而One-shot Learing和上面一样,不过只给一个例子;
  • 最牛的是Zero-shot Learing,只给说明,不给例子,直接问模型问题。

 

GPT3模型架构 gpt3语言模型_模型预测_08

横轴是模型大小,纵轴是准确率,可以看到,随着模型越来越大,正确率也越来越高

 

接下来看几个GPT-3的神奇之处,Closed Book QA的意思是,直接问训练好的GPT-3模型,比如“喜马拉雅山有多高”,但不提供关于喜马拉雅山的描述资料,让GPT-3回答问题

GPT3模型架构 gpt3语言模型_GPT3模型架构_09

上图是GPT-3的表现,可以看到,Few-Shot Learning的结果竟然超过了微调好的SOTA。

 

 

GPT3模型架构 gpt3语言模型_模型预测_10

  • 上图左边是应用于SuperGLUE任务,随着参数量越来越多,表现越来越好。
  • 右边显示在进行Few-Shot Learning时,随着给的例子越来越多,对GPT-3表现的影响。可以看到,只要给到32个,就能超过微调好的BERT Large模型。

 

GPT3模型架构 gpt3语言模型_数据_11

因为GPT-3是语言模型,所以也可以用来产生文章(比如新闻)。上图的纵轴代表让人类去判断产生的新闻的真假的正确率(因为GPT-3产生的新闻都是假的,当人类将所有产生的新闻都判断为假的时候,正确率最高,正确率低,说明有很多GPT-3产生的假新闻被人类判断为了真新闻),最下面的正确率只有50%,意味着GPT-3产生的新闻太像真的了,真实到人类无法判断到底是真的还是假的。

 

 

GPT-3还可以用来造句

GPT3模型架构 gpt3语言模型_GPT3模型架构_12

 

 

 

GPT-3还会做数学问题,输入“17减去14是多少”,它会回答“3”。

如果使用参数量最大的模型,可以看到,在两位数的加减法(Two Digit Addition/Subtraction)任务中,可以得到100%的正确率。

GPT3模型架构 gpt3语言模型_数据_13

 

 

 

上面介绍的都是GPT-3行的地方,下面介绍一下它不太行的地方。

在NLI任务中,GPT-3的表现不太行,除了给定50个例子的Few-Shot Learing还有一丝希望。

GPT3模型架构 gpt3语言模型_数据_14

 

还有一个有趣的事情是,训练这个巨大的模型时,数据通常来自于网络,而网络中的数据可能会包含下游任务的数据。作者们希望尽可能排除掉这些下游任务数据,他们看成是一个BUG,但是由于模型的花费太大了,几乎不可能重新训练。 他们把下游任务的数据分成了clean data(GPT-3在训练的时候没有看过)和dirty data(GPT-3在训练的时候已经看过了)。

然后在下图0%横向下面的点(任务),表示看过dirty data的表现比较好,在上面的点,比较没有看到的比较好。

GPT3模型架构 gpt3语言模型_GPT3模型架构_15

 

 

为了检验模型了解人类的语言到什么程度,有一个叫Turing Advice(图灵建议) Challenge的比赛。让模型在reddit上面给人类建议。

reddit上面会有很多帖子,比如有个女生说,她处了8个月的男朋友给她准备的生日礼物是,纹了她的名字和脸在她男朋友的背上,并且在生日聚会上,他男朋友把衣服一脱,露出了他的背,让聚会上所有人都看到了。她觉得不太好,然后机器给的回复是:建议分手

GPT3模型架构 gpt3语言模型_GPT3模型架构_16

 

GPT3模型架构 gpt3语言模型_数据_17

让机器给出合理的建议有点难度。

GPT3模型架构 gpt3语言模型_语言模型_18

总结来说,这些参数量巨大的模型,给出的建议从语法上来看没啥毛病,但是不知道在说什么。

GPT3模型架构 gpt3语言模型_数据_19

这是有GPT-3之前,有人实验了不同模型的建议效果,哪怕是T5这个模型,也只有9%的认可率。

说明模型在应用人类语言上面还是有一些欠缺。

参考


  1. Language Models are Few-Shot Learners ↩︎