论文阅读笔记(10):A Simple Framework for Contrastive Learning of Visual Representations,用对比学习进行视觉表征的简单框架


摘要

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

1 简介

在没有人监督的情况下学习有效的视觉表征是一个长期存在的问题。大多数主流方法分为两类:生成性方法和判别性方法。生成方法学习在输入空间中生成或以其他方式建模像素。

然而,像素级生成在计算上是昂贵的,并且对于表征学习可能不是必需的。判别性方法使用与监督学习类似的目标函数进行学习,但训练网络执行代理任务(Pretext task),其中输入和标签均来自未标记的数据集。许多这样的方法依赖于启发式的方法来设计Pretext task,这可能会限制学习表示法的普遍性。基于潜在空间对比学习的判别性方法最近显示出巨大的潜力,取得了SOTA结果。

在这项工作中,我们介绍了一个简单的视觉表征对比学习框架。SimCLR更简单,不需要特殊的结构化体系结构和内存库。
为了理解是什么促成了良好的对比表达学习,我们系统地研究了框架的主要组成部分,并说明:

  • 多个数据增强操作的组合对于定义产生有效表示的对比预测任务至关重要。此外,与监督学习相比,无监督对比学习得益于更强的数据分析。
  • 在表示和对比损失之间引入可学习的非线性转换,可显著提高学习表示的质量。
  • 对比交叉熵损失的表征学习得益于标准化embeddings和适当调参。
  • 对应的有监督的对比学习相比,对比学习得益于更大的批量和更长的训练时间。与监督学习一样,对比学习得益于更深更广的网络。

2 方法

2.1 对比学习框架

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

  • 一个随机数据augment模块,它随机地变换给定的数据实例,产生同一个例子的两个对应视图,用 x ~ i \tilde x_i x~i x ~ j \tilde x_j x~j表示,我们认为这是一对正的对。在这项工作中,我们依次应用了三种简单的增强:随机裁剪,然后调整回原始大小;随机颜色失真;以及随机高斯模糊。如第3节所示,随机裁剪和颜色失真的组合对于实现良好性能至关重要。
  • 之后是用神经网络的基编码器 f ( ⋅ ) f(\cdot) f(),它从增强后的数据示例中提取表征向量。我们的框架允许在不受任何限制的情况下选择各种网络架构。我们选择采用常用的ResNet来获得: h i = f ( x ~ i ) = h_i=f(\tilde x_i)= hi=f(x~i)=ResNet ( x ~ i ) (\tilde x_i) (x~i),其中 h i ∈ R d h_i∈\mathbb R^d hiRd是平均池层之后的输出。
  • 一个小型神经网络projection head g ( ⋅ ) g(\cdot) g(),将表示映射到使用对比损失的空间。我们使用一个具有单层隐藏层的MLP来获得 z i = g ( h i ) = W ( 2 ) σ ( W ( 1 ) h i ) z_i=g(h_i)=W^{(2)}σ(W^{(1)}h_i) zi=g(hi)=W(2)σ(W(1)hi),其中σ是非线性ReLU。如第4节所示,我们发现在 z i z_i zi而不是 h i h_i hi上定义对比损失是有益的。
  • 最后,为对比预测任务定义对比损失函数。给定一个包括一对正的例子 x ~ i , x ~ j \tilde x_i,\tilde x_j x~i,x~j的集合 { x ~ k } \{\tilde x_k\} {x~k},对比预测任务的目的是:对给定的一个 x ~ i \tilde x_i x~i,识别出集合 { x ~ k } k ≠ i \{\tilde x_k\}_{k\neq i} {x~k}k=i中的其它正例 x ~ j \tilde x_j x~j

