对比学习串烧

对比学习在计算机视觉领域的发展历程,回顾那些有代表性的工作

1、百花齐放(18-19)

2、cv双雄(19-20)

3、不适用负样本

4、Transformer

———————————————————————————————————————————

1、InstDis(instance discrimination)、CPC、CMC,第一阶段模型没有统一,目标函数也没有同统一,代理任务也没有统一

2、mocov1、simclrv1、mocov2、simclrv2、CPC CMC的延申工作,以及SwAV,这个阶段发展迅速,imagenet的记录几乎每个月都在被刷新

3、不用负样本的对比学习,主要包括BYOL、最后SimSam融合了当前所有的工作

4、mocov3、DINO,大部分的研究都集中在了vision transformer上。

———————————————————————————————————————————

InstDisc

  • memory bank方法来源,里程碑之作
  • 提出了个体版别的代理任务
  • 用这个代理任务和NCEloss来做无监督表征学习并取得了不错的效果
  • 如果处理大量的负样本(使用字典),如果进行动量更新
  • 启发了后来的对比学习

——————————————————————————————————————————

Unsupervised Embedding Learning via Invariant and Spreading Instance Feature

  • SimCLR前身
  • 不使用多余的数据空间来存储,负样本仅仅来源于batch,来自这个batch输入数据经过数据扩充后的图片
  • 使用一个encoder做编码 
  • 可以做到端到端的训练

———————————————————————————————————————————

Representation Learning with Contrastive Predictive Coding

  • CPC
  • 预测型的代理任务,输入音频信号,输入一段音频序列,这些音频序列经过编码之后会得到一系列的特征,模型在接受到这写特征信息后,可以预测未来的输出。正样本是真正的输出,负样本定义为任意输入得到的输出。这是一个很具有普适性的任务

———————————————————————————————————————————

Contrastive Multiview Coding

  • CMC
  • 一个物体的很多个视角都可以看作正样本,以增大互信息,希望模型可以抓住所有视角下的关键因素
  • 正样本:原始图像、深度信息、surface normal信息 、语义分割信息,负样本:其他图片
  • 整明了多模态对比学习的可行性

———————————————————————————————————————————

第二阶段很多模型趋近于统一 

———————————————————————————————————————————

MoCo

  • 把之前的对比学习方法都归纳总结成了一个字典查询的问题
  • 提出了队列
  • 提出了动量编码器
  • 更广泛的下游任务适配性

———————————————————————————————————————————

SimCLR

A simple Framework for Contrastive Learning of Visual Representations

  • 简单但并不易用,因为batch设计的太大
  • 正样本:当前图片和当前图片数据增强后的样本,负样本:其他图片和其他图片数据增强后的样本
  • 更强大更广泛的数据增强技术
  • 加入projecter,其实是一个MLP层,提高10个点,projecter只有在训练的时候使用
  • normallized temperature-scaled loss,加入了L2归一化的,加入温度超参数的损失

———————————————————————————————————————————

MoCoV2

  • 借用了SimCLR上的即插即用的插件
  • 更友好的训练时长和内存占用

———————————————————————————————————————————

SimCLRV2

  • 更大的模型,更强大的骨干网络
  • 把projecter加深到两层
  • 使用了moco的动量编码器,但是提升不是很大,因为算力已经很强了

———————————————————————————————————————————

SwAV

unsupervised learning of visual features by contrasting cluster assignments

  • 将对比学习和聚类的方法结合在一起
  • 灵感来自deep cluster /deep clusterv2
  • 之前的对比学习方法只能是做近似,因为终究还是没有使用到全部的数据集。为了不去做近似而提高有效性,作者提出将负样本作为聚类中心,将聚类中心设计为3000,远远大于imagenet上的1k类,足以表示所有的特征。
  • 交叉对比的pretext task,使用两个样本z1;z2分别于聚类中心c相乘得到Q1 Q2,如果在z1;z2极其相似的条件下,z1应该可以做到预测Q2反之亦然。
  • multi-crop技术,作者注意到,之前的对比学习只是用了正样本对的方式,即一张图片只cropc出2张样本,这样只能学习到广泛的场景信息。为了能学习到更细节的物体信息,需要增加crop的数量,但是会带来计算复杂度的上涨。为了解决这个问题,将原本crop出2*224 改为了 crop 2*160(学习整体特征) + 4*196(学习局部特征) ,这样的计算代价是差不多的
  • 在imagenet上取得了无监督上最高的准确率,在比较长的一段时间里也没有被后来的模型所超越

