我这两天都在看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 取一个正样本, 负样本会采样N-1个,组成一个N分类问题,优化N类logistic 函数。
以上写的太简单了,但意思确实是这样的。
具体细节如下
这里转化为分类问题就是
(对上面式子懵逼的小伙伴:上面的这个公式就是求N个样本中,正样本正好是t+k 的概率,对就是这个)
然后对应的多分类损失函数就是(暂时将fk函数看p(x|c),这是一个正比关系,具体推导可以看相关文章:https://zhuanlan.zhihu.com/p/334772391)
文章来源:https://www.toymoban.com/news/detail-428979.html
所以infonce 和nce 啥关系
实际上就是同时使用了求原始分布转化为求分类问题这个路子。 我认为这里面很值得借鉴的是softmax 转化为二分类问题与转化为多分类问题的这个过程。文章来源地址https://www.toymoban.com/news/detail-428979.html
参考文章
- https://zhuanlan.zhihu.com/p/334772391
- https://zhuanlan.zhihu.com/p/317711322
到了这里,关于我想简单的写写nce和infonce的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!