资讯

噪声对比估计是什么?把估计概率变成区分真数据和噪声

2026-11-053 分钟阅读百科
TL;DR噪声对比估计(Noise-Contrastive Estimation,NCE)是 Gutmann 和 Hyvärinen 在 2010 年提出的参数估计方法,通过训练模型区分真实数据与来自已知噪声分布的样本,把难以计算归一化常数的概率模型估计转化为二分类问题,并可把归一化常数当作参数学习;它被用于加速语言模型和 Word2Vec 的负采样,并启发了对比学习的 InfoNCE 损失。

噪声对比估计(Noise-Contrastive Estimation,NCE)是一种估计概率模型参数的方法,由 Michael Gutmann 和 Aapo Hyvärinen 在 2010 年提出。它的核心思想是:把一个难以直接求解的概率估计问题,转化为一个简单的分类问题:让模型学会区分哪些是真实的数据、哪些是人为生成的“噪声”数据。在这个过程中,模型就自然地学会了真实数据的分布。

它要解决的问题

很多概率模型都有一个共同的麻烦:归一化常数,也叫配分函数。一个模型通常可以很容易地给出某个结果的“相对得分”,但要把它变成真正的概率,需要除以所有可能结果的得分之和,保证所有概率加起来等于 1。当可能的结果非常多时,这个求和的计算量极其巨大。最典型的例子是语言模型:预测下一个词时,模型需要对词表中的每一个词都计算一个得分,再通过 softmax 函数转换成概率。如果词表有几十万个词,每次预测、每次计算梯度都要把几十万个词的得分全部算一遍并求和,训练会非常缓慢。基于能量的模型、马尔可夫随机场等模型也面临同样的问题。

噪声对比估计的做法

噪声对比估计的思路是:既然直接估计概率很困难,那就换一个问题。选择一个简单的、已知的“噪声分布”,从中可以很容易地抽取样本、计算概率,比如按照每个词在语料中出现的频率随机抽词。然后,把真实的数据样本,与从噪声分布中抽出的若干个噪声样本混合在一起,训练模型来做一个二分类:判断每个样本是来自真实的数据,还是来自噪声分布。模型在判断时,需要比较“这个样本在模型下的概率”与“它在噪声分布下的概率”。可以证明,当模型能够把真实数据和噪声区分得最好时,它所给出的概率分布恰好就等于真实数据的分布。

这样做的关键好处是:每次训练只需要计算真实样本和少数几个噪声样本的得分,而不需要计算所有可能结果的得分,大大降低了计算量。而且,噪声对比估计还可以把那个难以计算的归一化常数当作一个普通的参数,与模型的其他参数一起学习,甚至在实践中可以直接把它固定为 1,模型也能学会近似地自我归一化。

在语言模型和词向量中的应用

2012 年,Andriy Mnih 和 Yee Whye Teh 把噪声对比估计用于训练神经网络语言模型,在保持效果的同时大幅加快了训练的速度。2013 年,Tomas Mikolov 等人在 Word2Vec 中提出的“负采样”方法,可以看作噪声对比估计的一种简化版本:训练时,对于一个词和它真实的上下文词,再随机地抽取几个不相关的词作为“负样本”,训练模型去区分真实的词对和随机的词对。负采样让 Word2Vec 能够在海量的语料上高效地训练出高质量的词向量。

对比学习的源头之一

噪声对比估计的思想深刻地影响了后来的对比学习。2018 年,Aaron van den Oord 等人在提出对比预测编码时,设计了 InfoNCE 损失函数:给定一个“正样本”和许多个“负样本”,训练模型把正样本从负样本中识别出来,这实际上是把噪声对比估计的二分类推广为了多分类。他们还证明,最小化 InfoNCE 损失相当于最大化两个表示之间互信息的一个下界。InfoNCE 损失后来成为了自监督对比学习的核心:SimCLR、MoCo 等视觉自监督方法,以及 OpenAI 的 CLIP 图文模型,都使用了这类损失。CLIP 训练时,把匹配的图片和文字当作正样本对,把同一批次中不匹配的图片和文字当作负样本对,学会了把图像和语言映射到同一个空间中。

相关话题与公司