word2vec总结

本文参考:

word2vec之简历霍夫曼树:https://www.cnblogs.com/pinard/p/7160330.html

word2vec之Hierarchical Softmax的模型:http://www.cnblogs.com/pinard/p/7243513.html#!comments

word2vec之Negative Sampling的模型:http://www.cnblogs.com/pinard/p/7249903.html

1.word2vec是什么:

word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系

2.word2vec包含 CBOW和Skip-Gram两种模型:CBOW根据词的上下文来预测当前词;Skip-Gram根据当前词来预测词的上下文

3.word2vec模型的训练:基于霍夫曼树的多层softmax和负采样

1.霍夫曼树的构建:

树的输入:根据词汇表中词的频率大小建立每个词的权重值;

树的输出:对应的霍夫曼树

树的构建过程:(w1,w2,...wn)为每个词的权重值。霍夫曼树的所有叶子节点为词汇表中带权重的词

1)将(w1,w2,...wn)看做是有n棵树的森林,

2)在森林中选择根节点权值最小的两棵树进行合并,得到一个新的树,这两颗树分布作为新树的左右子树。新树的根节点权重为左右子树的根节点权重之和。

3) 将之前的根节点权值最小的两棵树从森林删除,并把新树加入森林。

4)重复步骤2)和3)直到森林里只有一棵树为止。

2.word2vec基于Hierarchical Softmax的模型:

传统的神经网络词向量语言模型,里面一般有三层,输入层(词向量),隐藏层和输出层(softmax层)。里面最大的问题在于从隐藏层到输出的softmax层的计算量很大,因为要计算所有词的softmax概率,再去找概率最大的值。

word2vec对这个模型做了改进:

1.对于从输入层到隐藏层的映射,没有采取神经网络的线性变换加**函数的方法,而是采用简单的对所有输入词向量求和并取平均的方法。比如输入的是三个4维词向量:(1,2,3,4),(9,6,11,8),(5,10,7,12)(1,2,3,4),(9,6,11,8),(5,10,7,12),那么我们word2vec映射后的词向量就是(5,6,7,8)(5,6,7,8)。由于这里是从多个词向量变成了一个词向量。

2.采用霍夫曼树来代替从隐藏层到输出softmax层的映射:

word2vec总结

和之前的神经网络语言模型相比,我们的霍夫曼树的所有内部节点就类似之前神经网络隐藏层的神经元,其中,根节点的词向量对应我们的投影后的词向量,而所有叶子节点就类似于之前神经网络softmax输出层的神经元,叶子节点的个数就是词汇表的大小。在霍夫曼树中,隐藏层到输出层的softmax映射不是一下子完成的,而是沿着霍夫曼树一步步完成的。

如何沿着霍夫曼树走:即规定沿着左子树走,那么就是负类(霍夫曼树编码1),沿着右子树走,那么就是正类(霍夫曼树编码0)。判别正类和负类的方法是使用sigmoid函数,即:

word2vec总结

其中Xw是当前内部节点的词向量,而θ则是我们需要从训练样本求出的逻辑回归的模型参数。最后的预测是多个sigmod函数的乘积,再通过最大似然方式优化函数,通过随机梯度上升求解最大似然参数。

word2vec总结

3.基于霍夫曼树的CBOW的计算步骤:

word2vec总结

4.基于霍夫曼树的Skip-Gram的计算步骤:

word2vec总结

3.word2vec基于负采样的模型:

Negative Sampling由于没有采用霍夫曼树,每次只是通过采样neg个不同的中心词做负例,就可以训练模型,因此整个过程要比Hierarchical Softmax简单。比如:我们有一个训练样本,中心词是w,它周围上下文共有2c个词,记为context(w)。由于这个中心词w,的确和context(w)相关存在,因此它是一个真实的正例。通过Negative Sampling采样,我们得到neg个和w不同的中心词wi,i=1,2,..neg,这样context(w)和wi就组成了neg个并不真实存在的负例。利用这一个正例和neg个负例,我们进行二元逻辑回归,得到负采样对应每个词wi对应的模型参数θi,和每个词的词向量。

1.如何通过一个正例和neg个负例进行二元逻辑回归?

word2vec总结

2.如何负采样?

word2vec总结

1).  基于Negative Sampling的CBOW模型

word2vec总结

2).  基于Negative Sampling的Skip-Gram模型

word2vec总结

4.Hierarchical SoftmaxNegative Sampling比较:

hierarchical Softmax:

1.优点:计算量为V,现在变成了log2V。第二,由于使用霍夫曼树是高频的词靠近树根,这样高频词需要更少的时间会被找到,这符合我们的贪心优化思想。

2.缺点:若训练样本里的中心词w是一个很生僻的词,那么就得在霍夫曼树中向下走很久。而负采样就是摒弃了霍夫曼树