Skip to content

Latest commit

 

History

History
127 lines (66 loc) · 19.3 KB

File metadata and controls

127 lines (66 loc) · 19.3 KB

A Simple Framework for Contrastive Learning of Visual Representations

摘要

本文介绍了 SimCLR:一个用于视觉表示对比学习的简单框架。我们简化了最近提出的对比自监督学习算法,而不需要专门的架构或存储库。为了了解是什么使对比预测任务能够学习有用的表示,我们系统地研究了我们框架的主要组成部分。我们表明(1)数据增强的组合在定义有效的预测任务中起着关键作用,(2)在表示和对比损失之间引入可学习的非线性转换大大提高了学习表示的质量,以及(3)对比学习与监督学习相比,它受益于更大的批量和更多的训练步骤。通过结合这些发现,我们能够大大优于以前在 ImageNet 上进行自监督和半监督学习的方法。在 SimCLR 学习的自监督表示上训练的线性分类器实现了 76.5% 的 top-1 准确率,相对于之前的最新技术水平提高了 7%,与监督 ResNet-50 的性能相匹配。当仅对 1% 的标签进行微调时,我们达到了 85.8% 的前 5 名准确率,在标签减少 100 倍的情况下优于 AlexNet。

  1. 介绍

img

图 1. 线性分类器的 ImageNet Top-1 准确率,使用不同的自监督方法(在 ImageNet 上预训练)学习的表征进行训练。灰色十字表示受监督的 ResNet-50。我们的方法 SimCLR 以粗体显示。

在这项工作中,我们引入了一个简单的视觉表示对比学习框架,我们称之为 SimCLR。SimCLR 不仅优于以前的工作(图 1),而且还更简单,既不需要专门的架构也不需要存储库。

为了理解什么能够实现良好的对比表征学习,我们系统地研究了我们框架的主要组成部分:

  • 多个数据增强操作的组合对于定义产生有效表示的对比预测任务至关重要。此外,无监督对比学习受益于比监督学习更强的数据增强。
  • 在表征和对比损失之间引入可学习的非线性变换,大大提高了学习表征的质量。
  • 具有对比交叉熵损失的表征学习受益于归一化嵌入和适当调整的温度参数
  • 与受监督的同类相比,对比学习受益于更大的批量和更长的训练时间。与监督学习一样,对比学习也受益于更深更广的网络。

我们结合这些发现,在 ImageNet ILSVRC-2012上实现了自监督和半监督学习的最新技术水平。在线性评估协议下,SimCLR 实现了 76.5% 的 top-1 准确率,相对于之前的最新技术水平提高了 7%。当仅使用 1% 的 ImageNet 标签进行微调时,SimCLR 实现了 85.8% 的 top-5 准确率,相对提高了 10%。当在其他自然图像分类数据集上进行微调时,SimCLR 在 12 个数据集中的 10 个数据集上的表现与强监督基线 相当或更好。

2. 方法

2.1 对比学习框架

受最近对比学习算法的启发,SimCLR 通过潜在空间中的对比损失最大化同一数据示例的不同增强视图之间的一致性来学习表示。如图 2 所示,该框架包括以下四个主要组件。

img

图 2. 视觉表征对比学习的简单框架。两个独立的数据增强算子从同一增强系列(t ∼ T 和 [公式] ∼ T )中采样,并应用于每个数据示例以获得两个相关视图。使用对比损失训练基本编码器网络 f(·) 和投影头 g(·) 以最大化一致性。训练完成后,我们扔掉投影头 g(·) 并使用编码器 f(·) 和表示 h 进行下游任务。

  • 随机数据增强模块,它随机转换任何给定的数据示例,导致同一示例的两个相关视图,表示为 [公式][公式],我们将它们视为正对。在这项工作中,我们依次应用了三个简单的增强:随机裁剪然后调整回原始大小、随机颜色失真和随机高斯模糊。如第 3 节所示,随机裁剪和颜色失真的组合对于实现良好性能至关重要。
  • •神经网络基础编码器 f(·),可从增强数据示例中提取表示向量。我们的框架允许网络架构的各种选择,没有任何限制。我们选择简单并采用常用的 ResNet (He et al., 2016) 来获得 hi = f([公式]) = ResNet([公式]) 其中 hi ∈ Rd 是平均池化层之后的输出。
  • 一个小型神经网络投影头g(·),将表征映射到应用对比损失的空间。我们使用带有一个隐藏层的 MLP 来获得 [公式] = [公式] = [公式] 其中 σ 是 ReLU 非线性。如第 4 节所示,我们发现在 [公式] 而非 [公式] 上定义对比损失是有益的。
  • 为对比预测任务定义的对比损失函数。给定包含一对正示例 [公式][公式] 的集合 { [公式] },对比预测任务旨在针对给定的 [公式] 在 { [公式] } [公式] 中识别 [公式]

