背景

我们有一个样本集合,它的概率分布为,我们希望学习一个分布来逼近 其中,

通过最大似然得到的log-likelihood损失函数:

接下来需要对公式进行求导,这里导数计算依赖。但是,在很多情况下并不容易求得。比如,在推荐系统领域,预测用户下一次点击某个item的概率,需要在全部item上计算,而item数量可能为千万甚至亿级。那么,怎么解决这个问题呢?

NCE的优化目标

NCE的核心思想是将上述问题改造为多个二分类问题。 除了样本集合,我们再根据一个人为设定的概率采样若干样本集合的样本量是倍。即对每个正样本,采样个负样本。其中,负样本集合称为噪声样本。 这样,对于每个正样本和它对应的个负样本,可以生成个二分类任务。个样本中的每个样本,如果它属于则为正类,,如果属于则为负类,。 得到以下概率: 那么,条件概率分布为:

我们希望学习一个分布来逼近,既: 下文简写为

是二分类问题,我们将它继续推导为如下形式: 其中, 这里我们把变成可学习参数,所以总的参数变为

最后,我们的优化目标为交叉熵损失:

损失函数进一步可以写成以下形式: 其中,是正样本集合的样本数量。

NCE优化目标下的概率模型

上文我们只定义了,那么是什么样呢? 可得: 与公式相比,难以计算的没有了,代替以可学习偏差项。在实际实现中是个固定值,的选取往往也比较简单,也可以变成常数项。另外,为了保证,需要通过模型来学习达到这一目的,通过梯度下降迭代求解无法完全保证这一点。在实际使用中,一般得到logit的值或更前面的向量表示即可,是否能归一化并不影响使用,所以问题不大。

NCE效果的理论分析

NCE通过优化目标和概率模型的调整,达到了计算可行性。但是,能够保证学习出的概率模型没有跑偏吗,既能近似吗?

概率模型收敛性分析

首先分析下收敛到哪里? 因为与参数无关,所以以上优化目标中增加两项后不影响最终,可以写成:

已知KL散度非负,所以当时,达到最小值。此时, 既: 这样可以理论上保证收敛到优化目标能够保证最优解情况下的没有跑偏。

梯度值分析

概率模型收敛性分析只能保证在全局函数空间,可以找到最优。但是,工程实现时,将函数空间做了限制,能保证效果吗?

因为需要通过梯度下降进行迭代求解,所以这里通过两者的梯度进行对比。 首先对进行求导:

然后对进行求导:

可以看出,仅多了一项。当时,等于,既:

到这里可以看到,虽然NCE学习出的概率模型形式与原始Softmax形式有区别,但通过优化目标的调整,在极限条件下能够在梯度下降过程中近似MLE的效果。并且,在实际使用时往往接近1,导致的差别并不大,在非极限条件下也能够有很好的效果。

NCE的变体

NEG

是标准NCE下的logit,在此起了修正作用。实际的工作中,比如推荐算法中常用的一个变体Negative Sampling(NEG)方法,忽略掉了,只使用,并且采用相同的损失函数,获得了不错的效果,那么NEG是否有理论保证呢? 从上文的NCE概率模型收敛性分析中可以看出,不管任何形式,都可以保证收敛到。从NCE梯度值分析中亦可得出,只要,就能保证梯度与原问题近似。这里,可以是可学习的或者人工设定的固定值,并且固定值不能太大或太小,否则会把推到一个很大或很小的值域,造成训练中的数值问题。总之,NEG与NCE一样,也有理论保证,所以可以得到媲美NCE的效果。

的取舍

里面的可以去掉吗? 如果的范围很大,可以去掉,只学习,就能保证覆盖的尺度空间。如果的范围受限,比如推荐算法里用两个向量的作为,为了保证的范围足够大,建议保留可学习的参数。工业界另一种常用方式是使用温度系数将取值范围放大,也是有理论依据的。总之,要保证能够覆盖区间

参考资料