InfoNCE loss是一种用于自监督学习的损失函数,通常用于训练对比学习模型,如自编码器或神经网络。全称是"InfoNCE: Contrastive Estimation of Neural Entropy",基于对比学习的思想,旨在最大化正样本的相似性,同时最小化负样本的相似性。
InfoNCE loss的一般形式如下:
I
n
f
o
N
C
E
L
o
s
s
=
−
l
o
g
(
e
x
p
(
s
i
m
i
l
a
r
i
t
y
(
x
i
,
y
i
)
)
/
(
e
x
p
(
s
i
m
i
l
a
r
i
t
y
(
x
i
,
y
i
)
)
+
Σ
j
≠
i
e
x
p
(
s
i
m
i
l
a
r
i
t
y
(
x
i
,
y
j
)
)
)
InfoNCE Loss = - log( exp(similarity(x_i, y_i)) / (exp(similarity(x_i, y_i)) + Σ j≠i exp(similarity(x_i, y_j)) )
InfoNCELoss=−log(exp(similarity(xi,yi))/(exp(similarity(xi,yi))+Σj=iexp(similarity(xi,yj)))
其中,
similarity(x_i, y_i) 表示样本 x_i 和对应的正样本 y_i 之间的相似性得分。
Σ j≠i 表示对所有其他负样本的求和。
exp() 表示指数函数。
InfoNCE loss的目标是最大化正样本之间的相似性得分,同时最小化负样本之间的相似性得分,从而促使模型学习到有意义的特征表示。通过优化InfoNCE loss,模型可以学习到对数据进行有效编码的特征表示,适用于自监督学习任务中的特征学习和表示学习。InfoNCE loss在对比学习和自监督学习中得到广泛应用,能够有效地提高模型的性能和泛化能力。
在其他应用中,其形式也可以是:
InfoNce Loss
参考:https://cloud.tencent.com/developer/article/2117162
Representation learning with contrastive predictive coding(2018)提出infoNce loss,是对比学习中最常用的loss之一,它和softmax的形式很相似,主要目标是给定一个query,以及k个样本,k个样本中有一个是和query匹配的正样本,其他都是负样本。当query和正样本相似,并且和其他样本都不相似时,loss更小。InfoNCE loss可以表示为如下形式,其中r代表temperature,采用内积的形式度量两个样本生成向量的距离。相比softmax,InfoNCE loss使用了temperature参数,以此将样本的差距拉大,提升模型的收敛速度。温度系数越大,模型对负样本的区分度就越低,这样可以纳入更多的负样本。相反,如果温度系数过小,模型就会更加关注那些特别困难的负样本,从而忽略了其他可能的正样本。