word2vec怎么得到词向量?

word2vec有两种模型,CBOW和Skip-gram;前者是通过context(w)[即词w的上下文]的词向量获得w最可能的词(w为各个词的概率,就能得到最可能的词),后者是相反的,通过w获得上下文context(w)。

简单理解即为如下两幅图[1]:

word2vec怎么得到词向量?_第1张图片

word2vec怎么得到词向量?_第2张图片

对于CBOW模型,输入的即为词向量,但是词向量怎么来的?

实际上,前面还有一层,如下图[2]:

word2vec怎么得到词向量?_第3张图片

前一层输入的是每个单词的one-hot编码,然后训练得到的W,也就是输入层到隐藏层权值是词向量;

one-hot应该是这样[0,0,0,1,0,0,0],只有1对应的权值才会作为hidden layers的输入,这个权值也就作为了词向量。

实质上是一个降维的过程,把one-hot降为较低维的向量表示。

(不过其实这个也是简单版本,真实实现的Word2Vec还有改进,详见[3])

reference:

[1] word2vec 中的数学原理详解, https://www.cnblogs.com/peghoty/p/3857839.html

[2] word2vec是如何得到词向量的? crystalajj回答,https://www.zhihu.com/question/44832436

[3] 白话word2vec,https://www.jianshu.com/p/f58c08ae44a6

 

你可能感兴趣的:(机器学习)