如何使用无标签数据进行预训练?

一、直观解释

简单来说就是“造目标”。也即人为地去构造一些子任务(论文里的protext task),或者利用一些最基本的公理性常识,去设计“类似监督”的任务。所不同的是,我们引入的“类似监督”的任务通常是用来完成表征学习,具体的下游任务仍需要额外想办法实现。

通俗来说,所谓的监督学习就是有明确的监督信号(比如分类任务中的label,检测任务中的cls等)去驱动网络不断地学习更好的特征表示,并完成相应的任务。所以对于无监督学习,我们很容易想到,能不能用什么方法,去构造某些监督信号?可能这些构造出来的信号不及监督学习中的label、bbox那样明确,但在无监督大样本的加持下,总算也能让模型慢慢变好。理解这几句话对于了解无监督学习、自监督学习非常重要

二、常用造目标的方法

1.伪标签

该方法的主旨思想其实很简单。首先,在标签数据上训练模型,然后使用经过训练的模型来预测无标签数据的标签,从而创建伪标签。此外,将标签数据和新生成的伪标签数据结合起来作为新的训练数据。

如何使用无标签数据进行预训练?_第1张图片

2.用数据本身作为标签

例如BERT模型的预训练,其包含两种模式:mask words prediction和 next sentence prediction

mask words prediction

首先,第一个预训练模型是让BERT做“完形填空”。具体来说是在输入的一段文本中随机将某一个单词盖住(mask),然后让BERT预测这个单词是什么的概率。最后一层用softmax输出所有单词出现在这个位置的概率,概率最大的即是BERT的预测。将这个预测的结果与真值进行对比,使预测值和真实值之间的交叉熵最小,这就是第一个预训练。

next sentence prediction

第二种预训练做的是两句话间是否是连续的逻辑判断。一共有四个输入:sentence1, sentence2, CLS判断符号和SEP分隔符号。但我们主要关注的是CLS的输出,这是个二分类输出,只有YES/NO两种情况。

如何使用无标签数据进行预训练?_第2张图片

3.数据增强

论文: ​​​​​​Unsupervised Representation Learning by Predicting Image Rotations (ICLR18),如图,文章提出,通过训练ConvNets来识别输入图像的2D旋转来学习图像特征。其输入为原图像,使用的标签为人为旋转图片后得到的数据。

如何使用无标签数据进行预训练?_第3张图片

论文:Context encoders: Feature learning by inpainting。我们可以通过随机去掉图像中的某个部分来生成训练数据,原数据作为训练标签来进行预训练。

 如何使用无标签数据进行预训练?_第4张图片

这些用人为设计监督任务的所训练出来的模型是有效的。因为你可以反过来设想,如果这个网络啥也没学到,它怎么可能把丢失的像素无缝补齐呢?

三、总结

综上,利用无标签数据进行预训练的关键在于构造监督信号。利用伪标签、用数据本身作为标签及数据增强三种方式都是较为常用的利用无标签数据的方法。当然还包括无监督学习中的聚类等方法,这里不在详述。

你可能感兴趣的:(数据分析,NLP,算法)