gpt4 book ai didi

c++ - tensorflow/models 中的 Skip-Gram 实现 - 频繁词的子采样

转载 作者:太空宇宙 更新时间:2023-11-04 12:51:14 25 4
gpt4 key购买 nike

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

eq1

其中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;

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

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

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

最佳答案

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

关于c++ - tensorflow/models 中的 Skip-Gram 实现 - 频繁词的子采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49012064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com