机器学习笔记5-4:自监督学习

*注:本博客参考李宏毅老师2020年机器学习课程. 视频链接


1 自监督学习的概念

在前面介绍的模型,如CNN、RNN、Transformer等等,都是监督学习的例子,即:输入到网络中的数据都是都标签(label)的。而自监督学习,则是只有一些无标签的数据,需要模型将这些数据分为两部分,一部分作为数据,另一部分作为标签。自监督学习是无监督学习的一个分支。

在这里插入图片描述
(图1,来源:李宏毅2021春机器学习课程)

2 BERT

2.1 BERT简介

BERT是一种预训练的模型,其基本结构与Transformer的Encoder一致,一般用于自然语言处理(NLP)。

在预训练BERT时,常常使用以下任务:

  • 恢复遮挡文字:输入一个句子,使用mask遮挡其中的部分内容,让模型还原出原来的语句;
  • 语句预测:输入两个句子,让BERT判断这两个句子是否是上下文的关系。然而,在许多的文章中说明了,语句预测并不能让模型具有较好的性能:RoBERTa.在ALBERT中,提出了一种Sentence Order prediction的任务,能够更有效地预训练模型。
    尽管训练BERT时都是使用一些简单的任务,但是BERT神奇的地方在于,训练完成后,经过调整,它可以解决一些其他的任务(下游任务)。在这个过程中,训练BERT完成简单任务的过程称为Pre-train,调整的过程称为Fine-tune

即使是Pre-train的过程相同,经过不同的Fine-tune之后,BERT也能够处理不一样的任务。因此在测试BERT性能时,常常会调整BERT,来测试其在不同的任务上的性能。General Language Understanding Evaluation中设置了9个下游任务,来评估BERT的性能,近年来提出的模型不断提高了在GLUE上的表现,如图2(黑色横线表示人类的识别能力):

在这里插入图片描述
(图2,来源:SuperGLUE: A Stickier Benchmark for General-Purpose Language Understanding Systems)

2.2 BERT的使用

2.2.1 Sentiment Analysis(情感分析)

情感分析的任务目标是,输入一条语句文本,输出该语句的情感是正面的还是负面的,该任务在分析用户对于产品的评价时非常有用。

如图3,在这个任务中,输入的语句添加一个CLS作为句子的开始,BERT主干部分之后还需接一个线性模型。整个模型中,BERT的主干部分的参数已经被预训练,不需要初始化,而线性模型的参数则随机初始化。

尽管BERT会有多个输出,但在情感分析任务中,只关注CLS对应的输出(猜想这样做是因为,语句中的每一个字在分析情感时地位相等,CLS对应的输出实际上是计算其他字与CLS的关联度,更能代表整个句子)

在这里插入图片描述
(图3,来源:李宏毅2021春机器学习课程)

2.2.2 POS(词性标记)

词性标记任务与情感分析的做法类似,只是在词性标记中,关注的BERT的输出是语句中每一个词的输出,而CLS对应的输出则被舍弃。

2.2.3 Natural Language Inferencee(NLI,自然语言推论)

NLI的输入是两个句子,一个称为前提(premise),一个称为假设(hypothesis),两个句子之间用一个特殊符号SEP分隔,开头以CLS指示。模型的任务是推断在给定前提下,假设是否成立,输出一个类别来表示两个句子的这种关系。

与情感分析类似,在NLI任务中,关注的是是输入整体的关系,因此只关注CLS对应的输出。

2.2.4 Extraction-based Question Answering(QA)

该任务是有限制的QA,即问题的答案一定出现在材料中。在这个任务中,输入是两个由字组成的序列D和Q,D代表文章材料,Q代表问题。模型的输出是两个整数s和e,而问题Q的答案就是文本材料D中第s个字到第e个字,如图4.

在这里插入图片描述
(图4,来源:李宏毅2021春机器学习课程)

除了BERT主干部分之外,还需要训练两个向量,一个用于标记答案开始,一个用于标记答案结束,它们的长度与BERT输出向量的长度相同。在训练时,只需将两个向量与D对应输出的向量作内积,结果再经过Softmax即可得到s和e,如图5:

在这里插入图片描述
(图5,来源:李宏毅2021春机器学习课程)

2.3 BERT的预训练

BERT的训练包含两个步骤:预训练和微调。

在预训练的步骤中,使用大量的文本(google使用了超过300万的单词进行预训练),这个过程需要大量的计算资源,如图6:

在这里插入图片描述
(图6,来源:李宏毅2021春机器学习课程)

因此,目前而言,BERT的预训练由于耗费成本巨大,难以在计算资源不足的设备上完成。也有文章研在研究,是否有方法能够缩短这一过程,减少计算资源:Pretrained Language Model Embryology: The Birth of ALBERT

2.4 BERT预训练的原理(猜想)

回顾BERT的运作过程,预训练和下游任务实际上没有太大的关联,但是如果随机初始化BERT的参数而不是用预训练的参数,最终得到的结果却会变差。看起来,BERT是一个参数规模庞大的“黑盒”,其运作的原理难以理解,研究预训练的过程中究竟发生了什么,为什么经过与训练之后的BERT就能够拥有强大的处理各种人物的能力,依然是目前科学研究的一个方向。

