Contrastive Methods 与 Generative Methods不同,这类方法并不需要去重构原始输入,而是希望能够在高阶的特征空间中对不同的输入进行分辨,从而促使模型去学习一些通用的特征表示。
在前文(自监督学习(Self-Supervised Learning)个人小结)中我们已经讨论了这种方法的原理和为什么它可以work,本篇博客主要想总结下这类方法的几篇工作。
文献目录
[1] Aaron van den Oord, Yazhe Li, Oriol Vinyals. “Representation Learning with Contrastive Predictive Coding”.In: arXiv:1807.03748 . 2019.
[2] Zhirong Wu, Yuanjun Xiong, Stella X Yu, et al. “Unsupervised feature learning via non-parametric instance
discrimination”. In: CVPR. 2018.
[3] Mathilde Caron, Piotr Bojanowski, Armand Joulin, et al. “Deep clustering for unsupervised learning of visual
features”. In: ECCV. 2018.
[4] Kaiming He, Haoqi Fan, et al. Momentum Contrast for Unsupervised Visual Representation Learning (MoCov1) In: CVPR 2020 .
[5] Xinlei Chen, Haoqi Fan, Ross Girshick, et al. “Improved baselines with momentum contrastive learning (MoCov2)”. In:
arXiv:2003.04297. 2020.
[6] Xinlei Chen, Saining Xie, Kaiming He. “An Empirical Study of Training Self-Supervised Vision Transformers (MoCov3)”. In: CVPR 2021.
[7] Junnan Li, Pan Zhou, Caiming Xiong, et al. “Prototypical contrastive learning of unsupervised representations”.
In: ICLR. 2021.
[8] Ishan Misra and Laurens van der Maaten. “Self-supervised learning of pretext-invariant representations”. In:
CVPR. 2020.
[9] Ting Chen, Simon Kornblith, Mohammad Norouzi, et al. “A simple framework for contrastive learning of visual
representations (SimCLRv1)”. In: ICML. 2020.
[10] Ting Chen, Simon Kornblith, Kevin Swersky, et al. “Big Self-Supervised Models are Strong Semi-Supervised
Learners (SimCLRv2)”. In: arXiv:2006.10029. 2020.
[11] Mathilde Caron, Ishan Misra, Julien Mairal, et al. “Unsupervised learning of visual features by contrasting
cluster assignments”. In: NeurIPS. 2020.
[12] Yuki Markus Asano, Christian Rupprecht, and Andrea Vedaldi. “Self-labelling via simultaneous clustering and
representation learning”. In: ICLR. 2020.
[13] Yonglong Tian, Chen Sun, Ben Poole, et al. “What makes for good views for contrastive learning”. In: NeurIPS.
2020.
[14] Jean-Bastien Grill, Florian Strub, Florent Altché, et al. “Bootstrap your own latent: A new approach to self-supervised learning”. In: NeurIPS. 2020.
[15] Jure Zbontar, Li Jing, Ishan Misra, et al. “Barlow Twins: Self-Supervised Learning via Redundancy Reduction”.
In: arXiv:2103.03230. 2021.
[16] Zhenda Xie, Yutong Lin, Zheng Zhang, et al. “Propagate Yourself: Exploring Pixel-Level Consistency for
Unsupervised Visual Representation Learning”. In: CVPR. 2021.
[17] Enze Xie, Jian Ding, Wenhai Wang, et al. “DetCo: Unsupervised Contrastive Learning for Object Detection”.
In: arXiv:2102.04803. 2021.
一、Representation Learning with Contrastive Predictive Coding
作者:Aaron van den Oord, Yazhe Li, Oriol Vinyals
Paper:https://arxiv.org/abs/1807.03748
1、摘要
虽然监督学习在许多应用中取得了巨大的进展,但无监督学习并没有得到如此广泛的采用。无监督学习对于人工智能仍然是一项重要和具有挑战性的工作。在这项工作中,我们提出了一种通用的无监督学习方法来从高维数据中提取有用的表示,我们称之为对比预测编码。我们的模型的关键思路是通过使用强大的自回归模型来预测潜在空间的未来来学习这种表示。我们使用一个概率对比损失,它诱导潜在空间来捕获最有用与预测未来(感觉是想表达未知)样本的信息。它还通过使用负抽样使模型易于处理。虽然之前的大多数工作都集中在评估特定模式的表示上,但我们证明了我们的方法能够学习有用的表示,在四个不同的领域实现强大的性能:三维环境中的语音、图像、文本和强化学习。
? 这是很早的几篇想用contrastive的思路去做自监督的工作,比较同特点的是在摘要中作者把表示这个学习机制可以用在很多个领域上,并希望这种无监督的方法可以去学习更通用鲁棒的表征。
2、方法
在Contrastive Self-Supervised Learning一文中对这个方法做了更加详细的讲解和图示。
本文提出来的方法叫做CPC(Contrastive Predictive Coding),CPC的思路是将ct和k步的正样本zt+k去通过下式计算出一个分数(上式的绿色),其中ct由编码器和自回归器(CNN+GRU)处理获得,zt+k仅由编码器(CNN)处理获得。然后对负样本也通过同样的方法计算出对应的分数(上式的橙色),构建上面的损失,我们希望绿色代表的分数远大于橙色代表的分数,这样可以让有相似语义信息的物体特征更接近,不相似语义信息的物体更远。
对于声音等信号,本身就具有时序性,一般会假定相邻的信号是一样的有相似性的(k相邻步),为正信号,然后随机采样一些距离很远的或者不是在同一个音轨上的信息为负样本来进行训练。
而对于图像来说,构建上下文会讲一张图像输入到编码器中进行处理,然后将其划分为一个个有50%overlap的图像块,这样这些图像块就具有上下文信息了。之后的处理就可以用上述训练音频的方法进行训练。
二、Unsupervised feature learning via non-parametric instance
作者:Zhirong Wu, Yuanjun Xiong, Stella X Yu, et al
Paper:https://arxiv.org/pdf/1805.01978.pdf
1、摘要
在带有注释类标签的数据上训练的神经网络分类器也可以捕获类别之间明显的视觉相似性,而不被指示这样做。我们研究这一观察结果是否可以扩展到传统的监督学习领域之外:我们能否学习一个好的特征表示,通过要求特征来区分个体实例之间的明显相似性,而不是类,且仅仅是要求该特征对个别实例进行区分?我们将这种直觉表示为实例级的一个非参数分类问题,并使用噪声性估计来解决大量实例类带来的计算挑战。我们的实验结果表明,在无监督学习设置下,我们的方法大大超过了目前最先进的ImageNet分类。我们的方法还可以通过更多的训练数据和更好的网络架构来持续提高测试性能。通过对学习特征的微调,我们进一步获得了半监督学习和目标检测任务的具有竞争性的结果。我们的非参数模型非常紧凑:每张图像有128个特征,我们的方法只需要100万张图像的600mb的存储,就可以在运行时快速进行最近邻检索。
2、方法
本文的方法是通过CNN网络和FC层将图片编码为一个128维度的向量,然后希望具有相似性特征的图片所代表的向量在维度空间中距离更近一些,不相似的更远一些。
在训练方面,文中提出了一个带正则的带噪声项的NCE loss。
其中vi表示xi中对应的特征,而对于Pn,v‘ 是来自另一幅图像的特征,根据噪声分布Pn随机采样。
在测试的过程中,用了KNN的方法,将之前的数据去构建一个memory bank,然后通过聚类和投票的方式进行分类。在实验中作者也证明了该方法学习出来的特征在一定程度上更有利于直接用无参数的方法(KNN)来进行分类。
三、Deep clustering for unsupervised learning of visual features
作者:Mathilde Caron, Piotr Bojanowski, Armand Joulin, et al
Paper:https://arxiv.org/pdf/1807.05520v2.pdf
1、摘要
聚类是一类在计算机视觉中得到广泛应用和研究的无监督学习方法。很少有工作来适应大规模数据集上的视觉特征的端到端训练。在这项工作中,我们提出了深度聚类,一种聚类方法,联合学习一个神经网络的参数和结果特征的聚类分配。深度聚类用一个标准的聚类算法kmeans迭代地对特征进行分组,并使用后续的分配作为监督来更新网络的权重。我们将深度聚类应用于ImageNet和YFCC100M等大型数据集上的卷积神经网络的无监督训练。所生成的模型在所有标准基准上都显著优于当前的技术水平。
2、方法
方法很好理解,就是通过卷积网络后提取出一个向量,然后通过聚类的方式给相似的特征分为同一个类别,也就是pseudo label,并用这些label来训练分类模型。训练分类模型可以等同于有监督的训练,而对于pseudo label的设置和类别的设置,作者把整个任务设置为如下优化问题:
其中fθ(xn)为提取出来的特征,yn为伪标签(k类),而C为置心矩阵。会通过不断学习C中的参数,来改变不同类别置心在高维空间中的位置,来改变每一个样本所设置的伪标签。而伪标签的类别k的设置,文章中说是根据某种几何准则获得的。而重复这个过程多次可以完成训练(作者在文中把这个过程比喻成一个熵增的过程)。
四、Momentum Contrast for Unsupervised Visual Representation Learning (MoCov1)
作者:Kaiming He, Haoqi Fan, et al
Paper:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9157636
1、摘要
我们提出了动量对比度(MoCo)的无监督视觉表示学习。从对比学习[29]作为字典查找的角度来看,我们构建了一个带有队列和移动平均编码器的动态字典。在传输的过程中,我们建立了一个大型且一致的字典,有利于促进基于对比的无监督学习。MoCo在ImageNet分类的通用线性协议下提供了有竞争的结果。更重要的是,由MoCo学习到的表征可以很好地转移到下游任务中。MoCo可以在pascal VOC、COCO和其他数据集上的7个检测/分割任务中优于其有监督的训练前任务,有时会大大超过它。这表明,在许多视觉任务中,无监督和监督表示学习之间的差距在很大程度上已经缩小。
?本文中作者提到要提高contrastive的训练效果需要遵循两个假设,一个是数据库(i)大,(ii)在训练过程中的进化要一致。但是之前的方法所构建的字典很容易受到batchsize的影响,难以取到足够的对比样本。而对于训练过程要一致,我的理解是用相同的参数来获得结果,但是在实际应用中,每一个minbatch我们都会去更新一次模型,也不能满足该假设。因此作者想提出一种大型且一致的字典来解决该问题。对于数据库太小的问题,文中提出了一种带有队列和移动平均编码器的动态字典,将字典维护为采样数据的队列:当前minbatch编码表示被加入队列中,队列最前面的表示退出队列。队列将字典大小与minbatch大小分离,允许设置更大的字典,负样本的数目就会大大扩增,大幅提升效率。而为了保证一致性,文中也提出了一种动量平均的查询方式。
2、方法
作者在文中给出了和之前三种方法的对比
(a)是用于计算query和key表示的编码器通过反向传播进行端到端更新,但是这会使得两个编码器可能会有所不同。(b)是在一个较大的memery bank(其中存储了所有的样本)中进行采样,然后只更新一个编码器,这种方法虽然可以保证能随机采样到所有的样本,但是query在每一个item都会更新,而memory bank中的key要在这个epoch训练完成后才更新的,这样query是和很多次迭代前的编码器去构建loss,不具有一致性。(c)是本文提出的MoCo通过一个动量更新的编码器动态地对新的Key进行编码,并维护一个Key的队列。
MoCo的核心是动态地维护一个队列,这个队列方便利用到更多的数据,同时要动态的维护它,去除里面太老的一些minbatch,因为这些数据失去了一致性。为了进一步提高一致性,对于Key的encoder也做了动量更新(就是对模型中的参数做线性加权更新而不是迭代),这样也不会因为编码器的快速变化,减少了key之间表示的一致性。
训练的损失和第一篇工作是一样的InfoNCE(Representation Learning with Contrastive Predictive Coding),可以参考一下。
Pretext Task是将其设置为一个实例区分的任务,同一张图片随机数据增强后的图片做为正样本,采集不同的图片做为负样本。
五、Improved baselines with momentum contrastive learning (MoCov2)
作者:Xinlei Chen, Haoqi Fan, Ross Girshick, et al
Paper:https://arxiv.org/pdf/2003.04297.pdf
1、摘要
对比无监督学习最近显示出了令人鼓舞的进展,例如,在动量对比(MoCo)和SimCLR。在本文中,我们通过在MoCo框架中实现SimCLR的两个设计改进来验证它们的有效性。通过对MoCo进行简单的修改——即使用MLP投影头和更多的数据增强——我们建立了更强的基线,优于SimCLR,不需要大的训练批次。我们希望这将使人们基于此可以更容易进行先进的无监督学习研究。
? 这篇论文很短,主要是迁移了SimCLR中两个有效的设计,构建了MoCo v2,在imageNet上的性能从60.6提高到71.1。
2、方法
其中,MLP指的是将原来MoCo中的fc head替换为2层MLP head(隐藏层为2048-d,用ReLU为激活层)。
aug+指的是扩展了数据增强方式,加入了模糊增强。
六、An Empirical Study of Training Self-Supervised Vision Transformers (MoCov3)
作者:Xinlei Chen, Saining Xie, Kaiming He
Paper:https://arxiv.org/pdf/2104.02057.pdf
1、摘要
本文没有描述一种新的方法。相反,考虑到计算机视觉的最新进展,它研究了一个直接的、增量的、但必须知道的baseline:Vision Transformers (ViT) 的自我监督学习。虽然标准卷积网络的训练配方已经高度成熟和健壮,但ViT的配方尚未建立构建,特别是在训练变得更具有挑战性的自我监督场景下。在这项工作中,我们回到基础知识,并研究了几个基本组件对训练自我监督ViT的影响。我们观察到,不稳定性是一个降低精度的主要问题,它可以被明显好的结果所掩盖。我们发现,这些结果确实是部分失败的,当训练更稳定时,它们可以得到改进。我们在MoCov3和其他几个自监督框架中基准测试了ViT结果,以及在各个方面的消融。我们讨论目前有利的证明,以及挑战和开放的问题。我们希望这项工作将为未来的研究提供有用的数据点和经验。
2、方法
文中很多是实验的描述,主要是围绕如何稳定的训练一个ViT网络,这里不一一贴过来了,推荐看原文。
文中提到了一个简单的trick来提高训练的稳定度。在训练过程中,我们会注意到梯度会发生突然变化(如下图峰值所示),而且这个现象发生在第一层的更早阶段(补丁投影),并且由于最后一层的几次迭代而延迟。基于这一观察结构,文中假设不稳定发生在较浅的层,并探索若何在训练的过程中冻结 patch projection layer。换句话说,我们使用一个固定的random patch projection来做,无需学习。这可以通过在这一层之后立即应用停止梯度操作来实现,文中也在不同的框架中测试有效。
七、Prototypical contrastive learning of unsupervised representations
作者:Junnan Li, Pan Zhou, Caiming Xiong, et al
Paper:http://export.arxiv.org/pdf/2005.04966
1、摘要
本文提出了一个无监督表示学习:Prototypical Contrastive Learning (PCL)模型,该模型解决了逐实例(instance wise)对比学习的基本缺陷。PCL不仅可以为实力判别任务学习低层(low level)特征,更重要的是它可以encode数据的语义结构到embedding space中。具体来说,作者将几个不同粒度的原型分配给每个实例,并构造一个对比损失ProtoNCE loss,使嵌入的样本更接近其对应的原型,而不是其他原型。在实践中,我们可以通过对嵌入进行标准聚类来找到原型。PCL可以被formulate成EM算法,原形(prototypes)作为潜在变量,其中E步通过聚类(k-means)寻找原形的分布,M步利用对比学习优化ProtoNCE loss更新网络参数(假设每个原型是一种各向同性高斯分布,可以证明最小化ProtoNCE等价于最大化log似然)
? 这里原型(prototypes)实际上指的还是一个embedding。上述第三篇文章(Deep clustering for unsupervised learning of visual features)也用了类似聚类的方法和EM的方法来完成训练,第三篇文章在E步中通过聚类获得pseudo label,借此在M步训练模型。不同的是这篇文章是在E步通过聚类获得原型(prototypes)做为潜在的变量,然后利用对比学习优化ProtoNCE loss更新网络参数。在这个框架下,实际上是将原有的实例判别任务中的实例向量替换成了原型,原型可以看作每一个实例的增强特征。
2、方法
该框架是基于MoCo的框架上做出了改进,改进主要体现在了用了clustering的方法获得了prototypes,并基于此设计了ProtoNCE Loss替代了原有的InfoNCE Loss。文中做出了推导说明原型为什么有用,并获得最后的优化公式,可以看出最后的优化公式和InfoNCE的格式基本相同,InfoNCE可以看作最大对数似然估计的特例。
由于不同的prototype周围embedding的集中程度不同,作者使用Φ(在InfoNCE中原为固定的τ)对集中程度进行估计,并使用同一个簇c的特征来计算每一个目标的Φ。
当目标和原型的距离小或者这个簇中特征点很多的时候(Z更大),Φ会更小,α为一个定值防止一些特征点少的簇取到太大的Φ。Φ的目的是用于衡量目标于原型之间的相似性,如果一个簇特征点少且松散,Φ值大,相似性低,相反对于特征点多且紧密的簇,Φ值大,相似性低。这样在损失的构建上有利于去学习到更均衡大小的簇,如下图所示:
? 效果上该损失设计相比于MoCo带来了很大的提高,但是从实验结果我们也发现作者用上MLP反而性能更差了,这也说明不是每一个trick都具有很强的泛化性感觉。
八、Self-supervised learning of pretext-invariant representations
作者:Ishan Misra and Laurens van der Maaten
Paper:https://arxiv.org/pdf/1912.01991v1.pdf
1、摘要
从图像中进行自监督学习的目标是通过不需要对大量图像训练集进行语义注释的代理任务来构建具有语义意义的图像表示。许多代理任务会导致特征表示随着图像的变化而变化。相反,文中认为,语义表示在这种转换下应该是不变的。具体来说,作者提出了Pretext-Invariant Representation Learning (PIRL,发音为“pearl”),它学习基于代理任务的不变表示,将“Jigsaw”借口任务[46]用于PIRL,发现在一系列视觉任务中比协变对应表示表现更好。该方法在几个流行的自我监督学习基准上建立了一种最新的SOTA的自监督学习方法。尽管是无监督的,PIRL在学习用于目标检测的图像表示方面优于监督预训练。实验结果也证明了该方法具有良好不变性的图像表示的自监督学习的潜力。
2、方法
PIRL的目的是构造对图像转换t∈T不变的图像表示,鼓励图像I和它转换后的对应物It具有相同的表示。它通过最小化对比损失来实现这一点。不同于MoCo的思路,本文用了上述第二篇文章(Self-supervised learning of pretext-invariant representations)的思路,构建一个Memory bank来采集负样本。
九、A simple framework for contrastive learning of visual representations (SimCLRv1)
作者:Ting Chen, Simon Kornblith, Mohammad Norouzi, et al
Paper:https://arxiv.org/pdf/2002.05709.pdf
1、摘要
本文提出了SimCLR:一个用于视觉表示对比学习的简单框架。我们简化了最近提出的对比性自监督学习算法,而不需要专门的体系结构或内存库(memory bank)。为了理解是什么使对比预测任务能够学习有用的表示,我们系统地研究我们框架的主要组件。我们表明,(1)数据增强的组成在定义有效的预测任务中起着关键作用,(2)在表示和对比损失之间引入一个可学习的非线性变换(MLP),大大提高了所学习的表示的质量,(3)与监督学习相比,对比学习受益于更大的批处理规模和更多的训练步骤。通过结合这些发现,我们能够在ImageNet上的自监督和半监督学习方面大大优于以前的方法。通过SimCLR学习的自监督表示训练的线性分类器获得了76.5%的top 1精度,比之前的最先进技术相对提高了7%,与监督ResNet-50的性能相匹配。当只对1%的标签进行微调时,我们达到了85.8%的top 5准确率,优于全监督的AlexNet。
? SimCLR主要提出了三点改进,这个在MoCo v2中也证实了其中的改进是能带来极大提升的。
2、方法
1)改进一:采用更大的batchsize
这样做的目的是不需要构建memory bank或者采用MoCo的特殊结构就可以采样到更多的负样本,结构更简单。
2)改进二:数据增强策略的组合
采用了不同的数据增强类型进行组合,并用消融实验证明其有效。作者也提出相比监督学习,对比性学习需要更强的数据增强。
3)改进三:在表示和对比损失之间引入一个可学习的非线性变换(MLP),效果优于用线性变化或者不用。
十、Big Self-Supervised Models are Strong Semi-Supervised Learners (SimCLRv2)
作者:Ting Chen, Simon Kornblith, Kevin Swersky, et al
Paper:https://arxiv.org/pdf/2006.10029v1.pdf
1、摘要
一个从少数有标记的例子中学习同时充分利用了大量的未标记数据的范例,换句话说他是通过无监督预训练再通过有监督进行微调。尽管这个范例以一种任务不可知的方式使用未标记的数据,与之前大多数计算机视觉半监督学习方法相比,我们证明了它在ImageNet上的半监督学习是惊人的有效的。我们的方法的一个关键成分是在预训练和微调期间使用一个大的(深度和广泛的)网络。我们发现,标签越少,这种方法(与任务无关的使用未标记数据)从更大的网络中获益就越大。经过微调后,通过第二次使用未标记的例子,但以特定于任务的方式,可以进一步改进并提炼成更小的分类精度的网络,分类精度损失很小。所提出的半监督学习算法可以分为三个步骤:1)使用SimCLRv2(SimCLR[1]的改进)对大型ResNet模型进行无监督预训练,2)对一些标记的示例进行监督微调,3)用未标记的示例进行蒸馏,实现知识迁移。该方法使用ResNet-50实现了73.9%的ImageNet top 1精度,只有1%的标签(≤每类有13个标记的图像),比之前的最先进的标签效率提高了10×。使用10%的标签,用我们的方法训练的ResNet-50达到了77.5%的top1准确率,优于所有标签的标准监督训练。
? 本文是通过构建更大模型的SimCLR v2,在少量数据集微调的情况下获得了超过有监督训练的性能。此外,也采用了蒸馏的方式实现了知识迁移,使得ResNet50也可以实现超过有监督训练的性能。
2、方法
如何改进SimCLRv1 为 SimCLRv2,可以分为以下三点:
1)为更好的利用广义与训练能力,作者探索了更大的ResNet模型。而SimCLR预其他方法中采用的最大模型为ResNet50(4x),在这里作者采用的最大模型是带SK的ResNet152,且通道数x3。在1%有标签数据上进行微调时,ResNet50到ResNet152的改变得到29%的性能提升。
2)作者同时还提升了非线性网络MLP(即projection head)的容量,将其变得更深。不同于SimCLR微调阶段中直接剔除掉MLP,SimCLRv2对其中间层进行微调。相比SimCLR仅采用两层project head,SimCLRv2采用了三层的MLP,它得到了14%的性能提升(1%的有标签数据)。
3)与此同时,作者还集成了MoCo中的记忆机制。这种方式取得了另外的1%的性能提升。
关于模型蒸馏
用大的模型产生pseudo label,做为老师模型来训练学生模型,并优化两个模型间的分布(KL散度)。
十一、Unsupervised learning of visual features by contrasting cluster assignments
作者:Mathilde Caron, Ishan Misra, Julien Mairal, et al
Paper:https://arxiv.org/pdf/2006.09882.pdf
1、摘要
无监督图像表示显著减少了监督预训练的差距,特别是随着对比学习方法的最新成就。这些对比方法通常可以在线工作,并依赖于大量的显式成对特征比较,这在计算上具有挑战性。在本文中,我们提出了一个在线算法,SwAV,它利用了对比的方法,而不需要计算成对的比较。具体来说,我们的方法同时聚类数据和加强为同一图像的不同增强(或“视图”)产生的聚类分配之间的一致性,而不是像在对比学习中那样直接比较特征。简单地说,我们使用一种“交换”预测机制,其中我们从另一个视图的表示来预测一个视图的代码。我们的方法可以用大批量和小批量进行训练,并可以扩展到无限量的数据。与以往的对比方法相比,我们的方法更有效,因为它不需要一个大的内存库或一个特殊的动量网络。此外,我们还提出了一种新的数据增强策略,multi-crop,该策略使用不同分辨率的混合视图来代替两个全分辨率的视图,而不增加内存或计算需求。我们通过使用ResNet-50在ImageNet上达到75.3%的 top 1准确率,并在所有对比的迁移任务上超过监督预训练,来验证我们的发现。
? 该方法和上述第七篇(Prototypical contrastive learning of unsupervised representations)的思路有些相似,通过用了聚类的方式获得原型(prototypes)用于训练。
2、方法
在应用于实例分类的对比学习方法中,是直接对同一图像不同转换的特征进行比较。而在SwAV中,我们首先通过向原型向量分配特征来获得“代码”。然后我们解决一个“交换”预测问题,其中从一个数据增强视图获得的代码使用另一个视图进行预测。因此,SwAV并不能直接比较图像特征。具体来说,给定来自同一图像的两个不同增强的两个图像特征zt和zs,我们通过将这些特征与一组K个原型{c1,…,ck}匹配来计算它们的代码(codes)qt和qs。然后,我们用以下损失函数设置了一个“交换”的预测问题(也就是用中间代码来间接比较zt和zs):
其中,上述式子的定义在文中如下:
紧接着通过优化推导…(略,见原文),就可以获得最后的Q的获得如下式。
由于Codes Q考虑到了C和Z的特征,实际上也变相的利用了所有的数据,所以作者也提及它这种方法不需要去构建一个大的memory bank和用MoCo那种动量的结构。
此外,本文在摘要种还提及了提出了一种新的multi-crop策略,我们使用两种标准分辨率裁剪,并取样V只覆盖图像的额外低分辨率裁剪块,它们只覆盖图像的一小部分。相比于直接把图设置为224做为输入,在实验中作者证明该数据增强策略可以在自监督方法中带来有效的涨点。
十二、Self-labelling via simultaneous clustering and representation learning
作者:Yuki Markus Asano, Christian Rupprecht, and Andrea Vedaldi
Paper:https://openreview.net/pdf?id=Hyx-jyBFPr
1、摘要
聚类和表示学习相结合是深度神经网络无监督学习中最有前途的方法之一。然而,这样做会导致退化解。在本文中,我们提出了一个新的和有原则的学习公式来解决这些问题。我们证明了该准则将标准交叉熵最小化扩展到一个最优传输问题,我们使用Sinkhorn-Knopp算法的快速变体有效地解决了数百万幅输入图像和数千个label带来的问题。由此得到的方法能够对视觉数据进行自标记,从而训练的图像表示具有高度竞争力,而无需人工标签。我们的方法在SVHN、CIFAR-10、CIFAR-100和ImageNet上实现了AlexNet和ResNet-50最先进的表示学习性能,并产生了第一个自监督的AlexNet,优于有监督的PascalVOC检测基线。
? 本文中提出了与上述第三篇文章Deep-cluster(Deep clustering for unsupervised learning of visual features)不同方法,认为这种直接生成pseudo label的进行结合容易出现一些问题, 比如说过拟合,错误的将大量样本归为同一类。本文的解决方法是通过添加标签必须诱导数据等分的约束,这样可以最大限度地提高数据索引和标签之间的信息。文中还证明了所得到的标签分配问题与最优传输相同,因此可以在线项式时间内通过线性规划求解。
2、方法
文中没有示意图,是一堆公式推导,详见原文。
相比于DeepCluster,SeLa的获得label的方式从用K-means聚类变成了用Sinkhorn-Knopp算法近似得到(在其中加了下改进如KL散度让分布更均匀,对label的生成添加等分约束等),然后再用cross-entropy去做有监督的训练学习representation。技术本质上是一种更有效的pseudo label获得方式。
十三、What makes for good views for contrastive learning
作者:Yonglong Tian, Chen Sun, Ben Poole, et al
Paper:https://arxiv.org/pdf/2005.10243.pdf
1、摘要
数据的多个视图(views)之间的对比学习最近在自监督表示学习领域取得了最先进的性能。尽管它取得了成功,但对不同视图选择的影响的研究较少。在本文中,我们使用理论和实证分析来更好地理解视图选择的重要性,并认为我们应该在保持任务相关信息完整的同时减少视图之间的互信息(MI)。为了验证这一假设,我们设计了无监督和半监督的框架,通过减少他们的互信息(MI)来学习有效的视图。我们还将数据增强作为减少MI的一种方法,并表明增加数据增强确实会导致MI的降低,并提高下游分类精度。此外,我们在ImageNet分类的ResNet-50)上实现了一种新的最先进的精度。
?本文在 Contrastive Learning 中一般的 InfoMax Principle 的基础上,提出了一个新的 InfoMin Principle做为补充。这个提出的目的是不仅仅是要和先前的Contrastive Learning一样可以学习到足够的信息之外,还想尽可能去除一些冗余信息来保证学习到的特征具有很好的泛化能力。此外,还通过一些数据增强策略来提高了性能,综合之前的文章,我们可以发现在自监督中数据增强是一个很有用的提高分数的方法(虽然被解释的意义不同)。
2、方法
方法部分主要可以总结为两方面,一个是提出了定义,为啥这样学习去掉冗余性有用,另一个是如何training把这种定义加入到自监督中来获得提高。
1)关于文中的定义
文中对问题引入了三种定义,但是对这部分的解释很少,参考了一篇知乎的解释(https://zhuanlan.zhihu.com/p/213769405?utm_source=wechat_session):
文中也用了一张图来表示这种优化表示的情况,假设v1和v2是原始图像x的两个数据增强后的视图,最大化v1和v2之间的信息本质上可以等价于提取原始数据x中与y有关的信息,只有当I(x;y)= I(v1;v2)的时候,才可以达到最佳的位置(sweet spot),之后作者也用了实验证明了这个观点(去除mutual-information可以在下游分类任务取得更好的泛化性)。
2)如何结合了InfoMin Principle进行自监督学习
文中采用了一种对抗的训练思路来获得minimal sufficient encoder。在原先的两个编码器f1,f2的基础上增加第三个编码器g,先使用g对X1,X2进行编码,获得编码后的特征,学习目标如下,希望可以通过对抗训练最小化互信息。
? 看了几遍还是没有get到这样如何最小化互信息,描述太少了。。我的理解这是把它当成一个gan来训练,联合最小化。有理解了的可以补充一下。
十四、Bootstrap your own latent: A new approach to self-supervised learning
作者:Jean-Bastien Grill, Florian Strub, Florent Altché, et al
Paper:https://arxiv.org/pdf/2006.07733.pdf
1、摘要
我们介绍了 Bootstrap Your Own Latent (BYOL),这是一种新的自我监督图像表示学习的方法。BYOL依赖于两个神经网络,被称为在线网络和目标网络,它们相互作用和学习。从图像的增广角度出发,我们训练在线网络预测不同增广角度下同一图像的目标网络表示。同时,我们用在线网络的 slow-moving average来更新目标网络。虽然最先进的方法依赖于负样本对,但BYOL不需要它们就实现了一种新的SOTA。使用ResNet50,BYOL在ImageNet上的分类准确率达到74.3%,使用更大的ResNet的分类准确率达到79.6%。我们证明了BYOL在迁移学习和半监督基准上的性能比当前的SOTA水平相当或更好。
? 在现在的对比学习中,很多方法像利用负样本对去避免学习崩溃的现象,而本篇文章中提出的方法证明负样本对在自监督学习中也不是必须的。文中用了两个网络,一个叫target,一个叫online,文中用了一个像MoCo一样的思路只反向传播一个网络,另一个网络参数用线性平均来做动态更新。
2、方法
方法如图所示,用同一张图片做不同的数据增强,获得t 和t‘。然后用两个独立的网络(包含convnet和MLP)做编码,最小化两者之间的差距(用了一个欧氏距离的Loss),
然后更新参数的话,online的网络直接反向传播,target的网络不反向传播,而是通过线性加权的方式做更新,如下:
作者在文中也做出了为什么这样做的可以不用负样本就可以避免崩溃发生(类似于GAN学习),也做了一些数学的推导。
十五、Barlow Twins: Self-Supervised Learning via Redundancy Reduction
作者:Jure Zbontar, Li Jing, Ishan Misra, et al
Paper:https://arxiv.org/pdf/2103.03230.pdf
1、摘要
自监督学习(SSL)正在迅速缩小在大型计算机视觉基准上与监督方法的差距。处理SSL的一种成功方法是学习对输入样本失真不变的嵌入。然而,这种方法反复出现的一个问题是存在平凡常数解。目前的大多数方法都是通过仔细的实现细节来避免这样的解决方案。我们提出了一个目标函数,它通过测量两个具有样本失真版本的相同网络的输出之间的互相关矩阵来自然避免崩溃,并使其尽可能地避免崩溃。这在保证一个样本与其变形所计算得到嵌入向量相似的同时,最小化这些向量的组件之间的冗余。这种方法被称为BARLOW TWINS,得名于将神经科学家H. Barlow的冗余减少原理应用于一对相同的网络。BARLOW
TWINS不需要大批量的处理,也不需要网络双胞胎之间的不对称性,如预测网络、梯度停止或权重更新时的移动平均值。有趣的是,它受益于非常高维的输出向量。BARLOW TWINS 在低数据状态下,在ImageNet上优于以前的方法,并且在具有线性分类器头的ImageNet分类以及分类和目标检测等迁移任务方面与目前的SOTA方法相当。
? 本文的作者用一种去冗余的思路提出了一种很简单的方法,去除了其他文章中提出来的组件,只是用了一种简单的互相关矩阵来避免学习崩溃,从框架上看十分简洁。
2、方法
图示方法很好理解,ZA和ZB是一系列的embeddings,然后C是互相关矩阵。相似的向量在对角线上必须是一致的,也就是其相似度为1,保证了向量间每一个位置都具有相似的响应。此外在其他地方是不同的分段的向量之间的相似性,这部分在文中称之为冗余,也就是说我们已经在保证了对应位置是相似的情况下,其他地方是否还需要获得一定的特征信息呢?如果不需要可以让其为0,表示两者完全不相似。在训练中很容易来构建这样一个监督信号。
与之前的self-supervised Learning的损失不同,BARLOW TWINS的损失(有点像ReID里的Loss)如下:
这个loss实际上和InfoNCE的作用相同,不同的地方在于不需要采样大量的负样本,而是依靠一个非常高维度的向量(实验中是16384,特别大),但是对batchsize要求不高(1024 vs. 4096)。
十六、Propagate Yourself: Exploring Pixel-Level Consistency for Unsupervised Visual Representation Learning
作者:Zhenda Xie, Yutong Lin, Zheng Zhang, et al
Paper:https://arxiv.org/pdf/2011.10043.pdf
1、摘要
基于对比学习(Contrastive Learning)的无监督视觉表示学习方法已经可以在迁移任务上取得显著性能。我们认为,对比学习的能力尚未完全释放,因为目前的方法只在实例级的代理任务上进行训练,导致对需要密集像素预测的下游任务可能是次优的表示。本文介绍了用于学习密集特征表示的像素级代理任务。第一个任务直接在像素水平上应用对比学习。此外,我们提出了一个像素到传播的一致性任务,可以产生更好的结果,甚至大大超过了最先进的方法。具体来说,迁移到PascalVOC目标检测(C4)、COCO目标检测(FPN/C4)任务上实现 60.2 AP、41.4/40.5 mAP 和 77.2 mIoU。此外在Cityscapes上使用ResNet-50主干网络进行语义分割,比以往的基于实例级别的对比学习最佳方法好 2.6AP、0.8/1.0 mAP和1.0 mIoU。此外,像素级代理任务不仅对常规主干网络进行预训练,而且对密集下游任务的头网络有效,是实例级对比方法的补充。这些结果表明了在像素级上定义代理任务的强大潜力,并为无监督视觉表示学习提出了一条新的前进道路。
? 本文的出发点是基于代理任务(pretext task)出发的,与上述文章基于实例级别的思路不同提出了基于像素的对比学习方法(pixel level contrastive learning),此外之前的工作只是自监督训练了主干网络,该方法还可以结合下游任务的head一起训练。
2、方法
方法分为两部分,一部分是如何构建PixContrast Loss来学习,第二部分是提出Pixel-to-Propagation Consistency,提高在下游任务中的性能。
①、关于提出PixContrast Loss来学习
网络结构上用的是MoCo v2的结构,同样是先将一张图做不同的数据增强,然后通过encoder获得X 和X’。之后通过计算X和X‘上每一个像素的相似度来构建PixContrast Loss,与之前的思路不同,这里采集的是同一张图片来做输入,需要在像素上来划分正负样本。计算的过程如下:
1)首先将特征映射中的每个像素扭曲到原始图像空间,并计算来自两个特征映射的所有像素对之间的距离。
2)距离被归一化到特征映射box的对角线长度(两个crop在原图上的长大长度),并基于阈值T生成正样本对和负样本对。
有了正负样本对,pixel-level contrastive Learning的Loss可以被构建为下式:
②、关于Pixel-to-Propagation Consistency
这部分看完后发现和下游任务好像没啥关系,依然是来学习pixel的相似性的。会先计算X(也就是绿色图)上每一个点之间的相关性来重构上面的点(有点像自注意力),起到对特征平滑的作用,然后在迫使X’(橙色图)去学习pixel的相似性。
在迁移到下游任务中,在FPN和head中用了相同的思路去做了自监督训练(在FPN的每一个分辨率输出都去做训练),用于pre-training,文中说这比不pre-training性能好。
十七、DetCo: Unsupervised Contrastive Learning for Object Detection
作者:Enze Xie, Jian Ding, Wenhai Wang, et al
Paper:https://arxiv.org/pdf/2102.04803.pdf
1、摘要
我们提出了DetCo,一种简单而有效的自监督目标检测方法。无监督的预训练方法最近被设计用于目标检测,但它们通常在图像分类任务上性能较差。与它们不同的是,DetCo在下游实例级密集预测任务上传输得很好,同时保持了具有竞争力的图像级分类精度。其优点来自于(1)的多层次监督到中间表示,(2)基于全局图像和局部补丁之间的对比学习。这两种设计有助于提高特征金字塔每个层次的鉴别和一致的全局和局部表示,同时提高检测和分类。
在VOC、COCO、Cityscapes和ImageNet上的大量实验表明,DetCo不仅在一系列二维和三维实例级检测任务上优于最近的方法,而且在图像分类上也具有竞争力。例如,在ImageNet分类中,DetCo比InsLoc和DenseCL高6.9%和5.0%的 top 1 精度。此外,在COCO检测方面,DetCo比使用MaskR-CNN C4的SwAV 好 6.9 AP。值得注意的是,DetCo在很大程度上超过了近期一个新的detector Sparse R-CNN,从45.0AP提高到46.5AP(+1.5AP),在COCO上建立了一个新的SOTA。
? 该方法想表达检测和分类对特征的需求不一致。分类需要在最后的高阶信息上决定分类结果(需要全局的信息),而检测是在不同的分辨率层中进行对象的分类和回归(需要局部的信息),为了解决该问题,文中提出了一种对检测友好的自监督方法DetCo,它能够结合多个全局和局部对比损失,以提高目标检测任务中对比学习的特征表示。
2、方法
DetCo是基于MoCo v2上做的改进,与MoCo v2的不同主要存在于两点,
1)多层次的监督,以保持特征在多个阶段的鉴别性;
2)全局和局部对比学习,以增强全局和局部特征表示;
最终的Loss是以上Loss的加权
? 感觉这个自监督效果没有第十六篇那么彻底(Propagate Yourself: Exploring Pixel-Level Consistency for Unsupervised Visual Representation Learning),但是他们based的detector不一样,也不好公平比较谁的效果更好一些。
参考
[1] Contrastive Self-Supervised Learning
[2] https://zhuanlan.zhihu.com/p/360621378
[3] https://zhuanlan.zhihu.com/p/150358540
[4] https://zhuanlan.zhihu.com/p/142412358
[5] https://zhuanlan.zhihu.com/p/213769405?utm_source=wechat_session