我们随机抽取 N 个示例的小批量样本,并在从小批量派生的成对增强示例上定义对比预测任务,从而产生 2N 个数据点。我们没有明确地抽样负面例子。相反,给定一个正对,类似于 (Chen et al., 2017),我们将小批量中的其他 2(N-1) 个增强示例视为负示例。让 [公式] 表示 [公式] 归一化 u 和 v 之间的点积(即余弦相似度)。那么一对正示例 (i, j) 的损失函数定义为

img

其中 [公式] ∈ {0, 1} 是一个指标函数,当 [公式] 且 τ 表示一个温度参数时,其值为 1。最终损失是在小批量中计算所有正对(i,j)和(j,i)的。这种损失已在之前的工作中使用过;为方便起见,我们将其称为 NT-Xent(标准化温度标度交叉熵损失)。

img

算法 1 总结了所提出的方法。

2.2 大批量训练

为简单起见,我们不使用记忆库训练模型。相反,我们将训练批次大小 N 从 256 改变到 8192。8192 的批次大小为我们提供了来自两个增强视图的每个正对 16382 个负示例。使用具有线性学习率缩放的标准 SGD/Momentum 时,大批量训练可能不稳定。为了稳定训练,我们对所有批次大小使用 LARS 优化器。我们使用 Cloud TPU 训练我们的模型,根据批次大小使用 32 到 128 个内核。

Global BN 标准 ResNet 使用批量归一化。在具有数据并行性的分布式训练中,BN 均值和方差通常在每个设备本地聚合。在我们的对比学习中,由于在同一设备中计算正对,该模型可以利用局部信息泄漏来提高预测精度,而无需改进表示。我们通过在训练期间聚合所有设备的 BN 均值和方差来解决这个问题。其他方法包括跨设备混洗数据示例(He 等人,2019 年),或用层范数替换 BN。

2.3.评估协议

在这里,我们为我们的实证研究制定了协议,旨在了解我们框架中的不同设计选择。数据集和指标。我们对无监督预训练(学习没有标签的编码器网络 f)的大部分研究是使用 ImageNet ILSVRC-2012 数据集完成的。在 CIFAR-10 上的一些额外的预训练实验可以在附录 B.9 中找到。我们还在用于迁移学习的广泛数据集上测试了预训练结果。为了评估学习到的表征,我们遵循广泛使用的线性评估协议,其中训练了一个线性分类器在冻结的基础网络之上,测试精度被用作表征质量的代理。除了线性评估,我们还与半监督和转移学习的最新技术进行了比较。 默认设置。除非另有说明,对于数据增强,我们使用随机裁剪和调整大小(随机翻转)、颜色失真和高斯模糊(有关详细信息,请参见附录 A)。我们使用 ResNet-50 作为基础编码器网络,并使用 2 层 MLP 投影头将表示投影到 128 维潜在空间。作为损失,我们使用 NT-Xent,使用 LARS 进行优化,学习率为 4.8 (= 0.3 × BatchSize/256),权重衰减为 10−6 。我们以 4096 的批量大小训练 100 个 epoch。3 此外,我们在前 10 个 epoch 中使用线性预热,并在不重新启动的情况下使用余弦衰减计划衰减学习率。

3. 对比表示学习的数据增强

数据增强定义了预测任务。(...省略部分内容...) 我们表明,通过对目标图像执行简单的随机裁剪(调整大小)可以避免这种复杂性,这创建了包含上述两个的预测任务系列,如图 3 所示。这个简单的设计选择方便地将预测任务与其他组件,例如神经网络架构。可以通过扩展增强系列并随机组合它们来定义更广泛的对比预测任务。

