本文主要是在我读过论文《How to Generate a Good Word Embedding?》后进行的总结,一下就是我总结的内容。
文中指出几乎所有的词向量训练方法都基于分布式假说:在近似文本中出现的词语倾向于有着近似的意思。因此,目前存在的词向量训练方法在模型结构上分为两个方面,第一是目标词与输入文本之间的关系,第二是输入文本的表示。如下图所示:
上图对常用的模型进行了简单的比较,针对方面一,前五个模型主要是使用条件概率 p(w|c) p ( w | c ) 的方法在输入文本c的基础上来预测目标词w。而针对方面二,C&W模型主要使用联合概率,其中w,c预料对被作为输入进行训练以得到更高的分数。表中的模型从上往下模型复杂度不断增加,其中Skip-gram使用了最为简单的策略。
skip-gram模型与CBOW模型训练中忽略了词序,Landauer估计文本含义中有20%的信息来自于语序。因此,Order模型使用文本向量的联合,这种方式维护了词语的顺序信息。另外,LBL,NNLM和C&W模型在order模型的基础上添加了一个隐藏层。文中解决了三个问题,分别为如果选择模型?语料库大小以及domain如何影响词向量的表现?训练需要迭代多少次以及词向量的维度如果选择?
首先简单介绍一下模型。
Bengio et al.[1]首次提出了神经网络语言模型,能够同时学习词向量和语言模型,语言模型通过前面的几个词语来预测当前的词语。针对预料中的每个样本,需要最大化log-likelihood of the probability。例如,预料中的 w1,w2,....,wn w 1 , w 2 , . . . . , w n ,我们需要最大化:
Log-Bilinear Language Model(LBL)[2]是由Mnih and Hinton提出,与LLNM模型相比,LBL模型使用log-bilinear energy function并去除了非线性的激活函数tanh,Mnih and Hinton [3]使用hierarchical softmax[4]对模型进行加速,这种方式被称为HLBL。另外,Mnih and Kavukcuoglu[5]通过对模型的进一步加速,生成了ivLBL,这种模型使用NCE(noise contrastive estimation)[6]来估计目标词的条件概率。
Collobert and Weston (C&W)[7]首次提出了只训练词向量的模型,C&W模型不预测下一个目标词, 所以它组合文本以及目标词并进行打分,目标词是在一个文本中的中间词。打分机制是一个含有一层的隐藏层的神经网络,训练目标是最大化语料库得分的同时最小化噪声序列对的得分,公式表示为最小化下面的公式:
CBOW模型与Skip-gram[7]企图降低模型计算的复杂度,CBOW模型使用所有序列的平均作为文本向量,而Skip-gram模型使用文本中的一个词作为文本向量来作为输入,两个模型都忽略了文本之间词语的顺序关系,仅使用了逻辑回归根据文本输入来预测目标词,随后,Mikolov et al.又提出了使用negative sampling来优化softmax方法。
(negative sampling 和NCE和hierarchical softmax优化对比)
virtual model:order模型复杂度介于CBOW与LBL之间,这个模型维护了词语之间的顺序同时去除了隐藏层。与CBOW模型相比,Order使用文本词语向量的联合作为输入,与LBL模型相比,Order模型使用使用逻辑回归取代了log-bilinear结构。
另外,与神经网络对比,可以使用文档矩阵表示文档,其中每一行表示一个词向量,每一列表示一个文本,这类的模型被称为count-based models[8]。关于类模型的最后一个研究就是Glove(Global Vectors model)。其中非零值的重构误差被最小化。
而对于C&W模型,The energy function是 Ae(w)+Bc A e ( w ) + B c 。
现在回答一开始提出的三个问题。第一,如何选择模型?选择怎样的目标词与输入文本的组合?
答:从论文中可以看出,针对比较小的语料库,简单的模型已经够用了,例如skip-gram模型。而对比大点的语料库,可以选择更为复杂的模型,例如,CBOW或者Order。在现实的任务中,一般来说,简单的模型已经够用了。
第二,语料库的大小以及domain如何影响词向量的训练??
答:首先,同一个domain中,语料库越大,词向量训练越好
其次,跟任务相关的语料的domain能够提升词向量训练效果。
最后,语料库的domain比大小更为重要,在一个任务中,维持语料库的纯度比较重要,如果增加非改语料库domain的语料,会降低词向量的训练效果。
第三,确定训练的迭代次数?向量维度如果确定?
答:可以利用一个简单的任务对训练进行验证,如果在该简单的任务中表现最佳,该词向量则为最终确定的词向量。
针对语义任务,词向量维度越大越好。而针对NLP任务,则50维度的词向量已经足够了。
[1]Y. Bengio, R. Ducharme, P. Vincent, and C. Jauvin.A Neural Probabilistic Language Model. JMLR,
3:1137{1155, 2003.
[2]A. Mnih and G. Hinton. Three new graphical models for statistical language modelling. In ICML, 2007.
[3]A. Mnih and G. E. Hinton. A scalable hierarchical distributed language model. In NIPS, 2009.
[4]F. Morin and Y. Bengio. Hierarchical probabilistic neural network language model. In AISTATS, 2005.
[5]A. Mnih and K. Kavukcuoglu. Learning word embeddings eciently with noise-contrastive estimation. In NIPS, 2013.
[6]M. U. Gutmann and A. Hyvarinen. Noise-contrastive estimation of unnormalized statistical models, with applications to natural image statistics. JMLR, 2012.
[7]T. Mikolov, K. Chen, G. Corrado, and J. Dean.Ecient estimation of word representations in vector space. ICLR Workshop Track, 2013.
[8]M. Baroni, G. Dinu, and G. Kruszewski. Don^aA Zt count, predict! a systematic comparison of context-counting vs. context-predicting semantic
vectors. In ACL, 2014.