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