摘要
本文提出如下改进:
- 多种数据增强操作的组成,对于对比预测任务产生有效特征至关重要。
- 引入一个可学习的非线性特征转换,可以大大提高了学习到的特征的质量。
- 对于对比性交叉熵损失,规范化嵌入和适当调整的temperature参数可提高网络的表现。
- 与监督学习相比,对比学习使用更大的批量大小和更长的训练时间有更多优势。对比学习也受益于更深更广的网络。
框架
结构
如上图,该框架包含以下四个主要组件:
- 随机数据增强模块:给定任一图像 x x x,经过两组不同的数据增强方式 t t t和 t ′ t' t′得到 x ^ i \hat x_i x^i和 x ^ j \hat x_j x^j,定义它们为正样本对。本文依次应用了三种增强:随机裁剪,然后将大小调整回原始大小,随机颜色失真和随机高斯模糊。
- 神经网络编码器模块:用于从增强数据图像中提取特征向量的神经网络编码器 f ( ⋅ ) f(·) f(⋅)。该框架允许选择各种网络结构。此处采用ResNet: h i = f ( x ^ i ) = R e s N e t ( x ^ i ) h_i = f(\hat x_i) = ResNet(\hat x_i) hi=f(x^i)=ResNet(x^i),其中 h i ∈ R d h_i ∈ R^d hi∈Rd是平均池化层后的输出。
- 神经网络投影头模块:用于将编码器特征映射到对比损失空间神经网络投影头 g ( ⋅ ) g(·) g(⋅)。采用具有一个两层的隐藏层MLP: z i = g ( h i ) = W 2 σ ( W 1 h i ) z_i = g(h_i) = W_2σ(W_1h_i) zi=g(hi)=W2σ(W1hi),其中 σ σ σ为ReLU。
- 损失函数:输入图像 x x x经过两条网络分支后得到投影特征 z i z_i zi和 z j z_j zj 。对于一个包含N个样本的输入数据,各自经过条分支后可以得到 2 N 2N 2N个特征向量,排除自身,每个特征相应有1个相似样本(同一个图像用另外一组数据扩充得到的特征向量)和 2 N − 2 2N-2 2N−2 个不相似样本。由余弦相似度距离计算 2 N − 1 2N-1 2N−1个向量对之间的相似性。
余弦相似度定义为:
s i m ( z i , z j ) = z i T z j ∣ ∣ z i ∣ ∣ ⋅ ∣ ∣ z j ∣ ∣ sim(z_i,z_j)=\frac {z_i^Tz_j } {||z_i|| \cdot ||z_j||} sim(zi,zj)=∣∣zi∣∣⋅∣∣zj∣∣ziTzj
则损失定义为:
ℓ i , j = − log exp ( s i m ( z i , z j ) / τ ) ∑ k = 1 2 N 1 [ k ≠ i ] exp ( s i m ( z i , z k ) / τ ) L = 1 2 N ∑ k = 1 N [ ℓ ( 2 k − 1 , 2 k ) + ℓ ( 2 k , 2 k − 1 ) ] \ell_{i,j}=-\log \frac {\exp(sim(z_i,z_j)/\tau)} {\sum^{2N}{k=1} \mathbb{1}{[k\not = i]}\exp(sim(z_i,z_k)/\tau)} \\ L=\frac 1 {2N} \sum^N_{k=1}[\ell(2k-1,2k)+\ell(2k,2k-1)] ℓi,j=−log∑k=12N1[k=i]exp(sim(zi,zk)/τ)exp(sim(zi,zj)/τ)L=2N1k=1∑N[ℓ(2k−1,2k)+ℓ(2k,2k−1)]
其中 1 [ k ≠ i ] ∈ { 0 , 1 } \mathbb{1}_{[k\not = i]}\in\{0,1\} 1[k=i]∈{0,1}是评价为 1 i f k = i 1\ \ if \ \ k = i 1 if k=i的指示函数, τ τ τ表示temperature参数。观察上式可知,该优化函数的目标为最小化 L L L,即最大化相似样本之间的余弦相似度,最小化不相似样本之间的余弦相似度,用来更好的在高维空间区分相似/不相似样本。将其称为 N T − X e n t NT-Xent NT−Xent(归一化的温度尺度交叉熵损失)。
算法流程
训练配置
SimCLR选择的批次大小为8192,为了训练这个级别的批次大小,选择LARS算法做优化器。LARS的出发点是让各个层的参数更新使用的学习率根据自己的情况动态调整,让每一层都有独立的局部学习率。公式如下:
λ l = η ∗ ∣ ∣ ω l ∣ ∣ ∣ ∣ ∇ L ( ω l ∣ ) ∣ ∣ + β ∗ ∣ ∣ ω l ∣ ∣ ∣ \lambda^l=\eta* \frac {||\omega^l||} {||\nabla L(\omega^l|)|| +\beta*||\omega^l|||} λl=η∗∣∣∇L(ωl∣)∣∣+β∗∣∣ωl∣∣∣∣∣ωl∣∣
其中 l l l表示层数, η \eta η是LARS的一个远小于1的超参数, ω l \omega^l ωl是第 l l l层的权值, ∇ L \nabla L ∇L指权值的梯度, β \beta β是权值衰减项。
实验
数据增强实验
上图为本文数据增强实验用到的增强方法,包括数据的空间/几何变换,如裁剪和调整大小(水平翻转),旋转和裁剪,外观变换,例如颜色失真(包括颜色下降、亮度、对比度、饱和度、色调)、高斯模糊和Sobel滤波。
上图显示了在单个增强和组合增强下的线性评估结果。可以看到没有任何单一的增强能学习到好的特征,增强的一个组成很突出:随机裁剪和随机颜色失真。本文推测,当只使用随机裁剪作为数据增强时,图像中的大多数补丁具有相似的颜色分布,神经网络可能会利用这种捷径来解决预测任务。因此,将裁剪与颜色失真结合起来以学习可泛化的特征至关重要 。
上图显示了裁剪增强后有颜色失真和没有失真的图像颜色直方图,可以看到不添加颜色失真,图像的直方图分布基本一致。进一步验证了颜色失真增强的重要性。
上图显示不同颜色增强程度下的模型表现,可以看到更强的颜色增强大大提高了无监督模型的线性评估结果。实验表明,相比监督学习,更强的颜色增强对无监督对比学习更有益。
模型结构实验
上图显示了不同模型参数量下算法达到的线性评估结果,可以看到随着模型大小的增加,监督模型和无监督模型上训练的线性分类器之间的差距缩小,这表明无监督学习从更大的模型中获益更多。
上图研究了包括投影头 g ( h ) g(h) g(h)的重要性,对头部使用三种不同架构进行线性评估。
- 线性投影
- 带有一个额外隐藏层的默认非线性投影(和ReLU激活)
- 没有投影
可以看到非线性投影比线性投影好+3%,比没有投影好>10%。使用投影头时,无论输出尺寸如何,都可以观察到类似的结果。
对于对比学习,投影头之前的层 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)来学习预训练期间应用的不同数据增强,这里设置 g ( h ) = W 2 σ ( W 1 h ) g(h) = W_2σ(W_1h) g(h)=W2σ(W1h),具有相同的输入和输出维度(即2048)。上图显示 h h h包含有关应用转换的更多信息,而 g ( h ) g(h) g(h)丢失了信息。
图B.3显示了用于计算 z = W h z = Wh z=Wh的线性投影矩阵 W ∈ R 2048 × 2048 W ∈ R^{2048×2048} W∈R2048×2048的特征值分布。这个矩阵的大特征值相对较少,表明它近似是低秩的。
图B.4显示了ResNet-50随机选择的10个类(top-1线性评价69.3%)的t-SNE可视化 h h h和 z = g ( h ) z = g(h) z=g(h)。与 z z z相比, h h h表示的类更好地分类。
损失函数和批量大小实验
对损失函进行选择实验,将NT-Xent损失与其他对比损失函数进行比较,如logistic损失和边际损失。上图显示了目标函数以及损失函数的梯度。
观察梯度,NT-Xent有效地对不同的正负例进行了 加权,适当的temperature可以帮助模型从硬负例中学习;而其他目标函数不能通过其相对硬度来衡量负值,必须对这些损失函数应用半硬负挖掘:不是计算所有损失项的梯度,而是使用半硬负项(即那些在损失范围内距离最近,但比正例更远的负例)来计算梯度。
对所有损失函数使用相同 的 ℓ 2 ℓ_2 ℓ2归一化,调整超参数分别进行训练。上图显示,虽然(半硬)负挖掘有帮助,但最好的结果仍然比NT-Xent损失的效果差。
上图为NT-Xent损失中测试 ℓ 2 ℓ_2 ℓ2归一化和temperature τ τ τ的重要性。观察到如果没有 ℓ 2 ℓ_2 ℓ2和适当的 τ τ τ缩放,性能将显著下降。没有 ℓ 2 ℓ_2 ℓ2,对比任务的精度更高,但在线性评估下产生的表示更差。
上图显示了当模型被训练为不同epoch数时,batchsize的影响。当训练步数较小时(如100),较大的batchsize 比较小的batchsize有显著优势。随着更多的训练步骤/周期,如果对batchsize进行随机重采样,不同batchsize大小之间的差距会减少或消失。
与监督学习相比,在对比学习中,更大的批量大小提供更多的负例,促进收敛。训练时间越长也会提供更多的负例,从而改善结果。
定量实验
上图显示了不同方法之间的线性评估比较。与之前需要专门设计架构的方法相比,SimCLR能够使用标准网络获得更好的结果。右图显示用ResNet-50 (4×)获得的最佳结果可以与有监督的预训练ResNet-50相匹配。
半监督学习实验。以类别平衡的方式采样1%或10%的带标签的ILSVRC-12训练数据集。在没有正则化的情况下,在标记数据上微调SimCLR预训练网络。上图显示了SimCLR的结果与最近的方法的比较,该方法比最先进的方法有了明显的改进。
上图显示在ImageNet上微调SimCLR预训练ResNet-50 (2×, 4×)得到的线性评估结果,优于从头开始训练。 上图显示了使用ResNet-50 (4×)模型在12个数据集迁移学习的结果。经过微调,所提出的自监督模型在5个数据集上优于监督基线。
reference
Chen, T. , Kornblith, S. , Norouzi, M. , & Hinton, G. . (2020). A simple framework for contrastive learning of visual representations.