首页 > 编程语言 > 详细

【转载】负采样算法

时间:2019-01-01 12:21:41      阅读:194      评论:0      收藏:0      [点我收藏+]

任何采样算法都应该保证频次越高的样本越容易被采样出来。基本的思路是对于长度为1的线段,根据词语的词频将其公平地分配给每个词语:

技术分享图片

counter就是w的词频。

于是我们将该线段公平地分配了:

技术分享图片

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

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

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

技术分享图片

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

在word2vec中,该“刻度尺”对应着table数组。在具体实现时,不是直接用counter(w),而是对词频取了α次幂,一般去α=3/4=0.75,即:

技术分享图片

这个幂实际上是一种“平滑”策略,能够让低频词多一些出场机会,高频词贡献一些出场机会,劫富济贫。

原文:word2vec原理推导与代码分析



MARSGGBO?原创





2019-1-1



【转载】负采样算法

原文:https://www.cnblogs.com/marsggbo/p/10204360.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!