学习心得

(1)Predict Next Token:GPT拿到一笔训练资料的时候,先给它BOS这个token,然后GPT output一个embedding,然后接下来,你用这个embedding去预测下一个,应该出现的token是什么。
(2)一般Few Shot的意思是说,确实只给了它一点例子。但是GPT里的不是一般的learning,这里面完全没有gradient descent;完全没有要去调GPT那个模型参数的意思,所以在GPT的文献里面,把这种训练给了一个特殊的名字——In-context Learning(代表说它不是一般的learning,它连gradient descent都没有做)
(3)可以通过talk to transformer(http://talktotransformer.com/)看GPT是怎样运作的(用的比较小的GPT模型)让你可以输入一个句子,然后让它会把接下来的其余的内容把它补完。
(4)GPT如何进行tokenize操作?和BERT的区别是什么?
GPT2使用Transformer的Decoder模块构建
工作方式(自回归):产生每个token;将token添加到输入的序列中,形成一个新序列;将上述新序列作为模型下一个时间步的输入。

文章目录


【李宏毅深度学习CP20】GPT3模型_sed

BERT做的是填空题,GPT就是改一下我们现在在,self-supervised learning的时候,要模型做的任务

一、Predict Next Token

GPT要做的任务是,预测接下来,会出现的token是什么。举例来说,假设你的训练资料裡面,有一个句子是台湾大学,那GPT拿到这一笔训练资料的时候,它做的事情是这样。你给它BOS这个token,然后GPT output一个embedding,然后接下来,你用这个embedding去预测下一个,应该出现的token是什么

【李宏毅深度学习CP20】GPT3模型_sed_02

那在这个句子裡面,根据这笔训练资料,下一个应该出现的token是"台",所以你要训练你的模型,根据第一个token,根据BOS给你的embedding,那它要输出"台"这个token。这个部分,详细来看就是这样,你有一个embedding,这边用h来表示,然后通过一个Linear Transform,再通过一个softmax,得到一个distribution,跟一般你做分类的问题是一样的。希望output的distribution,跟正确答案的Cross entropy,越小越好,也就是你要去预测,下一个出现的token是什麼。

接下来要做的事情,就是以此类推了,你给你的GPT,BOS跟"台",它產生embedding,接下来它会预测,下一个出现的token是什麼,那你告诉它说,下一个应该出现的token,是"湾"

【李宏毅深度学习CP20】GPT3模型_sed_03

好 再反覆继续下去,你给它BOS “台"跟"湾”,然后预测下一个应该出现的token,它应该要预测"大"。你给它"台"跟"湾"跟"大",接下来,下一个应该出现的token是"学"

【李宏毅深度学习CP20】GPT3模型_梯度下降_04

那这边呢,是指拿一笔资料 一个句子,来给GPT训练,当然实际上你不会只用一笔句子,你会用成千上万个句子,来训练这个模型,然后就这样子说完了。它厉害的地方就是,用了很多资料,训了一个异常巨大的模型。这个GPT的模型,它像是一个transformer的decoder,不过拿掉BOS的attention这个部分,也就是说,你会做那个mask的attention

【李宏毅深度学习CP20】GPT3模型_梯度下降_05


就是你现在在预测给BOS,预测台的时候,你不会看到接下来出现的词汇,给它台要预测湾的时候,你不会看到接下来要输入的词汇,以此类推 这个就是GPT。这个GPT最知名的就是,因為GPT可以预测下一个token,那所以它有生成的能力,你可以让它不断地预测下一个token,产生完整的文章,所以我每次提到GPT的时候,它的形象都是一隻独角兽。

【李宏毅深度学习CP20】GPT3模型_梯度下降_06

GPT系列最知名的一个例子,就是用GPT写了一篇,跟独角兽有关的新闻,因為他放一个假新闻,然后那个假新闻裡面说,在安地斯山脉发现独角兽等等,一个活灵活现的假新闻

為了让你更清楚了解,GPT运作起来是什麼样子,那这个线上有一个demo的网页,叫做talk to transformer(​​http://talktotransformer.com/​​),就是有人把一个比较小的,不是那个最大的GPT的模型,不是public available的,有人把比较小的GPT模型放在线上,让你可以输入一个句子,让它会把接下来的其余的内容,把它补完。

二、How to use GPT?

怎麼把它用在downstream 的任务上呢,举例来说,怎麼把它用在question answering,或者是其他的,跟人类语言处理有关的任务上呢

GPT用的想法跟BERT不一样,其实GPT也可以跟BERT用一样的做法——在使用BERT时,把BERT model 拿出来,后面接一个简单的linear的classifier,那你就可以做很多事情,你也可以把GPT拿出来,接一个简单的classifier,也是会有效,

但是在GPT的论文中,它没有这样做,它有一个更狂的想法,因為
(1)首先就是,BERT那一招BERT用过了嘛,所以总不能再用一样的东西,这样写paper就没有人觉得厉害了
(2)GPT这个模型也许真的太大了,大到连fine tune可能都有困难

我们在用BERT的时候,你要把BERT模型,后面接一个linear classifier,然后BERT也是你的,要train的model的一部分,所以它的参数也是要调的,所以在刚才助教公告的,BERT相关的作业裡面,你还是需要花一点时间来training,虽然助教说你大概20分鐘,就可以train完了,因為你并不是要train一个,完整的BERT的模型,BERT的模型在之前,在做这个填空题的时候,已经训练得差不多了,你只需要微调它就好了,但是微调还是要花时间的,也许GPT实在是太过巨大,巨大到要微调它,要train一个epoch,可能都有困难

托福听力的栗子

【李宏毅深度学习CP20】GPT3模型_梯度下降_07


首先你会看到一个题目的说明,告诉你说现在要考选择题,请从ABCD四个选项裡面,选出正确的答案等等;然后给你一个范例,告诉你说这是题目,然后正确的答案是多少;然后你看到新的问题,期待你就可以举一反三开始作答。GPT系列要做的事情就是,这个模型能不能够,做一样的事情呢

“In-context” Learning(没有梯度下降)

(1)“Few-shot” Learning

举例来说假设要GPT这个模型做翻译,先学几个翻译题后就直接做翻译题(就是这么神奇)。

【李宏毅深度学习CP20】GPT3模型_梯度下降_08


这个在GPT的文献裡面,叫做Few-shot Learning,但是它跟一般的Few-shot Learning又不一样。所谓Few Shot的意思是说,确实只给了它一点例子,所以叫做Few Shot。但是它不是一般的learning,这裡面完全没有gradient descent,完全没有要去调,GPT那个模型参数的意思,所以在GPT的文献裡面,把这种训练给了一个特殊的名字,它们叫做In-context Learning,代表说它不是一般的learning,它连gradient descent都没有做

(2)“One-shot” Learning “Zero-shot” Learning

当然你也可以给GPT更大的挑战,我们在考托福听力测验的时候,都只给一个例子而已,那GPT可不可以只看一个例子,就知道它要做翻译这件事,这个叫One-shot Learning.

【李宏毅深度学习CP20】GPT3模型_实线_09


还有更狂的,是Zero-shot Learning,直接给它一个叙述,说我们现在要做翻译了,GPT能不能够自己就看得懂,就自动知道说要来做翻译这件事情呢,那如果能够做到的话,那真的就非常地惊人了,那GPT系列,到底有没有达成这个目标呢,这个是一个见仁见智的问题啦

【李宏毅深度学习CP20】GPT3模型_sed_10

它不是完全不可能答对,但是正确率有点低,相较於你可以微调模型,正确率是有点低的,那细节你就再看看GPT那篇文章。第三代的GPT,它测试了42个任务,这个纵轴是正确率,这些实线 这三条实线,是42个任务的平均正确率,那这边包括了Few Shot,One Shot跟Zero Shot,三条线分别代表Few Shot,One Shot跟Zero Shot,横轴代表模型的大小,它们测试了一系列不同大小的模型,从只有0.1个billion的参数,到175个billion的参数,那从只有0.1个billion的参数,到175个billion的参数,我们看Few Shot的部分,从20几%的正确率 平均正确率,一直做到50几%的平均正确率,那至於50几%的平均正确率

目前看起来状况是,有些任务它还真的学会了,举例来说2这个加减法,你给它一个数字加另外一个数字,它真的可以得到,正确的两个数字加起来的结果,但是有些任务,它可能怎麼学都学不会,譬如说一些跟逻辑推理有关的任务的结果就非常非常地惨。有关GPT3的细节参考 https://youtu.be/DOG1L9lvsDY

三、Beyond Text

到目前為止我们举的例子,都是只有跟文字有关,但是你不要误会这种self-supervised learning的概念,只能用在文字上。在CV,computer vision,也就是影像,在语音跟影像的应用上也都可以用,self-supervised learning的技术,那其实今天,self-supervised learning的技术,非常非常地多,我们讲的BERT跟GPT系列,它只是三个类型的,这个self-supervised learning的方法,的其中一种,是属于prediction那一类

【李宏毅深度学习CP20】GPT3模型_sed_11

3.1 Image - SimCLR

【李宏毅深度学习CP20】GPT3模型_sed_12

3.2 Image - BYOL

【李宏毅深度学习CP20】GPT3模型_梯度下降_13


BYOL这个东西——根本不知道它為什麼会work,不是 这个是很新的论文,这个是去年夏天的论文,那这个论文是,而且还曾经一度得到,state of the art的结果,deep learning就是这麼神奇

3.3 Speech

那在语音的部分,你也完全可以使用,self-supervised learning的概念

【李宏毅深度学习CP20】GPT3模型_梯度下降_14

也可以训练语音版的BERT(比如语音也可以做填空题,把一段声音讯号掩盖住,然后让机器猜被盖住的是东西是什么;语音也可以预测接下来会出现的内容,比如用GPT预测接下来要出现的token),也已经有不少相关的成果了。

3.4 Speech GLUE - SUPERB

在语音上像NLP的GLUE这样子的benchmark corpus(corpus是预料集)。但在语音上 到目前為止,还没有类似的基准的资料库,所以台大就共同开发了一个语音版的GLUE(SUPERB,它是Speech processing Universal,PERformance Benchmark的缩写)。SUPERB有十个不同的任务。语音任务不只有将语音转为文字,还有判断是谁讲的、语音的语气、语义、语调等。

【李宏毅深度学习CP20】GPT3模型_实线_15

Toolkit

这个Toolkit裡面就包含了各式各样的self-supervised learning的模型,这些模型可以做各式各样语音的下游的任务。self-supervised learning的技术,不是只能被用在文字上,在这个影像上 在语音上,都仍然有非常大的使用空间。

【李宏毅深度学习CP20】GPT3模型_梯度下降_16

Reference

李宏毅2021深度学习课程