当前位置:   article > 正文

有监督学习和无监督学习举例_深入浅出对比自监督学习

non-linear projection layer (nll)

近来,一系列“新颖”的自监督学习领域算法取得了不错的成果,如:AMDIM[2],CPC[3],Moco[5],SimCLR[4],BYOL[6]等。YADIM[1]设计了一个框架来表达对比性自我监督学习方法,受该框架启发,本文从4个方面了分析近来的对比自监督算法:CPC,AMDIM,MOCO,SimCLR和BYOL,并表明尽管这些方法在表面上看起来有所不同,但实际上它们彼此之间都是细微的调整。

在此博客中,我们将:

  • 回顾自监督的学习;
  • 回顾对比学习;
  • 拆解对比自监督算法框架;
  • 使用框架比较CPC,AMDIM,MOCO,SimCLR和BYOL。

1 Self-Supervised Learning

回想一下,在监督学习中,系统被赋予输入(x)和标签(y),

47ae9a3e3ca757352756f6adf12ff809.png
Supervised learning: Input on the left, label on the right.

在自监督学习中,仅给定系统(x),而系统学习的不是(y),而是“学会根据输入的其他部分来预测其输入的一部分”。

3dda1297698fd7e28e50a9b9f069873e.png
In self-supervised learning, the input is used both as the source and target

实际上,这种表达方式是多样化的,可以创造性地“分解”输入内容, 这些策略称为 pretext tasks。研究人员尝试了各种方法,这里举三个示例:(1)预测两个斑块的相对位置,(2)解决拼图游戏,(3)给图像着色。

3256e248dc23f516ca29870c58c8639a.png
Examples of pretext tasks

尽管上述方法充满创意,但实际上在实践中效果并不理想。

然而,当使用对比学习的最新方法时,自监督学习已经开始明显缩小在ImageNet上与监督学习之间的差距

7c7fef06fd2fb12ef9cfb1321d8c7868.png
The latest approach (Swav) is closing the gap with the supervised variation trained on ImageNet

2 Contrastive Learning

大多数机器学习算法背后的基本思想是,相似的示例应该组合在一起,并且与其他群集相距甚远。

下图说明了这个主要思想:

d4b753606b9716ee8dce2ec809e12d6f.gif

对比学习通过使用三个关键要素来实现这一目标,即正样本,锚点和负样本表示。 要创建一个正对,我们需要两个相似的例子,而对于负对,我们要使用一个不相似的例子。

6c1c0007834a13aa087b62eb3802a726.gif

但是在自监督学习中,我们不知道示例的标签。因此,无法知道两个图像是否相似。 假设存在大小为N的数据集中,每个图像都是其自己的类别,那么就可以使用数据增强来生成这些三元组(the positive and negative pair)。

3dfdafc176fe07d1140677e26e15b2ae.png

3 CSL Framework

受YADIM[1]启发,本文从以下四个部分的模块描述现有的CSL方法:

3.1 Data Augmentation pipeline

对比自监督学习方法的第一个模块是数据增强。数据增强A(x)将随机变换序列应用于同一输入,以便构建正对和负对。

c15c28ec2d8c5c7374b0e368d0732fe4.gif
  • 深度学习中,数据增强旨在建立不受噪声影响的表征。 例如,即使旋转,或者颜色消失或像素“抖动”,模型也应将上述猪识别为猪。
  • 对比学习中,数据增强的目标是生成锚点,正例和负例,这些正例将被馈送到编码器并将用于提取表示。

(1)CPC pipeline

CPC引入了应用诸如颜色抖动,随机灰度,随机翻转等变换的流水线,但它还引入了一种特殊的变换,该变换将图像拆分为重叠的子块。

feaa676c572b21ae42ea7fcc6a226beb.png
The key CPC transform

因此,CPC可以生成许多正样本和负样本。

85d14ed2c58aaedf0f75207d5ca4f283.gif

(2)AMDIM pipeline

AMDIM采用略有不同的方法。在执行标准转换(抖动,翻转等)之后,它通过将两次数据增强应用于同一图像来生成图像的两个版本。

c15c28ec2d8c5c7374b0e368d0732fe4.gif

(3)MOCO & SimCLR & BYOL pipeline

采用与AMDIM的方法相似,对相同的样本使用了不同的数据增强方法,这样同一图像 x 生产的两个变换 v和 v'。

3.2 Encoder

第二个模块是编码器,大多数方法都使用各种宽度和深度的ResNet。

29760e157fe5afea4f29a191412293bd.png
ResNet architecture

在Resnet等方法问世前,CPC和AMDIM实际上设计了自定义编码器。 消融发现,AMDIM的泛化效果不佳,而CPC受到编码器更改的影响较小。

71c5c42c263b88a87e8094c257f51ed7.png

自CPC以后,每种方法都采用ResNet-50。 尽管可能还有更多的最佳网络,但ResNet-50的标准化意味着我们可以专注于改进其他特性,以通过更好的训练方法而非更好的架构来推动改进。

一般情况,更宽的编码器在对比学习中的表现要好得多。

