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的主要改进如下:
- 引入映射头;
- 使用更多数据增强;
- 采用余弦学习率策略;
- 训练更多轮数($200 \to 800$)。
与其他方法的对比表示,MoCo v2能更好的利用数据,能在更短的时间内取得更好的结果。
此外,MoCo v2相比于端到端的对比学习方法(如SimCLR),主要优越性在于机器的内存以及训练的时长。当采用较小的批量($256$)时,端到端的方法提供的负样本不够多,效果较差;当增加批量时会极大地增加内存要求。MoCo v2的作者使用的机器配置是8张v100的显卡,内存消耗5G,训练一个模型需要53个小时。