我试图理解为什么 word2vec 的 skipgram 模型对每个单词都有 2 个表示(隐藏表示,即单词嵌入)和输出表示(也称为上下文词嵌入)。这只是为了笼统,上下文可以是任何东西(不仅仅是单词)还是有更根本的原因
5 回答
我建议你阅读这篇关于 Word2Vec 的文章:http: //arxiv.org/pdf/1402.3722v1.pdf
他们给出了一个关于为什么脚注中有两种表示的直觉:一个词不太可能出现在它自己的上下文中,所以你需要最小化概率 p(w|w)。但是,如果您使用与 w 作为中心词相同的向量作为上下文,那么如果要将词嵌入保持在单位圆中,则无法最小化 p(w|w)(通过点积计算)。
但这只是一种直觉,我不知道这是否有任何明确的理由......
恕我直言,您使用不同表示的真正原因是因为您操纵不同性质的实体。作为上下文的“狗”不应被视为与作为中心词的“狗”相同,因为它们不是。您基本上操纵出现的大矩阵(单词,上下文),试图最大化这些对实际发生的概率。从理论上讲,您可以使用上下文二元组,例如尝试最大化(word =“for”,context =“最大化”)的概率,并且您可以将向量表示分配给“最大化”。我们不这样做是因为要计算的表示太多,而且我们会有一个非常稀疏的矩阵,但我认为这个想法就在这里:我们使用“1-gram”的事实
我是这么看的,如有错误请指正!
Check the footnote on page 2 of this: http://arxiv.org/pdf/1402.3722v1.pdf
This gives a quite clear intuition for the problem.
But you can also use only one vector to represent a word. Check this (Stanford CS 224n) https://youtu.be/ERibwqs9p38?t=2064
I am not sure how that will be implemented(neither does the video explains).
word2vec 模型可以被认为是具有一个隐藏层且没有非线性激活的简化神经网络模型。给定一个词的模型试图预测它出现的上下文词。
因为,它是一个神经网络,它需要输入、输出和目标函数。输入和输出只是单词的 one-hot 编码,目标函数是交叉熵损失,输出端有 softmax 激活。
隐藏权重矩阵的输入与单热编码输入相乘,为每个单词选择一个唯一列。类似地,隐藏到输出矩阵证明它可以解释为对应于每个上下文单词的行(相同的 one-hot 编码输出在这里起作用)。