MoCO(Momentum Contrast)

原论文链接:https://arxiv.org/pdf/1911.05722.pdf

本文若有讲述错误或不妥之处,欢迎大佬在评论区纠正!

论文总览

论文总览

 论文详细解读

1. 相关名词解释

  • contrastive learning(对比学习):设计方法生成无标签数据的正负样本对,同时通过设计前置任务(pretext task)与损失函数(loss function)学习正样本对的相似性与负样本对的差异性从而学习到通用的高级特征。
  • pretext task:非实际需求任务,为contrastive learning而专门设计的任务,最著名的如instance discrimination(个体判别)
  • 动量更新(momentum update):变量 p 在迭代更新时不仅依赖其他变量 q 的最新值,还依赖自身的上一时刻值,可以使得 p 更新较慢,更好地保持与前面值的一致性,具体公式为:

p(t+1)=\theta *p(t)+(1-\theta)*q(t+1)

2. 对比学习基本架构

对比学习的基本架构主要包括两个并行的encoder,分别为 main encoder 和 auxiliary encoder(一般为相同架构,可以贡献参数也可以不共享)。其中 main encoder 接受原始数据的输入并将其投射到特征空间,auxiliary encoder 接受正负样本的输入并将其投射到特征空间,通过特定的损失函数刻画正样本对的相似性和负样本对的差异性。

图片来源:SimSiam论文

3. MoCo创新

通常来说,正样本通过相对应的数据进行 data augment 获得,而负样本则是除此之外的其他数据(包括其他数据的 data augment)。通常,训练时的负样本数量越多(指在一次step中),且它们的一致性越好(即由相同或相似的 encoder 编码)会使得 contrastive learning 效果更好,所以,MoC在这两方面进行了改进。

  • 负样本数量更多:MoCo通过 queue 来储存之前的 mini-batch 的所有数据的特征(包括 data augment),同时通过将最早的 mini-batch 数据 dequeue,将最新的 mini-batch 数据 enqueue,这样便使得 queue 的大小与 mini-batch 解耦合,可以有足够多的负样本;同时,由于最早的 mini-batch 数据与当前的 mini-batch 数据最不一致(因为 encoder 变化最大),所以也可更好地保持一致性。
  • 一致性更好:如果直接将所有的负样本进行 auxiliary encoder 的参数更新(BP算法),则会使得GPU的内存需要很大,同时不好优化,通过上述提到 动量更新 可以更好地保持一致性,所以MoCo决定 auxiliary encoder 不用 BP 算法更新,使用动量更新,具体格式如下:

    f_{k} =m*f_{k} + (1-m)*f_{q}

4.   MoCo伪代码

图片来源:原论文

 个人总结

MoCo不愧为 contrastive learning 的里程碑工作。它提出的两种改进工作都完美地同时改进了 负样本数量和一致性问题;同时 MoCo 也是一个通用架构可以嵌入不同的 encoder(CNN、transformer等)进行实验,kai ming 大佬真的太强了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值