简单来说,InfoNCE 是互信息的一个可计算的下界估计器。通过优化 InfoNCE 损失,我们实际上是在最大化互信息的一个紧下界。
1. 互信息
互信息衡量的是两个随机变量X和Y之间 "知道其中一个变量,能获得关于另一个变量的信息量"。它表示变量间依赖性的强度。
公式: I(X; Y) = H(X) - H(X|Y) = H(Y) - H(Y|X)
其中,H是熵,H(|)是条件熵。
- 直观理解:如果 X 和 Y 独立,则 I(X; Y) = 0。它们之间相关性越强,互信息值越大。
- 核心挑战:在高维连续空间中,真实的互信息 I(X; Y) 通常难以直接计算,因为我们不知道真实的联合分布 p(x, y) 和边缘分布 p(x)p(y)。
2. InfoNCE
InfoNCE 是一种基于对比学习的损失函数,全称是 Information Noise-Contrastive Estimation。
- 场景:给定一个查询样本x,一个与之匹配的"正样本y+(来自联合分布 p(x, y)),以及 N-1 个"负样本y-(通常从边缘分布 p(y) 中独立采样)。目标是学会一个打分函数(通常是一个神经网络)f(x, y),使得正样本对的得分远高于负样本对的得分。
- 公式:L_InfoNCE = - E [ log( f(x, y+) / (f(x, y+) + Σ_{i=1}^{N-1} f(x, y_i-)) ) ],其中打分函数通常表示为f(x, y) = exp(sim(z_x, z_y) / τ),sim是相似度函数(如余弦相似度),τ是温度系数。
- 直观理解:这本质上是N分类问题的交叉熵损失,任务是识别出 N 个候选(1个正例,N-1个负例)中哪个是真正的正例。最小化这个损失,就是提高模型识别正样本的能力。
3. 核心关系
InfoNCE 是互信息的下界。这是由 Aaron van den Oord 等人在 2018 年提出 CPC 的论文中证明的。
4. 关键点解读
- 下界"意味着什么? 我们无法直接计算真正的I(X; Y),但我们可以计算 I_NCE,并且知道真正的互信息至少有这么大。通过优化(减小)L_InfoNCE,我们就在提高这个下界 I_NCE,从而间接地最大化真正的互信息I(X; Y)。
- N 的影响:下界的紧致性(即I_NCE接近真实I(X; Y)的程度)与负样本数量N有关。N越大,这个下界越紧,I_NCE越接近真实的互信息。当N → ∞时,I_NCE趋近于真实的互信息。
- 与其他下界的关系:InfoNCE 属于DV(Donsker-Varadhan)表示或f-divergence族互信息下界的一个特例(具体是使用多元分类交叉熵推导出的下界)。另一个著名的下界是 MINE,它使用了 DV 表示的直接形式。
5. 在机器学习中的应用
在自监督学习和对比学习中,这个关系至关重要:
- 目标:学习一个好的数据表示。
- 方法:例如,对于图像x,我们通过数据增强创建两个视图v1和v2。我们将 (v1, v2)视为正样本对(来自 p(v1, v2)),将 (v1, v_i)(v_i是其他图像的视图)视为负样本对。
- 原理:通过最小化 InfoNCE 损失,我们实际上是在最大化 v1 和 v2 这两个视图之间的互信息。这意味着,我们学到的表示会捕捉到这两个视图之间共有的、本质的信息(即图像的内容),而忽略掉无关的噪声(如随机的增强变换)。这正是学习到有效表征的原因。
6 总结
因此,InfoNCE 为互信息这个强大但难以处理的理论概念,提供了一个非常实用且高效的桥梁,使其成为现代表示学习中最核心的损失函数之一。