我们随机抽取了N个小样本,并定义了基于该小样本的成对增强样本的对比预测任务,得到2N个数据点。我们并没有明确列举负面的例子,相反,我们用另外 2 ( N − 1 ) 2(N− 1) 2(N1)批量中的augment示例作为反例。令 s i m ( u , v ) = u ⊤ v / ∥ u ∥ ∥ v ∥ sim(u,v)=u^\top v/\Vert u \Vert \Vert v\Vert sim(u,v)=uv/uv,注意以下两点之间的点积是 ℓ 2 \ell_2 2规范化的 u u u v v v(即余弦相似性)。然后将一对正例 ( i , j ) (i,j) (i,j)损失函数定义为:
在这里插入图片描述
其中 1 [ k ≠ i ] ∈ { 0 , 1 } \mathbb{1}_{[k\neq i]}\in \{0,1\} 1[k=i]{0,1}是示性函数确定当 k ≠ i k\neq i k=i是是否为1, τ \tau τ是温度参数。在某一批量中,计算所有正对 ( i , j ) (i,j) (i,j) ( j , i ) (j,i) (j,i)的最终损失。为方便起见,我们将其命名为NT-Xent(归一化温度标度交叉熵损失)。

在这里插入图片描述

2.2 大批量训练

为了简单起见,我们不使用内存库来训练模型。相反,我们将训练批量大小 N N N从256更改为8192。8192的批大小从两个增强视图中为每个正对提供16382个负面示例。当使用标准Momentum的SGD和线性学习率缩放时,大批量的训练可能不稳定。为了稳定训练,我们对所有批量使用LARS优化器(You et al.,2017)。我们使用云TPU训练我们的模型,根据批量大小使用32到128个内核。

Global BN

标准ResNet使用批标准化。在具有数据并行性的分布式训练中,BN均值和方差通常在每个设备上进行局部聚合。在我们的对比学习中,由于正例对是在同一个设备中计算的,因此该模型可以利用局部信息泄漏来提高预测精度。我们通过在训练期间汇总所有设备的BN均值和方差来解决这个问题。其他方法包括在设备之间对数据示例进行shuffle,或用LN (layer norm) 代替BN。

2.3 评价指标

我们对无监督预训练(无标签学习encoder网络 f ( ⋅ ) f(\cdot) f())的大部分研究是使用ImageNet的ILSVRC-2012数据集完成的。关于CIFAR-10的一些额外与训练试验见附录B.9。我们还测试了迁移学习的大量数据集的预训练结果。为了评估学习到的表征,我们遵循广泛使用的线性评估协议,其中线性分类器在冻结的基网络上进行训练,用测试准确率来反映表征的效果。除了线性评估之外,我们还比较了半监督学习和转移学习的SOTA方法。

3 对比学习中的数据增强

3.1 数据增强定义了预测任务

而数据增强已广泛应用于有监督和无监督的表征学习,但尚未将其视为定义对比预测任务的系统方法。许多现有的方法通过改变体系结构来定义对比预测任务。例如,通过限制网络架构中的感受野实现全局到局部视图预测,而Oord,Hénaff等人通过固定的图像分割程序和文本聚合网络实现相邻视图预测。我们表明,通过对目标图像执行简单的随机裁剪(调整大小)可以避免这种复杂性,这将创建一系列包含上述两种任务的预测任务,如图3所示。这种简单的设计选择方便地将预测任务与其他组件(如神经网络架构)分离。更广泛的对比预测任务可以通过扩展扩充类和随机组合来定义。

3.2 设计数据增强组合:对学习良好的表征至关重要

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

在这里插入图片描述
为了理解单个数据扩充的效果和扩充组合的重要性,我们研究了单独或成对增强时框架的性能。由于ImageNet图像的大小不同,我们始终采用裁剪和重新调整大小的图像,这使得在没有裁剪的情况下很难研究其他增强。为了消除这种混淆,我们总是首先随机裁剪图像并将其调整为相同的分辨率,然后将目标转换仅应用于图2中框架的一个分支,而将另一个分支作为标识,即 t ( x i ) = x i t(x_i)=x_i t(xi)=xi。请注意,这种不对称的数据扩充会影响性能。尽管如此,这种设置不应实质性地改变单个数据扩充或其组成的影响。

