一句话:InfoNCE(Information Noise Contrastive Estimation,信息噪声对比估计)是一种让模型从“一堆候选”里认出“正确答案”的损失函数,对比学习(contrastive learning)常用它。
它的典型场景是这样:给一个锚点 q,一个正样本 k+,以及 K 个负样本 k1…kK。模型先算 q 和每个候选的相似度 sim,然后做 AI 词典:Softmax">Softmax:正样本得分越高、负样本得分越低,损失就越小。写成公式大致是:
L = -log( exp(sim(q,k+)/τ) / [ exp(sim(q,k+)/τ) + Σ exp(sim(q,ki)/τ) ] )
其中 τ 是温度系数,控制分布的尖锐程度。τ 小,模型更盯着最难的负样本;τ 大,分布更平滑,训练往往更稳。
打个生活化的比方:这像让模型玩“找朋友”。给它一张猫的照片,候选里有同一只猫的另一角度照片(正样本),还有狗、汽车、别的猫(负样本)。模型要给每张候选打分,并回答“哪个才是我的正样本”。InfoNCE 惩罚的就是“认错朋友”的概率。
和交叉熵的关系:它本质上就是交叉熵。把 K+1 个候选看成 K+1 个类别,正样本是唯一正确标签,InfoNCE 就等于多分类交叉熵(cross-entropy)。所以它并不神秘:前面是相似度,后面套 Softmax,再取负对数。
和相邻概念的区别:
| 概念 | 核心做法 | 常见用途 |
|---|---|---|
| InfoNCE | 多个负样本 + Softmax,正样本当正确类 | 学表示、检索、图文匹配 |
| Triplet loss | 一个正样本、一个负样本 + 间隔 | 度量学习 |
| NCE | 二分类:真实数据 vs 噪声 | 密度估计 |
| 普通交叉熵 | 类别固定,标签固定 | 常规分类 |
在原始论文语境里,InfoNCE 还和互信息有关:优化它,相当于在拉高上下文与目标之间互信息的下界。
对从业者的意义:训练嵌入模型(embedding)、检索、RAG、图文匹配时,InfoNCE 及其变体很常见。真正决定效果的,往往不是损失函数本身,而是正负样本怎么造、batch 内负样本够不够、有没有“假阴性”。对普通人来说,它解释了 AI 的一种学习方式:不靠人工贴死标签,而靠对比——把相似的拉近,把不相似的推开。
