引言:
自监督发展时间线
图来自:https://zhuanlan.zhihu.com/p/381354026
1. MoCo v1
论文名称: Momentum Contrast for Unsupervised Visual Representation Learning
开源地址:https://github.com/facebookresearch/moco
大佬详细解读:https://zhuanlan.zhihu.com/p/382763210
motivation
原始的端到端自监督方法:
给定样本 x q x_q xq,数据增强得到正样本 x k x_k xk,batch内的其余样本作为负样本
原始样本 x q x_q xq输入到Encoder f q f_q fq中,正样本和负样本均输入到Encoder f k f_k fk中,通过Contrastive loss来更新2个Encoder f q f_q fq和 f k f_k fk的参数
Contrastive loss一般为InfoNCE:
【插入一个参考资料:对比学习损失(InfoNCE loss)与交叉熵损失的联系,以及温度系数的作用】
毫无疑问,batch size 越大效果越好,但是受显存影响(2个encoder的全量数据都用于更新两个encoder的参数),batchsize不能设置过大,如何获得更多的负样本?
MoCo v1之前的做法:
正样本的生成方式不变(数据增强),采用一个较大的memory bank 用来存储负样本,每次训练从中采样一批负样本出来 k s a m p l e k_{sample} ksample,loss只更新Encoder f q f_q fq 的参数,和几个采样的 k s a m p l e k_{sample} ksample