AMiner平台由清华大学计算机系研发,拥有我国完全自主知识产权。平台包含了超过2.3亿学术论文/专利和1.36亿学者的科技图谱,提供学者评价、专家发现、智能指派、学术地图等科技情报专业化服务。系统2006年上线,吸引了全球220个国家/地区1000多万独立IP访问,数据下载量230万次,年度访问量超过1100万,成为学术搜索和社会网络挖掘研究的重要数据和实验平台。
久负盛名的人工智能领域顶级会议 NeurIPS 2020 将于2020年12月6日开幕,在本届 NeurIPS 大会上,来自谷歌、马里兰大学等著名研究机构的学者针对自监督学习这一火热的研究课题展开了讨论。在经历了数据增强大潮、对比学习魔改、MoCo 与 SimCLR 系列的相爱相杀等一系列波澜壮阔的自监督学习科研竞赛后,自监督学习研究也进入了深水区。除了研究如何提升自监督学习框架的通用数据表证性能、针对特定任务进行。本文将首先介绍自监督学习、知识蒸馏、半监督学习等相关领域的基础知识,进而解读本届 NeurIPS 上与自监督学习和知识蒸馏相关的 3 篇优秀论文,旨在抛砖引玉。(文章较长,建议收藏之后慢慢品读)
预备知识
本章将介绍自监督学习、知识蒸馏、半监督学习的基础知识,对上述领域有深刻理解的读者可自行跳至第二章。
1.自监督学习
众所周知,传统的机器学习范式可以被分为监督学习、半监督学习、无监督学习、强化学习。其中,监督学习要求我们同时拥有输入数据的特征以及相应的标签;在半监督学习任务中,我们拥有部分数据对应的标签;而在无监督学习中,我们则并不拥有任何与输入数据相对应的标签。因此,监督学习对数据标签的要求最高,而无监督学习对数据标签的要求最低。由于数据标注将会引起巨大的开销,为了充分利用无标注数据,以自监督学习为代表的无监督学习方法近年来逐渐兴起。近年来,有深度学习「三驾马车」之称的图灵奖得主 Geoffery Hinton、Yoshua Bengio、Yann LeCun 纷纷领导其团队加入了自监督学习的大潮中。在 Yann LeCun 看来,自监督学习技术是人工智能未来发展的必然趋势,人们可以通过自监督学习,让机器自动对所处的环境进行观察,从而学习出海量有关世界的基本知识,形成所谓的「常识」。
简而言之,自监督学习旨在通过设计巧妙的前置任务(pretext),使用待预测部分之外的信息来预测某一个子集的信息,挖掘出大规模无监督数据的潜在规律,学习出有助于提升下游任务性能的数据表征和归纳偏置,这些数据表征需要涵盖良好的语义或结构上的意义。接着,我们往往通过「预训练+调优」等方式,将学习到的通用数据表征应用与具体的任务。
自监督学习的前置任务
前置任务是提取数据分布潜在规律的关键,以图像数据为例,近年来研究人员设计了包括变形、图块相对位置预测、拼图问题、着图像色、生成式图像恢复在内的各种前置任务。
(1)变形
对于人类来说,我们不会因为图像上发生细微的变形而改变对图像语义的理解,因此我们希望通过自监督学习方式得到的表征对于变形操作具有分类上的不变性,**如果能够赋予神经网络这种利用不变性的能力,则可能有效应对对抗性样本的攻击。**例如,Dosovitskiy 在于2015年发表的「Exemplar-CNN」中,对在不同位置上采样得到的不同尺度的图像进行随机的数据增强变换,并期望所有形变后的图块都属于同一个代理类。
(2)图块相对位置预测&拼图问题
对于每一张输入图像,我们期望网络可以学习到不同图块之间的相对位置关系,**这可以看做从某种程度上考虑了 Capsule 网络中不同特征之间位置关系的同变性。**Doersch 等人于 2015 年发表的论文「Unsupervised Visual Representation Learning by Context Prediction」将 pretext 任务形式化定义为预测同一张图像中随机两个图块之间的相对位置。为了识别出不同部分之间的相对位置,模型需要理解目标的空间环境。沿着这种基于图块学习的思路,Noroozi 和 Favaro 于 2016 年设计了一个「jigsaw」拼图游戏作为 pretext 任务:训练模型将 9 个打乱的图块放回初始的位置。
(3)图像着色
近年来,为黑白灰度图像上色的任务由于其实用性受到了越来越多研究者的关注。实际上,为图像自动上色也可以作为一种有效的前置任务。在 ECCV 2016 上发表的论文「Colorful Image Colorization」中,作者提出通过量化色彩空间,将着色问题转化而我分类问题,将该图像映射到量化的色彩值输出的分布上。
(4)生成式图像恢复
自编码器是一类在自监督学习中被广泛使用的网络架构,旨在通过重建被扰动的图像提取出关于图像的本质特征。在论文「Context Encoders: Feature Learning by Inpainting」中,作者训练了一个上下文编码器来填补图像中缺失的一块,并使用了一个 L2 重建损失和对抗性损失的组合来训练该模型。
对比学习「军备竞赛」
尽管研究者们设计了各种各样的前置任务为下游任务提取自监督特征。然而,对于无标签数据而言,如何提升样本的利用率,如何构建有效的负例成为了制约自监督学习方法进一步提升的关键瓶颈。为此,许多研究者将目光投向了「对比学习」方法,此类方法已经开始显著地缩小在 ImageNet 数据集上与监督式学习之间的性能差距。简而言之,对比学习的思想与度量学习相类似,旨在学习一个编码器,使得正样本与 anchor 之间的相似度大于负样本与 anchor 之间的相似度:
基于内积(余弦相似度),对比学习方法普遍使用如下的 InfoNCE 损失函数:
然而,在自监督学习任务中,我们并不知道每个样本的标签。因此,我们也无从知晓两张图像是否相似。尽管如此,如果我们假设每张图片都从属于它自身的一个独有的类别,那么我们就可以基于数据增强技术提出各种构造这类三元组的方法(正负样本对)。因此,在一个包含 N 个样本的数据集中,我们可以构造出 N 个标签。在论文「Self-supervised Learning: Generative or Contrastive」中,清华大学唐杰教授团队对基于生成式方法和对比学习的自监督学习进行了综述,他们将最近被提出的对比学习框架分为「上下文-实例」的对比和「上下文-上下文」的对比两类。目前主流的基于对比学习的自监督表征学习性能如下图所示:
在对比学习领域,最为研究者们津津乐道的「神仙打架」桥段莫过于谷歌大脑团队的研究员陈挺博士开发的 SimCLR 系列与 Facebook 人工智能研究院的何恺明大神开发的 Moco 系列之间的最强对比学习框架之争。
MoCo
在 MoCo 中,为了在尽可能增加负样本的数量的同时降低对计算空间的大量消耗,作者针对 Memory Bank 机制进行了改进,提出使用一个队列维护负例的样本集合,从而避免对所有的样本进行编码。本文采用了动量更新方法,将正例编码器的参数赋给负例编码器。
SimCLR
对于人类来说,如果我们同时对某张图像采取 2 种不同的数据增强方式,我们仍然能够是别出这两张增强后的图像来自于同一个出处。在这种直觉的引导下,SimCLR 的作者们提出将不同的数据增强方式应用于同一数据实例从而得到不同的视图,使相关的视图距离相近,互斥的视图距离较远。SimCLR 框架包含四个组成部分:
(1)数据增强模块 t,可以根据数据示例 x 生成多个不同的数据增强视图
(2)提取视觉表征向量的编码器 f(·)
(3)非线性神经网络投影头g(·),将视觉表征映射到对比损失空间
(4)对比损失函数
MoCo v2
SimCLR 被提出后,MoCo 的作者积极跟进,将 MLP 投影头和更强的数据增强方式加入到了 MoCo 框架中,得到了优于 SimCLR 的图像分类和目标检测结果。此后,谷歌大脑团队又将 MoCo 中的记忆机制加入到了 SimCLR v2 中,进一步提升了模型性能(详情见本文第二章)。
值得注意的是,由于自监督学习往往会通过「预训练+调优」的方式应用于真实场景,并且可以被用于自动生成训练所需的数据标签。因此,自监督学习与迁移学习、知识蒸馏、半监督学习有着千丝万缕的联系,也由此形成了诸多新兴的交叉研究领域。
2.知识蒸馏
由于深度学习的成功在某种程度上依赖于算力的增长,许多由行业巨头设计的性能强大的网络架构需要耗费大量的计算资源才能进行训练。然而,这对于更广泛的科研活动和应用落地设定了过高的门槛,也不利于将深度学习模型部署于边缘设备。为此,在 Caruana、Hinton 等人的推动下,人们试图通过「教师-学生」网络知识蒸馏的方式对网络进行压缩,使 softmax 层的映射曲线更加平缓,将实例的概率映射地更为集中。
近年来,**由于知识蒸馏可以以无监督的方式提取教师网络的本质特征,并基于该特征提升学生网络的性能,越来越多的研究者也尝试将知识蒸馏与自监督学习相结合。**通常,我们会通过自监督学习为训练生成为标签。Norrozi 等人在 CVPR 2018 上发表论文「Boosting self-supervised learning via knowledge transfer」中,将预训练的教师模型从无标签数据集上学习到的表征通过聚类的方法简化为伪标签来迁移知识,然后利用伪标签学习更小的学生网络。如图 7 所示,知识蒸馏在半监督学习、自监督学习(尤其是对比学习)领域中被广泛使用。
3.半监督学习
为了充分利用未标注样本的数据分布特征,以及其数据分布与已标注样本分布之间的关系,半监督学习往往会利用以下两种数据分布假设:聚类假设和流形假设。
前者假设数据具有内在的聚类结构,因此,落入同一个聚类的样本类别相同。后者假设数据分布在一个流形上,在流形上相近的样本具有相似的预测结果。半监督学习假设相似的数据输入应该有相似的输出(这与对比学习的出发点不谋而合),我们可以利用数据之间的相似度对无标注数据加以利用。因此,度量样本点之间相似性的方法成为了半监督学习的关键。
在众多半监督学习方法中,自训练(Self-Trainig)是最朴素的算法之一,其主要思想是在不断的迭代中,利用未标注数据生成伪标签,渐进式地构建越来越强大的数据集,从而不断提升模型的分类性能直到收敛。算法流程如下:
二、NeurIPS 2020 上的自监督与知识蒸馏研究
1.Big Self-Supervised Models are Strong Semi-Supervised Learners(SimCLR v2)
论文链接:https://www.aminer.cn/pub/5eede0b091e0116a23aafc15?conf=neurips2020?f=cs
代码链接:https://github.com/google-research/simclr
本文来自谷歌大脑 Hinton 领导的研究团队,一作为 SimCLR 作者陈挺。在本文中,作者基于 MoCo 中的记忆机制提出了 SimCLR v2 自监督学习框架,通过知识蒸馏的方式,将大型的自监督模型学习到的数据表征用于提升基于小样本的半监督学习任务,大大提升了模型的性能。众所周知,为了有效利用具有少量标注的数据集,采用「无监督预训练表征+监督式调优」的训练范式成为了一种主流的做法。在本文中,作者发现:数据标签越少时,使用越大的网络模型就越有利于提升通过任务无关的方式利用无标签数据进行训练的效果。在经过针对特定任务的调优后,大模型的性能可以得到提升,并且可以使用无标签数据,在分类准确率损失较小的情况下,以针对特定任务的方式将大模型蒸馏为小得多的模型。
本文提出的半监督学习算法包含以下 3 个步骤:(1)使用 SimCLR v2 对大的 Resnet 模型进行无监督预训练,学习到通用的视觉表征(2)在少量带标签数据上,针对特定任务进行有监督的调优(3)使用无标签数据进行知识蒸馏,从而对网络进行精修并迁移针对特定任务的知识,得到更加紧凑的模型。
基于 SimCLR v2 的自监督预训练
为了高效地利用无监督推向学习到通用的视觉表征,作者对 SimCLR 进行了一系列改进,提出了 SimCLR v2 模型。SimCLR 的算法流程如图 9 所示。在本文中,作者从三个方面对 SimCLR 进行了改进:
为更好的利用广义与训练能力,作者探索了更大的 ResNet 模型。与SimCLR 和其它最大采用 ResNet50(4x) 模型的方法不同,作者在本文中采用了更深但是较窄的模型。作者训练的最大模型是带选择性核(Selective Kernel)且通道宽为 3 倍的 ResNet-152 模型。通过将模型从 ResNet-50 扩展到ResNet-152,作者在利用 1% 有标签数据进行调优时,获得了 29% 的性能提升。
作者增大了非线性网络(投影头)g(·)的容量。此外,不同于在 SimCLR 中在与训练后完全弃用 g(·),SimCLR v2 在中间层对其进行调优。这一改进获得了显著的性能提升。此外,SimCLR v2 使用了 3 层的投影头,并且从第一层投影头开始进行调优,从而获得了 14% 的相对性能提升。
收到 MoCo 的启发,作者引入了记忆机制,将之前的负例缓存起来,从而扩大负例的数量。
通过无标签数据进行自训练 / 知识蒸馏
为了针对目标任务进一步提升网络性能,作者直接利用了无标签数据进行知识蒸馏。在本文中,作者使用调优后的网络作为教师网络,生成训练学生网络的伪标签。具体而言,作者优化的蒸馏损失函数如下:
其中,
,τ 为蒸馏的标量温度参数。在蒸馏过程中,教师网络会被冻结,只有学生网络会被训练。
实验结果
如图 17 所示,随着 SimCLR v2 网络深度、宽度的增加,模型的 Top-1 准确率递增。在相同条件下,加入选择性核会提升模型的性能。
如图 18 所示,无论是对于监督学习还是半监督学习来说,更大的模型对有标签数据都具有更高的利用效率,但是对于半监督学习来说这种性能提升更为明显。
如图 19 所示,在将具有不同数量的投影头的 SimCLR v2 用于预训练 ResNet-50 时,对于半监督学习而言,使用更深的投影头会得到更好的性能,而且往往从第一层而不是第零层开始调优要更好。
SimCLR v2 中的知识蒸馏模块从两个方面提升了调优后的模型:(1)当学生模型比教师模型小时,知识蒸馏可以通过迁移针对特定任务的知识提升模型的效率(2)即使学生模型与教师模型相同,自蒸馏仍然可以显著提升半监督学习的性能。
2.CompRess: Self-Supervised Learning by Compressing Representations
论文链接:https://www.aminer.cn/pub/5f9a909591e0114d7e781305?conf=neurips2020?f=cs
代码链接:https://github.com/UMBCvision/CompRess
在边缘计算等应用中,出于对数据隐私和计算效率的考量,我们往往希望在终端而不是云端对图像进行计算。而由于终端设备的算力往往有限,我们往往需要通过知识蒸馏技术将大的教师模型压缩为较小的学生模型。
近期的一些研究工作表明,较大的模型能比较小的模型更多地受益于自监督学习。因此,对于较大的模型而言,监督学习和自监督学习之间的性能差异被大大地缩小了。基于这一观察结果,作者试图通过对较深的模型进行压缩,为较小的模型学习到更好的表征。作者通过对学生模型进行训练,使其能够在教师网路嵌入空间中学习到数据点之间的相对相似度。
实际上,由于在自监督学习环境下,教师网络并没有接触过任何具有标签的数据,因此其输出为嵌入而不是一个在各个目标类别上的概率分布。因此,我们并不能在这里使用标准的知识蒸馏方法。我们需要通过计算输入图像(query)和所有已知数据点(anchor)之间的距离得到一个教师网络空间中的最近邻分类器,然后将这些距离转化为概率分布。接着,本文作者试图将这种教师空间中的概率分布迁移到学生网络中,从而使学生网络与教师网络中 anchor 的排序相匹配。
具体而言,对于每张图像来说,作者将其与一组随机的被称为「anchor」的数据点进行对比,从而获得一组相似度。接着,这些相似度会被转换为一个关于 anchor 的概率分布。这一概率分布根据与每个图像最近的一些邻居与其之间归一化后的余弦相似度来表征该图像。第 i 个输入图像与第 j 个 anchor 之间的概率为:
由于我们希望将这种知识迁移到学生网络中,我们会在学生网络中得到相同的分布。最终,作者训练了一个能够最小化这两个分布之间的 KL 散度的学生网络。这里的 KL 散度计算如下:
其中,
为学生网络中第 i 个输入图像相对于所有 anchor 的概率分布,由于教师网络被冻结,我们需要优化如下所示的目标:
值得一提的是,为了评价自监督学习方法,传统的做法是根据自监督学习得到的表征训练一个线性分类器,令其执行 ImageNet 分类等下游任务。然而,这种评价过程需要耗费大量的算力。在本文中,作者使用了一种简单的没有参数的最近邻分类器来评价自监督学习方法,大大提升了评价的效率。此外,本文作者还通过 k-means 聚类和图像类别的对齐任务来评价模型。
实验结果
如图 22 所示,相较于目前性能最优的模型,CompRess 在线性评价、最近邻评价、聚类对齐评价任务中均获得了一定的性能提升,在将网络压缩为 AlexNet 时,CompRess 的性能甚至超过了监督式学习。
如图 23 所示,随着温度标量参数从 0.02 逐渐增大到 1.0,学生网络的性能会变差。这也许是因为温度值较小时,模型会更加关注较近的邻居。此外,Memory bank 较大时,学生网络得到的准确率更高。
3.Rethinking Pre-training and Self-training
论文链接:https://www.aminer.cn/pub/5ee7495191e01198a507f826?conf=neurips2020
至此,我们始终假设预训练对于提升下游任务的性能是有积极作用的。然而,在 ICCV 2019 上,何恺明团队在论文「Rethinking imagenet pre-training」中指出,ImageNet 预训练对于 COCO 数据集上的目标检测任务的提升有限。
本文来自谷歌大脑团队,作者采用自训练作为利用额外数据的方法,并将其与 ImageNet 预训练进行对比。本文解释了自训练方法的通用型和灵活性,并且发现:
(1)强大的数据僧强和更多的标签数据会降低预训练的价值;
(2)与预训练不同,在使用高质量数据和低质量数据时,如果我们使用较为强大的数据增强方法,自训练往往都是有效的;
(3)在预训练有效的情况下,自训练对性能的提升更大。具体而言,作者在实验中使用了如图 24 所示的数据增强方法,针对 CVPR 2020 上发表的论文「Self-training with Noisy Student improves ImageNet classification」展开了分析。
实验结果
(1)数据增强和数据标注情况对预训练的影响
如图 25 所示,使用的有标签数据越多时,预训练的益处会下降。
如图 26 所示,数据增强方法 Augment-S1, S2, S3, S4 的强度依次递增。当我们使用较强的数据增强手段时,预训练会降低模型性能。
(2)数据增强和数据标注情况对自训练的影响
如图 27 所示,自训练在使用高强度的数据增强策略时仍然提升性能,此时预训练已经对模型性能有负面影响。
如图 28 所示,在使用不同比例的有标签数据时,自训练都有效,自训练可以提升预训练的性能
(3)在使用高强度数据增强时,自监督预训练也会降低模型的性能
三、结语
本文介绍了自监督学习、知识蒸馏、半监督学习的基础知识,并分析了 NeurIPS 2020 上三篇与之相关的论文。综合分析,我们可以整理出以下思路:
(1)通过知识蒸馏生成伪标签的方式被普遍应用于半监督学习、自监督学习领域中的知识迁移工作,在使用大量数据以及大模型的情况下,知识蒸馏也许可以作为将半监督学习、自监督学习统一的桥梁。
(2)论文「Big Self-Supervised Models are Strong Semi-Supervised Learners」和「CompRess: Self-Supervised Learning by Compressing Representations」都指出,较大的模型能够比较小的模型更多地受益于自监督学习,该领域的研究者可以尝试不同的知识蒸馏方式在不同场景下的具体效果。
(3)论文「Big Self-Supervised Models are Strong Semi-Supervised Learners」使用了和论文「Self-training with Noisy Student improves ImageNet classification」相类似的思路。而论文「Rethinking Pre-training and Self-training」也是基于后者进行的实验,该论文中的相关结论有助于自监督学习的研究者进一步研究数据增强方法与自监督学习效果之间的关系。
(4)为了提升自监督学习方法的性能,我们需要在如何扩大负例样本量、如何构建负例,如何将自监督学习方法更好地适配于下游任务等方面进行进一步的探索。
NeurIPS2020即将开始,欢迎各位作者老师和同学加入分享团队,促进学术交流,让知识正真流动起来!
扫码了解更多NeurIPS2020会议信息
添加“小脉”微信,留言“NeurIPS”,即可加入【NeurIPS会议交流群】,与更多论文作者学习交流!