【深度学习】负采样技术(2)

一些概念的回顾,

logits:softmax的目的是把logits映射到0,1之间,因此logits可以理解为原生概率; logits vector(即未经归一化的概率分布)。

nce(noise-contrastive estimation) 噪声对比估计。

Tensorflow实现了两种用于word2vec的loss,sampled softmax和NCE,这两种loss本身可以用于任意分类问题。那么,nce loss 与 sampled softmax loss 到底有什么区别?怎么选择?

  • 在x2vec中为什么倾向于nce呢?比如item2vec,阿里的EGES、YouTube Recommendation中的Matching阶段等都是采用nce
  • 目前看到采用sampled softmax的有:(1)DSSM(2)腾讯lookalike 的user embedding阶段 [Real-time Attention Based Look-alike Model for Recommender System] 。
  • 负采样的应用很多,nce_loss和sampled softmax loss选择哪个?根据场景?还是有理论支持?

首先总结一下:

  • NCE loss的直观想法:把多分类问题转化成二分类。之前计算softmax的时候class数量太大,NCE索性就把分类缩减为二分类问题。之前的问题是计算某个类的归一化概率是多少,二分类的问题是input和label正确匹配的概率是多少。
  • Sampled softmax则是只抽取一部分样本计算softmax。训练的时候我不需要特别精准的softmax归一化概率,我只需要一个粗略值做back propoagation就好了。

@jwen008 

NCE和negative sampling是两回事。你在题目中提及到的那几个使用都是用的negative sampling的目标函数而不是NCE。

NCE本质上是一种估计目标分布的方法,目的通过规避softmax中分母求和的部分来减少计算量。NCE可以通过数学证明等价于(严格来说是这个estimator依概率收敛到真正的分布)极大似然估计。

而negative sampling则是word2vec中提出来的对NCE的一个简化,是无法真正和softmax等价的。

@我要给主播生猴子的回答

nce_loss 与 sampled_softmax_loss如何选择

nce_loss用的是logisticLoss,sampled_softmax_loss 用的是softmax,可以从下面loss的形式看出,对于每一个样品i,logisticloss可以有多个标签,就是同时训练多个二分类器。而softmax只有一个正标签。

补充:softmax loss简单来说,就是将神经网络的logit用softmax包裹起来,再丢到交叉熵里面去。看到知乎上很多人说什么softmax loss是不严谨的说法。实际上,我看了很多顶会论文,大佬们都是用 softmax loss作为softmax function+cross entropy loss 的简称

Tensorflow的采样方法:candidate sampling

这个博主看法,对于多标签多类别的分类任务使用Logistic比较好,对于多标签单类别的分类任务使用softmax比较好,采样中,采用tf.nn.sampled_softmax_loss训练cbow模型比较好,而 tf.nn.nce_loss训练skip-gram比较好。

Candidate Sampling 及TensorFlow中的实现

这个博主认为NCE loss的直观想法:把多分类问题转化成二分类。之前计算softmax的时候class数量太大,NCE索性就把分类缩减为二分类问题。之前的问题是计算某个类的归一化概率是多少,二分类的问题是input和label正确匹配的概率是多少。二分类问题群众喜闻乐见,直接上logistic regression估算一下概率。Sampled softmax则是只抽取一部分样本计算softmax。这个想法也很好理解,训练的时候我不需要特别精准的softmax归一化概率,我只需要一个粗略值做back propoagation就好了

ruder的博客里也提到了什么时候用nce_loss Approximating the Softmax for Learning Word Embeddings 对于词向量用nceloss,语言模型还是用softmax好。

求通俗易懂解释下nce loss? - 知乎

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值