查找目标和中心 word2vec 矩阵

Finding both target and center word2vec matrices

我听说过(在斯坦福的CS224),Word2Vec算法实际上训练了两个矩阵(也就是两组向量。)这两个是U和V集合,一个是单词一个目标和一个作为上下文的单词。最后的输出是这两者的平均值。 我有两个问题。一个是:

谢谢

转述的描述不太正确。传统上从 word2vec 模型检索的词向量来自 "projection matrix",它将单个词转换为适合浅层神经网络的正确大小的输入向量。

(您可以将投影矩阵视为将单热编码转换为该词的密集嵌入,但图书馆通常通过字典查找来实现这一点——例如:"what row of the vectors-matrix should I consult for this word-token?")

还有另一个权重矩阵通向模型的输出节点,其解释因训练模式而异。在负采样的常见默认设置中,每个已知词有一个节点,因此您也可以将此矩阵解释为每个词都有一个向量。 (在 hierarchical-softmax 模式下,已知词未编码为单个输出节点,因此更难解释该矩阵与单个词的关系。)

但是,图书馆很少直接提供每个单词的第二个向量。最常见的是,词向量被简单地认为是来自投影矩阵的经过训练的输入向量。例如,Google 的原始 word2vec.c 版本的导出格式只保存了那些向量,而他们发布的大型 "GoogleNews" 向量集只有那些向量。 (没有对其他输出端表示进行平均。)

一些工作,尤其是 Mitra 等所有 Microsoft Research 的工作(在“Dual Embedding Space Models”和相关的文章中)已经注意到那些输出端向量在某些应用程序中也可能有价值——但我还没有看到很多其他使用这些载体的工作。 (而且,即使在那项工作中,它们也不是 平均 与传统向量,而是出于某些目的作为单独的选项进行咨询。)

您必须查看您正在使用的任何库的代码,看看是否可以从其完整的 post 训练模型表示中获取这些代码。在 Python gensim 库中,负采样情况下的第二个矩阵是一个名为 syn1neg 的模型 属性,遵循原始 word2vec.c 的命名。