摘要
对比无监督学习最近显示出令人鼓舞的进展,例如在动量对比(MoCo)和SimCLR中。在这篇笔记中,我们通过在MoCo框架中实现SimCLR的两个设计改进来验证它们的有效性。通过对MoCo的简单修改,即使用MLP投影头和更多的数据增强,我们建立了比SimCLR更强的基线,并且不需要大量的训练。我们希望这将使最先进的无监督学习研究更容易获得。
1、介绍
最近关于从图像进行无监督表征学习的研究正集中在一个被称为对比学习的中心概念上。结果是有希望的:例如,动量对比(MoCo) [6]表明,无监督预训练可以在多个检测和分割任务中超过其ImageNet监督的对应部分,SimCLR [2]进一步缩小了无监督和监督预训练表示之间的线性分类器性能差距。
本说明确立了建立在MoCo框架内的更强有力和更可行的基线。我们报告说,SimCLR中使用的两个设计改进,即MLP投影头和更强的数据增强,与MoCo和SimCLR的框架正交,当与MoCo一起使用时,它们导致更好的图像分类和对象检测转移学习结果。此外,MoCo框架可以处理大量的负样本,而不需要大量的训练批次(图1)。与SimCLR需要TPU支持的大型4k∨8k批处理相比,我们的“MoCo v2”基线可以在典型的8 GPU机器上运行,并获得比SimCLR更好的结果。
2、背景
对比学习:
[5]是一个从组织成相似/不同对的数据中学习相似/不同表示的框架。这可以表述为一个查字典的问题。一个有效的对比损失函数,称为InfoNCE,是:
mathcal{L}_{q, k^{ },left{k^{-}right}}=-log frac{exp left(q cdot k^{ } / tauright)}{exp left(q cdot k^{ } / tauright) sum_{k^{-}} exp left(q cdot k^{-} / tauright)}
这里q是查询表示,k^ 是正(相似)关键样本的表示,left{k^{-}right} 是负(不相似)关键样本的表示。tau 是温度超参数。在实例辨别借口任务[16](由MoCo和SimCLR使用)中,如果查询和密钥是同一图像的数据增强版本,则它们形成正对,否则形成负对。
对比损失(1)可以通过各种不同的密钥维护机制最小化。在端到端机制(图1a) 中,负密钥来自同一批,并通过反向传播进行端到端更新。SimCLR就是基于这种机制,需要大批量才能提供大量底片。在MoCo机制(图1b) 中,负关键字被保持在队列中,并且在每个训练批次中只有查询和正关键字被编码。采用动量编码器来提高当前关键点和早期关键点之间的表示一致性。MoCo把底片的数量和批量分开。
提升的设计
SimCLR[2]在三个方面改进了实例识别的端到端变体:(i)大量的批(4k或8k),可以提供更多的阴性样本;(ii)将输出fc投影头[16]替换为MLP投影头;(三)增强数据增强。在MoCo框架中,大量的阴性样品是现成的;MLP头和数据增强与对比学习的实例化方式是正交的。接下来我们研究MoCo中的这些改进。
3、实验
设置
无监督学习在1.28M的ImageNet训练集上进行。我们遵循两个通用的评估协议。(i) ImageNet线性分类:冻结特征并训练有监督的线性分类器;我们报告1-crop (224×224),最高1验证精度。(ii)Transferring to VOC object detection:在VOC 07 12训练集1上端到端微调了Faster R-CNN检测器[14](C4-主干),并在VOC 07测试集上使用COCO指标套件进行了评估。我们使用与MoCo相同的超参数(除非特别说明)和代码库。所有结果都使用标准尺寸的ResNet-50。
MLP头
在[2]之后,我们将MoCo的fc头替换为2层的MLP头(隐藏层2048-d,带ReLU)。注意,这只会影响无监督的训练阶段;线性分类或转移阶段不使用这个MLP头部。此外,根据[2],我们搜索最佳tau w.r.t. ImageNet线性分类精度:
使用默认的tau = 0.07,MLP头部的预训练从60.6%提高到62.9%;切换到MLP最优值(0.2),精度提高到66.2%。表1(a)显示了它的检测结果:与ImageNet上的大飞跃相比,检测增益较小。
增强
我们通过在[2]中包括模糊增强来扩展[6]中的原始增强(我们发现[2]中更强的颜色失真在我们更高的基线中具有递减的增益)。表1(b)显示,仅额外的扩增(即没有MLP)就将ImageNet上的MoCo基线提高了2.8%至63.4%。有趣的是,它的检测精度高于单独使用MLP的检测精度,表1(b)对(a),尽管线性分类精度低得多(63.4%对66.2%)。这表明线性分类精度与检测中的转移性能不是单调相关的。对于MLP,额外的增强将ImageNet的准确率提高到67.3%,见表1(c)。
和SimCLR比较
表2将SimCLR [2]与我们的结果(称为MoCo v2)进行了比较。为了公平比较,我们还研究了SimCLR采用的余弦(半周期)学习速率表[11]。见表1(d,e)。使用200个时期和256个批量的预训练,MoCo v2在ImageNet上实现了67.5%的准确率:这比相同时期和批量下的SimCLR高5.6%,比SimCLR的大批量结果66.6%要好。通过800个时期的预训练,MoCo v2达到了71.1%,超过了SimCLR在1000个时期的69.3%。
计算的代价
在表3中,我们报告了实现的内存和时间成本。端到端的情况反映了GPU中的SimCLR成本(而不是[2]中的TPu)。4k批量即使在高端的8 GPU机器中也很难处理。此外,在256的相同批量下,端到端变体在内存和时间上仍然更昂贵,因为它反向传播到q和k编码器,而MoCo反向传播到q编码器。表2和表3表明,为了获得良好的准确性,大批量不是必需的,并且可以更容易地获得最新的结果。我们研究的改进只需要对MoCo v1进行几行代码更改,我们将公开这些代码以方便未来的研究。