Parametric Contrastive Learning

Cui J., Zhong Z., Liu S., Yu B. and Jia J. Parametric contrastive learning. In International Conference on Computer Vision (ICCV), 2021.

一种特殊的 supervised contrastive learning, 主要是希望解决先前工作在长尾问题上的不足.

符号说明

本文是建立在 MoCo 的基础上, 即带有 momentum queue 的.

  • \(n\), 类别个数;
  • \(Z_{v1}, Z_{v2}\), 一个batch的图片经由不同的数据增强变换后得到的两组特征表示;
  • \(Q\), mementum queue 所代表的集合;
  • \(A(i) := \{z_k \in Q \cup Z_{v1} \cup Z_{v2} \} \setminus \{z_k \in Z_{v1}: k = i\}\), 队列中的特征表示加上一个 batch 中类别不为 \(i\) 的特征表示 (仅 \(Z_{v1}\));
  • \(P(i) = \{z_k \in A(i): y_k = y_i\}\), 来自 \(Q \cup Z_{v2}\);

主要内容

Supervised Contrastive Learning

作者首先给出了基于 MoCo 的 supervised contrastive learning 的损失函数:

\[\mathcal{L}_i := - \sum_{z_+ \in P(i)} \log \frac{\exp(z_+ \cdot T(x_i))}{\sum_{z_k \in A(i)} \exp(z_k \cdot T(x_i))}, \]

其中 \(x_i\)\(X_i\) 在 query 编码器中的一个特征表示, \(T(\cdot)\) 是变换, 感觉指的是 projection head, normalization 之类的. 此外, 这里的下标 \(i\) 应当是表示该样本 \(X\) 的标签为 \(y = i\), 并不是习惯上的表示次序.

该损失函数实际上就是希望对于样本 \(X_i\) 而言, 它的特征标表示应当和所有的其它同类别的特征表示靠近, 而与其它的非同类的样本远离.

注意到, 在最理想的情况,

\[\exp(T(x_i) \cdot z_k) = 0, \: \forall z_k \in A(i) \text{ and } y(z_k) \not= i, \]

这个时候, 匹配的概率大约为

\[\frac{1}{K_i}, \: K_i \approx |Q| \cdot q(i), \]

\(q(i)\) 表示类别 \(i\) 的特征表示在 \(Q\) 中占据的一个比例. 也就是说, 样本数多的样本所对应的损失有一个更高的一个下界, 所以往往会占据主导地位 ?

本文的思想

本文主要就是一个普通的交叉熵损失和 InfoNCE 的一个结合:

\[\mathcal{L}_i := - \sum_{z_+ \in P(i) \cup \{w_i\}} \alpha(z_+) \log \frac{\exp(z_+ \cdot T(x_i))}{\sum_{z_k \in A(i) \cup W} \exp(z_k \cdot T(x_i))}, \]

其中

\[\alpha(w_i) = 1, \]

否则 \(\alpha(z_+) = \alpha\). 并且

\[z \cdot T(x) = \left \{ \begin{array}{ll} z \cdot \mathcal{G}(x_i) & z \in A(i) \\ z \cdot x_i & z \in W \\ \end{array} \right . \]

其中 \(\mathcal{G}\) 就是在对比学习中常用的 two-layer projection head.

观测上面的损失可以发现, 它希望 \(T(x_i)\) 逼近同类的特征表示, 以及类别 \(i\) 的 embedding, 同时远离其他类的样本的特征表示, 和其它类的 embeddings.

后面的关于参数的选择就不讲了, 感觉并没有特别的意思.

代码

[offical]

posted @ 2022-06-08 13:04  馒头and花卷  阅读(267)  评论(3编辑  收藏  举报