what is word2vec

来源:互联网 发布:linux保存配置文件 编辑:程序博客网 时间:2024/06/05 21:52

什么是Word2vec?Skip-Gram和Continuous Bag of Words(CBOW)又是什么模型?

什么是Word2vec?

  用来学习文字向量表达的模型(相关文本文字的特征向量)。

两种Word2vec

  • 连续Bag-of-Words(CBOW)
    • 从上下文来预测一个文字
  • Skip-Gram
    • 从一个文字来预测上下文

  其实,用一个向量标识word已经提出有一段时间了,Tomas Mikolov的word2vec算法的一个不同之处在于,他把一个word映射到高维(50到300维),并且在这个维度上有了很多有意思的语言学特性,比如单词”Rome”的表达vec(“Rome”),可以是vec(“Paris”)-vec(“France”)+vec(“Italy”)的计算结果。

  Word2vec的示意图如下:
word2vec|center|200*150
  显然,word2vec是只有一个隐层的全连接神经网络,用来预测给定单词的关联度大的单词。

  WI的大小是V*N,V是单词词典的大小,每次输入是一个单词,N是你自己设定的隐层大小。

  举个例子,如果我们语料中仅仅有这3句话:“the dog saw a cat”,“the dog chased the cat”,“the cat climbed a tree”。那么单词词典中只有8个单词:the, dog, saw, a, cat, chased, climbed, tree。

  那么V=8,输入层的初始就是:
[0,0,0,0,0,0,0,0]代表:[“the”,”dog”,”saw”,”a”,”cat”,”chased”,”climbed”,”tree”]。输入[“”,”dog”,”“,”“,”“,”“,”“,”“]就可以表示为:[0,1,0,0,0,0,0,0],输入[“”,”“,”saw”,”“,”“,”“,”“,”“]就可以表示为:[0,0,1,0,0,0,0,0],如果是在字典中有的,就用1表示。

  WO的大小是N*V,于是,通过训练完毕的WI和WO,只要输入单词,就能预测出最符合这个上下文的下一个单词。当然这个单词一定是字典中有的,也就是说在大小为V的字典中选出概率最大的那个单词。

  那么,连续Bag-of-Words(CBOW)又是怎么从上下文来预测一个文字呢?其实就是它就是通过拷贝上面word2vec的输入层做到的:
continuous bag-of-words|center|150*100

  这样,拷贝次数C就是这个上下文短语的长度,即单词个数,每一个输入\(X_i\)就是一个单词。输入层和隐含层之间就多了好多个WI矩阵,每个矩阵就代表了这个单词对隐层的影响和贡献。最后N*V矩阵依然能预测出最可能的下一个单词。

  Skip-Gram就是把上图颠倒过来,如果你要预测的输出上下文的单词个数是C,那么就像CBOW一样,拷贝C次输出矩阵就可以了。

0 0