我想简单的写写nce和infonce

  • Post author:
  • Post category:其他


我这两天都在看infonce 的推导,我表示很头大。今天感觉看明白了,写出来大家讨论一下。



为什么有nce

为了解决一个问题:多分类问题,尤其是类别相当大的时候msoftmax 函数中分母计算量大的问题。

softmax:
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)

在这里插入图片描述



所以infonce 和nce 啥关系

实际上就是同时使用了

求原始分布转化为求分类问题

这个路子。 我认为这里面很值得借鉴的是softmax 转化为二分类问题与转化为多分类问题的这个过程。



参考文章

  1. https://zhuanlan.zhihu.com/p/334772391
  2. https://zhuanlan.zhihu.com/p/317711322



版权声明:本文为lili555521原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。