为什么分层softmax对于不频繁的单词会更好,而负采样对于频繁的单词会更好?


Answers:


10

我不是word2vec的专家,但在阅读Rong,X.(2014)时。word2vec参数学习的解释,根据我自己的NN经验,我将其简化为:

  • 分层softmax可以提高训练效率,因为输出矢量是由树状遍历网络层确定的;给定的训练样本仅需要评估/更新网络单元,而不是。这从本质上扩展了权重,以支持大量词汇-给定的单词与较少的神经元有关,反之亦然。O(log(N))O(N)
  • 负采样是一种对训练数据进行采样的方法,类似于随机梯度下降,但是关键是您要寻找负训练示例。直观地,它基于可能期望一个单词但没有找到一个单词的采样位置进行训练,这比每次迭代训练整个语料库的速度更快,并且对常见单词有意义。

从理论上讲,这两种方法似乎并不是排他性的,但是无论如何,这似乎是为什么它们对于频繁和不频繁的单词会更好的原因。


1

我的理解是因为构建类别层次结构时使用了霍夫曼编码

分层softmax使用一棵S型节点而不是一个大的softmax,霍夫曼编码可确保平衡属于任何S型节点每一侧的数据点的分布。因此,与使用一个较大的softmax和负采样相比,它有助于消除对频繁类别的偏爱。


0

等级softmax在整个词汇表上构建一棵树,代表稀有单词的叶节点将不可避免地继承其祖先在树中的矢量表示,这可能会受到语料库中其他常见单词的影响。这将有利于新语料库的增量培训。

基于噪声对比估计来开发负采样,并在上下文中随机采样单词,以将观察到的数据与人工生成的随机噪声区分开。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.