SimCLR
摘要
本文提出了SimCLR:一种用于视觉表征对比学习的简单框架。
本文简化了最近提出的对比自监督学习算法,而不需要专门的架构或内存库。
作者发现:
(1)数据增强的组成在定义有效的预测任务中起着关键作用;
(2)在表示和对比损失之间引入可学习的非线性转换,极大地提高了学习表示的质量;
(3)与监督学习相比,对比学习受益于更大的批量和更多的训练步骤。
通过结合这些发现,simCLR能够大大优于以前在ImageNet上进行自监督和半监督学习的方法。在SimCLR学习的自监督表示上训练的线性分类器达到了76.5%的top-1精度,这比以前的技术水平相对提高了7%,与有监督的ResNet-50的性能相匹配。当只对1%的标签进行微调时,达到了85.8%的前5名准确率,比AlexNet少100倍的标签。
1、介绍
在没有人类监督(只使用无标签数据)的情况下学习有效的image representation是一个长期存在的问题。大多数主流方法可以分为两类:生成式(generative)或鉴别式(discriminative)。生成式方法学习在输入空间中生成或以其他方式建模像素。然而,像素级生成在计算上是昂贵的,对于表示学习可能不是必需的。
判别方法使用类似于监督学习的目标函数学习表示,但训练网络执行 pretext tasks,其中输入和标签都来自未标记的数据集。许多这样的方法依赖 heuristics来设计 pretext tasks,这可能会限制习得表征的普遍性。在潜在空间中基于对比学习的判别方法最近显示出了巨大的前景,取得了最先进的结果。
图1 用不同的自监督方法(在ImageNet上预训练)学习的表示训练线性分类器的Top-1精度。灰色叉表示受监管的ResNet-50,SimCLR以粗体显示。
本文表明:
•多个数据增强操作的组合对于定义产生有效表示的对比预测任务至关重要。此外,无监督对比学习比监督学习受益于更强的数据增强。
•在表示和对比损失之间引入可学习的非线性转换(g(.)),极大地提高了学习表示的质量。
•具有对比交叉熵损失的表示学习(Representation learning)受益于规范化嵌入和适当调整的温度参数(τ)。
•与监督学习相比,对比学习受益于更大的批量和更长时间的训练。像监督学习一样,对比学习受益于更深更广的网络。
2. 方法
2.1 对比学习框架
SimCLR受到最近的对比学习算法的启发,通过在潜在空间中进行对比损失,使同一数据示例的不同增强视图之间的一致性最大化,从而学习表示。如图2所示,该框架包括以下四个主要组件。
图2 视觉表征对比学习的简单框架。从同一增强族(t∼T和t’∼T)中抽取两个独立的数据增强operators,并应用于每个数据示例以获得两个相关视图。训练基编码器网络f(·)和投影头( projection head)g(·)以使用对比损失来最大化一致性。训练完成后,我们丢弃投影头g(·),使用编码器f(·)和表示h进行下游任务。
•随机数据增强模块,随机转换任何给定的数据示例,让相同示例的两个相关视图为正对,表示为~ xi和~ xj。在这项工作中,我们依次应用三种简单的增强:随机裁剪之后将大小调整回原始大小、随机颜色失真和随机高斯模糊。随机裁剪和颜色失真的结合是实现良好性能的关键。
•神经网络基编码器f(·)从增强数据示例中提取表示向量。我们的框架允许在没有任何限制的情况下对网络架构进行各种选择。我们选择简单性并采用常用的ResNet 来得到hi = f(~xi) = ResNet(≈xi),其中hi∈Rd是平均池化层后的输出。
•一个小型神经网络投影头g(·),将表示映射到应用对比损失的空间。我们使用一个隐层MLP,得到zi = g(hi) = W (2)σ(W (1)hi),其中σ是一个ReLU非线性。在zi上定义对比损失是有益的。
•为对比预测任务定义的对比损失函数。给定一组{-xk},包括一对正面的示例-xi和~xj,对比预测任务旨在为给定的 ̄xi识别{ ̄xk}kb≠i中的 ̄xj。
我们随机抽取一个包含N个样本的小批量,并在从小批量中导出的增强样本对上定义对比预测任务,得到2N个数据点。
本文没有明确地抽取反面例子,相反,给定一个正对,将小批内的其他2(N−1)个增强示例视为负示例。设
表示L2归一化u与v之间的点积(余弦相似度)。则正对样本(i, j)的损失函数定义为
其中1[k≠i]∈{0,1}是在k≠i时求值为1的指标函数,τ表示温度参数。在一个小批中,计算所有正对(i, j)和(j, i)的最终损失。称之为NT-Xent(标准化温度缩放交叉熵损失)。
算法1:把小批次N的图像拿出来,对于每个图像经过增强函数t/t’之后取得两个增强图像-x(2k-1)和-x(2k)。这两个增强图像分别经过f和g方程之后得到两个z。然后对这两个z求余弦相似度。定义l(i,j)为除了自身图像z对其他2N-1个的图像的NT-Xent。然后把所有2N个图像的l(i,j)和l(j,i)求和取平均得到L。我们可以通过更新f和g来最小化我们的L。最后我们丢弃g,只需要f方程。
附上连接:https://zhuanlan.zhihu.com/p/142951091
这个作者写的特别清楚。
2.2 大batch的训练
没有使用记忆库来训练模型,相反,将训练批大小N从256改变为8192。批次大小为8192,从两个增强视图来看,每对正对给出16382(2N-2)个负示例(除了从同一张图片增强得到的两张图片是正样本之外,其他图片全是负样本)。当使用标准SGD/Momentum和线性学习率缩放时,大批量的训练可能不稳定。为了稳定训练,对所有批量大小使用LARS优化器。在simCLR的对比学习中,由于正对是在同一设备中计算的,模型可以利用局部信息泄漏来提高预测精度,而不需要改进表示。
图3 实心矩形是图像,虚线矩形是随机作物。通过随机裁剪图像,我们采样对比预测任务,包括全局到局部视图(B→A)或相邻视图(D→C)预测。
2.3. 评估协议
数据集和度量。对无监督预训练(无标签学习编码器网络f)的大部分研究都是使用ImageNet ILSVRC-2012数据集完成的。还在广泛的迁移学习数据集上测试预训练的结果。为了评估学习到的表示,作者遵循广泛使用的线性评估协议,其中线性分类器在冻结的基网络上训练,测试精度被用作表示质量的代理。
默认设置。对于数据增强,使用随机裁剪和调整大小(随机翻转)、颜色失真和高斯模糊。本文使用ResNet-50作为基本编码器网络,并使用2层MLP投影头将表示投影到128维潜在空间。使用NT-Xent作为损失,使用LARS优化,学习率为4.8 (= 0.3 × BatchSize/256),权重衰减为10−6。以批量大小4096训练100个epoch。此外,对前10个周期使用线性预热,并在不重启的情况下使用余弦衰减时间表衰减学习速率。
3.对比表征学习的数据增强
数据增强定义了预测性任务。虽然数据增强已广泛应用于有监督和无监督表示学习,但是对对比预测任务的定义一直没有被认为是一种系统的方法。许多现有的方法通过改变架构来定义对比预测任务。
图4 所研究的数据增强操作的插图。每次增强都可以利用一些内部参数(如旋转度、噪声级)对数据进行随机变换。用于训练模型的增强策略只包括随机裁剪(带有翻转和调整大小)、颜色失真和高斯模糊。
3.1 数据增强操作的组成对于学习良好的表示是至关重要的
图5 单个或组合数据增强下的线性评估(ImageNet top-1精度),仅应用于一个分支。对于除最后一列外的所有列,对角线项对应于单个变换,非对角线项对应于两个变换的组合(按顺序应用)。最后一列是整行的平均值。
由于ImageNet图像的大小不同,总是应用裁剪和调整图像的大小,这使得在没有裁剪的情况下很难研究其他增加。为了消除这种混乱,考虑了这种消融的非对称数据转换设置。具体来说,总是首先随机裁剪图像并将它们调整到相同的分辨率,然后将目标转换仅应用于图2中框架的一个分支,而将另一个分支作为标识(即t(xi) = xi)。注意,这种不对称的数据增强会影响性能。
图5显示了单个变换和组合变换下的线性评估结果。我们观察到,没有一个单一的转换足以学习良好的表示,即使模型几乎可以完美地识别对比任务中的正对。当组合增强时,对比预测任务变得更加困难,但表示的质量显著提高。
增强的一个组成突出:随机裁剪和随机颜色失真。我们推测,当只使用随机裁剪作为数据增强时,一个严重的问题是来自图像的大多数补丁共享相似的颜色分布。图6显示颜色直方图足以区分图像。神经网络可以利用这一捷径来解决预测任务。因此,为了学习可泛化的特征,用颜色失真组成裁剪是至关重要的。
3.2. 对比学习比监督学习需要更强的数据扩充
为了进一步说明颜色增强的重要性,我们调整了颜色增强的强度,如表1所示。更强的颜色增强极大地提高了学习的无监督模型的线性评价。在这种情况下,自动增强,一种使用监督学习发现的复杂的增强策略,并不比简单的裁剪+(更强的)颜色失真更好。当用相同的增强集训练监督模型时,我们观察到更强的颜色增强不会改善甚至会损害它们的性能。因此,无监督对比学习受益于比监督学习更强的(颜色)数据增强。
表1。在不同颜色失真强度(见附录A)和其他数据变换下,使用线性评价和有监督ResNet-505的无监督ResNet-50的Top-1精度。强度1(+模糊)是我们默认的数据增强策略。
4. 编码器和头部的架构
4.1. 无监督对比学习从更大的模型中受益(更多)
图7显示,增加深度和宽度都可以提高性能。虽然类似的发现也适用于监督学习,但我们发现监督模型和在无监督模型上训练的线性分类器之间的差距随着模型规模的增加而缩小,这表明无监督学习从更大的模型中受益比有监督的模型更多。
图7 不同深度和宽度模型的线性评价。蓝点中的模型是我们训练的100个epoch,红星中的模型是我们训练的1000个epoch,绿色十字中的模型是监督ResNets训练的90个epoch。
4.1. 无监督对比学习从更大的模型中受益(更多)
研究了包含投影头的重要性,即g(h)。图8显示了使用三种不同架构的头部线性评估结果:(1)身份映射;(2)线性投影;(3)默认的非线性投影,带有一个额外的隐藏层(和ReLU激活)。非线性投影比线性投影好(+3%),比没有投影好得多(>10%)。当使用投影头时,无论输出尺寸如何,都可以观察到类似的结果。此外,即使使用非线性投影,投影头前的层h仍然比投影头后的层z = g(h)好得多(>10%),这表明投影头前的隐藏层比投影头后的层是更好的表示。
我们推测,在非线性投影之前使用表示法的重要性是由于对比损失引起的信息损失。特别地,z = g(h)被训练为对数据转换不变。因此,g可以删除可能对下游任务有用的信息,例如对象的颜色或方向。通过利用非线性变换g(·),可以在h中形成和保存更多的信息。为了验证这一假设,我们进行了使用h或g(h)的实验,以学习预测在预训练期间应用的变换。这里我们设g(h) = W (2)σ(W(1)h),输入和输出维数相同(即2048)。表3显示h包含了更多关于应用转换的信息,而g(h)丢失了信息。
表3 在不同表征上训练额外mlp以预测所应用的转换的准确性。除了裁剪和颜色增强,我们在最后三行预训练中额外独立地添加了旋转({0◦,90◦,180◦,270◦}之一),高斯噪声和Sobel滤波变换。h和g(h)具有相同的维数,即2048。
5. 损失函数和批量大小
5.1. 温度可调的归一化交叉熵损失比其他方法效果更好
将NT-Xent损失与其他常用的对比损失函数进行了比较,例如逻辑损失和边际损失。
表4 用不同损失函数训练的模型的线性评价(top-1)。看一看出来,NT-Xent方法的评价是最好的。
5.2. 对比学习从更大的批量和更长的训练中受益(更多)
图9 线性评价模型(ResNet-50)采用不同的批次大小和时间进行训练。
下面是使用TensorFlow处理颜色失真的伪代码。