关于对比学习中的损失函数

问题来源于知乎

为什么在对比学习的损失函数中,分母里没有正样本? 

在很多对比学习的论文中,都声称自己使用了cross-entropy的loss函数。然而,如果按照cross-entropy的方法来计算,分母中应当存在正样本的相似度值。

举个例子:用分类的思想做对比学习,那么,正样本可以得到一个相似度s_p,负样本得到一个相似度s_n 。然后,再用softmax进行归一化,再做cross-entropy的loss。如果要预测正样本为真,那对应的loss自然就是:

\mathcal{L}=-\frac{\exp{(s_p)}}{\exp{(s_p)}+ \exp{(s_n) }}

然而,在很多高引论文中,使用的却不是这种loss(同时他们也声称使用了cross entropy与分类的思想)。例如:

Representation Learning with Contrastive Predictive Coding(CPC)中,它们使用的loss是:

\mathcal{L}_N=- \mathop{\mathbb{E}}_X \Big[ \log \frac{f_k(x_{t+k},c_t)} {\sum_{x_j \in X}f_k(x_j, c_t)}\Big ]

同时,论文中也这样写道:

The loss in Equation 4 is the categorical cross-entropy of classifying the positive sample correctly.

(式4中的损失为正确分类正样本的类别交叉熵。)

A Simple Framework for Contrastive Learning of Visual Representations文中,loss也是如此:

\ell_{i,j}=- \frac{\exp(\mathbb{sim}(z_i,z_j)/\tau)}{\sum_{k=1}^{2N}\mathbb{1}_{[k\neq i]} \exp(\mathbb{sim}(z_i,z_k)/\tau)}

(latex小贴士,此处的l并非是手写体的l,是latex中为了区分l与1而设置的小写l,\ell。)

然而,论文中还是声称使用了cross-entropy的loss:

for convenience, we term it NT-Xent (the normalized temperature-scaled cross entropy loss).

高赞回答:

第一个例子:InfoNCE的分母就是对包括正例和负例在内的N个样本求和,没有排除正例。这里正样本对由当前上下文和基于上下文的预测组成,负样本对由当前上下文和从噪声分布中采样的噪声样本组成,共有N-1个 负样本对。

第二个例子:SimCLR分母中 1_{[k\neq i]}排除的是样本和自身的相似度,仍然没有排除正例(正例是样本及其增广)。负样本对由样本和任意其他样本和样本变换组成,共有2N-2个负样本对。

负样本数量越大越好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容