Word2Vec 和向量原点
Word2Vec and vector origin
我阅读了 Mikolov 等人关于 Word2Vec 的两篇论文(参见 here and here)。
我了解词向量的概念以及它们如何表示含义。但是,在训练神经网络时,我不明白最终的词向量是从哪里来的。输入是单词的单热编码,它试图预测另一个单词的单热编码。那么如何得到最终的n维词向量呢?
经过数周的搜索,我找到了答案。这对任何有兴趣了解 Word2Vec(和一般的词嵌入)而不是仅仅使用它的人都可能有用。
训练神经网络时,输入是一个单热向量,输出可以是单热向量的串联(或平均),这是你的上下文。中间是隐藏层。隐藏层有 d 个单元。所以 hidden 的输入是一个 |V| x d 矩阵。该矩阵中的每一行都是与单热向量中的非零单元相对应的词嵌入
例如,如果在 one-hot 向量中编码的单词是 [0, 0, 1, 0],它将被转置到您的神经网络中。注意只有一个单元是非零的,所以只有那个输入单元会触发所有隐藏单元。所以矩阵中的第 3 行是我们唯一关心的行,因此词嵌入是矩阵中的一行。
希望对感兴趣的人有所帮助(也许只有我一个?)
我阅读了 Mikolov 等人关于 Word2Vec 的两篇论文(参见 here and here)。
我了解词向量的概念以及它们如何表示含义。但是,在训练神经网络时,我不明白最终的词向量是从哪里来的。输入是单词的单热编码,它试图预测另一个单词的单热编码。那么如何得到最终的n维词向量呢?
经过数周的搜索,我找到了答案。这对任何有兴趣了解 Word2Vec(和一般的词嵌入)而不是仅仅使用它的人都可能有用。
训练神经网络时,输入是一个单热向量,输出可以是单热向量的串联(或平均),这是你的上下文。中间是隐藏层。隐藏层有 d 个单元。所以 hidden 的输入是一个 |V| x d 矩阵。该矩阵中的每一行都是与单热向量中的非零单元相对应的词嵌入
例如,如果在 one-hot 向量中编码的单词是 [0, 0, 1, 0],它将被转置到您的神经网络中。注意只有一个单元是非零的,所以只有那个输入单元会触发所有隐藏单元。所以矩阵中的第 3 行是我们唯一关心的行,因此词嵌入是矩阵中的一行。
希望对感兴趣的人有所帮助(也许只有我一个?)