引言
今天带来一篇经典论文A Simple Framework for Contrastive Learning of Visual Representations的笔记。
本篇工作提出了SimCLR,一种用于视觉表征对比学习的简单框架。提出(1)数据增强组合在定义有效预测任务中起到至关重要的作用;(2)在表示和对比损失之间引入可学习的非线性变换,可以显著提高学习表示的质量;(3)与监督学习相比,对比学习受益于更大的批大小和更多的训练步数。
为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。
虽然本篇工作是基于视觉表征的但这里的思考同样可以应用于NLP,可以简单地把相似度替换为句子中的单词来理解。
1. 总体介绍
在无监督的情况下学习有效的视觉表征是一个长期存在的问题,大多数方法属于两类之一: 生成式或判别式。
生成式方法学习生成或以其他方式对输入空间中的像素进行建模,然而像素级生成计算量巨大,对于表征学习可能并非必要。
判别式方法使用类似于监督学习中的目标函数来学习表征,但训练网络时其中输入和标签都来自未标记的数据集。许多此类方法依赖于启发式方式来设计预训练任务,这可能会限制学习到的表征的泛化能力。
基于潜在空间对比学习的判别方法近期显示出巨大的潜力,取得了先进的结果。
图 1. 在不同自监督方法学习的表示上训练的线性分类器的 ImageNet Top-1 准确率(在 ImageNet 上预训练)。灰色十字表示监督 ResNet-50。 SimCLR 以粗体显示。
为了理解是什么使对比表示有效,我们系统地研究了我们框架的主要组成部分,表明:
- 多种数据增强操作的组合对于定义产生有效表示的对比预测任务至关重要。此外,无监督对比学习比监督对比学习受益于更强大的数据增强。
- 在表示和对比损失之间引入可学习的非线性变换,极大地提高了学习表示的质量。
- 利用对比交叉熵损失进行表示学习,受益于归一化的嵌入和适当调整的温度参数。
- 与监督学习相比,对比学习受益于更大的批大小和更长的训练时间,也受益于更深更宽的网络。
2. 方法
2.1 对比学习框架
图 2. 用于视觉表征对比学习的简单框架。从同一个增强族中采样两个独立的数据增强算子( t ∼ τ 和 t ′ ∼ τ t ∼ \tau 和 t^\prime ∼ \tau t∼τ和t′∼τ),并将其应用于每个数据样本以获得两个相关的视图。一个基础编码器网络 f ( ⋅ ) f(\cdot) f(⋅) 和一个投影头 g ( ⋅ ) g(\cdot) g(⋅)被训练以使用对比损失最大化一致性。训练完成后,我们丢弃投影头 g ( ⋅ ) g(\cdot) g(⋅),并使用编码器 f ( ⋅ ) f(\cdot) f(⋅) 和表征 h \pmb h h用于下游任务。
SimCLR通过在潜在空间中使用对比损失,最大化相同数据样本的不同增强视图之间的一致性来表示学习。如图2所示,该框架包含以下四个主要组成部分。
- 一个随机数据增强模块,它随机转换给定的数据样本,从而产生同一个样本的两个相关视图,分别表示为 x ~ i \tilde{ \pmb x}_i x~i和 x ~ j \tilde{ \pmb x}_j x~j,我们将其设为一对正样本。在本工作中,依次应用三种简单的增强方法:随机裁剪后恢复到原始大小,随机颜色失真和随机高斯模糊。
- 一个神经网络基础编码器 f ( ⋅ ) f(\cdot) f(⋅),用于从增强数据样本中提取表示向量。我们的框架允许在没有任何约束的情况下选择各种网络架构,我们简单地选择常用的ResNet来获得 h i = f ( x ~ i ) = ResNet ( x ~ i ) \pmb h_i = f(\tilde {\pmb x}_i)=\text{ResNet}(\tilde {\pmb x}_i) hi=f(x~i)=ResNet(x~i),其中 h i ∈ R d \pmb h_i \in \R ^d hi∈Rd是平均池化后的输出。
- 一个小型神经网络投影头 g ( ⋅ ) g(\cdot) g(⋅),它将表示映射到应用对比损失的空间。我们使用一个具有一个隐藏层的MLP来获得 z i = g ( h i ) = W ( 2 ) σ ( W ( 1 ) h i ) \pmb z_i = g(\pmb h_i) = W^{(2)} \sigma(W^{(1)} \pmb h_i) zi=g(hi)=W(2)σ(W(1)hi)其中 σ \sigma σ是一个ReLU非线性,我们发现将对比损失定义在 z i \pmb z_i zi上而不是 h i \pmb h_i hi上是有益的。
- 针对对比预测任务定义的对比损失函数。给定一个包含正样本对 x ~ i \tilde {\pmb x}_i x~i和 x ~ j \tilde {\pmb x}_j x~j的集合 { x ~ k } \{\tilde {\pmb x}_k\} {x~k},对比预测任务旨在为给定的 x ~ i \tilde {\pmb x}_i x~i在 { x ~ k } k = i \{\tilde {\pmb x}_k\}_{k=i} {x~k}k=i 中识别 x ~ j \tilde {\pmb x}_j x~j。
我们随机抽取一个包含
N
N
N个样本的小批量数据,并在从该小批量数据中派生的增强样本对上定义对比预测任务,从而产生
2
N
2N
2N个数据点。没有明确地采样负样本,相反,给定一个正样本对,将小批量数据中的其他
2
(
N
−
1
)
2(N-1)
2(N−1)个增强样本视为负样本。令
sim
(
u
,
v
)
\text{sim}(\pmb u,\pmb v)
sim(u,v)表示它们之间的余弦相似度,一对正样本
(
i
,
j
)
(i,j)
(i,j)的损失函数定义为:
l
i
,
j
=
−
exp
(
sim
(
z
i
,
z
j
)
/
τ
)
∑
k
=
1
2
N
1
[
k
=
i
]
exp
(
sim
(
z
i
,
z
k
)
/
τ
)
(1)
\mathscr l_{i,j} = - \frac{\exp(\text{sim}(\pmb z_i, \pmb z_j)/\tau)}{\sum_{k=1}^{2N} \Bbb 1_{[k=i]} \exp(\text{sim}(\pmb z_i, \pmb z_k)/\tau)} \tag 1
li,j=−∑k=12N1[k=i]exp(sim(zi,zk)/τ)exp(sim(zi,zj)/τ)(1)
其中
1
[
k
=
i
]
∈
{
0
,
1
}
\Bbb 1_{[k=i]} \in \{0,1\}
1[k=i]∈{0,1}是一个指示函数,当且仅当
k
=
i
k=i
k=i时取值为
1
1
1;
τ
\tau
τ表示一个温度参数。
最终的损失是在小批量中所有正样本对 ( i , j ) (i,j) (i,j)和 ( j , i ) (j,i) (j,i)上计算的。下面的算法总结了所提出的方法:
2.2 大批量训练
为了简化,没有使用记忆库训练模型。而是改变了训练批大小 N N N,从256到8192。批大小为8192为我们提供了来自两个增强视图的每个正样本对16382个负样本。
3. 对比表征学习的数据增强
数据增强定义了预测任务 虽然数据增强已经广泛应用于监督和无监督表示学习,但它尚未被视为定义对比预测任务的系统方法。
3.1 数据增强操作的组合对于学习良好的表示至关重要
为了系统地研究数据增强的影响,这里考虑了几种常见的增强方法。一种设计数据的空间几何变换,比如裁剪和调整大小、旋转、剪切。另一种设计外观变换,例如颜色失真(颜色下降、高度、对比度、饱和度、色调)、高斯模糊和索贝尔滤波。图4展示了本工作的增强方法。
图 4. 研究的数据增强算子的示意图。每个增强都可以通过一些内部参数(例如旋转角度、噪声水平)随机地变换数据。需要注意的是,我们只在消融实验中测试了这些算子,用于训练我们模型的增强策略只包括随机裁剪(带翻转和缩放)、颜色失真和高斯模糊。
3.2 对比学习需要比监督学习更强的数据增强
表 1. 在不同的颜色失真强度和其他数据变换下,使用线性评估的无监督 ResNet-50 和有监督 ResNet-50 的 Top-1 准确率。Stength 1 (+ Blur) 是我们的默认数据增强策略。
为了进一步证明颜色增强的重要性,我们调整了颜色增强的强度,如表1所示,更强的颜色增强显著提高了学习到的无监督模型的线性评估。
4. 编码器和Head架构
4.1 无监督对比学习从更大的模型中获益
图 7. 不同深度和宽度模型的线性评估。蓝色圆点表示我们训练 100 个 epochs 的模型,红色星号表示我们训练 1000 个 epochs 的模型,绿色十字表示监督 ResNets 训练 90 个 epochs。
图7显示,增加深度和宽度都能提高性能。随着模型尺寸的增加,监督模型和在无监督模型上训练的线性分类器之间的差距正在缩小,表明无监督学习比其监督对照物从更大模型中获益更多。
4.2 非线性投影头提高了之前层的表示质量
图 8. 使用不同投影头 g ( ⋅ ) g(\cdot) g(⋅)和不同维度 z = g ( h ) \pmb z=g(\pmb h) z=g(h)对表示进行线性评估。这里表示 h \pmb h h(投影前)是2048维的。
图8显示了使用三种不同头架构的线性评估结果:(1)恒等映射; (2)线性投影; (3)具有一个额外隐藏层(和ReLU激活)的默认非线性投影。
我们观测到非线性投影比线性投影效果更好,并且比不使用投影效果好得多。
5. 损失函数和批量大小
5.1 带可调节温度的归一化交叉熵损失优于其他方法
表 2. 负损失函数及其梯度。所有输入向量,即 u , v + , v − \pmb u, \pmb v^+, \pmb v^- u,v+,v−,都经过 ℓ2 归一化。NT-Xent 是归一化温度缩放交叉熵(Normalized Temperature-scaled Cross Entropy)的缩写。不同的损失函数对正负样本施加不同的权重。
我们将本文提出的NT-Xent损失与其他常用的对比损失函数进行比较。表2显示了目标函数以及损失函数输入的梯度。观察梯度,我们发现 1) 余弦相似度以及温度有效地对不同的样本进行加权,适当的温度可以帮助模型从难样本中学习; 2) 与交叉熵不同,其他目标函数不会根据其相对难度对负样本进行加权。因此必须对这些损失函数应用半硬负样本挖掘:与其对所有损失项计算梯度,不如使用半硬负样本项计算梯度。
5.2 对比学习从更大的批大小和更长的训练中获益
图 9. 使用不同批次大小和 epoch 训练的线性评估模型 (ResNet-50)。每个条形代表从头开始的一次运行。
图9展示了在不同训练轮数下,批大小对模型的影响。当训练轮数较少(100轮)时,较大的批大小比较小的批大小具有显著优势。随着训练步数/轮次的增加,不同批大小之间的差距会减小或消失,前提是批次是随机重采用的。
对比学习中更大的批次提供了更多的负样本,促进了收敛。更长的训练时间也提供了更多的负样本,从而改善了结果。
6. 结论
我们提出了一种简单的对比视觉表征学习框架及其实例化,与标准监督学习不同之处在于数据增强方式的选择,网络末端非线性头的使用以及损失函数。效果显著优于以前的方法。
总结
⭐ 作者提出了一种对比学习框架,虽然论文是基于视觉探讨的,但后续也影响了很多NLP方面的工作。在更深更宽的模型和更大的批次、更长的训练时间基础上,首先通过多种数据增强产生有效的正样本用于对比学习。其次在表示和对比损失之间引入可学习的非线性头。最后利用归一化温度缩放交叉熵损失进行对比学习。在训练结束后,该引入的非线性头会被丢弃。