图5显示了单个和组合变换下的线性评估结果。我们观察到,没有哪个单一的transform能够足以学习良好的表征,即使该模型几乎可以完美地识别对比任务中的正对。在组合augmentation时,对比预测任务变得更加困难,但表征的质量显著提高。附录B.2提供了关于组成更广泛的增广集的进一步研究。

在这里插入图片描述
图5.单个或组合数据增强下的线性评估(ImageNet top-1精度),仅适用于单个分支。对于除最后一列以外的所有列,对角线条目对应于单个变换,非对角线对应于两个变换的组合(按顺序应用)。

具有突出效果的单组件增强:随机裁剪和随机颜色失真。我们推测,当仅使用随机裁剪作为数据增强时,一个严重的问题是,来自图像的大多数补丁共享相似的颜色分布。图6显示,仅颜色直方图就足以区分图像。神经网络可以利用这一捷径来解决预测任务。因此,为了学习可概括的特征,用颜色失真合成裁剪是至关重要的。

在这里插入图片描述
图6.两个不同图像(即两行)的不同裁剪后的像素强度直方图。

3.3 对比学习比有监督学习需要更强的数据扩充

为了进一步证明颜色增强的重要性,我们调整了颜色增强的强度,如表1所示。更强的颜色增强显著改善了学习的无监督模型的线性评估。在这种情况下,自动增强,一种使用有监督学习选择复杂增强策略,并不比简单裁剪+颜色失真的效果更好。当使用相同的增强集训练有监督模型时,我们观察到更强的颜色增强反而会损害它们的性能。因此,我们的实验表明,与有监督学习相比,无监督对比学习从更强的颜色增强中获益。尽管之前的研究称数据增强有助于自监督学习,但我们表明,对于监督学习而言,不产生准确性益处的数据增强仍然可以在很大程度上帮助对比学习。

表1:
在这里插入图片描述

4 encoder和head的结构

4.1 更大的模型对无监督对比学习更有效

图7显示,增加深度和宽度都可以提高性能,这也许并不令人惊讶。但我们发现,随着模型尺寸的增加,监督模型和在无监督模型上训练的线性分类器之间的差距缩小,这表明无监督学习比监督模型从更大的模型中获益更多。

在这里插入图片描述

4.2 非线性的projection head提高了它之前层的表征质量

然后,我们研究包含projection head g ( ⋅ ) g(\cdot) g()的重要性。图8显示了对head使用三种不同架构的线性评估结果:(1)相同映射(2) 线性投影,(3)具有一个额外隐藏层的默认非线性投影(和重新激活)。我们观察到,非线性投影比线性投影好(+3%),比无投影好得多(>10%)。当使用projection head时,无论输出尺寸如何,都可以观察到类似的结果。此外,即使使用非线性投影,投影头之前的层( h h h)仍然比之后的层( z = g ( h ) z=g(h) z=g(h))好得多(>10%),这表明投影头之前的隐藏层比之后的层表征能力更好。
在这里插入图片描述
我们推测,在非线性投影之前使用表征的重要性来自于对比损失导致的信息损失。特别地, z = g ( h ) z=g(h) z=g(h)训练对数据变换不变性。因此, g g g删除了可能对下游任务有用的信息,例如对象的颜色或方向。通过利用非线性变换 g ( ⋅ ) g(·) g(),可以在 h h h中形成和保持更多的信息。为了验证这一假设,我们进行实验,使用 h h h g ( h ) g(h) g(h)来学习预测在预训练期间应用的transformation。这里我们设置 g ( h ) = W ( 2 ) σ ( W ( 1 ) h ) g(h)=W^{(2)}σ(W^{(1)}h) g(h)=W(2)σ(W(1)h),具有相同的输入和输出维度(即2048)。表3显示,h包含更多关于transformation的信息,而 g ( h ) g(h) g(h)丢失了信息。

