论文阅读:《Improved Baselines with Momentum Contrastive Learning》
论文地址:https://arxiv.org/abs/2003.04297
MoCo v2
论文阅读:《An Empirical Study of Training Self-Supervised Vision Transformers》
论文地址:https://arxiv.org/abs/2104.02057
论文翻译:https://blog.51cto.com/u_13977270/3700317
MoCo v3
本文深入探索了在自监督学习框架中训练ViT的研究工作,并正式提出 MoCo v3 新自监督学习方法。尽管标准卷积网络的训练方法已经非常成熟和强大,但ViT的方法尚未建立,尤其是在自监督的情况下,训练变得更具挑战性。在这项工作中,我们将回到基础知识,并研究几个基本组件(批量大小、学习速率和优化器)对训练自监督 ViT的影响。我们观察到,不稳定性是降低准确性的一个主要问题,并且可以被明显良好的结果所掩盖。我们发现这些结果确实是部分失败,并且可以通过使训练更稳定来改善这些结果。
作为通常的做法,本论文在随机数据增强下为每个图像取两个剪切图像。它们由两个编码器和编码,输出向量和。直观地看,的行为就像一个“查询”,学习的目标是检索相应的“键”。这被表述为最小化一个对比损失函数(采用InfoNCE的形式)。在MocoV3中,本论文使用了自然共存于同一批中的key。本论文放弃内存队列(memory queue),发现如果批处理足够大(例如,4096),它的增益会递减。通过这种简化,对比损失可以通过很少的代码行来实现。本论文采用对称化损失:。本论文的编码器由主干(backbone)(例如ResNet、ViT)、投影头(a projection head)(3层MLP)和额外的预测头(an extra prediction head)(2层MLP)组成;编码器具有主干(backbone)和投影头(projection head),但没有预测头(prediction head)。由的移动平均更新,不包括预测头。本论文使用ResNet-50(R50)测试了MoCo v3精度,发现得到的改进主要得益于额外的预测头和大批量(4096)训练。
在各种情况下,不稳定性是影响自监督ViT训练的一个主要问题。不稳定的ViT训练可能不会导致灾难性的失败(例如,发散);相反,它会导致精度轻度下降(例如1%-3%)。这种退化程度可能不会太明显,除非有更稳定的对应物可供比较。据本论文所知,这种现象在卷积网络训练领域是很少见的,本论文认为这个问题及其隐藏的退化是值得注意的。为了演示不稳定性可能带来的危害,本论文考察了一个在实践中可以提高稳定性的简单技巧。基于对梯度变化的经验观察,本论文冻结了ViT中的块投影层,即本论文使用固定的随机块投影。本论文的经验表明,这一技巧缓解了几个SCE中的不稳定性问题,并不断提高精确度。
不论是 MoCo v3 还是 SimCLR, BYOL 方法,冻结 patch embedding 那层的参数都能够提升自监督 ViT 的训练稳定性。除此之外, gradient-clip 也能够帮助提升训练稳定性,其极限情况就是冻结参数。
Motivated by this, we explore freezing the patch projection layer during training. In other words,we use a fixed random patch projection layer to embed the patches, which is not learned. This can be easily done by applying a stop-gradient operation right after this layer.
参考资料:https://zhuanlan.zhihu.com/p/362689035
https://zhuanlan.zhihu.com/p/368268594
https://blog.csdn.net/smile909/article/details/115610177