当前位置:   article > 正文

word2vec 的 Negative Sampling(负采样)技巧_skip-gram with negative sampling

skip-gram with negative sampling

Skip-gram 模型的负采样

在 Skip-gram 模型 中,softmax 的计算成本很大,因为它需要扫描整个词嵌入矩阵(Woutput)来计算词汇表中所有词的分布概率,而词汇表的大小可能上百万甚至更多。

softmax

假设训练的语料库有 V 个不同的词汇,隐藏层是 N 维,这意味着每训练一次样本(采用随机梯度下降), Woutput 中有 V×N 个神经元要更新,Winput 中有 N 个神经元要更新,导致如果语料库非常庞大,计算会非常低效。

采用负采样:

从噪声分布中随机抽样 K 个负例(K是超参数),对于每次训练样本(已知正例对: w 和 cpos),Woutput 就只用更新 (K+1)×N 个神经元。

无负采样的 Woutput 更新:

无ns

有负采样的 Woutput 更新:

ns

负采样工作原理

使用负采样的 Skip-gram 模型不再使用 softmax 去计算概率分布,而是使用 Sigmoid 函数(σ(x))去学习将正例(在中心词的上下文窗口内的词)从随机抽取的负例(不在中心词的上下文窗口内的词)中区分出来。也就是说训练一个 sigmoid 二分类器,只要模型能够从中找出正例就认为完成任务。

二分类

假设中心词是 “regression”,那么比起 "regression" + {"zebra", "pimples", "Gangnam-Style", "toothpaste", "idiot"}成对出现,"regression" + {"logistic", "machine", "sigmoid", "supervised", "neural"}成对出现的可能性更高。模型最大化正例对出现的概率,最小化负例对出现的概率。词向量不再是通过给定一个中心词来预测上下文词学习得到,而是认为如果模型能区分正例对和负例对,那么就学习到了好的词向量表示。

负采样将多分类任务转化为了二分类任务,而新的目标是给定任意一对中心词和词(w,c),去预测词 c 是否在中心词 w 的上下文窗口内。

词 c 在中心词 w 的上下文窗口内/词 c 是正例的概率:

p(D=1 \mid w, c ; \theta)=\frac{1}{1+\exp \left(-\bar{c}_{\text {output}_{(j)}} \cdot w\right)} \in \mathbb{R}^{1} \qquad (1)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/755662
推荐阅读
相关标签
  

闽ICP备14008679号