据我了解,Word2Vec基于训练语料库构建单词词典(或词汇表),并为词典中的每个单词输出K-dim向量。我的问题是,那些K-Dim载体的来源究竟是什么?我假设每个向量是输入和隐藏层之间或隐藏和输出层之间的权重矩阵之一中的行或列。但是,我还没有找到任何消息来支持这一点,而且我在编程语言方面不够懂,无法检查源代码并自行解决。任何关于这个主题的澄清评论将不胜感激!
答案 0 :(得分:1)
那些K-Dim载体的来源究竟是什么?我假设每个向量是输入和隐藏层之间或隐藏和输出层之间的权重矩阵之一中的行或列。
在word2vec模型(CBOW,Skip-gram)中,它输出单词的特征矩阵。该矩阵是输入层和投影层之间的第一个权重矩阵(在word2vec模型中没有隐藏层,其中没有激活函数)。因为当我们在上下文中训练单词时(在CBOW模型中),我们更新了这个权重矩阵。(第二个 - 在投影和输出层之间 - 矩阵也更新了。但是我们没有使用它)
在第一个矩阵中,行表示词汇单词,列表示单词的特征(K-Dimension)。
如果您想了解更多信息,请进行探索
http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/
答案 1 :(得分:1)
word2vec使用机器学习来获取单词表示。它使用其上下文(CBOW)预测单词,反之亦然(skip-gram)。
在机器学习中,您有一个表示模型错误的损失函数。此错误取决于模型的参数。 训练模型意味着最小化模型参数的误差。
在word2vec中,这些嵌入矩阵是在训练期间正在更新的模型参数。我希望,它可以帮助您了解它们的来源。实际上,它们首先是随机初始化的,并且在培训过程中会发生变化。
您可以查看this paper中的这张图片:
将输入的单热词表示映射到k维向量的 W 矩阵和将k维表示映射到输出的 W'矩阵都是我们在训练期间优化的模型参数。