美文网首页
自监督学习算法整理

自监督学习算法整理

作者: 赵小闹闹 | 来源:发表于2021-10-09 09:47 被阅读0次
image.png

该领域论文主要来自三大组:
Facebook AI Research (FAIR) :MoCo v1&v2, SwAV,Simsiam,Twins
Google Research, Brain Team:SimCLR v1 & v2
DeepMind Research:BYOL

(1)谷歌组 SimCLR v1 & v2

SimCLR是self-supervised learning与contrastive learning中重要的一个相当重要的里程碑,其最大的特点在于研究各种数据增强 (data augmentation) 作为SSL的归纳偏置 (inductive bias),并利用不同data间彼此的互斥强化学习目标,避免contrastive learning的output collapse。

整体运作概念分为三个阶段:

先sample一些图片(batch of image)
对batch里的image做两种不同的data augmentation
希望同一张影像、不同augmentation的结果相近,并互斥其他结果。
如果要将SimCLR的架构划分阶段,大致可以分成两个阶段,首先是大个embedding网络执行特征抽取得到y,接下来使用一个小的网络投影到某个固定为度的空间得到z。


image.png

对于同一个x,用data augmentation得到不同的v,通过网络抽取、投影得到固定维度的特征,计算z的contrastive loss,直接用gradient decent同时训练两个阶段的网络。

SimCLR直接比MoCo高出了7个点,并直逼监督模型的结果。

(2) FAIR组 MoCo v1&v2, SwAV,Simsiam

MoCo (momentum contrast) 的想法是维持两个encoder,一个使用gradient decent训练,另一个的参数则是跟著第一个encode的参数,但是使用momentum更新,保持一个相似但不同的状态。而这个momentum encoder的输出会被一个queue储存起来,取代原本的memory bank。相比原本的memory bank作法,MoCo的储存的representation比较新,保持一致性的同时也藉由momentum encoder确保了足够的对比性。


image.png

MoCo v2 只是将SimCLR的两个组件 (stronger data augmentation与投影网络 )加入MoCo的架构。相对于SimCLR,多了momentum encoder与memory bank,且不需要特别大的batch。

具体的,如下图,图中的顶行和底行表示相同的网络(由θ参数化),MoCo将单个网络拆分为θ参数化的在线网络(顶行)和ξ参数化的动量网络(下排)。在线网络采用随机梯度下降法进行更新,动量网络则基于在线网络权值的指数移动平均值进行更新。动量网络允许MoCo有效地利用过去预测的记忆库作为对比损失的反面例子。这个内存库使批处理的规模小得多。在我们的狗图像插图中,正面的例子是相同图像的狗的作物。反面例子是在过去的小批量中使用的完全不同的图像,它们的投影存储在内存库中。


image.png

SimSiam简单用一句话描述就是没有momentum encoder的BYOL。BYOL拿掉了MoCo的memory bank,SimSiam进一步地拿掉了momentum encoder。方法简单,实务上同样能避免collapsing output的发生。

SimSiam的架构与BYOL一样是三个阶段的架构,先过主网络embedding,再过小网络projection,最后过小网络prediction。与BYOL不同之处在于SimSiam并没有两组网络参数,同一个网络对于不同的view交互地用latent projection互为彼此的prediction target。在更新参数时,都只计算prediction那条路线的gradient,也自然没有什么momentum encoder。
这里在BYOL的基础上去除了momentum更新的target encoder, 直接让target encoder = online encoder。指出了predictor+stop-gradinent 是训练出强大SSL encoder的一个充分条件。
再次的阶段小结:在这个阶段,认识进展到了可以没有负样本的阶段,但是不使用负样本,模型就会有陷入平凡解的风险。为此,BYOL设计了predictor 模块,并为之配套了stop-gradient技巧;SimSiam通过大量的试验和控制变量,进一步做减法,去除了momentum update。让模型进一步变得简单。再次总结,就是predictor模块,避免了直接拉近正样本对,对于梯度的直接回传,让模型陷入平凡解。


image.png

DeepMind BYOL

BYOL建立在MoCo动量网络概念的基础上,添加了一个MLP来从 z 预测 p ,而不是使用对比损失,BYOL使用归一化预测 p 和目标z’之间的L2 loss。继续使用我们的dog image示例,BYOL尝试将dog图像的两个裁剪转换为相同的表示向量(使 p 和 z’相等)。因为这个损失函数不需要负示例,所以在BYOL中没有内存库的用处。

