论文翻译解读:Efficient estimation of word representations in vector space【Word2Vec】

635 阅读31分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

文章目录

简要信息

序号属性
1模型名称Word2Vec
2所属领域自然语言处理
3研究内容词嵌入
4核心内容Word2Vec
5GitHub源码Word2Vec
6论文PDFEfficient estimation of word representations in vector space

重点内容概括

提出了两种新的模型架构,从大数据集中计算单词的连续向量表示

1 介绍

将words看做原子单位,词间没有相似度,因为word在词汇表中用索引表示,例如N-grams

1.1 目标

希望相似的单词往往彼此互相靠近,并且单词能够有多重相似度

发现单词表示的相似度高于简单的语法规则,使用词偏移技术:V(“king”)- V(“man”) + V(“woman”)约等于V(“queen”“)

设计

  • 全面的测试集来衡量语法和语义规则
  • 通过开发新的模型架构最大化向量操作的准确性,架构可以保存单词的线性规则
  • 许多规则可以被高精度的学习
  • 训练时间和精度是怎么样依靠单词向量的维度和训练数据的数量

1.2 前人工作

词向量技术能够被用来极大程度的提高、简化许多NLP应用

2 模型架构

主要关注使用神经网络学习到的分布式单词表示,因为神经网络有助于保存线性规则

首先将模型的参数数量定义为计算复杂度,接下来在最大化精度的同时最小化计算复杂度

Efficient estimation of word representations in vector space

摘要

我们提出了两种新的模型架构,用于从非常大的数据集中计算单词的连续向量表示。这些表示的质量通过单词相似度任务来衡量,并将结果与之前基于不同类型神经网络的表现最好的技术进行比较。我们观察到以更低的计算成本在准确性上有了很大的提高,即从16亿单词数据集中学习高质量的单词向量只需要不到一天的时间。此外,我们还展示了这些向量在我们的测试集上提供了最先进的性能,用于测量语法和语义词的相似性。

1 介绍

许多当前的NLP系统和技术将单词视为原子单位——单词之间没有相似性的概念,因为它们是用词汇表中的索引表示的。这种选择有几个很好的理由——简单性、健壮性,以及观察到在大量数据上训练的简单模型优于在较少数据上训练的复杂系统。一个例子是用于统计语言建模的流行的n元模型——今天,可以根据几乎所有可用的数据(数万亿个单词[3])训练n元。

然而,这些简单的技术在许多任务中都是有限的。例如,用于自动语音识别的相关域内数据的数量是有限的——性能通常由高质量转录语音数据的大小(通常只有数百万字)决定。在机器翻译中,许多语言的现有语料库只包含数十亿个单词,甚至更少。因此,在某些情况下,对基本技术进行简单的扩展不会产生任何显著的进展,我们必须关注更高级的技术。

随着近年来机器学习技术的进步,在更大的数据集上训练更复杂的模型已经成为可能,它们通常优于简单模型。可能最成功的概念是使用单词[10]的分布式表示。例如,基于神经网络的语言模型明显优于N-gram模型[1,27,17]。

1.1 论文目标

本文的主要目标是介绍一些技术,这些技术可以用于从包含数十亿个单词和数百万个单词的庞大数据集中学习高质量的词向量。据我们所知,之前提出的所有架构都没有成功地训练过数亿个单词,单词向量的维数在50到100之间。

我们使用最近提出的技术来测量结果向量表示的质量,期望不仅相似的单词会趋向于彼此接近,而且单词可以有多个相似度[20]。这一点早前在屈折语言的语境中已经观察到——例如,名词可以有多个单词结尾,如果我们在原始向量空间的子空间中搜索相似的单词,就有可能找到具有相似结尾的单词[13,14]。

有些令人惊讶的是,人们发现,词语表征的相似性超越了简单的句法规律。使用单词偏移技术,对单词向量进行简单的代数运算,结果显示,向量(“King”)-向量(“Man”)+向量(“Woman”)得到的向量最接近单词Queen[20]的向量表示。

