译 / 阿里淘系 - 白罗
原文标题:A Simple Framework for Contrastive Learning of Visual Representations
原文作者:Ting Chen, Simon Kornblith, Mohammad Norouzi, Geoffrey Hinton
(四位作者来自于 Google Research, Brain Team)
原文链接: proceedings.mlr.press/v119/chen20…
本文提出了一种叫 SimCLR 的基于对比学习的自监督式学习框架。本方法无需其他团队成果中所需要的特定的架构或者一个memory bank,因此相比之前提出的对比学习方案过程更加精简。作者们通过系统研究自己框架的方式来探索到底是什么能让对比学习能抓住核心特征(representation)。
本文证明了:
(1)不同数据增加方法的组合方式对定义有效的预测任务至关重要;
(2)在特征与对比损失之间引入一种可学习的非线性变换很大程度上提高了特征的学习质量;
(3)自监督式的对比学习相比于传统的监督式学习(supervised learning)优势主要在于更大的batch size和更多的训练次数(因为海量样本无需手工标记即可进行特征学习)。
通过结合上述三种发现,本文提出的方法比先前在ImageNet数据集上实践的那些其他的自监督式或半监督式学习能得出更好的结果。本文提出的SimCLR一项很重要的成绩是在ImageNet数据集上做到了76.5%的top-1准确率(top-n准确率指:只要前n个预测出来概率最高的类别中包含了实际类别,则认为结果准确)比当前最成熟且先进的残差神经网络ResNet-50高出了7%。同时当训练样本中仅有1%的数据被标记时,本文提出的SimCLR做到了85.8%的top-5准确率,这比使用了100%样本训练的经典监督式学习网络AlexNet要更加精确。
简介
如何让模型在没有人类监督(样本标记)的情况下对海量数据进行有效的视觉特征学习是一个长期困扰人们的问题。目前绝大多数主流方法可以分为两种:(1)生成模型(2)判别模型。
生成模型 (generative) 通过学习来生成或重建输入空间上被删除的像素。但是生成式有一个缺点,那就是像素级别的生成耗费极其庞大的算力并且对于特征学习任务来说并非必要。而判别模型 (discriminative) 使用类似监督式学习的目标函数 (objective function),但与监督式学习不同的是,训练自监督任务 (pretext tasks) 时用的输入和标签全都来源于无标签的数据集。有许多的判别模型(作为作者眼中的反面教材)都使用启发式的方法来设计自监督任务 (pretext task),但这有可能会限制模型所学特征的泛化能力 (generality)。而基于数学上隐空间的对比式 (contrastive) 判别模型前途光明,并且取得了领先的成果。
这篇论文介绍了一个简单的基于视觉特征的对比学习模型SimCLR。SimCLR不仅超越了很多经典模型(见图1),而且更加的简单,无需一些其他团队论文中提到的特定架构或者memory bank。
为了探索什么因素在影响对比学习的性能,作者们系统地研究了自己框架的主要组成部分,最后得出了以下结论: 不同数据增强方法的组合对定义产出有效特征的的预测任务至关重要。补充说明,数据增强的效果在对比学习上比传统的监督式学习更加显著。
在特征与对比损失之间引入一种可学习的非线性变换很大程度上提高了特征的学习质量。
基于对比交叉熵损失的特征学习得益于归一化嵌入和对温度参数的适当调整。
自监督式的对比学习相比于传统的监督式学习优势主要在于更大的batch size和更多的训练次数。
通过结合并运用上述发现,作者团队本文提出的SimCLR在ImageNet ILSVRC-2012数据集上实现了极大 的突破。在ImageNet数据集上做到了76.5%的top-1准确率,这比当前最成熟且先进的残差神经网络ResNet-50高出了7%。同时当训练样本中仅有1%的数据被标记时,本文提出的SimCLR做到了85.8%的top-5准确率,这比使用了100%样本训练的经典监督式学习网络AlexNet要更加精确。当微调并被与用于其他自然图像分类后,SimCLR相比于某个strong supervised baseline (Kornblith等人, 2019),在12个数据集中的的10个有着更加出色的表现。
方法
对比学习框架
受到最近的对比学习算法(详情见第七章)启发,SimCLR通过最大化被不同数据增强组合处理过的图像之间的一致性(根据隐空间中的对比损失),来进行特征学习。正如图二所示,SimCLR主要由四个部分组成。
一个将任意一个样本随机转化成2个相关的图像(这样转化得来的两个样本xi和xj称为“正对”)的随机数据增强模块。在这个项目中,作者们依次运用了3个简单的数据增强方法,包括随机裁剪(裁剪后拉伸至原大小)、随机颜色失真、以及高斯模糊。如图三所示,随机裁剪+颜色失真的组合取得了不错的结果。
一个能从被数据增强的样本中提取特征向量神经网络base encoder。本框架允许不同的网络架构而不需要额外的约束。本项目为了简化问题,所以选择了最常见的残差神经网络。hi = f(xi) = ResNet(xi),其中hi为平均池化层之后的输出。
一个小的将特征映射到对比损失作用空间的神经网络projection head g(·)。作者使用了单隐含层的多层感知器MLP来得到zi = g(hi) = W (2)σ(W (1)hi) ,其中是一个ReLU非线性激活函数。正如第四节所示,作者发现在zi上定义对比损失比在hi上得益更多。
一个被应以来执行对比预测任务的对比损失函数(contrastive loss function)。对于一个对正相关样本对xk(包含一对样本xi和xj),对比预测函数的目标是在给出xi的情况下识别样本对xk中的xj。
作者随机选取了带N个样本的一个minibatch并且吧对比预测任务定义在了一对来源于minibatch的被数据增强的样本上,因此产生了2N条数据样本。关于负相关样本,这里是在选取了一对正样本后,将同一个minibatch中剩余的2(N-1)个样本都视作负相关样本。这里的样本相似度被定义为 sim(u, v) = u⊤v / ∥u∥∥v∥ ,即向量夹角的余弦值(两向量在被转化为单位向量后的点积)。正相关相本对的损失函数被定义为
其中1[k̸=i] ∈ {0, 1}是一个当且仅当k不等于i时为1的指示函数。τ 是温度系数。最终的损失是根据mini batch所有正相关样本对计算得来的。为了方便起见,之后我们将该损失成为NT-Xent(归一化的温度尺度交叉熵损失)。下图总结了上述的算法:
使用大的batch size进行训练
为了让SimCLR模型保持简单,这里并不会借助memory bank进行训练。相反,这里将batch size从256改为了8192。对于每一个正相关样本对来说,在8192这样的batch size下产生16382个负样本。在大的batch size下使用学习率线性适应的SGD/动量方法可能会造成非常稳定的结果。为了使学习过程平稳,这里对所有的batch size使用了LARS优化器 (Goyal等人, 2017)。模型的训练使用了云端TPU(视具体的batch size使用32到128个核)。关于训练时间,作为参考,在128个v3核的TPU上训练一个batch size为4096个样本的ResNet-50模型100个周期需要花费大约1.5个小时。
全局BN: 标准的残差神经网络使用batch normalization (BN),在数据并行的分布式训练模型中,BN的均值和方差通常被集中在每个设备本地中。在本对比学习模型中,因为正相关样本对是放在相同的本地设备中计算的,所以模型可能受到信息泄漏的影响在不提高特征学习质量的情况下提升准确率(机器学习中的信息泄漏通常指模型在训练过程中的到了训练阶段本不该知道的信息,从而毒化了训练过程。例如预测一个人是否会感染肺炎的模型,在训练集的feature中得到了是否服用抗生素的信息,这实际上是颠倒了因果关系,所以对模型的训练会有负作用。在本文的情境下,学习目标为最大化正样本对相较于其他所有负样本对的余弦相似度,而同一个batch中的样本特征的均值和方差是对所有负样本的一种很好的概括,因此可能透露这区别这种区别的关键信息)。在这里,解决该问题的方法是使用全局的均值和方差来代替局部值。其他的方法有设备间样本洗牌法 (He等人, 2019)以及 layer norm (Henaff 等人, 2019)。
评估协议
这里列出了用来开展试验性研究的协议,旨在探索该框架中不同的设计选择。
数据集和评估指标:我们研究中的绝大多数非监督式的预训练(使用无标签样本进行编码器网络的学习)使用的是ImageNet ILSVRC-2012数据集。一些额外的与训练实验是在CIFAR-10数据集上完成的(见附录B.9)。这里预训练的结果也在很多用于迁移训练的数据集上测试了。为了评估特征学习的质量,作者们遵循了广泛使用的线性评估协议,该评估协议在冻结的基础网络顶层训练了一个线性分类器,同时测试集准确率被用来代表特征学习的质量。出了线性评估之外,作者们还将SimCLR与最先进的半监督式学习模型以及迁移学习模型进行比较。
默认设置:除非有额外说明,这里数据增强默认使用的是随机裁剪、尺寸变换与随机翻折、颜色失真、以及高斯模糊(详情见附录A)。这里ResNet-50网络被用做一个基础的编码器网络,接下来一个两层的MLP将特征映射到一个128维的隐空间中。这里使用前面提到的NT-Xent来描述损失,损失的优化过程中使用了学习率为4.8 (learning rate=0.3xBatchSize/256) 的LARS优化器和10-6的权重衰变。这里对batch size为4096的数据集进行训练100个周期的训练(尽管100周期不足以达到最优性能,但是也能取得有效的模型,允许了公平和有效的消融)。更细节的说,这里在前10个周期中使用了线性“热身”,同时根据无重启的余弦衰减规划来完成学习率的衰减 (Loshchilov & Hutter, 2016)。
方法
数据增强定义了无标签样本上的预测任务。尽管数据增强已经在监督式与非监督式学习中得到了广泛的运用,但是他还从未被用来定义对比学习任务。当前很多用来定对比学习任务的方式基于的是改变架构,例如,Hjelm等人 (2018)、以及Bachman等人 (2019) 通过限制网络结构中的感受野来获得全局到局部的试图预测。Oord等人 (2018)、以及Henaff等人 (2019) 通过固定图像的分割过程和上下文聚合网络来实现相邻视图的预测任务。这里证明了其实可以通过对图像进行简单的随机分割(辅以尺寸变化)来避免上述的复杂设计,这创建了一系列包含上述两种方法的预测任务(见图三)。这种简单的设计方便将预测任务与其他类似神经网络的结构进行了解耦,以便通过扩展并随机组合数据增强方法来拓宽对比任务。
数据增强方法的组合对特征学习的质量至关重要
为了系统地研究数据增强的影响,这里考虑了几种常用的数据增强方法,一种涉及到空间/集合的变换,例如裁剪和尺寸变化(辅以翻折)、旋转、以及抠图。其他种类的数据增强涉及到外观的变化,例如颜色失真(部分灰化、亮度改变、对比度调节、饱和度调节、色相调节)、高斯模糊、索贝尔边缘过滤器。图四对这里研究的数据增强方法进行了展示。
为了探索单种数据增强方法的影响力以及选择合适数据增强组合的重要性,这里通过单独或成对应用数据增强方法来进行研究。特殊的是,由于ImageNet的图像大小各异,这里会预先对所有图片进行了裁剪和尺寸变换,因此这导致很难单独将这两种方法从其他数据增强方法中剥离出来。为了消除这种混淆,这里考虑了这种消融的非对称数据转换设置。具体来说,总是现随机裁剪图像并将他们调整为相同的分辨率,然后将目标的数据增强应用于图二流程中的一支,而在另外一支中保持不变。值得注意的是,这种非对称性的数据增强方法有损训练出来的模型的性能,但是这种设置理论上不会大幅改变单个数据增强方法或它们的组合对训练结果的影响,即不影响这里进行的实验的结果。
图五展示了单个数据增强方法或者它们的组合的线性评估结果。可以看到,尽管单一的数据增强方法可以在对比学习任务上取得更好的结果,但是在特征学习质量上却表现不佳。相反,当数据增强方法被组合来创建对比任务时,尽管预测对比任务变得困难,但是训练出的模型却在特征学习质量上有着更加出色的表现。
有一种数据增强的组合脱颖而出:随机裁剪+随机颜色失真。作者推测其中一个很重要的因素是当仅使用随机裁剪时,很多同一张图片中的大多数小区域有着相近的颜色分布。图六展示了仅有颜色直方图便足以区分图像。这导致神经网络可能利用这种捷径来解决对比预测任务。因此将裁剪与颜色失真相结合才能促使模型学习更加泛化的特征。
对比学习对数据增强的依赖要超过监督式学习
为了进一步阐明色彩类的数据增强的重要性,作者们对色彩类数据增强做了强度调整(见表一),更强的色彩变化大幅提高了非监督式模型的非线性评估结果。在此结论之上,AutoAument模型 (Cubuk 等人, 2019) 作为一种在监督式学习中效果显著的复杂数据增强策略,在对比学习中并不如简单的裁剪+色彩失真。当使用相同数据集训练监督式模型时,作者们发现更强的色彩增强策略并不能提高甚至会降低其性能。因此,该实验证明了,相比于监督式学习,非监督式的对比学习更加收益于强数据增强。前人的一些研究已经证明数据增强对自监督式学习对自监督式学习很有用,而作者的实验进一步证明了对监督式学习没什么提升的数据增强方法却能很大程度提升对比学习的效果。
编码器(Encoder)和头部网络(Head)的架构
非监督式的对比学习更加受益于大规模的模型
图七表明了一个显而易见的结果,增加深度和宽度都能提升对比学习的性能。尽管监督式学习模型上也存在相似的结论,但是值得一提的是随着模型的深广化,非监督式模型与监督式模型之间的性能差异大大地减小了,这表明非监督式学习更加收益与模型规模的增大。
非线性投射的头部网络提升其之前的层的特征质量
作者们随后研究了在模型中包含一个投影头部网络的重要性。图八展示了使用了三个不同结构作为头部网络的线性评估结果:(1)不做变换直接映射(2)线性投影,正如很多前人所用的那样(Wu等人, 2018)(3)默认的带有一个隐含层 (使用ReLU激活函数) 的非线性投影 (类似于Bachman等人所做的, 2019)。作者们发现了非线性投影优于线性投影(提高了3%的性能),同时比不投影提升大幅提升(性能提升多余10%)。当使用投影头部网络时,无论输出维度怎样,结果依旧相似。更进一步,即使运用了非线性投影,投影头部网络前的那一层仍然要比后面的那一层性能高出10%,这表明了投影头部网络之前的隐含层要比头部网络之后的隐含层更好地表达特征。
作者们推测在非线性投影头部网络之前使用特征的重要性源自于对比损失引起的信息损失。特别的是,头部网络部分会一定程度地去学习如何让之前的数据增强变换被还原(换言之,头部网络之前的部分是更加纯粹的特征学习)。因此头部网络可能会移除一些对真正的目标任务(而非对比任务)有益的信息,例如目标对象的颜色或者方向。而通过利用头部网络的非线性变换投影,之前的网络层中能形成更多信息。为了验证这种猜想,作者们对包含头部网络(输出和输入维度保持相同)和不包含头部网络的模型进行了实验,实验中预测了何种数据增强变换被运用了。表三表明了没有头部网络的模型会包含预测何种数据增强被应用的信息,相反的,相关信息在包含了头部网络的模型中损失了。(附录B.4 中有进一步的研究)
损失函数与Batch Size
带温度指数的归一化交叉熵损失比效果优于其他方案
作者将NT-Xent损失与其他常用的对比损失进行了比较,例如逻辑损失、边际损失。表二展示了目标函数以及损失函数输入的梯度。关于梯度,可以观察到 (1) L2范数归一化(即余弦相似性)以及温度系数有效地对不同样本进行衡量,并且适当的温度可以帮助模型学习hard negatives;(2) 与交叉熵不同,其他目标函数不通过它们的relative hardness来衡量负样本。因此,必须对这些损失函数应用 semi-hard negative mining (Schroff 等人, 2015)。并不是计算所有损失项的梯度,而是可以使用semi-hard negative项来计算梯度(即,那些在损失范围内距离最近但比正样本更远的那些)。
为了使比较公平,这里对所有损失函数使用相同的 L2范数归一化,调整hyperparameters,以得出最佳结果(见附录B.10)。表四说明了,虽然 (semi-hard) negative mining 有一定作用,但其最优值仍然比这里默认的 NT-Xent 损失差很多。
接下来测试 L2范数归一化(即余弦相似度与点积)和温度 τ 在我本文默认的 NT-Xent 损失中的重要性。表五显示,如果没有标准化和适当的温度缩放,性能会显著变差。如果没有 L2范数归一化,尽管在对比任务中的准确性更高,但在线性评估下得到的表示更差。
对比学习的优势更多会源自于更发大的Batch Size和更长的训练周期
图九显示了对于不同时期数训练模型,batch size大小的影响。作者们发现,当训练时期的数量很少(例如 100 个时期)时,较大的batch size相较于小的batch有着显著优势。随着更多的训练周期,不同批次大小之间的差距会减少或消失,前提是batch是随机重新采样的。相比之下,监督学习模型 (Goyal 等人, 2017),在对比学习中,更大的batch size提供更多的负样本,促进收敛(即为给定的准确度采取更少的时期和步骤)。训练时间越长也提供了更多的负面例子,从而改善了结果。在附录B.1提供了具有更长训练步骤的结果。
与当前最先进的机器学习模型进行比较
作者们在 3 个不同的隐藏层宽度(宽度倍数为 1×、2× 和 4×)的 ResNet-50。为了模型能更好地收敛,这里训练了 1000 个 epoch。 线性评估:表六将这里的结果与先前的方法进行了比较 (Zhuang 等人, 2019; He 等人., 2019; Misra & van der Maaten, 2019; Hénaff 等人., 2019; Kolesnikov 等人, 2019; Donahue & Simonyan , 2019; Bachman 等人., 2019; Tian 等人, 2019) 在线性评估设置中(见附录 B.6)。表一展示了更多不同方法之间的数值比较。与以前需要额外设计专门的架构的方法相比,SimCLR能够使用标准网络获得更好的结果。使用本文的ResNet-50 (4x) 获得的最佳结果可以媲美监督预训练的 ResNet-50。
半监督学习:循着前人足迹 (Zhai 等人, 2019),这里以类平衡的方式对有标记的 ILSVRC-12 训练数据集的 1% 或 10% 进行采样(每类分别有12.8 和128 张图像。这里只是在没有正则化的情况下根据标记数据对整个基本网络进行微调(详情见附录B.5)。表七显示了本文方法与其他较新方法的比较(Zhai 等人,2019;Xie 等人,2019;Sohn 等人,2020;Wu 等人,2018;Donahue & Simonyan,2019;Misra & van der Maaten,2019;Hénaff 等人,2019)。来自 (Zhai 等人, 2019) 的监督式学习模型是很强的 baseline 由于其对 hyperparameters (包括数据增强) 的密集搜索。再次强调,本文的方法在 1% 和 10% 的标签上都显着优于目前最先进的方法。有趣的是,在完整 ImageNet 上微调我们预训练的 ResNet-50 (2×, 4×) 也明显优于从零开始训练的迁移学习( 提升高达 2%,参见附录 B.2)。作者们同时在线性评估(固定特征提取器)和微调设置中评估了跨 12 个自然图像数据集的迁移学习的性能。循着 Kornblith (2019) 等人的足迹, 作者们对每个模型-数据集组合进行hyperparameters 的调整,并在验证集上选择最佳hypermeters。表八显示了 ResNet-50 (4x) 模型的结果。微调后,本文的自监督模型在 5 个数据集上显着优于监督式学习的 baseline 模型,而监督式的 baseline 模型仅在 2 个数据集(即宠物和花)上优于本文的模型。在剩余的 5 个数据集上,模型在统计上是相关联的。附录 B.8 提供了完整的实验细节以及标准 ResNet-50 架构的实验结果。
相关研究
对图像做简单变化来让模型提取特征认定其一致性的思想最早可以追溯到 Becker & Hinton, 1992。本文利用了最近数据增强、网络结构以及对比损失技术的进步将这条道路延伸了下去。一个相似的利用一致性的想法(但是用来进行类标签预测)其实已经被在半监督式学习的其他情景下探索过了 (Xie 等人, 2019; Berthelot 等人, 2019)。 手工 Pretext 任务: 最近重获新生的自监督式学习最早基于的是人为设计的 pretext 任务(例如缺块预测、拼图、着色、以及旋转预测)。尽管这些手法能去的不错的结果,但是这些pretext 任务依赖某种特定非启发式方法,因此限制了所学特征的泛化能力。
对比式的视觉特征学习:追溯到 Hadsell 等人, 2006,这些方法通过对比正对与负对来学习特征。沿着这些思路 Dosovitskiy 等人 (2014) 建议将每个实例视为由特征向量表示的一个类(以参数形式)。吴等人 (2018) 建议使用memory bank来存储实例类表示向量,这也是最近几篇论文中采用并进一步研究的方法 。其他一些研究探索了使用批量样本进行负采样而不是memory bank。
最近的文献试图将相应方法的成功与潜在特征间的交互信息最大化相联系起来(Oord 等人,2018; Hénaff 等人,2019; Hjelm 等人,2018; Bachman 等人,2019 )。然而,尚无明确证据表明对比方法的成功到底是由交互信息决定的,还是由对比损失的具体形式决定的。 作者坦言本文SimCLR框架中用到的模型组成部分几乎都以某种形式出现在前人的研究中(尽管具体形态有所不同,但其思想是相通的)。因此SimCLR相对于前人研究的进步之处并不是能被单一的设计选择解释的,而是体现于方法间的有机组合。附录C对此有更加深入的探讨。
结论
这项研究提出了一个简单的框架,以及一个能将其应用于对比视觉表示学习的实例。作者们对模型组成部分进行了深入研究,并展示了不同设计选择的最终效果。本文的发现大大改进了以前的自监督、半监督和迁移学习方法。 本文的方法与 应用在 ImageNet 上的标准监督式学习方法的不同之处仅仅在于数据增强的选择、网络末端非线性头的使用以及损失函数。这个简单框架的优势表明,尽管自监督式学习最近已经大热,但其价值依旧是被低估的。