用负抽样实现word2vec

时间:2016-05-07 23:45:48

标签: machine-learning nlp neural-network word2vec word-embedding

我正在尝试使用skip-gram为word2vec实现前向和后向传播。我是神经网络的新手,但从我的理解,这就是它的方式:

  1. 取输入向量和随机初始化权重矩阵的点积
  2. 激活(sigmoid还是softmax?)
  3. 获取激活的隐藏层和另一个随机初始化权重矩阵的点积
  4. 激活(sigmoid还是softmax?)
  5. 我们以某种方式比较我们在步骤4之后得到的输出,并计算相对于矩阵中每个权重的误差导数(目标输出)。我们从当前权重中减去导数。我们对输出隐藏层和隐藏输入层执行此操作。我们做了很多次,直到我们足够好。
  6. 如果上面出现任何问题,请纠正我。

    所以现在我的问题是:

    1. 正确的skip-gram和阴性样本的目标应该是什么?它们分别是1和0吗?或者它应该是skip-gram的上下文?我真的不确定。

    2. 如何计算损失?

    3. 谢谢。

1 个答案:

答案 0 :(得分:0)

我不知道你的问题的答案是否是答案,但是我完全没问题(我确定!)。我不认为在第二步中我们使用sigmoid或softmax函数,因为第一个点项目仅用于从矩阵W(第一矩阵)中提取目标字的向量。 请看这些:

http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/

本书这一章的第16.2节对我来说非常有帮助 https://web.stanford.edu/~jurafsky/slp3/16.pdf