带权采样——word2vec负采样中的原理

遇到了带权采样的问题,一搜发现其实就是Word2vec中负采样所用到的方法,平时论文看的还是不够仔细啊。。
原文地址http://www.imooc.com/article/41635

Negative Sampling

       在负采样中,对于给定的词w,如何生成它的负采样集合NEG(w)呢?已知一个词w,它的上下文是context(w),那么词w就是一个正例,其他词就是一个负例。但是负例样本太多了,我们怎么去选取呢?在语料库C中,各个词出现的频率是不一样的,我们采样的时候要求高频词选中的概率较大,而低频词选中的概率较小。这就是一个带权采样的问题。设词典D中的每一个词w对应线段的一个长度:  

       任何采样算法都应该保证频次越高的样本越容易被采样出来。基本的思路是对于长度为1的线段,根据词语的词频将其公平地分配给每个词语:
https://img.mukewang.com/5b3e0683000158d404600154.jpg
counter就是w的词频。
于是我们将该线段公平地分配了:
https://img1.mukewang.com/5b3e068d0001f95312120130.jpg

接下来我们只要生成一个0-1之间的随机数,看看落到哪个区间,就能采样到该区间对应的单词了,很公平。

但怎么根据小数找区间呢?速度慢可不行。

word2vec用的是一种查表的方式,将上述线段标上M个“刻度”,刻度之间的间隔是相等的,即1/M:
https://img1.mukewang.com/5b3e069a00015ae512480432.jpg

接着我们就不生成0-1之间的随机数了,我们生成0-M之间的整数,去这个刻度尺上一查就能抽中一个单词了。

在word2vec中,该“刻度尺”对应着table数组。具体实现时,对词频取了0.75次幂:

https://img1.mukewang.com/5b3e06a500019f5b05360168.jpg

https://img.mukewang.com/5b3e06b200011e0a05960263.jpg  
这个幂实际上是一种“平滑”策略,能够让低频词多一些出场机会,高频词贡献一些出场机会,劫富济贫。

二、CBOW

https://img2.mukewang.com/5b3e06be0001d1b309750793.jpg

 https://img3.mukewang.com/5b3e06c70001864d11200697.jpg
https://img2.mukewang.com/5b3e06d4000187a410810752.jpg
https://img4.mukewang.com/5b3e06de0001f7f310460391.jpg

三、损失函数
NCE损失函数表示如下:  
Jθ=−∑w∈V(logP(y=1|x)+∑i=1klogP(y=0|x(w(i))))Jθ=−∑w∈V(log⁡P(y=1|x)+∑i=1klog⁡P(y=0|x(w(i))))
该损失函数计算上下文与目标单词之间的点积,采集每一个正样本的同时采集k个负样本。公式的第一项最小化正样本的损失,第二项最大化负样本的损失。现在如果将负样本作为第一项的变量输入,则损失函数结果应该很大。

参考文献:
http://www.cnblogs.com/neopenx/p/4571996.html





点击查看更多内容







本文原创发布于慕课网 ,转载请注明出处,谢谢合作







0人点赞



若觉得本文不错,就分享一下吧!







	</div>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值