摘要
文中通过在MoCo框架中实现SimCLR的两个设计改进来验证它们的有效性。通过对MoCo进行简单的修改——即使用MLP投影头和更多的数据增强——我们建立了更强的基线,优于SimCLR,并且不需要大规模的训练批次。
介绍
最近关于从图像中学习无监督表示的研究正集中在一个被称为对比学习的中心概念上。结果是有希望的:例如,动量对比(MoCo)表明,无监督预训练可以在多个检测和分割任务中超过其图像监督的预训练,而SimCLR进一步减少了无监督和监督预训练表示之间的线性分类器性能差距。
我们报告了在SimCLR中使用的两个设计改进,即MLP投影头和更强的数据增强,与MoCo和SimCLR的框架正交,当与MoCo一起使用时,它们会导致更好的图像分类和目标检测迁移学习结果。此外,MoCo框架可以处理大量的负样本(queue队列),而不需要大量的训练批次。与SimCLR需要TPU支持的大型4k~8k批次相比,我们的“MoCov2”基线可以在典型的8-GPU机器上运行,并获得比SimCLR更好的结果。
?背景
对比学习。对比学习是一个框架,它从被组织成相似/不同对的数据中学习相似/不同的表示。这可以被表述为一个字典查找问题。一个有效的对比损失函数InfoNCE:
?这里q是一个查询表示,k+是正的(相似的)key样本的表示,{k?}是负的(不同的)key样本的表示。τ是一个温度超参数。在实例识别pretext(由MoCo和SimCLR使用)中,如果一个q和一个key是同一图像的数据增强版本,则它们将形成正对,否则将形成负对。
对比损失函数可以通过不同的机制来最小化。在端到端机制中,k?来自同一批次数据,并通过反向传播更新端到端。SimCLR就是基于这种机制,需要大量提供大量的负样本。在MoCo机制(图1b)中,负键保持在一个队列中,在每个训练批处理中只对查询和正键进行编码。采用动量编码器来提高当前键和早期键之间的表示一致性。MoCo将批处理批次大小与负样本数解耦。
改进的设计。SimCLR在三个方面改进了实例识别的端到端变体:(i)一个更大的批(4k或8k),可以提供更多的负样本;(ii)用MLP头替换输出fc投影头;(iii)更强的数据增强。
在MoCo框架中,大量的负样本很容易获得;MLP头和数据增强与对比学习的实例化方式是正交的。接下来,我们将研究对MoCo的这些改进。
实验略。
全文主要跟SimCLR做了一个对比,采用同样的方式mocov2用更少的显存同时精度还高。
MoCo v2只要256的batch size就可以比batch size为4096的SimCLR高0.9个点,再多训一些epoch,这个差距扩大到1.8个点,
论文地址:Improved Baselines with Momentum Contrastive Learning
开源代码:PyTorch implementation of MoCo
|