译者按:
2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。其实word2vec算法的背后是一个浅层神经网络。另外需要强调的一点是,word2vec是一个计算word vector的开源工具。当我们在说word2vec算法或模型的时候,其实指的是其背后用于计算word vector的CBoW模型和Skip-gram模型。很多人以为word2vec指的是一个算法或模型,这也是一种谬误。
word2vec词向量 是NLP自然语言处理领域当前的主力方法,本文是 word2vec 原始论文,由google的 Mikolov 在2013年发表, Mikolov于2013,2014,2015 连续发表了3篇Word2vec 的 文章,本文是第1篇,作者Mikolov 是
bengio的高徒
原文链接:https://arxiv.org/abs/1301.3781v3
作者:
Tomas Mikolov Google Inc., Mountain View, CA tmikolov@google.com
Kai Chen Google Inc., Mountain View, CA kaichen@google.com
Greg Corrado Google Inc., Mountain View, CA gcorrado@google.com
Jeffrey Dean Google Inc., Mountain View, CA jeff@google.com
摘要:
我们提出了两种新的模型结构,用于计算非常大数据集中单词的连续矢量表示。这些表示的质量是在一个词相似性任务中测量的,并将结果与以前基于不同类型神经网络的最佳表现技术进行比较。我们观察到,在低得多的计算成本下,精度有了很大的提高,也就是说,从16亿字的数据集中学习高质量的字向量只需不到一天的时间。此外,我们还表明,这些向量在测试集上提供了最先进的性能,用于测量句法和语义词的相似性。
1 引言:
许多当前的NLP系统和技术都将单词视为原子单位——没有单词之间的相似性概念,因为它们在词汇表中表示为索引。这种选择有几个很好的原因——简单、健壮,并且观察到简单的模型在大量数据上的训练比在较少数据上训练的复杂系统的训练效果更好。一个例子是流行的用于统计语言建模的n-gram模型——今天,可以对几乎所有可用的数据(万亿字[3])培训n-gram。然而,在许多任务中,简单的技术都是有限的。例如,用于自动语音识别的相关域内数据的数量是有限的——性能通常由高质量的转录语音数据(通常只有数百万个字)的大小决定。在机器翻译中,许多语言的现有语料库只包含几十亿个单词或更少的单词。因此,在某些情况下,简单地扩展基本技术不会导致任何显著的进步,我们必须关注更先进的技术。随着近年来机器学习技术的进步,在更大的数据集上训练更复杂的模型已经成为可能,而且它们通常优于简单模型。可能最成功的概念是使用分布式的单词表示[10]。例如,基于神经网络的语言模型明显优于N-gram模型[1,27,17]。
1.1 论文的目标
本论文的主要目的是介绍从海量的数亿字和数亿字的数据集中学习高质量的词汇向量的技术。据我们所知,之前提出的架构中没有一个在2013年9月7日的1301.3781v3[cs.cl]7上成功地训练了数亿个单词,单词向量的适度维数在50-100之间。我们使用最近提出的技术来测量产生的向量表示的质量,期望不仅相似的词彼此接近,而且这些词可以具有多个相似度[20]。这一点在之前的屈折语言中已经被观察到了,例如,名词可以有多个词尾,如果我们在原始向量空间的子空间中搜索相似的词,就可以找到具有相似词尾的词[13,14]。令人惊讶的是,人们发现词语表达的相似性超出了简单的句法规则。使用字偏移技术,在字向量上执行简单的代数运算,例如,矢量(“king”)-矢量(“man”)+矢量(“woman”)产生的矢量最接近于单词queen的矢量表示[20]。
在本文中,我们试图通过开发新的模型体系结构来最大限度地提高这些向量运算的准确性,这种模型体系结构可以保持单词之间的线性规律。我们设计了一个新的综合测试集来测量句法规则和语义规则1,并表明许多这样的规则都可以被高精度地学习。此外,我们还讨论了训练时间和准确性如何取决于单词向量的维数和训练数据的数量。
1.2 前期工作
将单词表示为连续向量有很长的历史[10,26,8]。在[1]中,提出了一种非常流行的神经网络语言模型(NNLM)估计模型体系结构,该模型采用线性投影层和非线性隐层的前馈神经网络共同学习字向量表示和统计语言模型。这项工作已被许多其他人跟踪。NNLM的另一个有趣的体系结构出现在[13,14]中,在这里,首先使用具有单个隐藏层的神经网络学习单词vectors。然后使用vectors这个词来训练nnlm。因此,即使不构建完整的nnlm,也可以学习单词向量。在这项工作中,我们直接扩展了这个体系结构,并且只关注使用简单模型学习向量这个词的第一步。后来发现,vectors一词可用于显著改进和简化许多NLP应用程序[4、5、29]。单词向量本身的估计是使用不同的模型结构进行的,并在不同的语料库[4、29、23、19、9]上进行训练,得到的一些单词向量可用于未来的研究和比较2。然而,据我们所知,这些体系结构在训练方面的计算成本明显高于[13]中提出的体系结构,但使用对角权重矩阵的对数双线性模型的某些版本除外[23]。
2 模型体系结构
提出了多种不同类型的词汇连续表示模型,包括众所周知的潜在语义分析(LSA)和潜在dirichlet分配(LDA)。在本文中,我们重点研究了神经网络学习的单词的分布式表示,如前所述,在保持单词之间的线性规律方面,它们的性能明显优于LSA[20,31];此外,在大型数据集上,LDA在计算上变得非常昂贵。与[18]类似,为了比较不同的模型架构,我们首先将模型的计算复杂性定义为需要访问的参数数量,以完全训练模型。接下来,我们将尝试最大化精度,同时最小化计算复杂性。
对于以下所有模型,训练复杂度为
o=e×t×q (1)
其中e是训练周期的个数,t是训练集中的单词个数,q是为每个模型体系结构进一步定义的。常见的选择是E=3-50,T高达10亿。所有模型都使用随机梯度下降和反向传播进行训练[26]。
2.1 前馈神经网络语言模型(NNLM)
在[1]中提出了概率前馈神经网络语言模型。它由输入层、投影层、隐藏层和输出层组成。在输入层,前n个单词使用1/v编码( 即 one hot :译者按),其中v是词汇表的大小。然后使用共享投影矩阵将输入层投影到尺寸为N×D的投影层P上。由于只有n个输入是每个给定时间的活动,因此项目部分的组合是相对的堆操作。由于投影层中的值很密集,NNLM结构在投影层和隐藏层之间的计算变得复杂。对于n=10的常见选择,投影层(p)的大小可能为500到2000,而隐藏层大小h通常为500到1000个单位。此外,隐藏层用于计算词汇表中所有单词的概率分布,从而生成具有维数V的输出层。因此,每个训练示例的计算复杂性是