问题来源于知乎
为什么在对比学习的损失函数中,分母里没有正样本?
在很多对比学习的论文中,都声称自己使用了cross-entropy的loss函数。然而,如果按照cross-entropy的方法来计算,分母中应当存在正样本的相似度值。
举个例子:用分类的思想做对比学习,那么,正样本可以得到一个相似度,负样本得到一个相似度 。然后,再用softmax进行归一化,再做cross-entropy的loss。如果要预测正样本为真,那对应的loss自然就是:
然而,在很多高引论文中,使用的却不是这种loss(同时他们也声称使用了cross entropy与分类的思想)。例如:
在Representation Learning with Contrastive Predictive Coding(CPC)中,它们使用的loss是:
同时,论文中也这样写道:
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也是如此:
(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分母中 排除的是样本和自身的相似度,仍然没有排除正例(正例是样本及其增广)。负样本对由样本和任意其他样本和样本变换组成,共有2N-2个负样本对。
负样本数量越大越好。