【问题标题】:Skip-Gram implementation in tensorflow/models - Subsampling of Frequent Wordstensorflow/models 中的 Skip-Gram 实现 - 频繁词的二次采样
【发布时间】:2018-08-07 07:12:14
【问题描述】:

我有一些与 skipgram 模型相关的实验。于是我开始研究和修改tutorials/embedding/word2vec_kernels.cctensorflow/models仓库中的优化实现。突然,我来到了完成语料库子采样的部分。 根据 Tomáš Mikolov 论文 (https://arxiv.org/abs/1310.4546, eq.5),这个词应该保持有概率

其中t表示阈值参数(根据论文选为10^-5),f(w)表示单词w的频率, 但word2vec_kernels.cc 中的代码如下:

float keep_prob = (std::sqrt(word_freq / (subsample_ * corpus_size_)) + 1) *
                  (subsample_ * corpus_size_) / word_freq;

可以转换为先前呈现的符号为

这种变化背后的动机是什么?是否只是将与语料库大小的“某种关系”建模到这个公式中?还是对原始公式的一些改造?是凭经验选择的吗?

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

【问题讨论】:

    标签: c++ tensorflow word2vec


    【解决方案1】:

    好吧,我猜如果没有corpus_size,图表看起来与原始公式有些相同。语料库大小将与语料库大小的关系添加到公式中,并且“它适用于大数字”,因此我们可以计算丢弃/保留概率,而无需将词频标准化为适当的分布。

    【讨论】:

      猜你喜欢
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      • 2018-03-17
      • 2018-07-20
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      相关资源
      最近更新 更多