MoCo v2:改进矩对比学习.

MoCo v2是对Momentum Contrast (MoCo)方法的技术性改进,即把无监督视觉表示学习看作动态字典查询问题,用一个先入先出队列维护数据样本的编码表示,从而减小对比学习对批量大小的依赖。

给定查询样本$x_q$,通过编码器$f_q(\cdot)$构造查询表示$q=f_q(x_q)$,通过对$x_q$进行数据增强并使用矩编码器$f_k(\cdot)$构造键表示$k^+=f_k(Aug(x_q))$(视为正样本),其中矩编码器$f_k(\cdot)$的参数$\theta_k$通过编码器$f_q(\cdot)$的参数$\theta_q$更新:

\[\theta_k \leftarrow m \theta_k + (1-m) \theta_q\]

维护一个不同批次数据的键表示的队列\(\{k_1,k_2,...\}\)(视为负样本),则可以通过$1$个正样本和$N-1$个负样本构造对比损失:

\[\mathcal{L}_{\text{MoCo}} = -\log \frac{\exp(q \cdot k^+/\tau)}{\sum_{i=0}^{N}\exp(q \cdot k_i/\tau)}\]

MoCo v2的主要改进如下:

与其他方法的对比表示,MoCo v2能更好的利用数据,能在更短的时间内取得更好的结果。

此外,MoCo v2相比于端到端的对比学习方法(如SimCLR),主要优越性在于机器的内存以及训练的时长。当采用较小的批量($256$)时,端到端的方法提供的负样本不够多,效果较差;当增加批量时会极大地增加内存要求。MoCo v2的作者使用的机器配置是8v100的显卡,内存消耗5G,训练一个模型需要53个小时。