3.1.数据增强操作的组合对于学习良好的表示至关重要

为了系统地研究数据增强的影响,我们在这里考虑了几种常见的增强。一种类型的增强涉及数据的空间/几何变换,例如裁剪和调整大小(水平翻转)旋转和剪切。另一种类型的增强涉及外观变换,例如颜色失真(包括颜色下降、亮度、对比度、饱和度、色调)、高斯模糊和 Sobel 过滤。图 4 可视化了我们在这项工作中研究的增强。

img

图 4. 所研究的数据增强算子的图示。每个增强都可以使用一些内部参数(例如旋转度、噪声水平)随机转换数据。请注意,我们仅在消融中测试这些算子,用于训练模型的增强策略仅包括随机裁剪(具有翻转和调整大小)、颜色失真和高斯模糊。(原图抄送:Von.grzanka)

img

图 5. 单独或组合数据增强下的线性评估(ImageNet top-1 准确率),仅应用于一个分支。对于除最后一列之外的所有列,对角线条目对应于单个变换,非对角线对应于两个变换的组合(按顺序应用)。最后一列反映了该行的平均值。

为了了解单个数据增强的影响和增强组合的重要性,我们研究了我们的框架在单独或成对应用增强时的性能。由于 ImageNet 图像大小不同,我们总是应用裁剪和调整图像大小,这使得在没有裁剪的情况下很难研究其他增强。为了消除这种混淆,我们考虑了这种消融的非对称数据转换设置。具体来说,我们总是首先随机裁剪图像并将它们调整为相同的分辨率,然后我们只将目标变换应用于图 2 中框架的一个分支,而将另一个分支作为身份(即 t(xi ) = xi)。请注意,这种非对称数据增强会损害性能。尽管如此,这种设置不应实质性地改变单个数据增强或其组成的影响。图 5 显示了单独和组合变换下的线性评估结果。我们观察到,即使模型几乎可以完美地识别对比任务中的正对,也没有单一的转换足以学习好的表示。在组合增强时,对比预测任务变得更加困难,但表示质量显着提高。附录 B.2 提供了关于组成更广泛的增强集的进一步研究。一种增强组合脱颖而出:随机裁剪和随机颜色失真。我们推测,仅使用随机裁剪作为数据增强时的一个严重问题是图像中的大多数补丁共享相似的颜色分布。图 6 显示单独的颜色直方图就足以区分图像。神经网络可以利用这个捷径来解决预测任务。因此,为了学习可概括的特征,将裁剪与颜色失真组合起来至关重要。

3.2.对比学习需要比监督学习更强的数据增强

为了进一步证明颜色增强的重要性,我们调整了颜色增强的强度,如表 1 所示。更强的颜色增强显着改善了学习无监督模型的线性评估。在这种情况下,AutoAugment是一种使用监督学习发现的复杂增强策略,其效果并不比简单的裁剪 +(更强的)颜色失真更好。当使用相同的增强集训练监督模型时,我们观察到更强的颜色增强不会改善甚至损害它们的性能。因此,我们的实验表明,与监督学习相比,无监督对比学习受益于更强的(颜色)数据增强。尽管之前的工作报告说数据增强对于自监督学习很有用,但我们证明了数据增强这不会为监督学习带来准确性优势,但仍然对对比学习有很大帮助。

4. 编码器和头部的架构

4.1. 无监督对比学习从更大的模型中获益(更多)

img

图 7. 具有不同深度和宽度的模型的线性评估。 蓝点中的模型是我们训练了 100 个 epoch 的模型,红星中的模型是我们训练了 1000 个 epoch 的模型,绿色十字中的模型是我们训练了 90 个 epoch 的监督 ResNets7(He 等人,2016)。

图 7 显示,也许并不奇怪,增加深度和宽度都可以提高性能。 虽然类似的发现适用于监督学习 (He et al., 2016),但我们发现监督模型和在无监督模型上训练的线性分类器之间的差距随着模型大小的增加而缩小,这表明无监督学习从更大的模型中受益更多,而不是有监督的对应物 .

