文章目录
前言
自监督学习(Self-supervised Learning)旨在对于无标签数据,通过设计辅助任务(Proxy tasks)来挖掘数据自身的表征特性作为监督信息,来提升模型的特征提取能力。本文简单地说明什么是Self-supervised Learning,并且介绍了Self-supervised Learning的用途;通过多个例子介绍了BERT的模型,以及简要说明了GPT的野望;最后介绍BERT的预训练和微调,主要说明什么是Pre-train模型,以及怎么做fine-tune。
一、什么是Self-supervised Learning?
1.Self-supervised Learning
Self-supervised Learning就是自己想办法去做Supervised Learning,具体操作就是把训练资料的一部分作为Model的输入,另外一部分作为Model的label,希望输出与label越接近越好。
2.Masking Input
BERT的架构与Transformer Encoder是一样的,它主要用于自然语言处理、文字处理等。如下图所示,BERT的输入是一段文字,随机地把这段文字当中的某些词语做下标记(两种方法,第一种是设置一个special token MASK,另外一种是用随机的词语替代这个词语),然后把标记后的词语做Linear Transform(乘上一个矩阵),最后做softmax得到输出(Distribution)跟标记前的词语minimize cross entropy。
3.Next Sentence Prediction
Next Sentence Prediction的主要任务就是区别两个句子是否连接在一起。
二、How to use BERT
BERT在Pre-train产生后,经过fine-tune就可以做多种多样的任务。而BERT的真正任务是Downstream Tasks,它的前提是需要一些带有标记的数据。
1.Case 1
1)举例Sentiment analysis,输入是一个句子,输出是一个类别(正面 or 负面)。如下图所示,这里使用的是做过pre-train的BERT,好处在于这样会比随机初始化表现更好。
2)如下图所示,对Pre-train和Random Initialization进行比较,通过表现结果可以发现Pre-train表现的更好,这也是BERT在表面上带来的好处。
2.Case 2
举例POS tagging,输入是一个sequence,输出是一个与输入一样长的sequence。Case 2使用的BERT与Case 1是一致的。
3.Case 3
1)举例Natural Language Inference,输入是两个句子,输出一个类别。这两个句子一个是前提,另一个假设,而机器要做的是从这个前提推出这个假设是正确还是矛盾。
2)Case 3使用的BERT与Case 1是一致的。
4.Case 4
1) 举例Extraction-based Question Answering,它的任务是给机器阅读一篇文章,然后询问机器一些问题,机器会给出答复(答案必须取自文章,是文章的一部分)。
2) 如下图所示,Case 4使用的BERT与Case 1是一致的。唯一需要从头开始训练(Random Initialized)的是两个向量,长度与BERT输出向量的长度一致,然后与document输出的向量做inner product,得到正确的答案的起始位置和结束位置。
三、Pre-training a seq2seq model
1. 如下图所示,对Encoder输入的句子进行Corrupted,希望Decoder的输出与被Corrupted前输入的句子越接近越好。
2. 对输入的句子Corrupted的方法有很多种,把部分词语盖住、删除部分词语、打乱句子顺序、翻转整个句子、以及多种方法同时使用。
四、Why does BERT work?
1. 如下图所示,我们给BERT输入了两个带有“果”的句子,显然这两个“果”上下文内容不一样,输出的向量就会不一样,于是就去计算这两个向量的相似度(cosine similarity)。
通过结果显示关于这个字的句子意思相近的相似度更大,反之相似度越小。
2. 如下图所示,可以从这个字的上下文入手,意思是可以通过上下文推出这个字。
3. 如下图所示,使用BERT比不使用BERT对Protein、DNA、Music进行分类的表现更好,因此可以发现BERT的能力很有值得研究的价值。
五、Multi-lingual BERT
1. Multi-lingual BERT就是用多种语言去训练它,它最神奇的地方是用英文问答去训练它后,它就会自动学会用中文完成问答训练。如下图所示,通过实验结果表示Multi-lingual BERT能够完成这一点,并且结果还不错。
2. 猜测是中英文的输出的向量(embedding)比较接近,机器在学习大量语言后会自动学习这件事。
3. 现在发现有一件神奇的事情是将中文的embedding与英文的embedding做差后,加上给Multi-lingual BERT输入英文训练后得到的向量后,就会变成中文的句子。因此给机器英文的问题,它就可以回复给你中文的答案。
六、Predict Next Token
GPT的任务是预测接下来要出现的Token是什么,它的特点是用了大量的训练资料训练出来一个巨大的模型。
七、How to use GPT?
举例用GPT做翻译,在训练过程中,机器唯一学到的事情是给机器文章的前半部分,然后让机器把后面部分补全。
通过实验结果表明,机器可以完成上述的翻译工作,只是成功率比较低。
八、What is pre-train model
1. Pre-train Model就是希望把输入的每一个token表示成embedding vector,在这里相同类型的token会被表示成相同的embedding,不会考虑token的上下文内容。
2. 现在考虑上下文不同但相同类型的token是否得到不同的embedding,于是Contextualized Word Embedding可以做到,它的做法是将整个句子读完后再输出token对应的embedding。
九、How to fine-tune
1. 如下图所示,这是NLP任务输入多个句子的情况,它会在句子之间加上“SEP”分隔符号变成很长的句子作为model的输入。
2. 如下图所示,这是NLP任务输出一个class的情况。在model的输入中,会加入一个token“CLS”,在CLS输入进model后,得到的输出与输入的整个句子有关系。另一种情况是没有CLS时,会有一个Task Specific把输出的embedding读入,然后输出一个class。
3. 如下图所示,这是NLP任务输出General Sequence的情况。把SEP输入model后会得到一个向量,再把向量输入Task Specific后会得到w3,将w3作为输入,多次重复上述操作后,会得到w4、w5等直到结束。
4. 如下图所示,这是Fine-tune的两种做法。第一种是Pre-trained模型训练结束后就会固定住,变成Feature Exactor;第二种是将Pre-trained与Task-specific连接在一起,在fine-tune时,调Task-specific模型的同时也会调Pre-trained模型。
5. 如下图所示,我们去微调整个模型时,只需要调整Pre-trained的一部分就行,于是在Pre-trained模型中加入Apt,每次就去调整模型的Apt部分。
十、Why Pre-train Models?
如下图所示,我们可以知道Pre-train Model有着比较好的表演,甚至于可以与人类相提并论。
总结
在本次学习中,我学习自监督学习(Self-supervised Learning)后,了解到自监督学习(Self-supervised Learning)的目的就是利用无标签数据训练出一个feature提取器,从而对下游任务 (Downstream tasks)的训练提供帮助,而自监督学习(Self-supervised Learning)的核心是如何自动为训练资料产生标签。了解到了BERT模型是一个双向模型,它可以利用token的上下文内容,还学习到BERT的预训练和微调,认识到什么是预训练,以及如何做微调。