从概念上了解区分nce 和info nce
我这两天都在看infonce 的推导,我表示很头大。今天感觉看明白了,写出来大家讨论一下。
为什么有nce
为了解决一个问题:多分类问题,尤其是类别相当大的时候msoftmax 函数中分母计算量大的问题。
softmax:
类别上百万的时候,咋算
nce 方案: 不算
咋算? 不算,转化一下,二分类好算吧,用二分类来算。
怎么转化 :如上我们要求的是p(w|c) 分布,nce 方案是,我们转化为一个二分类问题。正样本是p(w,c) 中的,负样本是噪声分布q(w)中的,那么根据后验概率,我们可以求
p(label=1 |w,c),p(label=0|w,c) ,怎么求的看下图,kd 代表 p(w,c)中获取的kd 个正样本,kn 代表q(w) 中kn个负样本。
那么转化为的二分问题就是求D变量的二分类函数, 就可以区p(w,c) 和 q(w) 。 即是 Noise Contrastive Estimation 噪声对比估计。用相求的分布(正样本分布)和噪声分布做对比。
ps: 关于负样本数量的问题,有一些推导,记住一点就好,负样本愈多,模型越精准。其实我理解就是负样本分布越正确(不一定准确)
为什么有infonce
nce 是将数据分布求解转化为了二分类问题,而infonce 是将数据分布,转化成了多分类问题,但是比softmax 下面的全分类要少,(全分类我自己创的名词,大家理解就好)
infonce 取一