[论文阅读] Momentum contrast for unsupervised visual representation learning
Momentum contrast for unsupervised visual representation learning
Introduction
我们提出了动量对比(MoCo)作为一种构建具有对比损失的无监督学习的大型一致字典的方法(图1)。
我们将字典维护为数据样本队列:当前mini-batch的编码表示入队,最旧的被踢出queue。队列将字典大小与mini-batch大小解耦,使字典能够很大。此外,由于字典键来自于前面的几个mini-batch,因此提出了一种缓慢更新的键编码器以保持一致性,具体实现为查询编码器的基于动量的移动平均。
图1所示。动量对比(MoCo)通过使用对比损失将编码查询q与编码键的字典进行匹配来训练视觉表示编码器。字典键 \(\{k_0,k_1,k_2\}\) 由一组数据样本动态定义。字典被构建为一个队列,当前的mini-batch进入队列,最旧的mini-batch退出队列,将其与mini-batch大小解耦。键由一个缓慢推进的编码器编码,由查询编码器的动量更新驱动。这种方法为学习视觉表示提供了一个大而一致的字典。
Method
Contrastive Learning as Dictionary Look-up
考虑一个编码查询 \(q\) 和一组编码样本 \(\{k_0,k_1,k_2,\dots\}\) 作为字典的键。假设字典中有一个键(表示为 \(k_+\)),与 \(q\) 匹配。对比损失是一个函数,当 \(q\) 与其正键 \(k_+\) 相似并且与所有其他键(对于\(q\) 被视为负键)不相似时,其值较低。通过点积来度量相似性,本文考虑了一种对比损失函数的形式,称为 InfoNCE:
其中τ是温度超参数。求和是在一个正样本和 \(K\) 个负样本上进行的。直观地说,这个损失是基于 (K+1) 类 softmax 分类器的对数损失,该分类器试图将 \(q\) 分类为 \(k+\)。
对比损失用作训练提取queries和keys表示的编码器网络 的无监督目标函数。一般来说,查询表示为 \(q=f_q(x^q)\),其中 \(f_q\) 是一个编码器网络,\(x^q\) 是一个查询样本(同样,\(k=f_k(x^k)\))。它们的实例化取决于特定的预文本任务。输入 \(x^q\) 和 \(x^k\) 可以是图像、patches 或由一组patches组成的上下文。网络 \(f_q\) 和 \(f_k\) 可以是相同的、部分共享的或不同的。
Momentum Contrast
我们的假设是,好的特征可以通过一个包含丰富负样本集的大字典来学习,而且字典键的编码器尽管在进化中仍尽可能保持一致。
Dictionary as a queue
我们方法的核心是将字典维护为数据样本的队列。这使我们能够重复使用来自前几个最近的mini-batch的编码键。引入队列的概念将字典大小与mini-batch大小解耦。我们的字典大小可以比典型的mini-batch大小大得多,并且可以作为超参数进行灵活独立地设置。字典中的样本逐渐被替换。当前的mini-batch被入队到字典中,而队列中最旧的mini-batch被移除。
Momentum update
使用队列可以使字典变得很大,但它也使得通过反向传播来更新键编码器变得难以处理(梯度应该传播到队列中的所有样本)。我们提出了一个动量更新来解决这个问题。
形式上,将 \(f_k\) 的参数记为 \(θ_k\) ,\(f_q\) 的参数记为 \(θ_q\),我们将\(θ_k\)更新为
这里的 \(m \in [0,1)\) 是一个动量系数。只有参数 \(θ_q\) 通过反向传播进行更新。方程(2)中的动量更新使得 \(θ_k\) 的演变比 \(θ_q\) 更加平稳。因此,尽管队列中的键是由不同的编码器编码的(在不同的mini-batch中),但这些编码器之间的差异可以变得很小。在实验中,相对较大的动量值(例如,m = 0.999,我们的默认值)比较小的值(例如,m = 0.9)要好得多,这表明缓慢更新的键编码器是充分利用队列的关键。
本文来自博客园,作者:Un-Defined,转载请保留本文署名Un-Defined,并在文章顶部注明原文链接:https://www.cnblogs.com/EIPsilly/p/17669980.html