在本文中,我们试图通过开发新的模型架构来最大化这些向量运算的准确性,以保持单词之间的线性规律。我们设计了一个新的综合测试集来测量语法和语义规则,并表明许多这样的规则可以被高精度地学习。此外,我们还讨论了训练时间和准确性如何取决于词向量的维数和训练数据的数量。

1.2 以前的工作

将单词表示为连续向量已有很长的历史[10,26,8]。[1]中提出了一种非常流行的估计神经网络语言模型(NNLM)的模型架构,该模型利用带有线性投影层和非线性隐藏层的前馈神经网络来联合学习单词向量表示和统计语言模型。这项工作被许多其他的人效仿。

另一个有趣的NNLM架构在[13,14]中提出,其中单词向量首先使用带有单个隐藏层的神经网络学习。然后用单词向量来训练NNLM。因此,即使不构造完整的NNLM,词汇向量也能被学习。在这项工作中,我们直接扩展了这个架构,并只专注于第一步,即使用一个简单的模型学习单词向量。

后来的研究表明,词向量可以显著改善和简化许多NLP应用[4,5,29]。词向量本身的估计使用不同的模型架构,并在各种语料库上训练[4,29,23,19,9],得到的一些词向量可用于未来的研究和比较2。然而,据我们所知,这些架构在训练上的计算成本明显高于[13]中提出的架构,除了某些版本的对数双线性模型,其中使用了[23]对角权重矩阵。

2 模型架构

许多不同类型的模型被用来估计单词的连续表示,包括著名的潜在语义分析(LSA)和潜在狄利克雷分配(LDA)。在本文中,我们重点研究了神经网络学习的单词的分布式表示,因为之前的研究表明,神经网络在保持单词之间的线性规律方面比LSA表现得要好得多[20,31];此外,LDA在大数据集上的计算成本非常高。

与[18]类似,为了比较不同的模型体系结构,我们首先将模型的计算复杂度定义为需要访问的参数数量,以完全训练模型。接下来,我们将尝试最大化精度,同时最小化计算复杂度。

对于以下所有模型,训练复杂度与(1)成正比,
O = E × T × Q O = E × T × Q O=E×T×Q
其中E为训练epochs的数量,T为训练集中的单词数量,对每个模型架构进一步定义Q。通常的选择是E = 3−50和T高达10亿。所有模型均使用随机梯度下降和反向传播[26]进行训练。

2.1 前馈神经网络语言模型

在[1]中提出了概率前馈神经网络语言模型。它由输入层、投影层、隐藏层和输出层组成。在输入层,前面的N个单词使用1-of-V编码,其中V是词汇量的大小。然后,使用共享投影矩阵将输入层投影到维数为N ×
D的投影层P。由于在任何给定的时间只有N个输入是活跃的,所以组成投影层是一个相对便宜的操作。