结合目前为止的实验,有人提出了这样的猜想:

在预训练后,为BERT输入一个文字,BERT将能够输出一个向量,这个向量代表了输入文字的含义,并且这个含义将会考虑到输入上下文,不同的上下文能够给出不同的向量。例如:吃苹果的“果”,和西瓜的“瓜”,它们都是水果,输出的向量也可能会比较接近。事实上,也有实验证明了这件事。

如果真的是这样,那么每一个字经过BERT输出之后,都会变成一个能够代表这个字的向量,并且意义相近的次对应向量的距离也会比较近,这种特点使得BERT输出的向量成为word embeding,并且由于输出与上下文有关,BERT也称为Contextualized word embeding。在若干年前提出的CBOW模型,在思想上也与BERT相似,根据上下文计算某一词的word embeding,不过CBOW模型仅仅包含两层线性回归模型,十分简单。

然而上述解释在另一些事实面前显得站不住脚。在Is BERT a Cross-Disciplinary Knowledge Learner? A Surprising Finding of Pre-trained Models’ Transferability一文中,作者使用了一种看上去十分古怪的方法来Fine-tune BERT,以完成蛋白质和DNA的分类任务:DNA链由AGCT四种元素构成,BERT在英文数据集上预训练,接下来,作者将AGCT分别替换为四个单词,这四个单词并不需要特别挑选,仅仅是随机从词汇库中任取4个不同的单词。图7中展示了测试结果,使用预训练的BERT能够取得比随机初始化的BERT更好的结果。————但是奇怪的是,DNA和蛋白质的分类与预训练的任务完全不同,甚至随机选取的单词替换AGCT,BERT也能够做的很好。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mOkcagWe-1633501490386)(.\5_4_Self-supervised_Learning_files\BERT-DNA-classification.png)](图7,来源:Is BERT a Cross-Disciplinary Knowledge Learner? A Surprising Finding of Pre-trained Models’ Transferability)

2.5 Multi-lingual BERT

前述的BERT的预训练往往是在单一语言数据集上完成的,如果使用多种不同的语言来预训练BERT,那么得到的模型称为Multi-lingual BERT。Google使用104种不同的语言,对BERT进行了预训练,这个模型的神奇之处在于,完成预训练之后,模型拥有了“跨语言”QA的能力:例如调整BERT时,使用英文数据集,而在测试模型时,使用中文数据集,对于这两种完全不同的语言,Multi-BERT 居然也可以做的比较好:

在这里插入图片描述
(图8,来源:Zero-shot Reading Comprehension by Cross-lingual Transfer Learning with Multi-lingual Language Representation Model)
这也许说明,Multi-BERT已经学习到了各种语言的共同点,在模型看来,各种语言都没有说明不同,因此才会完成英文训练-中文测试这样的任务。但是,在训练和测试的过程中,模型却不会输出一段既包含英文,又包含中文的数据,这又说明,各种语言之间还是有差距的。

上述论断似乎互相矛盾,那么在多语言BERT中,各种语言之间究竟有什么关系呢?这也是一个值得探索的问题,在Language Representation in Multilingual BERT and its applications to improve Cross-lingual Generalization一文中,作者发现,将英文的词汇embeding和中文数据的embeding各自取平均,再计算差值,得到两种不同语言的embeding差,再将英文输入到BERT中,对输出加上这个差值之后再进行后续处理,居然能够得到类似机器翻译的效果,原本英文的输出变成了中文。

2.6 BERT小结

BERT的出现对于NLP是一大进步,与训练之后的BERT只要花费较低的计算成本进行Fine-tune,就能够完成各种不同的任务。

但是,BERT的预训练过程依然令人难以理解,其耗费的庞大计算资源也令想要自己预训练模型的研究者望而却步。BERT依然是一个“黑盒”,有诸多问题值得继续深入研究。

3 GPT

GPT是一个比BERT更大的预训练模型,其结构与Transformer中的Decoder相似,预训练阶段,GPT的任务是输入语句,预测语句的下一个字。预训练时的模型也是使用masked-attention,也就是说产生输出时,模型只看上文的内容,不看下文的内容。结构如图9:

在这里插入图片描述
(图9,来源:李宏毅2021春机器学习课程)
比起BERT来说,GPT的体积要大得多,大到在这样一个模型上,进行Fine-tune也变得困难。但是,GPT的使用上有一个更加超前的想法:既然GPT拥有文本补全的能力,那么如果为模型输入一段文本,代表任务的内容和少数范例,在文本的末尾添加一个问题,模型是否能够结合这段文本,回答这个问题呢?

这种方式来训练模型,称为Few-shot Learning,假如仅仅给出一个范例,则称One-shot Learning,甚至有的方法在输入中一个范例也没有,称为Zero-shot Learning.

那么在现实中,这种不经过微调和梯度下降的训练方法究竟是否有效呢?在GPTv3中,三种不同的训练方式被测试用于42项不同的任务,其准确率如图10:

在这里插入图片描述
(图9,来源:李宏毅2021春机器学习课程)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值