本文主要是介绍【论文视频】MoCo 论文逐段精读. CVPR 2020 zui佳论文提名【论文精读】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1. 四个问题
- 2. 视频正文
- 什么是对比学习?
- 论文内容
- 1. 题目和作者
- 2. 摘要
- 3. 引言
- 4. 结论
- 5. 相关工作
- 6. MoCo方法
- 7. 实验
- 8. 总结
- 3. 参考资料
1. 四个问题
-
解决什么问题
做无监督的表征学习 -
用什么方法解决
本文提出了MoCo去做无监督的表征学习,虽然是基于对比学习的,但是本文是从另外一个角度来看对比学习,也就是说把对比学习看作是一个字典查询的任务。
具体来说,就是做一个动态的字典,这个动态的字典由两个部分组成:- 第一个部分是一个队列,因为队列中的样本不需要做梯度回传,所以就可以往队列中放很多负样本,从而使得这个字典变得很大
- 第二个部分是一个移动平均的编码器,使用这个移动平均的编码器的目的是想让字典中的特征尽量的保持一致。作者发现在训练的过程中,如果能有一个很大而且比较一致的字典,会对无监督的对比学习非常有好处
-
效果如何
MoCo作为一个无监督的预训练模型,能够在7个下游任务(分割、检测等)上,而且比如说在VOC、COCO这些数据集上超越之前的有监督的预训练模型,有时候甚至是大幅度超越。
最后作者总结说,这就意味着对于很多视觉任务来说,无监督和有监督的表征学习中间的鸿沟已经填上了。 -
还存在什么问题
无监督对比学习学到的特征分布跟有监督学习学到的特征的分布是非常不同的 ,哪里不同,有多不同? 【等待学习中…】
2. 视频正文
什么是对比学习?
那不还是需要标签使 模型知道哪几张图片为一类吗?
那为什么 对比学习一般在视觉领域被认为是无监督的训练方式呢?
因为在视觉领域,大家巧妙地设计代理任务,从而人为定义一些规则,这些规则可以用来定义哪些图片是相似的,哪些图片是不相似的,从而可以提供一个监督信号去训练模型,这也就是所谓的自监督训练
讲一个最广泛的代理任务:instance discrimination
如何定义哪些图片是相似的,哪些图片是不相似的呢?
instance discrimination 是这么做的:只有从自己图片裁剪下来的才是正样本,属于同一类,其它都是负样本。
这样一个框架就是对比学习常见的实现方式了。看起来好像平平无奇,但对比学习就厉害的地方就是它的灵活性。只要你能找到一种方式定义什么是正样本,什么是负样本,这就够了,剩下的操作都是比较标准。
大开脑洞去制定很多正样本负样本的规则,
- 比如在视频领域,同一视频的任意两帧都是正样本,而其它视频里所有帧都是负样本。
- 在NLP领域,NLP, simCSE 把同样的句子扔给模型,但是做 2 次 forward,通过不同的 dropout 得到一个句子的 2 个特征;和其它所有句子的特征都是负样本。
- CMC 论文:一个物体的不同视角 view(正面、背面;RGB 图像、深度图像)作为不同形式的正样本。
对比学习实在是太灵活了,比天比地比空气,什么都能比,只要你脑洞够大,哪个领域都能用。
扩展到多模态领域,也就造就了open AI 的 CLIP 模型
论文内容
1. 题目和作者
什么是动量Momentum
2. 摘要
本文提出了MoCo去做无监督的表征学习,虽然是基于对比学习的,但是本文是从另外一个角度来看对比学习,也就是说把对比学习看作是一个字典查询的任务
具体来说,就是做一个动态的字典,这个动态的字典由两个部分组成
- 第一个部分是一个队列,因为队列中的样本不需要做梯度回传,所以就可以往队列中放很多负样本,从而使得这个字典变得很大
- 第二个部分是一个移动平均的编码器,使用这个移动平均的编码器的目的是想让字典中的特征尽量的保持一致。作者发现在训练的过程中,如果能有一个很大而且比较一致的字典,会对无监督的对比学习非常有好处
这篇论文主要的亮点在于它的结果,所以剩下大篇幅的摘要留给了结果
更重要的是MoCo学习到的特征能够很好地迁移到下游的任务,这才是整篇文章的精髓
MoCo作为一个无监督的预训练模型,能够在7个下游任务(分割、检测等)上,而且比如说在VOC、COCO这些数据集上超越之前的有监督的预训练模型,有时候甚至是大幅度超越
最后作者总结说,这就意味着对于很多视觉任务来说,无监督和有监督的表征学习中间的鸿沟已经填上了
- 之前虽然有一些无监督的工作能够在某个数据集或者是某个任务上能够比它对应的有监督预训练模型好一点,但是MoCo是第一个能够在这么多主流视觉任务上,全面地让无监督训练的模型比有监督训练的模型表现要好
3. 引言
信号空间:
- 自然语言:离散的信号空间,也就是说是用单词,词根词缀去表示的,从而可以很容易地吉建tokenized字典(tokenized :把某一个词对应某一个特征),一旦有了这个字典,可以把这个字典的key想象成类别,这不就是有监督学习的范式了吗?所以在NLP领域,无监督学习就很容易建模,也容易优化
- CV 原始信号是连续的、高维的,不像单词具有浓缩好的、简洁的语义信息,不适合构建 个字典。如果没有字典,无监督学习很难建模 。所以导致在视觉这边,无监督学习还远不如有监督学习。
构造动态字典:
第二段:别人怎么用对比学习的方法在 CV 的无监督学习里?dynamic dictionaries
近期结合 对比学习和 CV 的无监督学习效果不错,出发点motivation 不一样,但可以被归纳为 “动态字典法”
这个字典满足两个要求:1.大(高维的视觉信息抽样);2.一致性(keys用相同或者相似的编码器得到的,这样跟query去对比才尽可能一致,否则query可能找到一个key跟它使用相同的编码器,而不是真的含有相同语义信息的key,变相地引入一个shortcut ,这样模型学不好)
介绍完了研究动机,还有之前工作的局限性,还有想要达到的目标,那么很自然地作者提出他们的方法了。
贡献:
- queue(使这个字典大)
- momentum(动量能够让这个字典缓慢更新)
第五段:MoCo 的代理任务 pretext task? instance discrimination
MoCo只是建立中间模型的方式,只是为对比学习提供了一个动态字典。
选择什么代理任务去做自监督学习呢?instance discrimination(简单,效果好)
最后一段老套路:卖一下结果
迁移下游任务,跟有监督的训练打个平手甚至在某些领域大幅度领先,模型永无止境,有望取代有监督的预训练的模型
4. 结论
最后一句话点题总结:希望MoCo 能对其它那些使用对比学习的代理任务有帮助
==之所以强调对比学习,MoCo 设计的初衷:去构造一个大的字典,从而让正负样本能够更有效地去对比,提供一个稳定的自监督信号,最后去训练这个模型 ==
5. 相关工作
对比学习的目标函数,在一个特征空间里,衡量各个样本的相似性。要达到的目标:让相似物体的特征拉得尽量近,不相似的物体特征推开得尽量远。
代理任务 pretext tasks,脑洞大开
对比学习和代理任务
总结一下:
6. MoCo方法
参考文字参考1——MoCo 论文逐段精读【论文精读】
NCE(noise contrastive estimatation ) loss
Info NCE
已经有了代理任务提供的正负样本,也有了目标函数,接下来该考虑模型的输入输出了
(整个论文,每一段和每一段之间最好都有承上启下的段落,每当开始讲一个新的东西的时候最好先讲一下为什么需要它,一旦有了这个承上启下的段落,也就是因为所以的逻辑关系之后,论文读起来就会更加顺畅。否则论文上来每一段都是直接讲方法的话,很容易让人看得一头雾水,无论自己觉得写的有多清晰,读者可能从一开始就没明白为什么要这么做)
文章的第一个贡献:如何把一个字典看成队列
文章的第二个贡献:如何使用动量的思想去更新编码器
作者在引言中提到过,之前的那些对比学习方法都可以看作是字典查找,但是它们都或多或少受限于字典的大小和字典的一致性的问题,这里作者将之前的方法总结了一下,归纳成了两种架构
第一种就是比较直接的端到端学习的方式
- 端到端学习的优点在于编码器是可以实时更新的,所以导致它字典里的那些key的一致性是非常高的,但是它的缺点在于因为它的字典大小(就是batch-size的大小),导致这个字典不能设置的过大,否则硬件内存吃不消
第2种:memory bank
- 更关注字典的大小,而牺牲一些一致性
MoCo的伪代码,走一遍 前向过程
建议看一下官方代码,写得极其出色,非常简洁明了,基本同伪代码
7. 实验
参考文字参考1——MoCo 论文逐段精读【论文精读】
划重点:无监督学习最主要的目标就是学习一个可以迁移的特征
- 用ImageNet做有监督的预训练,它最有用、最有影响力的时候就是在当在下游任务上做微调,可以用这个预训练模型做模型的初始化,从而当下游任务只有很少的标注数据的时候也能获得很好的效果
8. 总结
MoCo这篇论文以及它高效的实现,能让大多数人有机会用普通的GPU就能跑对比学习的实验,做研究
因为MoCo在各个视觉任务上取得了更好的性能,也激发了很多后续分析性的工作,去研究MoCo学出来的特征到底和有监督学出来的特征有什么不同,还能从别的什么方向去提高对比学习
3. 参考资料
MoCo 论文逐段精读【论文精读】
文字参考1——MoCo 论文逐段精读【论文精读】
文字参考2——MoCo 论文逐段精读【论文精读】
这篇关于【论文视频】MoCo 论文逐段精读. CVPR 2020 zui佳论文提名【论文精读】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!