在BYOL中的两个MLP仅第一个线性层之后使用批处理标准化。
文章的核心点就是要破除“负样本迷信”,BYOL认为不使用负样本,照样可以训练出效果拔群的SSL model。但是如果直接抛弃负样本,只拉近正样本对的话,model 会容易陷入平凡解:对于任意样本,输出同样的embedding。为了在没有负样本的帮助下,解决这个问题。BYOL 在Projector之上,增加了一个新的模块,取名Predictor。整体可以理解为在MoCo的基础上,但是不再直接拉近正样本对(即同一个样本,不同增强后的输出)的距离,而是通过Predictor去学习online encoder 到 target encoder (即moco里的momentum encoder)的映射。另外,对target network梯度不会传递,即Stop-Gradient。


image.png image.png
image.png

阶段小结 Simclr+MOCO

抛开细节,SimCLR和MoCo的核心点,都是认为negatives(负样本)非常重要,一定要有足够多的负样本,只不过实现方式略有不同。SimCLR 拿着TPU,直接把batch size搞到4096,一力降十会;恺明则是巧妙设计Momentum机制,避开了硬件工程的限制,做出了可以飞入寻常百姓家的MoCo。再次重申,这时候的认识,还是停留在需要大量的负样本,来提升SSL model的效果这个历史局限里。

再次的阶段小结 BYOL+SimSiam

在这个阶段,认识进展到了可以没有负样本的阶段,但是不使用负样本,模型就会有陷入平凡解的风险。为此,BYOL设计了predictor 模块,并为之配套了stop-gradient技巧;SimSiam通过大量的试验和控制变量,进一步做减法,去除了momentum update。让模型进一步变得简单。 再次总结,就是predictor模块,避免了直接拉近正样本对,对于梯度的直接回传,让模型陷入平凡解。BYOL 和 SimSiam 在方法上都是很不错的,试验也做得很可信充分,可是对于方法的解释并没有那么深刻置信,可能要寻求一个扎实的解释也确实很难。可以参见从动力学角度看优化算法(六):为什么SimSiam不退化? - 科学空间|Scientific Spaces,也是另一个角度的解释,颇为有趣合理。此时已经进入到了摆脱了负样本了,但是在不使用负样本的情况,要想成功训练好一个SSL model,需要引入新的trick: 即predictor+stop-gradient。这样子来看,难免有点像左手换右手的无用功,但是整体的技术认识是进步了很多的。

参考文献:https://zhuanlan.zhihu.com/p/342244090

相关文章

  • 自监督学习算法整理

    该领域论文主要来自三大组:Facebook AI Research (FAIR) :MoCo v1&v2, SwA...

  • 自监督学习整理

    1. 自监督学习定义 自监督学习主要是利用辅助任务(pretext)从大规模的无监督数据中挖掘自身的监督信息,通过...

  • 机器学习算法

    机器学习的算法分监督算法和无监督 算法。监督算法包括回归算法,神经网络,SVM;无监督算法包括聚类算法,降维算法。...

  • 机器学习算法分类大全

    机器学习算法可以分为监督学习算法、无监督学习算法和半监督学习算法,下面以思维导图的形式总结了一下常见的监督学习和无...

  • 常用算法介绍

    常见算法分类 监督式学习 无监督学习 半监督学习 监督式学习 分类1.贝叶斯分类2.决策树算法3.神经网络算法4....

  • 机器学习--连载(4)----监督学习

    前面的几篇都是无监督学习,接着开始监督学习的算法 监督学习中主要的算法模型: K—近邻算法(k-Nearest N...

  • 机器学习算法的分类

    这篇文章介绍一下机器学习算法的分类和算法的特点,我们一般把机器学习算法分为监督学习、非监督学习、半监督学习、强化学...

  • K-Means聚类算法

    机器学习的算法主要分为监督学习和无监督学习监督学习。 监督学习(supervised learning),利用样本...

  • 机器学习

    学习方式:1.监督学习2.无监督学习3.非监督学习4.强化学习 算法分类:1.回归算法2.基于实例的算法3.正则化...

  • 机器学习算法之聚类(Clustering)

    1.无监督学习:简介 聚类算法:第一个无监督学习算法(无标签的数据) 什么是无监督学习呢?对比:监督学习问题指的是...

网友评论

      本文标题:自监督学习算法整理

      本文链接:https://www.haomeiwen.com/subject/ssxqoltx.html