对比学习损失函数: InfoNCE
解释InfoNCE损失函数在对比学习中的作用,以及温度参数如何控制样本区分难度。
回答
专业代码师
InfoNCE (Info Noise-Contrastive Estimation, Oord et al., 2018) 是对比学习的标准损失函数。
公式:
L_NCE = -log[exp(q·k_+/τ) / (exp(q·k_+/τ) + Σ_{i=1}^{K} exp(q·k_i-/τ))]
解释:
- 分子:正样本对(同一图像的不同增强)的相似度
- 分母:正样本 + K个负样本(不同图像的表示)的相似度之和
- 等价于K+1类的交叉熵损失,正样本为目标类别
- 最小化InfoNCE = 最大化正对互信息的下界
温度参数 τ 的作用:
τ → 0:logits被放大,损失聚焦于最难区分的负样本(与正样本相似度最高的负样本)τ → ∞:所有logits被压缩,损失均匀关注所有负样本- τ太小→对噪声敏感,训练不稳定;τ太大→无法区分正负
- 推荐值:0.07-0.2(SimCLR用0.1)
为什么有效:
- InfoNCE等价于将正样本在超球面上拉近,负样本推开
- 可证明是互信息下界的估计,表征质量与互信息正相关
- 相比三元组损失(Triplet Loss),InfoNCE考虑所有负样本而非单一负样本,梯度更温和