由于投影层中的值是密集的,因此NNLM架构在投影层和隐层之间的计算变得复杂。对于N =
10的常见选择,投影层§的大小可能是500到2000,而隐藏层的大小H通常是500到1000个单位。隐层用于计算词汇表中所有单词的概率分布,得到一个维数为V的输出层。因此,每个训练例的计算复杂度为
Q = N × D + N × D × H + H × V 其中支配项为 H × V 。然而,为避免这种情况,提出了几个实际的解决办法 ; 要么使用 s o f t m a x 的分层版本 [ 25 , 23 , 18 ] ,要么完全避免归一化模型,使用训练中未归一化的模型 [ 4 , 9 ] 。使用二叉树表示词汇表,需要评估的输出单元数量可以降低到 l o g 2 ( V ) 左右。因此,大部分的复杂性是由术语 N × D × h 造成的。在我们的模型中,我们使用分层 s o f t m a x ,其中词汇表被表示为 H u f f m a n 二叉树。这与之前的观察结果一致,即单词的频率在神经网络语言模型 [ 16 ] 中可以很好地获得类。 H u f f m a n 树将较短的二进制代码分配给频繁出现的单词,这进一步减少了需要评估的输出单元的数量 : 平衡二叉树需要 l o g 2 ( V ) 输出来评估,而基于 H u f f m a n 树的分层 s o f t m a x 只需要 l o g 2 ( U n i g r a m p e r p l e x i t y ( V ) ) 。例如,当词汇量为 100 万个单词时,这将使评估速度提高大约两倍。虽然这对于神经网络 l m 并不是至关重要的加速,因为计算瓶颈在 N × D × H 术语中,我们稍后将提出没有隐藏层的架构,因此严重依赖于 s o f t m a x 归一化的效率。 Q = N × D + N × D × H + H × V其中支配项为H × V。然而,为避免这种情况,提出了几个实际的解决办法;要么使用softmax的分层版本[25,23,18],要么完全避免归一化模型,使用训练中未归一化的模型[4,9]。使用二叉树表示词汇表,需要评估的输出单元数量可以降低到log2(V)左右。因此,大部分的复杂性是由术语N × D × h造成的。在我们的模型中,我们使用分层softmax,其中词汇表被表示为Huffman二叉树。这与之前的观察结果一致,即单词的频率在神经网络语言模型[16]中可以很好地获得类。Huffman树将较短的二进制代码分配给频繁出现的单词,这进一步减少了需要评估的输出单元的数量:平衡二叉树需要log2(V)输出来评估,而基于Huffman树的分层softmax只需要log2(U nigram perplexity(V))。例如,当词汇量为100万个单词时,这将使评估速度提高大约两倍。虽然这对于神经网络lm并不是至关重要的加速,因为计算瓶颈在N ×D×H术语中,我们稍后将提出没有隐藏层的架构,因此严重依赖于softmax归一化的效率。 Q=N×D+N×D×H+H×V其中支配项为H×V。然而,为避免这种情况,提出了几个实际的解决办法;要么使用softmax的分层版本[25,23,18],要么完全避免归一化模型,使用训练中未归一化的模型[4,9]。使用二叉树表示词汇表,需要评估的输出单元数量可以降低到log2(V)左右。因此,大部分的复杂性是由术语N×D×h造成的。在我们的模型中,我们使用分层softmax,其中词汇表被表示为Huffman二叉树。这与之前的观察结果一致,即单词的频率在神经网络语言模型[16]中可以很好地获得类。Huffman树将较短的二进制代码分配给频繁出现的单词,这进一步减少了需要评估的输出单元的数量:平衡二叉树需要log2(V)输出来评估,而基于Huffman树的分层softmax只需要log2(Unigramperplexity(V))。例如,当词汇量为100万个单词时,这将使评估速度提高大约两倍。虽然这对于神经网络lm并不是至关重要的加速,因为计算瓶颈在N×D×H术语中,我们稍后将提出没有隐藏层的架构,因此严重依赖于softmax归一化的效率。
其中支配项为H × V。然而,为避免这种情况,提出了几个实际的解决办法;要么使用softmax的分层版本[25,23,18],要么完全避免归一化模型,使用训练中未归一化的模型[4,9]。使用二叉树表示词汇表,需要评估的输出单元数量可以降低到log2(V)左右。因此,大部分的复杂性是由术语N × D × h造成的。

在我们的模型中,我们使用分层softmax,其中词汇表被表示为Huffman二叉树。这与之前的观察结果一致,即单词的频率在神经网络语言模型[16]中可以很好地获得类。Huffman树将较短的二进制代码分配给频繁出现的单词,这进一步减少了需要评估的输出单元的数量:平衡二叉树需要log2(V)输出来评估,而基于Huffman树的分层softmax只需要log2(Unigram-perplexity(V))。例如,当词汇量为100万个单词时,这将使评估速度提高大约两倍。虽然这对于神经网络lm并不是至关重要的加速,因为计算瓶颈在N ×D×H术语中,我们稍后将提出没有隐藏层的架构,因此严重依赖于softmax归一化的效率。

