Word2vec是由谷歌研究团队里Thomas Mikolov等人提出的模型,该模型能从非常大的数据集中计算出用以表示词的连续型向量。比如:Word2vec能成功训练超过亿万级的文本,将其转化为50-100维度的词向量(word vectors)。而在该模型提出前,这种从海量文本中学习到高质量词向量的能力是任何其他的模型所不具有的。令人惊讶的是,该模型的词表示的相似度超过了简单的句法规则。使用词抵消手段(即简单的代数运算)在词向量上,它会有像下述例子这样的结果,例如:向量(国王)- 向量(男)+ 向量(女)= 向量(皇后)。
原论文提出了两种Word2vec的模型结构,它们可以学习词的分布表示(distributed representations)并且努力去最小化其计算复杂度。以前关于词分布表示模型的复杂度是由于模型中非线性的隐藏层带来的,虽然正是因为如此才使得神经网络变得受欢迎,但仍需要提出更简单的模型。或许简单模型的数据表示不能像神经网络那么准确,但可以更有效率地训练更多的数据集。这两种Word2vec模型结构分别是:连续词袋模型(Continuous Bag-of-Words Model)和连续Skip-gram模型(Continuous Skip-gram Model)。
图1:Word2vec两种模型结果。CBOW结构基于上下文语境预测当前词,而Skip-gram是给定当前词预测周围的词。
Word2vec的连续词袋模型结构与前向神经网络语言模型(Feedforward Neural Net Language Model, NNLM)相似,但其中的非线性隐藏层被移除,同时映射层(projection layer)被所有词共享,因此所有词都映射到相同的位置上。称这个结构为词袋模型是因为词的历史顺序不会影响映射,而且结构也会用到未来的词。其训练的复杂度为:
Q = N \times D + D \times log_{2}(V)
Q是指模型结构的复杂度,使用1-of-V编码后的输入向量的维度是N x V, 而映射层是N x D。由于模型使用分层softmax(hierarchical softmax),所以有log_2(V)个输出需要评估。
连续词袋模型不同于标准的词袋模型,它使用了连续分布表示上下文。该模型结构展示在图1中左侧部分,注意到在输入和隐藏层之间的权重在所有词位置上实现了共享,这跟NNLM是一样的。
第二个连续Skip-gram模型结构跟CBOW相似,但是相较于基于上下文预测当前词,它是使用当前词作为输入,输入到一个带有连续映射层的log-linear分类器中,然后在当前词前后某个范围内预测其他词。论文作者发现增加范围的增加有利于提高预测词向量的质量,但同时也会加大计算复杂度。该结构的训练复杂度为:
Q = C \times( D + D \times log_{2}(V))
C是指词的最大距离。因此如果我们选择C=5,那对于每个训练的词来说,我们会在<1;C>的范围内随机选择一个数R,然后R个历史词和R个未来词作为当前词的标签们,这就需要R x 2个词分类器,分类器以当前词作输入,以R+R个词作为输出。
因为Word2vec在模型训练复杂度上的优化,使得该模型比NNLM快。此外,原论文在语义-句法 词关系测试中发现,CBOW结构在句法任务中表现比Skip-gram结构更好一点,但Skip-gram Word2vec模型在语义任务上表现比其他模型好。在应用上,由Word2vec得到词向量可以被成功用在知识库中自动扩展事实(facts),也能被用来验证现有事实的正确性。
描述来源:Word2vec论文:https://arxiv.org/pdf/1301.3781.pdf
发展历史
描述
起初N-gram模型在统计语言建模中很受欢迎,而且能被用于训练万亿级的文本。然而,该模型在许多任务上有限制,例如:在自动语音识别中相关数量的领域数据是有限的,模型表现常受到高质量语音转录文本的大小影响。在机器翻译中,现有多种语言词库只有几十亿的文本甚至更少,因此简单地放大基础方法并不能带来任何显著的进步,这需要更高级的方法才能带来进步。
随着近些年机器学习技术的发展,在更大的数据集上训练更复杂的模型变得可行,大概最成功的概念便是词分布式表示。例如:基于语言模型的神经网络便有超过N-gram这种简单模型的显著表现。把连续型向量的词表示已经有很长的历史了。出名的模型有NNLM,它是前向神经网络,其中含有一个线性的映射层和一个非线性的隐藏层。在NNLM基础上也有很多其它的研究。但是这些模型结构的计算十分昂贵。
另外,在估计连续型词表征方面上,还有其它不同类别的模型,其中出名的有潜在语义分析(Latent Semantic Analysis)和LDA(Latent Dirichlet Allocation)。但相比于基于神经网络的分布表示来说,LSA不能很好的保留词的线性规则,而LDA在大数据集上计算非常昂贵。
NNLM虽然能很好给出质量好的词表示,但是因为隐藏层的存在,使得训练复杂度比较大,为了克服前向NNLM的限制,RNNLM(Recurrent Neural Net Language Model)被提出,因为RNNLM没有映射层,所以减少了复杂度,速度快了一点。
在2013年Thomas Mikolov等人提出的Word2vec模型为了减少复杂度,他们从之前模型中的非线性隐藏层入手,成功得到了训练效率更高的分布词表示模型。之后,在2014年,斯坦福团队提出了一个全局双线性回归模型叫GloVe,其在Word2vec的基础上考虑了词的共现情况。同2014年,谷歌团队又提出了Doc2vec用于给段落或句子形成向量表示。在2016年,Fackbook团队提出了fastText,该模型把词特征平均在一起去形成好的句表示。
描述来源:Word2vec论文:https://arxiv.org/pdf/1301.3781.pdf
主要事件
年份 | 事件 | 相关论文/Reference |
2003 | Bengio等人提出NNLM实现词分布表示 | Bengio, Y., Ducharme, R., Vincent, P., & Jauvin, C. (2003). A neural probabilistic language model. Journal of machine learning research, 3(Feb), 1137-1155. |
2003-2010 | 该段时期在NNLM上后有很多后续的研究,例如Thomas Mikolov在2007年发表的‘Language Modeling for Speech Recognition in Czech’ | Mikolov, T. (2008). Language models for automatic speech recognition of czech lectures. Proc. of Student EEICT. |
2010 | Thomas Mikolov等人提出RNNLM,克服了前向NNLM的限制 | Mikolov, T., Karafiát, M., Burget, L., Černocký, J., & Khudanpur, S. (2010). Recurrent neural network based language model. In Eleventh annual conference of the international speech communication association. |
2013 | Thomas Mikolov等人提出Word2vec | Mikolov, T., Chen, K., Corrado, G., & Dean, J. (2013). Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781. |
2014 | Pennington等人提出Glove | Pennington, J., Socher, R., & Manning, C. (2014). Glove: Global vectors for word representation. In Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP) (pp. 1532-1543). |
2014 | Quoc Le和Thomas Mikolov提出Doc2vec | Le, Q., & Mikolov, T. (2014, January). Distributed representations of sentences and documents. In International conference on machine learning (pp. 1188-1196). |
2016 | Joulin等人提出fastTest | Joulin, A., Grave, E., Bojanowski, P., & Mikolov, T. (2016). Bag of tricks for efficient text classification. arXiv preprint arXiv:1607.01759. |
发展分析
瓶颈
Word2vec模型能够很好的大文本数据上进行运算,而且能够捕捉到语义和句法上的相似度。但是相比于LSA等统计语言模型来说,Word2vec缺乏统计学的运用,也正因为如此,输入数据的数量大小的会对模型有很大的影响。如果输入文本数据不够多,模型准确率会减低。虽然原论文没有提到其瓶颈,但是论文中作者表示如果用两倍数据训练的模型且只用一个epoch就能与一倍数据训练且用3个epoch的模型结果相当或者更好。因此我们可以说Word2vec的表现极大的受数据量,数据量少的话,便需要更多的训练时间且不能保证很好的准确率。
未来发展方向
Word2vec需要融合统计学的知识到其模型当中弥补其缺陷。其中,在2014年,Jeffrey Pennington等人便提出了GloVe,该模型为全局双线性回归模型,其结合了如上图两个主要模型家族的优点:全局矩阵因式分解(global matrix factorization)和当前上下文窗口方法(local context window methods)。另外,word2vec的词表示也朝着段落表示或文档表示方向扩展,例如:2014年,Quoc Le和Thomas Mikolov提出Doc2vec能够给不同文档形成不同的段落向量,从而可以找到不同段落之间的相似度,而不仅仅是发现词之间的相似度。
Contributor: Hongfeng Ai