Skip to content

Latest commit

 

History

History
21 lines (11 loc) · 1.44 KB

Word2vec模型究竟是如何获得词向量的.md

File metadata and controls

21 lines (11 loc) · 1.44 KB

Word2vec模型究竟是如何获得词向量的?

问大家一个问题:Word2vec模型是如何获得词向量的?

很多文章在解释的时候,会说对一个词通过One-hot编码,然后通过隐层训练,得到的输入到隐层的矩阵就对应的词表词向量。

我不能说这么解释是不对的,但是我认为是不准确的。

在前面文章也说过了,Word2vec是不涉及到隐层的,CBOW有投影层,只是简单的求和平均,Skip-gram没有投影层,就是中心词接了一个霍夫曼树。

所以,很多文章涉及到的隐层的权重矩阵也就无从谈起。

在此情况下,词向量是怎么来的?

从源码的角度来看,我们是对每个词都初始化了一个词向量作为输入,这个词向量是会随着模型训练而更新的,词向量的维度就是我们想要的维度,比如说200维。

以Skip-gram为例,我们的输入的中心词的词向量其实不是One-hot编码,而是随机初始化的一个词向量,它会随着模型训练而更新。

需要注意的一个细节点是,每个单词都会对应两个词向量,一个是作为中心词的时候的词向量,一个是作为背景词的时候的词向量。大家一般选择第一种。

这一点需要注意区别Glove中的中心词向量和背景词向量。Glove中的中心词向量和背景词向量从理论上来说是等价的,只不过由于初始化的不同,最终结果会略有不同。