3.3 Representation extraction

第三个模块是提表征提取。可以说,这是所有这些方法中发生“魔术”的地方,并且它们之间的差异最大。

要理解为什么这很重要,让我们首先明确 Representation 的含义。Representation是物体的独特特征,使模型能够理解为什么是那个对象,而不是另一个对象。

(1)CPC

CPC通过预测latent space中的"futrue"来引入学习表示的想法。 实际上,这意味着两件事:

  • 将图像视为时间轴,将"post"放在左上角,将"futrue"放在右下角。

bc160cb71674a5d9200673162f7a05d5.gif
  • 预测不是在像素级进行的,而是使用编码器的输出(即:latent space)

542be5dbfd6ea43d53ea14428d254a5b.gif
  • 最后,通过使用编码器(H)的输出作为由projection head生成的上下文向量的目标来制定预测任务,来进行表示提取。

2a3c9ee9df91c8533e2b8b829e3effae.gif

在论文中,发现只要数据增强足够强大,就无需执行此预测任务。

(2)AMDIM

AMDIM使用卷积神经网络的中间层提取的特征图中跨视图比较表示的想法。让我们将其分解为两个部分:a)图片的多个视图,b)CNN的中间层。

  • 回想一下,AMDIM的数据增强会生成同一图像的两个版本。

d642ba568ba781a68345a225ceadd6ce.gif
  • 每个版本都传递到同一编码器中,以提取每个图像的特征图。 AMDIM不会丢弃编码器生成的中间特征图,而是使用它们在空间尺度上进行比较。

a27eb2cbf46efdebe9a226699b0d35c9.png
  • AMDIM通过对CNN的中间输出进行比较来。以下动画说明了如何在编码器生成的三个特征图之间进行这些比较。

92c3fdb5908f2a87300bf8a5ac408c70.gif

(3)SimCLR

SimCLR提出了Projection Head,也就是在representation与contrastive loss间使用可学习的non-linear projection,效果是非常好。这样使用可学习的网路的优势在于避免计算 similarity 的 loss function在训练时丢掉一些重要的feature。论文中使用非常简单的单层MLP,配上ReLU activation function作为non-linear projection。

599fc86974176065ea39aacb3732db01.png

此外,batch size很大,这样保证了batch中的都当negatives样本的丰富性。

(4)Moco

正如我们之前提到的,对比学习需要负样本才能起作用。通常,这是通过将一批图像与一批其他图像进行比较来完成的。Moco通过Momentum Contrast来实现这一想法,具有2个方面的作用:

  • 大容量:使用memory bank保留了已看到的所有批次的历史记录,增加了负样本的数量,并且当前mini-batch被压入bank,bank中较早的mini-batch则被移除。
  • 一致性:Moco维护了encoder和moment encoder,每次梯度传播只更新 encoder的参数,而momentum encoder其实是用encoder来做一个moving average。这样键值表示特征的连续性相对memory bank就会好很多;

09a8d3e6624d429900d336ad1b832ec3.png

【MocoV2】

MoCo-V2使用了SimCLR 的两点有效改进:在encoder 编码特征计算loss 前加入了 MLP 的projection head 以及多种数据增强手段,并且将这两点改进应用到MoCo 框架又可以解决SimCLR 本身需要大 batch size的问题。

b00a07b9e426f4842a1e72f08442ea46.png

(6)BYOL

BYOL直接丢掉了负样本,可以说是大道至简,在我看来其触及到一些被忽视的问题了:对比自监督学习是否一定要构建正对并使其距离相近,同时也要构建负对并拉开距离?

bf1c2800121b73c7c5ebccdc0021ec32.png
  • momentum update:BYOL也是使用两个encoder,和Moco一样。
  • MLP:比SimCLR多了一个MLP来从 z 预测 p,Loss function 采用了L2,相当于只有正样本,所以没有负样本。
  • memory bank:BYOL没有采用memory bank也依旧取得了非常好的效果。
个人理解对比损失函数中负对的一个目的是防止mode collapse,而BN会根据学习到的平均值和标准差重新分配,这样就避免了mode collapse。所以BYOL能够work的关键是MLP中的BN

3.4 Loss function

第四个模块是损失函数的选择。 所有这些方法(BYOL除外)都已融合使用相似性度量和NCE损失。 NCE损失分为两个部分:分子和分母。 分子鼓励相似的向量靠在一起,而分母将所有其他向量推开。

BYOL中没有负样本,直接使用L2损失。

d4b753606b9716ee8dce2ec809e12d6f.gif

4 总结

  • 本文引入了一个框架来比较和更轻松地学习自监督对比学习近来的算法。
  • 通过介绍CPC,AMDIM,SimCLR,Moco,BYOL,从CPC的patch,AMDIM的不同的level feature,到Moco的Momentum Update,SimCLR的大batch size和MLP,最后集大成所作BYOL,直接去掉了对比损失函数,丢掉了负对。从繁到简,大快人心。

参考:

[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约读社,期待与您的相遇!
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/944227
推荐阅读
相关标签
  

闽ICP备14008679号