张量流/模型中的Skip-Gram实现 - 频繁词的子采样

时间:2018-02-27 15:16:08

标签: c++ tensorflow word2vec

我有一些与skipgram模型相关的实验。所以我已经开始研究和修改tutorials/embedding/word2vec_kernels.cc tensorflow / models 存储库中的优化实现。突然,我来到了语料库子采样完成的部分之上。 根据TomášMikolov论文(https://arxiv.org/abs/1310.4546,eq.5),单词应保持概率

eq1

其中t表示阈值参数(根据选择为10^-5的论文),以及单词f(w)的{​​{1}}频率, 但是w中的代码如下:

word2vec_kernels.cc

可以转换为先前提供的符号 eq2

这种变化背后的动机是什么?是仅仅将语料库大小的“某种关系”建模到这个公式中?或者它是原始公式的一些转变?它是根据经验选择的吗?

编辑:链接到github上提到的文件 https://github.com/tensorflow/models/blob/master/tutorials/embedding/word2vec_kernels.cc

1 个答案:

答案 0 :(得分:0)

好的,我想如果没有corpus_size,图表看起来与原始公式有些相同。语料库大小为公式增加了与语料库大小的关系,并且“它与大数字一起工作”,因此我们可以计算丢弃/保持概率,而无需将词频规范化为正确分布。