2.2 循环神经网络语言模型(RNNLM)

基于递归神经网络的语言模型被提出,以克服前馈NNLM的某些局限性,如需要指定上下文长度(模型的阶数N),以及理论上RNN可以比浅层神经网络有效地表示更复杂的模式[15,2]。RNN模型没有投影层;只有输入层、隐藏层和输出层。这种模型的特别之处在于递归矩阵,它使用延时连接将隐藏层与自身连接起来。这允许循环模型形成某种短期记忆,因为过去的信息可以由隐藏层状态表示,该状态基于当前输入和前一个时间步中隐藏层的状态进行更新。

RNN模型每个训练例的复杂度为
Q = H × H + H × V Q = H × H + H × V Q=H×H+H×V
,其中词表示形式D与隐藏层H具有相同的维数。再次,利用分层软max可以有效地将H × V降为H × log2(V)。大部分的复杂性来自于H × H。

2.3 神经网络并行训练

为了在巨大的数据集上训练模型,我们在一个名为DistBelief[6]的大规模分布式框架上实现了多个模型,包括前馈NNLM和本文提出的新模型。该框架允许我们并行运行同一个模型的多个副本,每个副本通过一个保持所有参数的集中服务器同步其梯度更新。对于这种并行训练,我们使用了一种称为Adagrad[7]的自适应学习率程序的小批量异步梯度下降。在此框架下,通常使用100个或更多的模型副本,每个副本在数据中心的不同机器上使用多个CPU核。

3 新的对数线性模型

在本节中,我们提出了两种新的模型架构,用于学习单词的分布式表示,它们试图将计算复杂度降至最低。从上一节的主要观察到,大部分的复杂性是由模型中的非线性隐含层造成的。虽然这正是神经网络如此吸引人的原因,但我们决定探索更简单的模型,这些模型可能不能像神经网络那样精确地表示数据,但可能可以有效地训练更多的数据。

新的架构直接遵循了我们早期研究[13,14]中提出的架构,我们发现神经网络语言模型可以通过两步成功训练:首先,使用简单模型学习连续的词向量,然后在这些词的分布式表示上训练N-gram NNLM。虽然后来有大量的工作专注于单词向量的学习,但我们认为[13]中提出的方法是最简单的方法。需要注意的是,相关的模型在更早的时候就被提出了[26,8]。

3.1 连续Bag-of-Words模型

第一个提出的结构类似于前馈NNLM,其中非线性隐藏层被去除,投影层为所有单词共享(而不仅仅是投影矩阵);因此,所有的单词都被投影到相同的位置(它们的向量是平均的)。我们称这种架构为词汇袋模型,因为词汇在历史中的顺序不影响投影。此外,我们也使用来自未来的单词;我们通过在输入处构建一个包含4个未来词和4个历史词的对数线性分类器来获得下一节中介绍的任务的最佳性能,其中训练标准是正确分类当前(中间)词。训练复杂度
Q = N × D + D × l o g 2 ( V ) Q = N × D + D × log2(V) Q=N×D+D×log2(V)
。我们将该模型进一步表示为CBOW,因为它不像标准的词袋模型,它使用连续分布的上下文表示。模型体系结构如图1所示。请注意,输入层和投影层之间的权重矩阵对于所有单词位置都是共享的,其方式与在NNLM中相同。

3.2 连续Skip-gram模型

第二种架构类似于CBOW,但它不是根据上下文预测当前的单词,而是试图根据同一个句子中的另一个单词最大限度地分类一个单词。更准确地说,我们将每个当前词作为一个输入到一个带连续投影层的对数线性分类器中,预测当前词前后一定范围内的词。我们发现,增加范围可以提高结果词向量的质量,但也增加了计算的复杂性。由于距离较远的单词与当前单词之间的联系通常比距离较近的单词更小,因此我们通过在训练示例中对这些单词进行更少的抽样,从而对距离较远的单词给予更少的权重。

