Parametric Contrastive Learning
概
一种特殊的 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 的损失函数:
其中 \(x_i\) 是 \(X_i\) 在 query 编码器中的一个特征表示, \(T(\cdot)\) 是变换, 感觉指的是 projection head, normalization 之类的. 此外, 这里的下标 \(i\) 应当是表示该样本 \(X\) 的标签为 \(y = i\), 并不是习惯上的表示次序.
该损失函数实际上就是希望对于样本 \(X_i\) 而言, 它的特征标表示应当和所有的其它同类别的特征表示靠近, 而与其它的非同类的样本远离.
注意到, 在最理想的情况,
这个时候, 匹配的概率大约为
\(q(i)\) 表示类别 \(i\) 的特征表示在 \(Q\) 中占据的一个比例. 也就是说, 样本数多的样本所对应的损失有一个更高的一个下界, 所以往往会占据主导地位 ?
本文的思想
本文主要就是一个普通的交叉熵损失和 InfoNCE 的一个结合:
其中
否则 \(\alpha(z_+) = \alpha\). 并且
其中 \(\mathcal{G}\) 就是在对比学习中常用的 two-layer projection head.
观测上面的损失可以发现, 它希望 \(T(x_i)\) 逼近同类的特征表示, 以及类别 \(i\) 的 embedding, 同时远离其他类的样本的特征表示, 和其它类的 embeddings.
后面的关于参数的选择就不讲了, 感觉并没有特别的意思.
代码
[offical]