4.2. 非线性投影头提高了之前图层的表示质量

img

图 8. 具有不同投影头 g(·) 和 z = g(h) 的各种维度的表示的线性评估。 表示 h(投影前)在这里是 2048 维的。

然后我们研究包括投影头的重要性,即 g(h)。图 8 显示了使用三种不同的头部架构的线性评估结果:(1)身份映射; (2) 线性投影,正如之前的几种方法所使用的那样(Wu 等人,2018 年); (3) 带有一个额外隐藏层(和 ReLU 激活)的默认非线性投影,类似于 Bachman 等人(2019)。我们观察到非线性投影比线性投影(+3%)好,比没有投影(>10%)好得多。当使用投影头时,无论输出尺寸如何,都会观察到类似的结果。此外,即使使用非线性投影,投影头之前的层 h 仍然比之后的层 z = g(h) 好得多(> 10%),这表明投影头之前的隐藏层是比之后的层更好的表示。

**我们推测在非线性投影之前使用表示的重要性是由于对比损失引起的信息损失。特别地,z = g(h) 被训练为对数据变换保持不变。因此,g 可以删除可能对下游任务有用的信息,例如对象的颜色或方向。通过利用非线性变换 g(·),可以在 h 中形成和维护更多信息。**为了验证这一假设,我们进行了使用 h 或 g(h) 来学习预测预训练期间应用的转换的实验。

这里我们设置 g(h) =[公式],具有相同的输入和输出维度(即 2048)。表 3 显示 h 包含有关所应用变换的更多信息,而 g(h) 丢失了信息。进一步的分析可以在附录 B.4 中找到。

5. 损失函数和批量大小

5.1. 具有可调温度的归一化交叉熵损失比替代方案效果更好

img

表 2. 负损失函数及其梯度。 所有输入向量,即 u、v+、v− 都经过[公式] 归一化。 NT-Xent 是“Normalized Temperature-scaled Cross Entropy”的缩写。 不同的损失函数对正例和负例施加不同的权重。

我们将 NT-Xent 损失与其他常用的对比损失函数进行比较,例如逻辑损失(Mikolov 等人,2013 年)和边际损失(Schroff 等人,2015 年)。表 2 显示了目标函数以及损失函数输入的梯度。查看梯度,我们观察到 [公式] 归一化(即余弦相似性)以及温度有效地对不同示例进行加权,并且适当的温度可以帮助模型从硬负中学习; 2) 与交叉熵不同,其他目标函数不通过它们的相对硬度来衡量负数。因此,必须对这些损失函数应用半硬负挖掘(Schroff et al., 2015):不是计算所有损失项的梯度,而是可以使用半硬负项(即那些在损失范围内且距离最近,但比正例更远)。

为了使比较公平,我们对所有损失函数使用相同的[公式]归一化,并调整超参数,并报告它们的最佳结果。 8 表 4 显示,虽然(半硬)负挖掘有帮助,但最佳结果是仍然比我们默认的 NT-Xent 损失更糟糕。

img

表 5. 针对 NT-Xent 损失,使用不同的 [公式]范数和温度 τ 选择训练的模型的线性评估。 对比分布超过 4096 个示例。

我们接下来测试[公式] 归一化(即余弦相似度与点积)和温度 τ 在我们的默认 NT-Xent 损失中的重要性。 表 5 显示,如果没有标准化和适当的温度缩放,性能会明显变差。 没有[公式]归一化,对比任务的准确性更高,但在线性评估下得到的表示更差。

5.2. 从更大的批量和更长的训练中获得对比学习的好处(更多)

图 9 显示了针对不同时期数训练模型时批量大小的影响。 我们发现,当训练时期的数量很少(例如 100 个轮次)时,较大的批次比较小的批次具有显着优势。 随着更多的训练步骤/轮次,不同批次大小之间的差距会减少或消失,前提是批次是随机重新采样的。 与监督学习 (Goyal et al., 2017) 相比,在对比学习中,更大的批量会提供更多的负样本,从而促进收敛(即针对给定的准确度采用更少的时期和步骤)。 训练时间越长也提供了更多的负面例子,从而改善了结果。 在附录 B.1 中,提供了具有更长训练步骤的结果。