MoCo中的InfoNCE

目录

1.自监督,个体判别

2.损失函数的意义

3.总结

4.伪代码


1.自监督,个体判别

训练编码器,做字典查找任务。结构如下图,论文中代理任务是instance discrimination(个体判别),先将一个样本x分成两部分,分别为x11和x12,然后随机取mini-batch的样本x2、x3、…。然后将x11放进encoder,输出为q,x12放进momentum encoder,输出为k+,x2、x3、…同样放进momentum encoder,输出为key2、key3….。由于q与k+来自同一个样本x1,于是同属于正例,相似度最高,其余key2、key3…均为负例。

Consider an encoded query q and a set of encoded samples {k0, k1, k2, ...} that are the keys of a dictionary. Assume that there is a single key (denoted as k+) in the dictionary that q matches. A contrastive loss  is a function whose value is low when q is similar to its positive key k+ and dissimilar to all other keys (considered negative keys for q). With similarity measured by dot product, a form of a contrastive loss function, called InfoNCE.

MoCo中的InfoNCE_第1张图片

2.损失函数的意义

损失函数,目的学到q与k+的损失尽可能小,而q与其他key的损失尽可能大,也就是说,q与k+尽可能相似,而q与其他key尽可能远离。采用infoNCE作为目标函数,Noise Contrastive Estimation类似于交叉熵损失。

The sum is over one positive and K negative samples. Intuitively, this loss is the log loss of a (K+1)-way softmax-based classifier that tries to classify q as k+. Contrastive loss functions can also be based on other forms , such as margin-based losses and variants of NCE losses.

3.总结

data-sample数据样本q,noise-sample噪声样本(k+、k2、k3…),每次拿数据样本和噪声样本作对比(noise contrastive)。为降低计算复杂度,取部分负样本做损失(estimation)。部分负样本越多,近似越精确,也就是MoCo强调字典尽可能大。NCE将超级多分类问题转换为一系列二分类问题,进而使用softmax操作。

τ控制分布形状,τ变大,分布相应的值变小,分布平滑。如果τ设的过大,对比损失对所有负样本一视同仁,模型学习没有轻重。如果τ设的过小,模型只关注那些特别困难的负样本(与正样本很相似的负样本),模型难以收敛,学好的特征不好泛化(学习了太多与正样本相似的负样本的特征,并非学到了真正的正样本的特征)。k为负样本数量,q与k+相似度越大,概率越接近1,损失越小。

4.伪代码

 MoCo中的InfoNCE_第2张图片

你可能感兴趣的:(计算机视觉,机器学习,概率论,深度学习)