在这里插入图片描述

5 损失函数和batch size

5.1 具有可调温度参数的归一化交叉熵损失(NT-Xent)比其他方法效果更好

我们将NT-Xent损失与其他常用的对比损失函数进行比较,如著名的logistic loss和margin loss。表2显示了目标函数以及损失函数输入的梯度。观察logistic loss和margin loss的梯度我们发现:

  1. ℓ 2 \ell_2 2归一化(即余弦相似性)和温度有效地加权不同的例子,适当的温度可以帮助模型从难负例(hard negatives)中学习;
  2. 与交叉熵不同,其他目标函数不通过相对难度来衡量负例。

因此,必须对这些损失函数应用半难负挖掘(semi-hard negative mining):除了计算所有损失项上,还在半难负项计算梯度(即:那些在损失范围内,距离最近,但比正例更远的)。
报错 笔记拼音  双语对照
为了使比较公平,我们使用相同的方法对所有损失函数进行 ℓ 2 \ell_2 2归一化,我们调整超参数,并报告其最佳结果。表4显示,虽然半难负挖掘(semi-hard negative mining)对logistic loss和margin loss有帮助,但最佳结果仍比默认的NT-Xent损失差得多。


接下来,我们测试 ℓ 2 \ell_2 2正则化和温度参数 τ τ τNT-Xent中的重要性。表5显示,如果不进行标准化和适当的温度缩放,性能会显著降低。在没有 ℓ 2 \ell_2 2规范化的情况下,对比任务的准确率较高,但在线性评价下(Top-1)表征较差。
在这里插入图片描述

5.2 更大的batch size和更长的训练时间有助于对比学习

图9显示了当模型针对不同数量的epochs进行训练时batch size的影响。我们发现,当迭代次数较少(例如100次)时,较大的批量比较小的批量具有显著优势。随着训练次数/时间的增加,不同batch size之间的差距减小或消失,前提是每批被随机重新取样。与有监督学习相比,在对比学习中,更大的batch size提供了更多且更高比例的负例,这促进了收敛

在这里插入图片描述

6 与SOTA方法相比较

7 相关工作

在小变换下使图像表征相互一致的想法可以追溯到Becker&Hinton(1992年)。我们通过利用最近在数据增强、网络架构和通信损耗方面的先进技术来扩展它。类似的一致性思想,但用于类标签预测,已在其他环境中进行了探索,如半监督学习(Xie等人,2019年;Berthelot等人,2019年)。

7.1 人工的代理任务(pretext task)

最近自监督学习的复兴始于人工设计的代理任务,如相对面片预测(Doersch等人,2015年)、解决拼图(Noroozi&Favaro,2016年)、着色(Zhang等人,2016年)和旋转预测(Gidaris等人,2018年;陈等人,2019年)。虽然通过更大的网络和更长的训练可以获得良好的结果(Kolesnikov等人,2019年),但这些代理任务依赖于某种特定的启发式,这限制了学习表示的普遍性。

7.2 对比视觉表征学习

这些方法通过对比正例对和负例对来学习表征。沿着这些思路,Dosovitskiy等人(2014)建议将每个实例视为一个由特征向量表示的类。Wu等人提议使用内存库存储实例类表示向量。其他工作探索了使用批内样本代替内存库进行负采样(与本文的思路相似)。

最近的文献试图将其方法的成功与潜在表征之间的互信息最大化联系起来。然而,尚不清楚对比方法的成功是由互信息决定的,还是由对比损失的具体形式决定的。

我们注意到,框架中几乎所有单独的组件都出现在以前的工作中。我们的框架相对于以前工作的优势不是由任何单一的设计选择来解释的,而是由它们的组合来解释的。

附录C:和相关工作的具体区别

正如我们在正文中所指出的,SimCLR的大多数单个组件都出现在以前的工作中,性能的提高是这些设计选择组合的结果。表C.1提供了我们的方法与以前方法的设计选择的高级比较。与以前的工作相比,我们的设计选择通常更简单。

