赞
踩
近来,一系列“新颖”的自监督学习领域算法取得了不错的成果,如:AMDIM[2],CPC[3],Moco[5],SimCLR[4],BYOL[6]等。YADIM[1]设计了一个框架来表达对比性自我监督学习方法,受该框架启发,本文从4个方面了分析近来的对比自监督算法:CPC,AMDIM,MOCO,SimCLR和BYOL,并表明尽管这些方法在表面上看起来有所不同,但实际上它们彼此之间都是细微的调整。
在此博客中,我们将:
回想一下,在监督学习中,系统被赋予输入(x)和标签(y),
在自监督学习中,仅给定系统(x),而系统学习的不是(y),而是“学会根据输入的其他部分来预测其输入的一部分”。
实际上,这种表达方式是多样化的,可以创造性地“分解”输入内容, 这些策略称为 pretext tasks。研究人员尝试了各种方法,这里举三个示例:(1)预测两个斑块的相对位置,(2)解决拼图游戏,(3)给图像着色。
尽管上述方法充满创意,但实际上在实践中效果并不理想。
然而,当使用对比学习的最新方法时,自监督学习已经开始明显缩小在ImageNet上与监督学习之间的差距。
大多数机器学习算法背后的基本思想是,相似的示例应该组合在一起,并且与其他群集相距甚远。
下图说明了这个主要思想:
对比学习通过使用三个关键要素来实现这一目标,即正样本,锚点和负样本表示。 要创建一个正对,我们需要两个相似的例子,而对于负对,我们要使用一个不相似的例子。
但是在自监督学习中,我们不知道示例的标签。因此,无法知道两个图像是否相似。 假设存在大小为N的数据集中,每个图像都是其自己的类别,那么就可以使用数据增强来生成这些三元组(the positive and negative pair)。
受YADIM[1]启发,本文从以下四个部分的模块描述现有的CSL方法:
对比自监督学习方法的第一个模块是数据增强。数据增强A(x)将随机变换序列应用于同一输入,以便构建正对和负对。
(1)CPC pipeline
CPC引入了应用诸如颜色抖动,随机灰度,随机翻转等变换的流水线,但它还引入了一种特殊的变换,该变换将图像拆分为重叠的子块。
因此,CPC可以生成许多正样本和负样本。
(2)AMDIM pipeline
AMDIM采用略有不同的方法。在执行标准转换(抖动,翻转等)之后,它通过将两次数据增强应用于同一图像来生成图像的两个版本。
(3)MOCO & SimCLR & BYOL pipeline
采用与AMDIM的方法相似,对相同的样本使用了不同的数据增强方法,这样同一图像 x 生产的两个变换 v和 v'。
第二个模块是编码器,大多数方法都使用各种宽度和深度的ResNet。
在Resnet等方法问世前,CPC和AMDIM实际上设计了自定义编码器。 消融发现,AMDIM的泛化效果不佳,而CPC受到编码器更改的影响较小。
自CPC以后,每种方法都采用ResNet-50。 尽管可能还有更多的最佳网络,但ResNet-50的标准化意味着我们可以专注于改进其他特性,以通过更好的训练方法而非更好的架构来推动改进。
一般情况,更宽的编码器在对比学习中的表现要好得多。
第三个模块是提表征提取。可以说,这是所有这些方法中发生“魔术”的地方,并且它们之间的差异最大。
要理解为什么这很重要,让我们首先明确 Representation 的含义。Representation是物体的独特特征,使模型能够理解为什么是那个对象,而不是另一个对象。
(1)CPC
CPC通过预测latent space中的"futrue"来引入学习表示的想法。 实际上,这意味着两件事:
在论文中,发现只要数据增强足够强大,就无需执行此预测任务。
(2)AMDIM
AMDIM使用卷积神经网络的中间层提取的特征图中跨视图比较表示的想法。让我们将其分解为两个部分:a)图片的多个视图,b)CNN的中间层。
(3)SimCLR
SimCLR提出了Projection Head,也就是在representation与contrastive loss间使用可学习的non-linear projection,效果是非常好。这样使用可学习的网路的优势在于避免计算 similarity 的 loss function在训练时丢掉一些重要的feature。论文中使用非常简单的单层MLP,配上ReLU activation function作为non-linear projection。
此外,batch size很大,这样保证了batch中的都当negatives样本的丰富性。
(4)Moco
正如我们之前提到的,对比学习需要负样本才能起作用。通常,这是通过将一批图像与一批其他图像进行比较来完成的。Moco通过Momentum Contrast来实现这一想法,具有2个方面的作用:
【MocoV2】
MoCo-V2使用了SimCLR 的两点有效改进:在encoder 编码特征计算loss 前加入了 MLP 的projection head 以及多种数据增强手段,并且将这两点改进应用到MoCo 框架又可以解决SimCLR 本身需要大 batch size的问题。
(6)BYOL
BYOL直接丢掉了负样本,可以说是大道至简,在我看来其触及到一些被忽视的问题了:对比自监督学习是否一定要构建正对并使其距离相近,同时也要构建负对并拉开距离?
个人理解对比损失函数中负对的一个目的是防止mode collapse,而BN会根据学习到的平均值和标准差重新分配,这样就避免了mode collapse。所以BYOL能够work的关键是MLP中的BN 。
第四个模块是损失函数的选择。 所有这些方法(BYOL除外)都已融合使用相似性度量和NCE损失。 NCE损失分为两个部分:分子和分母。 分子鼓励相似的向量靠在一起,而分母将所有其他向量推开。
BYOL中没有负样本,直接使用L2损失。
参考:
[1] Falcon, William, and Kyunghyun Cho. "A Framework For Contrastive Self-Supervised Learning And Designing A New Approach."arXiv preprint arXiv:2009.00104(2020).
[2]Philip Bachman, R Devon Hjelm, and William Buchwalter. Learning representations by maximizing mutual information across views. arXiv preprint arXiv:1906.00910, 2019.
[3] Olivier J Hénaff, Ali Razavi, Carl Doersch, SM Eslami, and Aaron van den Oord. Data-effificient image recognition with contrastive predictive coding. arXiv preprint arXiv:1905.09272, 2019.
[4] Ting Chen, Simon Kornblith, Mohammad Norouzi, and Geoffrey Hinton. A simple framework for contrastive learning of visual representations. arXiv preprint arXiv:2002.05709, 2020.
[5] Kaiming He, Haoqi Fan, Yuxin Wu, Saining Xie, and Ross Girshick. Momentum contrast for unsupervised visual representation learning. arXiv:1911.05722, 2019.
[6] Jean-Bastien Grill, Florian Strub, Florent Altché, Corentin Tallec, Pierre Richemond, et al.. Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning. 2020
[7] https://towardsdatascience.com/a-framework-for-contrastive-self-supervised-learning-and-designing-a-new-approach-3caab5d29619
更多内容请关注公众号:AI约读社,期待与您的相遇!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。