word2vec中的负采样问题

在word2vec中最先使用的是softmax函数,由于softmax函数需要在分母上遍历每个单词,在归一化时计算成本高;而且在计算损失函数时,center word 与context word之间最大化,体现其关联性,center word 与 not context word 之间要尽可能小,才能使得maximize损失函数,负采样可以用比较简单的方法达成这个目标,提高效率。

  word2vec中的负采样主要思想:训练一个真对(between center word and context word)与其他噪声对(between center word and context word)的二元逻辑回归。通过负采样,在更新隐层到输出层的权重时,只需更负采样的单词,而不用更新词汇表所有单词,这样就会降低梯度下降过程中的计算量。

什么是负采样:

      在 NLP 中随机替换连贯句子中的词语、在 CV 中不同图片数据增强的样例,以及 RS 中选择用户未交互的商品,都可以看作是在进行负采样。相关的损失函数有贝叶斯个性化排序损失 (BPR, viz. Bayesian Personalized Ranking loss)、二元交叉熵损失函数 (BCE, viz. Binary Cross Entropy loss) 和对比学习中常用的 InfoNCE loss 等。

负采样具体实现方法:

   使用‘一元模型分布’选择‘negative words’,即选择一个词作为正项,作为正项的概率与出现的频次相关,出现频率越高的单词就越容易被选为negative words

   当使用负采样时,我们将随机选择一小部分的negative words(比如选5个negative words)来更新对应的权重。我们也会对我们的“positive” word进行权重更新。

参考:理解 Word2Vec 之 Skip-Gram 模型 - 知乎 (zhihu.com)

你可能感兴趣的:(word2vec,python,机器学习)