NlP之word2vec的发展历程

#NlP之word2vec 的前世今生
2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。其实word2vec算法的背后是一个浅层神经网络。
#词向量的基础

##one-hot 表示

在很早之前就有用词向量表示词,但是词向量较为冗长,词向量的维度是整个词表大小,只有词对应的位置为一,其余都是0。词向量的维度过大,且构成的矩阵极其稀疏,并且one-hot表示会丢掉词于此之间的关系。

Dristributed representation可以解决One hot representation的问题,它的思路是通过训练,将每个词都映射到一个较短的词向量上来。所有的这些词向量就构成了向量空间,进而可以用普通的统计学的方法来研究词与词之间的关系。这个较短的词向量维度是多大呢?这个一般需要我们在训练时自己来指定。如下图所示,将“red mini van”这个单词映射到3维向量上,实际是对向量进行了降维处理。

因为使用disturbuted representation表示词向量,所以可以看出词于词之间的关系,有了向量就可以进行向量表示,
(KING)-(MAN)+(WOMAN)=(QUEE)

NNLM

鉴于Ngram等模型的不足,2003年,Bengio等人发表了一篇开创性的文章:A neural probabilistic language model[3]。在这篇文章里,他们总结出了一套用神经网络建立统计语言模型的框架(Neural Network Language Model,以下简称NNLM),并首次提出了word embedding的概念(虽然没有叫这个名字),从而奠定了包括word2vec在内后续研究word representation learning的基础。

nnlm模型输入,投影层,隐藏层和输出层:

  1. 输入层是有n个1-V编码的单词,v是词表的维度。将输入层首先进行映射,使用一个共享映射矩阵C,C是一个N*D维的矩阵,D是映射层的维度,D是远远小于词表的维度的。
  2. 经过映射层后,nnlm有一个拥有一个隐藏层,通过tanh的激活函数,将权重矩阵和映射层相乘,通过softmax输出V维的中每个词的概率向量。我们可以通过最小化cross-entropy的损失函数最小化,从而来调整权重函数。
  3. 最后通过BP反向传播,求得的矩阵C(N*D维的矩阵)和权重矩阵W,而C就是所谓的词向量!

为了降低nnlm的计算复杂度,也就是模型中的HxV,我们可以使用hierarchical softmax,将计算复杂度降低到log(V)。但是主要的复杂性实际是由于NDV造成的。NNLM模型在计算NDV上遇到了瓶颈,所以google在2013年,推出了无隐藏层的新模型,CBOW和skip-gram。


#Word2vec之CBOW
CBOW是从,上下context中预测中间值的一个过程,移除前向反馈神经网络中非线性的hidden layer,直接将中间层的embedding layer与输出层的softmax layer连接。

  1. projection层实际词向量相加构成了一个词袋向量,从而比之nnlm模型的投影层更加的简单,降低了计算复杂性。
  2. 投影层到输出层是将词袋模型乘以一个embedding矩阵,从而得到一个连续的embedding向量。

#Word2vec的两个trick
因此,Skip-gram模型的本质是计算输入word的input vector与目标word的output vector之间的余弦相似度,并进行softmax归一化。我们要学习的模型参数正是这两类词向量。
然而,直接对词典里的v个词计算相似度并归一化,显然是一件极其耗时的impossible mission。为此,Mikolov引入了两种优化算法:层次Softmax(Hierarchical Softmax)和负采样(Negative Sampling)。

###下篇博客再说

看了几篇博客作为参考,链接如下:
http://http://www.cnblogs.com/iloveai/p/word2vec.html
http://https://zhuanlan.zhihu.com/p/26306795

猜你喜欢

转载自blog.csdn.net/wangyueban/article/details/84934101