【学习笔记】李宏毅2021春机器学习课程第7.3节:自监督学习(三)

文章目录

    • 1 会写假新闻的GPT模型
    • 2 怎么使用GPT模型?
      • 2.1 “Few-shot” Learning
      • 2.2 “One-shot” Learning
      • 2.3 “Zero-shot” Learning
    • 3 GPT模型在语音和影像上的应用
      • 3.1 Image —— SimCLR
      • 3.2 Image - BYOL
      • 3.3 Speech Application

1 会写假新闻的GPT模型

除了BERT以外,还有一个很有名的模型,那就是GPT系列的模型。

BERT做的是填空题,GPT要做的任务是预测接下来会出现的token是什么

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

那在“台湾大学”这个句子里面,根据这笔训练资料,下一个应该出现的token是"台",所以你要训练你的模型,根据第一个token,根据BOS给你的embedding,那它要输出"台"这个token。

这个部分详细来看是上图的右半部分,你有一个embedding,这里用h来表示,然后通过一个Linear Transform,再通过一个SoftMax,得到一个distribution,跟一般你做分类的问题是一样的。接下来,你希望你输出的分布跟正确答案之间的Cross entropy越小越好,也就是你要去预测下一个出现的token是什么。

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

这个过程再继续下去,你给它BOS,“台”,“湾”,然后预测下一个应该出现的token,下一个应该出现的token是"大"。你给它BOS,“台”,“湾”,“大”,那么下一个应该出现的token是"学"。

刚刚是拿一个句子来给GPT训练举例,实际上你不会只用一笔句子,你会用成千上万个句子来训练这个模型。GPT厉害的地方就是用了很多资料,训练了一个异常巨大的模型。

GPT的模型像是一个transformer的decoder,不过属于之前讲过的mask的attention。也就是你现在输入BOS,预测”台“的时候,你不会看到后面的“台”,“湾”,“大”。

因为GPT可以预测下一个token,所以它有生成的能力,你可以让它不断地预测下一个token,从而产生完整的文章,所以每次提到GPT的时候,它的形象都是一只独角兽。GPT系列最知名的一个例子,就是用GPT写了一篇跟独角兽有关的新闻,因为给这个GPT模型一个独角兽的关键词,它创作出了一个假新闻,假新闻里面说,在安地斯山脉发现独角兽。

上面提到的这个自动生成文章的模型在线上有一个demo的网页,叫做talk to transformer,就是有人把一个比较小的GPT模型放在线上,让你可以输入一个句子,然后它会把接下来的内容补充完整。还是很有意思的,这里把链接放上来:Demo – InferKit


2 怎么使用GPT模型?

那我们怎么把GPT模型用在下游任务上呢,举例来说,怎么把它用在question answering,或者是其他的跟自然语言处理有关的任务上来呢?

GPT的想法跟BERT不太一样,虽然实际上GPT也可以沿用BERT的做法。我们回忆一下,在使用BERT时,把训练好的BERT模型拿出来,后面接一个简单的linear的classifier,再针对具体下游任务进行微调,那你就可以做很多事情。我们也可以把GPT模型拿出来,接一个简单的classifier,这样也是会有效的。

但是在GPT的论文中,它没有这样做,它有一个更狂的想法,首先就是因为BERT那一招已经用过了,然后就是因为GPT这个模型真的太大了,大到连fine tune可能都有困难。

我们在用BERT的时候,你要把BERT模型后面接一个linear classifier,然后BERT也是你要train的model的一部分,所以它的参数也是要调的。但BERT的模型在之前做填空题的时候已经训练得差不多了,所以你只需要微调它就好了,但是微调还是要花时间的。也许GPT实在是太过巨大,巨大到要微调它可能都有困难,所以GPT系列有一个更狂的使用方式,这个更狂的使用方式和人类更接近,你想想看假设你去考托福的听力测验,你是怎么去考的?

  • 首先你会看到一个题目的说明,告诉你现在要考选择题,请从ABCD四个选项里面选出正确的答案等等。
  • 然后给你一个范例,告诉你说这是题目,然后正确的答案是什么。
  • 然后你看到新的问题,你就可以举一反三开始作答。

GPT系列想做的就是同样的事情。


2.1 “Few-shot” Learning

举例来说假设要GPT这个模型做翻译

  • 那首先给出题目的说明:Translate English to French。

  • 然后给它几个翻译的范例,例如 sea otter => loutre de mer。

  • 然后接下来,你问它 cheese=> 希望它把后面的补完,产生翻译的结果。

这一个想法还是很疯狂的,毕竟我们在训练的时候,并没有教GPT做翻译这件事,它唯一学到的就是给一段文字的前半段,把后半段补完。现在我们直接给它前半段的文字,告诉它说你要做翻译了,给你几个例子,告诉你说翻译是怎么回事,接下来给它cheese这个英文单词,期望GPT模型后面就直接补出法文的翻译结果。

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


2.2 “One-shot” Learning

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


2.3 “Zero-shot” Learning

还有更狂的,是Zero-shot Learning,直接给GPT模型一个问题描述,说我们现在要做翻译了,GPT能不能够自己就看得懂,就自动知道说要来做翻译这件事情呢。那下面是用GPT模型分别做以上三种learning之后,在42个任务上表现的一个实验结果:

可以看到对于之前的这些很狂的想法,GPT不是完全不可能答对,但是正确率有点低,相较于可以微调模型的BERT来说,正确率是有点低的。

第三代的GPT测试了42个任务,纵轴是正确率,这三条实线是42个任务的平均正确率,三条线分别代表Few Shot,One Shot跟Zero Shot,横轴代表模型的大小。它们测试了一系列不同大小的模型,从只有0.1个billion的参数,到175个billion的参数,那从只有0.1个billion的参数,到175个billion的参数,我们看Few Shot的部分,正确率从20%左右的平均正确率,一直做到50%多的平均正确率。

目前的状况是,有些任务它还真的学会了,举例来说你给它一个数字加另外一个数字,它真的可以得到正确的两个数字加起来的结果。但是有些任务,譬如说一些跟逻辑推理有关的任务,它的结果就非常差,要想进一步了解有关GPT3的细节问题,可以看下面这个链接中的视频:


3 GPT模型在语音和影像上的应用

到目前为止我们举的例子都是只跟文字有关,但是这种self-supervised learning的概念还可以用在很多其他方面。在语音跟影像上也都可以使用self-supervised learning的技术,那其实self-supervised learning的技术非常非常地多,我们讲的BERT跟GPT系列只是其中的几种。


3.1 Image —— SimCLR

有关影像的部分不会细讲,这里只说有一个非常有名的技术叫做SimCLR,它的概念也不难,想要详细了解的可以看下面的链接:[2002.05709] A Simple Framework for Contrastive Learning of Visual Representations (arxiv.org)


3.2 Image - BYOL

还有一个很奇怪的办法叫做BYOL

这个是很新的论文,是一篇去年夏天的论文。想要详细了解的可以看下面的链接:[2006.07733] Bootstrap your own latent: A new approach to self-supervised Learning (arxiv.org)


3.3 Speech Application

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

你完全可以试着训练语音版的BERT,譬如说做填空题,语音也可以做填空题,就把一段声音讯号盖起来,让机器去猜盖起来的部分是什么,语音也可以预测接下来会出现的内容,不管是语音版的BERT还是语言版的GPT,其实都已经有很多相关的研究成果了。

你可能感兴趣的:(机器学习,机器学习,深度学习,人工智能,神经网络)