作者 | 程豪 编辑 | 李仲深
今天给大家介绍的是何凯明等人在CVPR2020上发表的文章MomentumContrast for Unsupervised Visual Representation Learning。如果从字典查找的角度看对比学习,那么这篇文章提出了动量对比(Moco)的方法,就是利用队列和移动平均编码器构建出动态字典进行查找。这就能够动态地构建一个大而一致的字典,从而增强无监督对比学习。实验结果表明Moco学习到的表征能够很好地用到下游任务中。Moco在7个检测/分割任务中超过了其他通过有监督预训练模型的结果。这表明在许多视觉任务中,无监督和有监督的表征学习之间的差距已经基本上被缩小了。
一、研究背景
无监督表征学习在自然语言处理中非常成功,如GPT和BERT。但在计算机视觉领域,基于有监督的预训练模型仍然占主导地位,而无监督的预训练方法普遍滞后。原因可能是它们各自信号空间的差异。语言任务具有离散的信号空间(单词、子单词单元等),用于构建无监督的标记化词典比较容易。相比之下,计算机视觉任务更关注词典的建立,因为原始信号是在一个连续的高维空间中,这点是与单词不同。
这篇文章提出了“动量对比”(MoCo)作为一种为使用对比损失的无监督学习构建大型且一致的词典的方法(如下图)。我们将字典维护为数据样本的队列:当前小批量的编码表示被入队,最旧的表示被出队。队列将字典大小与小批量大小解耦,从而允许它变得更大。此外,由于字典键来自前面的几个小批量,建议使用一个缓慢前进的键值编码器,作为查询编码器基于动量的移动平均来实现,用以保持一致性。
二、模型与方法
在当前阶段的对比学习能够被认为是训练一个用于字典查询的编码器。假设编码后的查询和一组编码的样本是字典的键,并且字典中的键能够和匹配。那么对比损失可以认为当和相似的时候取值小,不相似的时候取值大。所以一种定义方法如下:
所以这样来看,对比学习是一种基于高维连续输入构建离散词典的方法。字典是动态的,因为键是随机抽样的,并且键编码器在训练过程中不断被更新。所以本文的假设是,好的特征可以通过一个包含大量负样本的大字典来学习,而字典键的编码器则尽可能地保持一致,尽管它在不断更新。基于这一动机,本文提出了动量对比的方法。
方法的核心是将字典作为数据样本的队列进行维护。这使我们能够重用小批量的数据的编码值。队列的引入将字典大小与小批量大小解耦。我们的字典大小可以远远大于一个典型的小批量大小,并可以灵活和独立地设置为一个超参数。词典中的样本会逐渐被替换。当前的小批量将插入到字典队列,队列中最早的小批量数据样本将被删除。字典总是代表所有数据的一个抽样子集,而维护这个字典的额外计算开销是可控的。此外,删除最旧的小批量数据是有益的,因为它的编码值是最旧的,与最新的编码值最不一致。
虽然使用队列使得字典变的更大,但这也让通过方向传播更新梯度变的更加困难(因为梯度应该传播到队列中的所有样本)。所以本文提出了动量更新的方式解决这个问题。
设
是编码器
的参数,使用如下方式更新
:
这里
,是一个动量系数。
通过正常的方向传播进行更新。这种方式能够让
的更新更为平滑。所以虽然队列中的键值是由不同的编码器产生的,但这些编码器之间的差异并不大。在实验中发现大的动量系数比较好(如0.999)。一个Pytorch风格的伪代码如下图所示:
三、实验结果
在下面2个数据集上进行了无监督训练实验:
• ImageNet-1M(1N-1M):这是一个被称为ImageNet-1kK的数据集,有128万张图片,1000个类别。是一个平衡的数据集。
• Instagram-1B (IG-1B):包含来自Instagram的10亿张图片,有约1500个类别。这是一个长尾的不平衡数据集。
使用SGD作为优化器,SGD的权值衰减是0.0001,动量是0.9。对于1N-1M数据集,使用大小为256的小批量,运行在8个GPU上面。初始学习率为0.03。训练了200轮,在轮数为120和160时将学习率乘了0.1.使用约53小时训练了ResNet-50。对于1G-1B数据集,使用的小批量大小为1024,运行在64个GPU上面。初始学习率为0.12,并使用指数衰减,每62.5k次迭代将学习率乘以0.9。总共训练了1.25M次迭代,花费大约6天训练了ResNet-50模型。
四、线性分类协议
在1N-1M数据集上进行无监督预训练,然后冻结特征并训练一个有监督的线性分类器。然后记录1-crop, top-1分类准确率在ImageNet验证集上面。之后进行网格搜索得到最优的初始学习率为30,权值衰减为0. 对于3种不同的对比损失机制的结果如下:
端到端机制在比较小的时候效果和Moco相似,但由于字典大小受限于小批量的大小,所以限制了该方法的可扩展性。memorybank方法能够支持更大的字典大小,但比Moco差2.6%。这证实了本文的假设(因为memory bank的键来自不同的编码器,之间相差很大,有很大的不一致性)。
五、总结
本文的方法已经在各种计算机视觉任务和数据集中显示了无监督学习的积极成果。但有若干悬而未决的问题值得讨论。除了简单的实例识别任务之外,在语言和视觉中,也可以采用MoCo来进行伪装自动编码等前置任务。我们希望MoCo能对其他涉及对比学习的前置任务有所帮助。
参考文献
K. He, H. Fan, Y. Wu, S. Xie and R. Girshick,"Momentum Contrast for Unsupervised Visual Representation Learning,"2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR),Seattle, WA, USA, 2020, pp. 9726-9735, doi: 10.1109/CVPR42600.2020.00975.
https://ieeexplore.ieee.org/document/9157636