这种架构的训练复杂度与
Q = C × ( D + D × l o g 2 ( V ) ) Q = C × (D + D × log2(V)) Q=C×(D+D×log2(V))
,成正比,其中C为单词的最大距离。因此,如果我们选择C = 5,对于每个训练单词,我们将在<
1;C>范围内随机选择一个数字R,然后用R个历史单词和R个当前单词的未来单词作为正确的标签。这将要求我们做R × 2个单词的分类,以当前的单词作为输入,每个R + R单词作为输出。在接下来的实验中,我们使用C =
10。
在这里插入图片描述

图1:新的模型架构。CBOW架构根据上下文预测当前的单词,而Skip-gram根据当前单词预测周围的单词。

4 结果

为了比较不同版本的单词向量的质量,以前的论文通常使用一个表来显示示例单词及其最相似的单词,并直观地理解它们。尽管很容易表明单词法国与意大利相似,也许还有其他一些国家相似,但在一个更复杂的相似任务中对这些向量进行测试则更具挑战性,如下所示。我们遵循之前的观察发现,单词之间可能有很多不同类型的相似之处,例如,单词big和bigger的相似之处,small和small的相似之处。另一种关系类型的例子可以big-biggest和small-smallest[20]字对。我们进一步表示两组具有相同关系的单词,就像我们可以问:“在某些场景下,什么单词和small的意思相似,就和biggest的意思和big的意思相似一样?”

有些令人惊讶的是,这些问题可以通过对单词的向量表示执行简单的代数运算来回答。要找到一个与“最大”与“大”在相同意义上与“小”相似的词,我们可以简单地计算向量X =向量(“最大”)-向量(“大”)+向量(“小”)。然后,我们在向量空间中搜索由余弦距离度量的最接近X的单词,并将其作为问题的答案(在搜索过程中丢弃输入的问题单词)。当词向量训练良好时,使用该方法可以找到正确的答案(词最小)。

最后,我们发现,当我们在大量数据上训练高维词向量时,得到的向量可以用来回答单词之间非常微妙的语义关系,例如一个城市和它所属的国家,例如,法国之于巴黎,就像德国之于柏林。具有这种语义关系的词向量可以用于改进许多现有的自然语言处理应用程序,如机器翻译、信息检索和问题回答系统,并可能使未来的其他应用程序成为可能。

表1:语义句法词关系测试集中的五种语义题和九种句法题的例子。
在这里插入图片描述

4.1 任务描述

为了衡量词向量的质量,我们定义了一个包含5类语义题和9类句法题的综合测试集。每个类别中的两个示例如表1所示。总共有8869道语义题和10675道句法题。每个类别中的问题都是通过两个步骤创建的:首先,手动创建一个相似的词对列表。然后,通过连接两个词对形成一个大的问题列表。例如,我们列出了68个美国大城市和它们所属的州,并通过随机选择两组词组成大约2.5万个问题。我们在测试集中只包含单个标记词,因此不存在多词实体(例如New York)。

我们评估所有问题类型的整体准确性,并分别评估每个问题类型(语义、句法)。只有当使用上述方法计算出的最接近向量的单词与问题中的正确单词完全相同时,才认为问题是正确的;同义词因此被算作错误。这也意味着达到100%的准确率是不可能的,因为目前的模型没有任何关于词法的输入信息。然而,我们认为,对于某些应用程序,词向量的有用性应该与这个精度度量呈正相关。通过加入关于单词结构的信息,尤其是关于句法的问题,可以取得更大的进步。

4.2 最大化的准确性

我们使用谷歌News语料库来训练单词向量。这个语料库包含大约6十亿个标记。我们已经将词汇量限制在100万个最常用的单词。显然,我们面临着时间约束的优化问题,因为可以预期,使用更多的数据和更高维的词向量将提高精度。为了快速获得尽可能好的结果,估计模型架构的最佳选择,我们首先在训练数据的子集上评估了模型约束,词汇表限制在最频繁的30k单词。使用不同词向量维数选择和训练数据量增加的CBOW架构的结果如表2所示。

