在word2vec的上下文中,据说“出现在相似上下文中的单词具有相似的单词嵌入”;例如,“爱”和“恨”可能具有相似的嵌入,因为它们以上下文词(例如“ I”和“电影”)出现。
我用skip-gram得到了直觉:“爱”和“恨”的嵌入都应该预测上下文词“ I”和“电影”,因此嵌入应该相似。但是,我不能用CBOW来理解它:它说,“ I”和“电影”的平均嵌入量应该可以预测“爱”和“恨”。这是否必然导致“爱”和“仇恨”的嵌入应该相似?还是我们以不同的方式解释SG和CBOW的词嵌入?
答案 0 :(得分:0)
在实践中,所有这些都被CBOW中上下文的多样性所消除–因此,适用于skip-gram的直觉也应适用于CBOW。
即使“电影”对所有上下文单词的平均向量的影响只有1 / N倍,当该平均向量被反向传播校正为对“爱”的预测性更高时(对于一个训练示例),每个对其产生影响的词也都进行了反向传播校正。
在所有示例和所有过程中,沿随机方向进行的校正往往会相互抵消,但是任何一致的趋势(例如经常同时出现的两个字)都倾向于在其字向量上加强相似的校正轻推,使它们彼此靠近。 (或者,在其他方面像其他单词一样的单词。)
Skip-gram是一种简单明了的版本:强迫单词X更好地预测单词Y-但希望其他许多1:1校正都将得到平衡。 CBOW分批执行操作:强制单词X ^ 1,X ^ 2,... X ^ n都更能预测单词Y-但希望许多其他有点重叠的批次将根据需要将不同的单词组合在一起/分开