『论文笔记』MoCo:Momentum Contrast for Unsupervised Visual Representation Learning

对比是在正负例之间进行的,那负例越多,这个任务就越难,于是一个优化方向就是增加负例。

纯粹的增大batch size是不行的,总会受到GPU内存限制。一个可行的办法就是增加memory bank,把之前编码好的样本存储起来,计算loss的时候一起作为负例:

『论文笔记』MoCo:Momentum Contrast for Unsupervised Visual Representation Learning

 

但这样有个问题是存储好的编码都是之前的编码器计算的,而xq的编码器一直在更新,会有两侧不一致的情况,影响目标优化。一个可行方法之一就是用最新的左侧encoder更新编码再放入memory bank,但这依然避免不了memory bank中表示不一致的情况,实验效果很差。还有研究用动量去更新样本表示,但这样必须存储所有样本,消耗过多内存。

所以何凯明在2019年底推出了MoCo(Momentum Contrast)模型,延续memory bank的思想,使用动量的方式更新encoder参数,解决新旧候选样本编码不一致的问题:

『论文笔记』MoCo:Momentum Contrast for Unsupervised Visual Representation Learning

 

 『论文笔记』MoCo:Momentum Contrast for Unsupervised Visual Representation Learning

 

 

这样每次入队的新编码都是上一步更新后的编码器输出,以很低的速度慢慢迭代,与旧编码尽量保持一致。实验发现,m=0.999时比m=0.9好上很多。最终在ImageNet的实验效果也远超前人,成为当时的SOTA:

『论文笔记』MoCo:Momentum Contrast for Unsupervised Visual Representation Learning

 

上一篇:torch.optim.SGD()各参数的解释


下一篇:从零开始的Nesterov动量梯度下降