为什么word2vec为每个单词使用2个表示?

vvk*_*itk 12 word2vec

我试图理解为什么word2vec的skipgram模型对每个单词(隐藏表示,即单词嵌入)和输出表示(也称为上下文单词嵌入)有2个表示.这只是为了普遍性,上下文可以是任何东西(不仅仅是单词),还是有更基本的原因

Hed*_*iBY 13

我建议你阅读这篇关于Word2Vec的文章:http://arxiv.org/pdf/1402.3722v1.pdf

他们直截了当地说明为什么在脚注中有两个表示:一个单词不太可能出现在它自己的上下文中,所以你想要最小化概率p(w | w).但是如果你使用w作为上下文而不是作为中心词使用相同的向量,如果要将单词嵌入保持在单位圆中,则不能最小化p(w | w)(通过点积计算).

但这只是一种直觉,我不知道这是否有任何明确的理由......

恕我直言,你使用不同表征的真正原因是因为你操纵了不同性质的实体.作为上下文的"狗"不应被视为与"狗"作为中心词相同,因为它们不是.你基本上操纵出现的大矩阵(单词,上下文),试图最大化实际发生的这些对的概率.理论上你可以用作上下文双字母,试图最大化例如(word ="for",context ="to maximum")的概率,并且你将把矢量表示分配给"最大化".我们不这样做是因为会有太多的表示要计算,我们会有一个非常稀疏的矩阵,但我认为这个想法就在这里:我们使用"1-gram"作为上下文的事实只是一个特例我们可以使用的各种上下文.

这就是我看到它的方式,如果它是错的,请更正!


Rud*_*thy -2

word2vec 模型可以被认为是一种简化的神经网络模型,具有一个隐藏层并且没有非线性激活。给定单词的模型尝试预测该单词出现的上下文单词。

因为它是一个神经网络,所以需要输入、输出和目标函数。输入和输出只是单词的 one-hot 编码,目标函数是输出处带有 softmax 激活的交叉熵损失。

隐藏权重矩阵的输入与为每个单词选择唯一列的单热编码输入相乘。类似地,隐藏到输出矩阵可以解释为与每个上下文单词相对应的行(相同的单热编码输出在这里发挥作用)。