自监督学习的出发点
对于许多研究者而言,一个通用且强大的人工智能是最终梦想,然而当今海量的标注数据和数据驱动的神经网络模型似乎是唯一的途径。有没有办法摆脱成本高昂的标注数据,把海量的无标签数据利用起来?
无论是语言和图像,他们的数据结构一定存在着内在的规律,利用数据自身结构设计预训练任务,模型了解了数据分布的先验知识,再去学习特定任务的知识,是否会有更好的表现?更进一步,如果模型可以在互联网世界海量的无标注数据中畅游,我们会得到一个怎样的 AI 模型呢?
在自然语言处理领域,以 Mask Language Model (BERT)和 Generative Pretraining (GPT)为代表的自监督预训练模型,取得了突破性的进展。在图像领域,每张图片同样蕴藏着丰富的内在结构,正是这样的内在结构的存在,分类、检测、分割乃至场景图生成等任务才能实现。
然而,在有监督学习中,越是粒度细、语义层次高的任务,标注的难度就越高,这直接限制了视觉领域的发展。通过一些人工设计的自监督任务,实现对海量数据的无监督学习,然后在下游任务中,进行有监督的微调。在经过自监督预训练后的模型,包含了预训练任务所引导的视觉理解能力,期望这样的理解能力能够帮助下游任务的学习,降低对标注样本的需求。
因此,在自监督学习中,设计合理有效的自监督任务是非常重要的。一个好的自监督任务,能够驱使模型充分探索数据的内在结构。图像理解一定是对图像的方方面面进行语义级别的理解。这样,自监督预训练模型才能有效泛化到下游任务中。为此,研究者进行了探索。
01 预训练任务 Pretext Task
研究者提出了多种多样的预训练任务(Pretext Task),五花齐放,百舸争流。参考 NLP 中的 Masked Language Model, 我们可以尝试在空间维度对图像进行部分遮掩和重建。我们也可以尝试遮掩图像中的特定通道,利用其余通道进行重建。甚至,可以基于全图的自编码任务或者生成任务学习图像的内在表征。
如果将遮挡语言模型理解成考试中的完形填空,我们也可以为图片设计一些任务,例如旋转角度预测、拼图复原、着色、相对位置预测等等。
但可以预期的是,一个好的预训练任务,必须有足够的难度,能够驱使模型进行从底层的局部特征到高层的语义特征的多层次理解。从这个特点看,上述的一些任务,着色、相对位置预测、旋转角度预测等,似乎太过简单了。
同时,与紧凑且抽象的人类语言不同的是,图像中的像素特征是高度冗余的,临近像素具有很强的相似性和关联性,进行简单的遮掩和重建也很容易被模型破解。
对比学习是近年来繁荣发展的一种预训练任务,他的一个基本出发点是:一张图片的不同视角应该具有相似的语义表示,而不同的图片大概率具有不同的语义表示。由此出发,衍生出了一系列方法,取得了非常好的效果。
02 对比学习的几种方式 SimCLR、Moco、BYOL
2.1 SimCLR:简单有效的对比学习方法
SimCLR (A Simple framework for Contrastive Learning of visual Representations) 是一个简单而暴力的基于对比学习的方法,可以帮助我们一窥对比学习的思想。同一物体在不同视角应当具有相近的语义表示,并且这样的表示应当能与其他物体区分开。
接下来,细致介绍一下 SimCLR 的框架流程:
01
一个数据增强模块将图片样本 x 进行两次随机数据增强后,得到相互关联的两个视角 x_i 和 x_j,作为正样本对。数据增强操作有三种:随机裁剪(Crop),随机颜色扭曲(Color Distortion)和随机高斯模糊(Gaussian Blur)。其中随机裁剪和颜色扭曲是至关重要的。
02
一个神经网络编码器 f 分别对增强样本x_i 和 x_j 进行特征提取,得到特征表示 h。编码器的结构是任意的,为了简便考虑,SimCLR 使用了 ResNet 结构。
03
一个小的多层 MLP 网络对得到的特征表示进行非线性变换,得到新的表示 z,SimCLR 将在新的表示空间进行对比学习。
从对比学习的损失函数,我们可以更清楚地了解这个预训练任务:
其中,sim 代表相似度函数,\tau 表示温度系数。一张图片的两个视角构成一个正样本对,训练中同一 batch 中的其他样本构成负样本。损失函数驱使正样本对的表示相互靠近,从而能够在一个 batch 中正确地找到成对样本的另一半。
尽管基本思想是简单的,但是有一些重要的细节要求,使得这样的自监督任务能够工作。SimCLR 进行了细致的实验探究,得到了一些有价值的结论。
- 在对比学习中,数据的增强方式是十分重要的,Crop 加上高强度的 Color Distortion 是一个基本的有效组合。数据增强太弱,模型可以轻易地通过色彩统计特性完成对比学习任务,无法得到有效的表征。
- 将图像表示进行非线性变换 z = g(h) 后,再进行对比学习,可以大幅提高性能。针对对比学习的这一特定任务,非线性变换 g 将图像表征从通用表征空间变换到任务空间。
- 虽然存在收益饱和,但是对比样本的数量越多,效果越好。训练时间越长,效果越好。
为了比较 simCLR 表示和 ImageNet 有监督预训练,我们看一看两者迁移到不同分类任务的表现,可以发现自监督训练表示实际上已经不逊色于有监督预训练。
2.2 Moco:通过 momentum queue 保存对比样本
在前文中提到,SimCLR 将同一 batch 中的不同图片作为对比负样本,而且对比样本越多,效果越好。这就要求大 batchsize,SimCLR 实验采用 4068 batchsize,这对机器硬件有很高要求。Moco 是 SimCLR 同期的工作,两者都基于对比学习的基本思想,具有相同形式的损失函数。不同的是,Moco 利用一个滞后的 momentum encoder 处理样本,并保存到队列中,作为对比学习的负样本。Moco 的做法将对比样本的数量和 batchsize 解耦,保证了对比样本的数量,达到了很好的效果。
Moco 的示意图如上,一张图片经过两次不同的数据增强,输送给 Encoder 和 Momentum Encoder。其中 Momentum encoder \theta_k 根据 Encoder \theta_q 以动量形式更新:
动量系数 m = 0.999,momentum encoder 的更新实际上是很缓慢的。Momentum Encoder 的输出会额外保存到队列中,留作后面对比使用,每次对比学习使用的负样本便是队列中的全部样本。随着训练的进程,Momentum encoder 逐步更新,同时队列也以先进先出的方式逐步更新对比样本,保证队列中样本的时效性。
类似于 SimCLR, Moco 在识别任务中也有着很好的表现。除了在识别任务,Moco 验证了对比学习预训练在细粒度任务的表现,可以发现,预训练模型在检测、分割、关键点等任务中基本上达到甚至超越了有监督预训练。
2.3 BYOL:抛弃对比也是可行的?
前文中,Moco 和 SimCLR 都强调了对比负样本的重要性,对比样本越多,效果越好。BYOL (bootstrap your own latent) 模型架构类似于 Moco,但是抛弃了对比样本,却意外地取得了很好的效果。
类似于 Moco ,BYOL 同样采用 Momentum Encoder,图中的 sg 代表 stop gradient, 也就是此处梯度不回传。
同一图片的不同视角分别经过编码器 f 和投影层 g 之后得到两个表示 z_{\theta} 和 z_{\zeta},与对比学习不同的是,BYOL 不再致力于从正负样本中找到正样本对,而是直接基于正样本对中的一个视角预测另一个视角,也就是基于 z_{\theta} 预测 z_{zeta}。相应的,对比损失也变成了归一化后的回归损失:
我们看看 BYOL 的迁移性能,线性评估 (Linear Evaluation) 固定特征编码器,只训练线性分类层,因此线性评估指标可以很好地评估特征的可用性。从线性评估看,BYOL 超越了SimCLR 和 Moco,甚至逼近了有监督学习表征。考虑到 BYOL 完全没有使用标签信息,不得不令人称赞,其背后的原因,也值得深思。
必须指出的是,BYOL 抛弃了对比,却带来了另一个问题——模型塌缩。可以试想,只要模型将所有输入都预测为同一输出,例如 0,就可以完美解决 BYOL 所设计的预训练任务,这就是模型塌缩。后续的研究表明 (Simsiam),如果在投影模块(projector) 和 预测模块(predictor)去掉批归一化层(batch-normalization),自监督训练的性能就会大幅下降。
批归一化层将一个 batch 内的数据表示进行强行变换和区分,在某种意义上进行了 batch 之内的对比,从而减少了塌缩的可能性。在 BYOL 之后,许多文献研究了避免塌缩的机制,并提出了一些替代方法。尽管笔者并未十分清楚,但是进行适当的设计以避免模型塌缩应当是必须的。
2.4 总结与展望
总结来看,基于对比学习的自监督方法已经取得了非常好的成绩,相关研究在近年蓬勃发展,达到并超越了有监督学习。人们对于自监督的方法、优势和应用场景都有了深入的研究。
自监督学习作为基本的表征学习方式,也极大地推动了其他领域的研究,一个优秀的基础表征,也很可能是优秀的少样本乃至零样本学习器。
simCLR v2 表明大型自监督模型也是强大的少样本学习器。DINO 则表明自监督模型能够进行 patch 级别的“语义”理解,STEGO 对 DINO 表征进行优化后刷新了无监督分割的 SOTA。一些研究也表明,在广泛数据进行自监督学习后,也具有很好的域适应和泛化能力。自监督表征对于下游数据不均衡也有一定的鲁棒性。自监督学习正推动着许多下游任务的进步。
03 业务应用
自监督学习作为普遍有效的表征学习方法,通过利用海量无标签数据,一方面可以降低下游任务对标签数据的依赖,降低研发成本;另一方面,一个已经熟悉广泛无标签数据的模型,也必然是一个效果更优、泛化能力更强的专家模型。
网易易盾不断将前沿技术应用到业务领域,在以效果为核心的战略框架下,不断打磨模型效果,提升客户体验。易盾 AI 团队对自监督学习进行了深入研究,探索了一套稳定有效的落地方案,当前已经在检索、人体等多个业务场景落地,获得了可观的效果提升。
参考文献:
1.SimCLR : A Simple framework for Contrastive Learning of visual Representations
2.SimCLR v2: Big Self-Supervised Models are Strong Semi-Supervised Learners
3.BYOL:Bootstrap your own latent: A new approach to self-supervised Learning
4.Simsiam: Exploring Simple Siamese Representation Learning
5.DINO: Emerging Properties in Self-Supervised Vision Transformers
6.STEGO: Unsupervised Semantic Segmentation by Distilling Feature Correspondences
7.Self-supervised Learning is More Robust to Dataset Imbalance
8.Universal Domain Adaptation through Self-Supervision