红色
绿色

作者:Tomas Mikolov, Kai Chen, Greg Corrdado, Jeffery Dean

#译者按:

2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。其实word2vec算法的背后是一个浅层神经网络。另外需要强调的一点是,word2vec是一个计算word vector的开源工具。当我们在说word2vec算法或模型的时候,其实指的是其背后用于计算word vector的CBoW模型和Skip-gram模型。很多人以为word2vec指的是一个算法或模型,这也是一种谬误。

#摘要

本文提出了两个用于在大规模数据集上计算连续词向量表示的新模型框架。表现结果通过词相似度任务(Word Similarity Task)来衡量,并且将结果与之前其他不同类型且在神经网络方面最优秀的技术进行比较。实验得到我们以更低的计算成本得到精度大幅提升的结果,即不到一天的时间内从16亿字数据集中学习高质量的单词向量。从效果角度来讲,在词的语法与语义相似度方面,达到了领先水平。

#引言

许多当前的NLP系统和技术将单词视为原子单元 - 没有词与词相似性的概念,就好像它们在词汇表中表示为索引。 这个选择有几个好处: 简单,鲁棒 以及一种现象:依赖大数据量训练得到的简单的模型 优于 通过较少数据训练的复杂系统。 一个例子是流行的N-gram模型用于统计语言建模 - 今天,可能所有的可用数据都在用于训练N-gram模型。

然而,这种简单的技术在许多任务中都处于极限。 例如,用于训练语音识别模型的数据 在特定的领域中数据是很少的。训练效果受限于高质量的语音数据(通常只有几百万词)。在机器翻译领域,很多语言的只包含几十亿的词或者更少。因而,当前的状况是,对简单技术的提升很难取得显著的效果,我们应该关注更先进的技术。

随着机器翻译的进一步发展,在更大的数据上训练更复杂的模型成为可能。而且性能比简单模型好,而且最成功的是使用词的分布式表示(1),比如,基于语言模型的神经网络比N元模型好。

##本文目标

本文的主要目的是介绍从海量的数亿字和数百万字的数据集中学习高质量的词汇向量的技术。据我们所知,之前提出的架构中没有一个能成功地训练超过数亿个单词,词向量的维数在50-100之间。

我们使用最近提出的技术来测量产生的向量表示的质量,期望不仅相似的词彼此接近,而且这些词可以具有多个相似度。这一点在之前的屈折语言(inflectional languages )中已经被观察到了,例如,名词可以有多个词尾,如果我们在原始向量空间的子空间中搜索相似的词,就可以找到具有相似词尾的词。

令人惊讶的是,人们发现词语表达的相似性超出了简单的句法规则。运用词偏移技术,对词向量进行简单代数运算,结果显示,King向量-Man向量+Woman向量接近于单词Queen的向量表示。

在本文中,我们试图通过开发新的模型结构来保持单词之间的线性规律,来最大化这些向量操作的精度。我们设计了一个测量语法和语义规则的新的测试集。进一步,我们讨论了训练时间和准确率(accuracy)如何依赖于训练数据集大小与单词向量维度。

##前期工作

单词作为连续向量的表示具有悠久的历史。 在[1]中提出了一种非常流行的估计神经网络语言模型(NNLM)的模型体系结构,其中使用具有线性映射层和非线性隐藏层的前馈神经网络来联合学习单词向量表示和统计语言模型。 其他人许多都遵循了这项工作。

#模型结构

为了比较不同的模型架构,我们首先将模型的计算复杂性定义为需要访问的参数数量。接下来,我们将尝试最大化精度,同时最小化计算复杂性。

对于接下来的模型,训练的复杂度与下式成比例:

embedding 维度多大合适 embedding vector_神经网络


其中,E是训练的次数,T是训练集的单词数,Q是需要每个模型来决定。一般来说,E=3-50,T最大为十亿。所有的模型使用随机梯度下降和后向传播。

这里有一段没有写,关于模型的比较。NNLM

#New Log-linear Models

在本节中,我们提出了两种新的模型体系结构,用于学习分布式单词表示,以尽量减少计算复杂性。前一节的主要观察结果是,模型中的非线性隐藏层导致了大部分复杂性。虽然这正是神经网络如此具有吸引力的原因,但我们决定探索更简单的模型,这些模型可能无法像神经网络那样精确地表示数据,但可能会更有效地训练数据。

这段我只是抄写过来了,并不知道,讲了个啥。

这个模型的框架与我们之前所做的工作相关,我们发现神经网络语言模型可以成功地在两步进行训练:首先,通过简单模型学习获得连续的词向量,然后,在这些分布的词表示之前对N-Gram进行训练。然而后来有大量的工作集中在学习向量表示上,我们认为之前[13]所提出的是一个最简单的方法。

#备注
(1) 词的分布式表示

词的分布式表示(又称词嵌入,word embedding)因为这篇文章开始大火,原来的word embedding只是神经网络语言模型的副产物,而该论文的主要的目标是训练具有语义特征的word embedding。