Efficient Estimation of Word Representations in Vector Space 阅读笔记
2014-07-25 by Leonvia: liustrive.com
背景
现有模型,比如前文Bengio的采用非线性激活函数tanh的神经网络模型,虽然准确度上有优势,但是算法的复杂度较高,无法训练更大的数据集,比如特征向量维度为50-100情况下训练超过几百兆个的语料。
目标
提出一种模型使其能够训练百万级词表下数十亿词量的训练集,并产出优质词特征向量。
Model Architectures
Feedforward Neural Net Language Model (NNLM)
此即前文所述前向神经网络语言模型,采用四层神经网络(原文讲实际是三层神经网络) 输入层、投影层、隐藏层、输出层 每个训练样本的计算复杂度为:
在文中的模型中,使用Huffman树来表示输出层hierarchical softmax,从而输出层参数从\(H*V\rightarrow H*log(V)\)。
但是这个提速并不能使神经网络语言模型获得决定性提升,因为计算瓶颈变成了NDH,于是提出了没有隐藏层的模型结构。
recurrent neural net language model(RNNLM)
递归神经网络语言模型没有投影层,只有输入层、隐藏层、输出层,该模型使用延时连接将隐藏层相连接,以使模型具有短期记忆,训练样本计算复杂度为: \(Q = H × H + H × V\) 其中词向量与隐藏层维度都是H,这种模型也可以通过Huffman树表示输出层的方式提升效率
New Log-linear Models
前文提到,隐藏层计算复杂度成为性能瓶颈,作者观察到,隐藏层的非线性结构导致了需要大量的计算,虽然这种非线性结构更加精确,但是在这一节中作者介绍了两种模型,去除了隐藏层,并且分两步训练:1、计算词特征向量,2、在词特征向量基础上训练n-gram神经网络,以此大幅提升效率。
Continuous Bag-of-Words Model
CBOW模型与前向神经网络模型相近,但是去除了隐藏层,所有词都通过加和平均投影到同一个D维向量上,训练的复杂度为:
Continuous Skip-gram Model
实验部分
作者表示中国相似法国相似意大利这种例子太没意思,前文也提到了训练产出的词向量具有(一定程度的)代数运算性质,于是文中设计了一系列实验,用代数运算的结果来验证模型的训练结果能否反映词之间的关系,并以此表示词向量的好坏。
Task description
作者采用的测试分类
Maximization of Accuracy
本文实验采用的是Google News语料训练词向量,文中为了衡量模型什么样的输入和参数下最快时间内得到最好的训练产出,先采用一半的语料与一半的向量维度,再依次同步增加,结果如Table2
Comparison of Model Architectures
模型间在相同维度和训练集大小情况下的比较结果,既采用了前文的代数运算方式统计准确性,也引入了通用的词间语法相似性的统计结果来反映词向量准确性。
结果如Table4所示:
RNNLM效果最差,虽然NNLM的非线性隐藏层理论上提供更高的精确性,但是由于运算量限制了词向量维度和训练集大小,NNLM的效果仍然不如CBOW和Skip-gram(排名分先后) 另外根据Table5的结果
Large Scale Parallel Training of Models
前文提到过,模型提出的目的就是能更快速的训练更大的语料,作者在分布式平台上实现了文中模型,用Google News的6B数据集做输入,实验结果如Table6:
可以发现CBOW和Skip-gram首先在速度上有绝对优势,NNLM甚至无法计算1000维词向量,准确性上也超过了NNLM模型。
Microsoft Research Sentence Completion Challenge
作者最后引入微软的句子补完测试,其内容是1040个句子,去掉其中一个词,提供五个词作为候选,目标是找出最合适的词使句子完整,文中使用的skip-gram模型测试,其准确率并不如LSA模型,但是结合RNNLM,通过加权平均,能使结果准确率提升到历史最高的58.9%。