可以看出,在某个点之后,增加更多的维度或增加更多的训练数据提供的改进越来越少。因此,我们必须同时增加向量维数和训练数据的数量。虽然这个观察可能看起来微不足道,但必须指出的是,目前流行的是在相对大量的数据上训练单词向量,但大小不足(如50 - 100)。给定方程4,训练数据量增加两倍所增加的计算复杂度与向量大小增加两倍所增加的计算复杂度大致相同。对于表2和表4中报告的实验,我们使用了随机梯度下降和反向传播的三个训练期。我们选择初始学习率为0.025,并线性降低它,以便在最后一个训练周期结束时它接近于零。

表2:在语义-句法词关系测试集子集上的准确性,使用来自词汇量有限的CBOW体系结构的词向量。只有包含最常见的30k单词的问题才会被使用。

表3:使用640维单词向量训练的相同数据模型的架构比较。准确性在我们的语义-句法词关系测试集和语法关系测试集[20]上报告

4.3 模型架构的比较

首先,我们使用相同的训练数据和640个相同维数的词向量来比较不同的模型架构。在进一步的实验中,我们使用了新的语义-句法词关系测试集的全套问题,即不受30k词汇量的限制。我们还包括[20]中引入的一个测试集的结果,该测试集关注单词之间的语法相似性。

训练数据由几个LDC语料库组成,以18详细描述。我们使用这些数据来与之前训练的递归神经网络语言模型进行比较,该模型在单个CPU上训练了大约8周。我们使用DistBelief并行训练[6]训练一个具有相同数量640个隐藏单元的前馈NNLM,使用8个之前的单词的历史(因此,NNLM比RNNLM有更多的参数,因为投影层的大小为640 × 8)。

表3中,可以看到来自RNN的单词向量(如[20]中使用的)在语法问题中表现最好。NNLM向量的表现明显优于RNN——这并不奇怪,因为RNNLM中的词向量直接连接到非线性隐藏层。CBOW体系结构在句法任务上比NNLM更好,在语义任务上也差不多。最后,Skip-gram架构在语法任务上的表现比CBOW模型略差(但仍然比NNLM好),在测试的语义部分的表现比所有其他模型好得多。

接下来,我们评估了只使用一个CPU训练的模型,并将结果与公开可用的单词向量进行比较。表4给出了比较。CBOW模型在大约一天的时间内对谷歌News数据子集进行训练,而Skip-gram模型的训练时间大约为三天。

对于进一步报告的实验,我们只使用了一个训练周期(同样,我们线性降低学习率,以便在训练结束时它接近于零)。使用一个epoch在两倍的数据上训练模型,比使用三个epoch在相同的数据上迭代,可以得到类似或更好的结果,如表5所示,并提供了额外的小速度。

表4:语义-句法词关系测试集上公开可用的词向量与我们模型中的词向量的比较。使用完整的词汇表。

表5:对同一数据的三个epochs训练的模型和一个epoch训练的模型进行比较。准确性报告了完整的语义- 语法数据集。

4.4 模型的大规模并行训练

正如前面提到的,我们已经在一个叫做Dis-tBelief的分布式框架中实现了各种模型。下面我们报告了在谷歌News 6B数据集上训练的几个模型的结果,其中使用了小批量异步梯度下降和自适应学习率程序Ada-grad[7]。我们在训练中使用了50到100个模型副本。CPU内核的数量是一个估计,因为数据中心机器是与其他生产任务共享的,而且使用情况可能会有很大的波动。注意,由于分布式框架的开销,CBOW模型和Skip-gram模型的CPU使用比它们的单机实现更接近。结果如表6所示。

表6:使用DistBelief分布式框架训练的模型比较。需要注意的是,1000维向量的NNLM训练时间太长,无法完成。

表7:Microsoft句子完成挑战模型的比较和组合。

4.5 微软研究院句子完成挑战

