【论文视频】对比学习论文综述【论文精读】
作者:互联网
文章目录
总结
MoCo v3和DINO这两篇工作,从方法和模型角度上来说,其实它们跟第三阶段基本是一模一样的,主要就是融合了Vision Transformer
到这里就把过去两三年比较有代表性的对比学习的工作都串了一遍,这里我们就再画一张大图如下图所示,整体再快速的把这些工作再过一遍,看一下它们之间的联系与不同
-
从最开始的Inst Disc开始,它提出了个体判别的任务,而且它提出用一个 memory bank的外部数据结构去存储负样本,从而能达到一个又大又一致的字典去做对比学习
-
如果不用外部结构的话,另外一条路就是端到端的学习,也就是Inva Spread这篇论文做的,它就只用了一个编码器,从而可以端到端的学习,但因为受限于batch size 太小,所以说它的性能不够好
-
CPC v1这篇论文提出了infoNCE这个loss,而且CPC v1是一个预测型的代理任务,不仅可以做图像,还可以去做音频、视频、文字和加强学习,是一个非常全能的结构
-
最后还有CMC这个工作,它就把两个视角的任务扩展到了多个视角,从而给接下来多视角或者多模态的这个对比学习打下了铺垫
-
另外还有一篇论文deep cluster并没有讲,它是基于聚类学习的,当时还没有用对比学习
-
接下来就进入了第二阶段,第二阶段主要是MoCo v1开始,它算是Inst Disc的一个延伸性工作,它把memory bank变成了一个队列,然后把动量更新特征,变成了动量更新编码器,从而能预训练一个很好的模型
-
MoCo也是第一个能在很多视觉的下游任务上,让一个无监督预训练的模型比有监督预训练模型表现好的方法,它属于使用外部数据结构的
-
自然端到端的学习肯定也有延伸性的工作,也就是SimCLR v1,SimCLR v1跟Inva Spread方法是很像的,但是它用了很多的技术,比如说加大了batch size,用了更多的数据增强,加了一个projection head,训练的更长时间,总之所有的这些技术堆起来让SimCLR在ImageNet取得了非常好的的结果
-
然后CPC v1把这些技术也全都拿来用了一遍,CPC v2就直接比CPC v1在ImageNet 上高了30多个点
-
最后CMC把这些都分析一下,提出了一个info Min的这个原则,它说两个样本或者两个视角之间的互信息,要不多不少才是最好的
-
然后MoCo的作者看到SimCLR用的这些技术确实都很管用,所以就把这些即插即用的技术拿过来用在MoCo上,就有了MoCo v2,MoCo v2的效果就比MoCo v1和SimCLR v1都要好
-
然后SimCLR的作者也对模型进行了一些改动,得到了SimCLR v2,但SimCLR v2主要是去做半监督学习的
-
之前提deep cluster主要就是为了引出SwAV,SwAV就是把聚类学习和对比学习结合起来的一个工作,也取得了不错的结果,但它这个不错的结果主要是来自于它提出的multi crop的技术,如果没有这个技术,它其实跟SimCLR或者MoCo v2的结果都是差不多的
-
第三阶段就来到了BYOL这个方法,因为处理负样本实在是太过麻烦,所以BYOL就说能不能不要负样本,能不能不去跟负样本做对比,结果它们发现还真行,就自己跟自己学,把一个对比任务变成一个预测任务就可以了,而且目标函数也很简单,不再使用info NCE,而是用一个简单的mse loss就可以训练出来
-
但是大家都觉得很不可思议,所以立马就有一篇这个博文出来,它们就假设说BYOL能够工作主要是因为有batch norm,这个batch norm提供了一种隐式的负样本,所以BYOL 能够正常训练而不会模型坍塌
-
但是 BYOL 的作者很快就又发了另外一篇论文叫BYOL v2,通过做了一系列实验以后,最后说batch norm只是帮助了模型的训练,如果能用另外一种方式能提供一个更好的模型初始化,BYOL不需要batch norm提供的那些batch的统计量照样能工作,就把之前博客里提出来假设给打破了,但它们提出的其实也只是另外一个新的假设
-
紧跟着BYOL,SimSiam 就出来了,SimSiam就把之前的工作都总结了一下,因为它觉得之前的这些论文都在一点一点往上堆技术,那如果堆的太多了就不好分析了,这个领域也就不好再推进下去了,所以SimSiam就化繁为简,又提出来一个很简单的孪生网络的学习方法,它既不需要用大的batch size,也不需要用动量编码器,也不需要负样本,然后照样能取得不错的结果,SimSiam提出的假设就是说stop gradient这个操作是至关重要的,因为有这个操作的存在,所以SimSiam可以看成是一种EM算法,通过逐步更新的方式避免模型坍塌
-
另外还有一篇工作叫barlow twins,它主要就是更换了一个目标函数,把之前大家做的这种对比或者预测变成了两个矩阵之间去比相似性,因为它已经是21年3月提出来的,所以很快就淹没在了Vision Transformer这波洪流之中
-
最后第四阶段就来到了Vision Transformer,主要讲的两个工作就是MoCo v3和DINO,其实都是把骨干网络从残差换成了ViT,主要学习的方法其实是没有改变的
-
但是换成Vision Transformer以后,面临的问题都是训练不稳定或者不好训练,所以他们就提出了各自的方法:MoCo v3提出来把patch projection layer冻住,DINO就提出把teacher网络的输出先做一下归一化,做一下centering。这2种方式都能有效的提高模型训练的稳健性,防止模型坍塌,让Vision Transformer用自监督的方式也能训练的很好
-
到此,又把所有的这些工作快速的串了一遍,现在对比学习还是一个很火的方向,虽然说可能没有Vision Transformer那么火,而且尤其是MAE火爆了以后,大家都去尝试掩码学习,而不是去尝试对比学习了,所以说对比学习又从一个火爆发展期变成了一个发展潜伏期
-
但是我对它的前途还是非常看好的,毕竟多模态的对比学习还是一个主流,CLIP的效果就很好,下次也会讲到CLIP这篇工作,而且在多模态里面,图像和文本对之间的对比学习loss还是一个标准的目标函数,基本上所有的工作都有在用,而且对比学习它属于一个想法而不是具体的一个工作,它在几十年之前就已经提出来了,所以接下来我们应该还是会看到很多对比学习的工作的,我很期待对比学习跟其它方法的结合
参考资料
对比学习论文综述 第四阶段----transformer + 总结
标签:精读,SimCLR,综述,论文,学习,v1,MoCo,对比 来源: https://blog.csdn.net/weixin_43154149/article/details/122733013