———————————————————————————————————————————

第三阶段 SwAV算是一个承上启下的工作,SWAV也没有用到负样本

———————————————————————————————————————————

 BYOL

Bootstrap Your Own Latent A New Approach to Self-Supervised Learning

负样本在对比学习里是必须的,可以看作是一种限制

如果损失函数里没有负样本,即模型只需要做到拉近相似的样本的话,模型很容易学习到一个捷径解,即使得不论给什么输入,其输出都只是0,做到了“拉近”各个样本,模型就无法训练下去了,导致了modelcollapse。

BYOL的代理任务是,将同一张图片输入两个不同的网络,用一个网络的输出去预测另外一个网络的输出,使用的MSEloss。

这个模型却罕见的没有发生模型坍塌的问题

众多博客作者在复现的过程中发现了一个很重要却容易被人遗漏的细节

BN

首先回顾一些之前的模型在projecter 即mlp是怎么做的

SimCLR : linear (2048*2048)-> BN -> Relu -> Linear  (2048*128) -> BN ->

mocov2 : linear -> relu -> linear ->

BYOL : Linear -> BN -> Relu -> Linear ->

而作者在复现BYOL的时候,没有用BN,就导致了模型坍塌

进一步的实验发现,将BN改为LN也会导致内存坍塌。

分析原因就发现,BN会导致信息泄露的问题,也就是BN是在整个batch里计算的,在计算BN的时候,当前的图片i1“瞟到了”其他的图片“i2 i3 i4 i5...”,这样“瞟到了”之后,i1就更容易从负样本中的区分出哪个是自己人哪个不是自己人。

这也就解释了为什么BYOL没有模型坍塌的问题,因为BN产生了一种”平均图片“,平均图片里包含了正样本和负样本,i1也在隐式的对比着自己与平均图片的差距。

但是这样的解释明显不能让BYOL作者团队满意

因为这种解释说明了BYOL还是在用负样本的对比学习,只是更隐晦了一些

接下来的另一篇论文,作者分析了BYOL的性能不是BN所带来的

BYOL works even without batch statistics

tabel1中可以看出几个问题:

  1. BN确实很关键,BYOL不用BN就会模型坍塌,用了负样本的SimCLR不用BN也能训练
  2. 当BYOL的projector用了BN而predictor(BYOL的第二层MLP)不用BN的时候,模型也训练不了的,这就不符合这套理论了
  3. 而在SimCLR的encoder和projector都不用BN的时候呢,(SimCLR没有predictor),SimCLR即使用了负样本也训练不出来,也不符合这套理论。

作者在3.3中提到了一套可解释的理论

在模型一开始就初始化的比较好的时候,模型的训练是可以达到很好的结果的,BN只是稳定训练的一种手段。

3.3使用了Group norm 和weight standardization两种初始化的方式(在BEiT中首先提出)

———————————————————————————————————————————

SimSam

孪生网络

Exploring Simple Siamese Representation Learning

得出的结论是SimSam模型不坍塌的原因是stop gradient 的存在,可以理解为一个EM算法,进一步的可以看成是一个聚类

最后总结看来mocov2以其优异的迁移性质,快速的训练过程,成为第三阶段性能最优异的算法

———————————————————————————————————————————

Transformer 阶段

———————————————————————————————————————————

MOCOV3

An Empirical study of training self-supervised vision trnasformers

论文主要在于描述如何让自监督的VIT训练更稳定

作者在mocov2取得了很大成功的基础上,力争把骨干网络有cnn转换为transformer,尝试能不能取得像nlp那样的成功。

在Figure1中发现,在batchsize较小的时候 ,训练还是比较稳定的,但是随着batchsize的扩大,很快就出现了训练不稳定的问题(绿线)。

4.2中就提出了对应的解决方案,发现每一次的波动都发生在网络的第一层,即patch projection层(把图片patch embedding),于是作者就随机初始化了这一层,并将其freeze,发现就得到了平滑的训练曲线。

———————————————————————————————————————————

DINO

图1 观察到了自监督训练vision transoformer的时候观察到的有趣现象

 使用了一个centering 的操作来防止模型坍塌,具体实现类似于BN

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值