微软的句子完成挑战最近被引入,作为一项推进语言建模和其他自然语言处理技术[32]的任务。这个任务由1040个句子组成,每个句子中都少了一个单词,目标是选出与句子其余部分最连贯的单词,并给出5个合理的选择。在这个集合上已经报道了几种技术的性能,包括N-gram模型、基于lsa的模型[32]、对数双线性模型[24]和一个循环神经网络组合,该组合目前在基准[19]上保持了55.4%的最佳性能。

我们已经在这个任务中探索了Skip-gram的性能。首先,我们在[32]中提供的50M单词上训练640维模型。然后,我们利用输入的未知单词计算测试集中每个句子的得分,并预测一个句子中所有周围的单词。最后的句子得分是这些单独预测的总和。根据句子分数,我们选择最有可能的句子。

表7简要总结了以前的一些结果以及新的结果。虽然Skip-gram模型本身在这个任务上的表现并不比LSA相似度好,但从这个模型得到的分数与rnnlm得到的分数是互补的,加权组合导致了一个新的状态,即58.9%的准确率(在集合的开发部分59.2%,在集合的测试部分58.7%)。

5 学习关系的例子

在这里插入图片描述

表8显示了遵循各种关系的单词。我们遵循上述方法:通过减去两个单词向量定义关系,然后将结果添加到另一个单词。例如,巴黎-法国+意大利=罗马。可以看到,精度相当好,尽管显然还有很大的改进空间(注意,使用我们的精度度量,假设完全匹配,表8中的结果只能得到60%左右)。我们相信,在具有更大维度的更大数据集上训练的词向量将会表现得更好,并将使新的创新应用程序的开发成为可能。另一种提高准确性的方法是提供不止一个关系的例子。通过使用10个而不是1个例子来形成关系向量(我们将每个向量平均起来),我们观察到在语义-语法测试中,我们最好的模型的准确性提高了约10%。

也可以应用向量运算来解决不同的任务。例如,我们观察到,通过计算单词列表的平均向量并找到最远的单词向量,可以很好地选择列表外的单词。在某些人类智力测试中,这是一种常见的问题。显然,使用这些技术仍有许多发现有待发现。

6 结论

在本文中,我们研究了在一系列句法和语义语言任务中,不同模型衍生的词向量表示的质量。我们观察到,与流行的神经网络模型(前馈和循环)相比,使用非常简单的模型架构可以训练高质量的单词向量。由于计算复杂度大大降低,因此可以从更大的数据集计算非常精确的高维词向量。使用DistBelief分布式框架,甚至可以在拥有一万亿单词的语料库上训练CBOW和Skip-gram模型,基本不受词汇量的限制。这比之前公布的同类模型的最佳结果要大几个数量级。

SemEval-2012 task 2[11]是一个有趣的任务,它的单词向量最近被证明比之前的技术有显著的进步。将公开可用的RNN向量与其他技术结合使用,使Spearman的秩相关比之前的最佳结果[31]提高了50%以上。此前,基于神经网络的词向量被应用于许多其他的NLP任务,如情感分析[12]和释义检测[28]。可以预期,这些应用程序可以从本文中描述的模型体系结构中受益。

我们正在进行的工作表明,词向量可以成功地应用于知识库中事实的自动扩展,也可以用于验证现有事实的正确性。机器翻译实验的结果也很有希望。将来,将我们的技术与潜在关系分析[30]和其他技术进行比较也会很有趣。我们相信我们的全面测试集将有助于研究界改进现有的估计词向量的技术。我们也期望高质量的词向量将成为未来自然语言处理应用的重要组成部分。

7 下一步工作

在撰写了本文的初始版本之后,我们发布了用于计算单词向量的单机多线程c++代码,使用了连续词袋和skip-gram架构。训练速度明显高于本文之前的报道,即典型超参数选择的训练速度为每小时数十亿字。我们还发布了超过140万个向量,这些向量代表了超过1000亿个单词。我们的一些后续工作将发表在即将到来的NIPS
2013论文[21]。