在这里插入图片描述

上表中KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲表示示例被拆分为多个碎片(patches),从而扩大了有效batch size。 ∗ ∗ 表示使用了内存库

  • DIM/AMDIM(Hjelm等人,2018年;Bachman等人,2019)通过预测ConvNet的中间层实现全局到局部/局部到neighbor预测。ConvNet是一种经过修改的ResNet,对网络的感受野施加了重大限制(例如,将许多3x3 CONV替换为1x1 CONV)。在我们的框架中,通过随机裁剪(调整大小)和使用两个增强视图的最终表示进行预测,我们将预测任务和编码器架构解耦,因此我们可以使用标准和更强大的ResNet。我们的NT-Xent损失函数利用归一化和温度来限制相似性分数的范围,而它们使用带正则化的tanh函数。

  • CPC v1和v2(Oord等人,2018年;Hénaff et al.,2019)使用确定性策略定义上下文预测任务,将示例拆分为patches,并使用上下文聚合网络(像素级CNN)聚合这些patches。基本编码器网络只能看到比原始图像小得多的patches。我们将预测任务和编码器架构解耦,因此不需要上下文聚合网络,编码器可以查看更宽分辨率范围的图像。

  • InstDisc, MoCo, PIRL(Wu等人,2018年;He等人,2019年;Misra&van der Maaten,2019)概括了Dosovitskiy等人(2014)最初提出的示例方法,并利用了显式内存库。但我们不使用内存库——当批量较大时,批内负样本抽样就足够了。我们还使用非线性projection head,并使用projection head之前的表征。

  • CMC(Tian等人,2019)为每个视图使用一个单独的网络,而我们只是为所有随机增加的视图使用一个共享的网络。数据增加、投影头和损失函数也不同。我们使用更大的批量而不是内存库。

  • Ye等人最大化了同一图像的增强副本和未经整理副本之间的相似性。我们将数据增强对称地应用于我们框架的两个分支(如图2)。我们还对基本特征网络的输出应用非线性投影,并使用投影网络之前的表示,而Ye等人(2019)使用线性投影的最终隐藏向量作为表示。当使用多个加速器进行大批量训练时,我们使用全局BN来避免可能大大降低表征质量的shortcuts

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CVPR 2019中发表了一篇题为“迁移学习:无监督领域自适应的对比适应网络(Contrastive Adaptation Network for Unsupervised Domain Adaptation)”的论文。这篇论文主要介绍了一种用于无监督领域自适应的对比适应网络。 迁移学习是指将从一个源领域学到的知识应用到一个目标领域的任务中。在无监督领域自适应中,源领域和目标领域的标签信息是不可用的,因此算法需要通过从源领域到目标领域的无监督样本对齐来实现知识迁移。 该论文提出的对比适应网络(Contrastive Adaptation Network,CAN)的目标是通过优化源领域上的特征表示,使其能够适应目标领域的特征分布。CAN的关键思想是通过对比损失来对源领域和目标领域的特征进行匹配。 具体地说,CAN首先通过一个共享的特征提取器来提取源领域和目标领域的特征表示。然后,通过对比损失函数来测量源领域和目标领域的特征之间的差异。对比损失函数的目标是使源领域和目标领域的特征在特定的度量空间中更加接近。最后,CAN通过最小化对比损失来优化特征提取器,以使源领域的特征能够适应目标领域。 该论文还对CAN进行实验验证。实验结果表明,与其他无监督领域自适应方法相比,CAN在多个图像分类任务上取得了更好的性能,证明了其有效性和优越性。 综上所述,这篇CVPR 2019论文介绍了一种用于无监督领域自适应的对比适应网络,通过对源领域和目标领域的特征进行对比学习,使得源领域的特征能够适应目标领域。该方法在实验中展现了较好的性能,有望在无监督领域自适应任务中发挥重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值