这是用户在 2024-5-26 1:42 为 https://app.immersivetranslate.com/pdf-pro/cdb9a8ce-cefc-4106-9fe9-6c71014e71a3 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?
2024_05_25_f72c16e1f7c2ae9ac271g


在向量空间中高效估计单词表示

 托马斯·米科洛夫
谷歌公司,加利福尼亚州山景城
tmikolov@google.com 格雷格·科拉多
谷歌公司,加利福尼亚州山景城
gcorrado@google.com

 陈凯
谷歌公司,加利福尼亚州山景城
kaichen@google.com 杰弗里·迪恩
谷歌公司,加利福尼亚州山景城
jeff@google.com

 摘要


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

 1 简介


许多当前的自然语言处理系统和技术将单词视为原子单位 - 单词之间没有相似性的概念,因为它们在词汇表中表示为索引。这种选择有几个很好的理由 - 简单性、鲁棒性以及简单模型在大量数据上训练的观察结果优于在较少数据上训练的复杂系统。一个例子是用于统计语言建模的流行 -gram 模型 - 如今,可以在几乎所有可用数据上训练 -gram。

然而,在许多任务中,简单技术已经达到了极限。例如,用于自动语音识别的领域内相关数据量有限 - 性能通常由高质量转录语音数据的规模主导(通常仅为数百万字)。在机器翻译中,许多语言的现有语料库仅包含数十亿字或更少。因此,在某些情况下,简单扩展基本技术将不会带来任何显著进展,我们必须专注于更先进的技术。

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


论文的目标


本文的主要目标是介绍一些技术,这些技术可以用于从包含数十亿单词的大型数据集和包含数百万单词的词汇表中学习高质量的词向量。据我们所知,先前提出的架构都没有成功地在更多的数据上进行训练。


比几亿字少得多,词向量的维度适中在 之间。

我们使用最近提出的技术来衡量生成的向量表示的质量,期望不仅相似的词会彼此靠近,而且词语之间可能存在多个相似度程度[20]。这在屈折语言的背景下早已观察到 - 例如,名词可能有多个词尾,如果我们在原始向量空间的子空间中搜索相似的词,可能会找到具有相似词尾的词[13, 14]。

有点令人惊讶的是,发现单词表示的相似性超越了简单的句法规律。使用单词偏移技术,对单词向量执行简单的代数运算,例如,向量("King") - 向量("Man") + 向量("Woman") 的结果最接近单词 Queen 的向量表示[20]。

在本文中,我们尝试通过开发新的模型架构来最大化这些向量操作的准确性,以保留单词之间的线性规律。我们设计了一个新的全面测试集,用于测量句法和语义规律,并展示许多这样的规律可以以高准确性学习。此外,我们讨论了训练时间和准确性如何取决于词向量的维度和训练数据的数量。

 1.2 之前的工作


将单词表示为连续向量具有悠久的历史[10, 26, 8]。 用于估计神经网络语言模型(NNLM)的非常流行的模型架构是在[1]中提出的,其中使用前馈神经网络、线性投影层和非线性隐藏层共同学习单词向量表示和统计语言模型。 这项工作已被许多其他人跟随。

NNLM 的另一个有趣的架构是在[13, 14]中提出的,其中单隐藏层神经网络首先学习单词向量。然后使用这些单词向量来训练 NNLM。因此,即使没有构建完整的 NNLM,也可以学习单词向量。在这项工作中,我们直接扩展了这个架构,只关注第一步,即使用简单模型学习单词向量的过程。

后来证明,词向量可以显著改进和简化许多自然语言处理应用[4, 5, 29]。词向量本身的估计是使用不同的模型架构进行的,并在各种语料库上进行了训练[4, 29, 23, 19, 9],一些生成的词向量可供未来研究和比较使用 。然而,据我们所知,这些架构在训练时的计算成本要比[13]中提出的模型显著更高,除了某些版本的对数双线性模型使用对角权重矩阵的情况[23]。

 2 个模型架构


许多不同类型的模型被提出来估计单词的连续表示,包括众所周知的潜在语义分析(LSA)和潜在狄利克雷分布(LDA)。在本文中,我们专注于由神经网络学习的单词的分布式表示,因为先前已经显示它们在保持单词之间的线性规律方面比 LSA 表现显著更好[20, 31];此外,LDA 在大数据集上变得计算非常昂贵。

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

对于所有以下模型,训练复杂度与

其中 是训练周期数, 是训练集中的单词数, 对每个模型架构进一步定义。常见选择是 ,最多达十亿。所有模型均使用随机梯度下降和反向传播进行训练[26]。


前馈神经网络语言模型(NNLM)


概率前馈神经网络语言模型已在[1]中提出。它由输入、投影、隐藏和输出层组成。在输入层, 个先前的单词使用 1-of- 编码进行编码,其中 是词汇表的大小。然后将输入层投影到一个投影层 ,其维度为 ,使用共享的投影矩阵。由于任何给定时间只有 个输入是活跃的,所以投影层的组合是一个相对廉价的操作。

NNLM 架构在投影层和隐藏层之间的计算变得复杂,因为投影层中的值是密集的。对于常见的选择 ,投影层的大小 可能为 500 到 2000,而隐藏层的大小 通常为 500 到 1000 个单元。此外,隐藏层用于计算词汇表中所有单词的概率分布,导致具有维度 的输出层。因此,每个训练示例的计算复杂度是

主导项是 。然而,有几种实际的解决方案可用于避免它;要么使用 softmax 的分层版本[25, 23, 18],要么完全避免使用在训练期间未归一化的模型[4, 9]。通过使用词汇的二叉树表示,需要评估的输出单元数量可以降至约 。因此,大部分复杂性是由项 引起的。

在我们的模型中,我们使用分层 softmax,其中词汇被表示为赫夫曼二进制树。这遵循了先前的观察结果,即单词的频率对于在神经网络语言模型中获取类别非常有效。赫夫曼树为频繁出现的单词分配短的二进制代码,这进一步减少了需要评估的输出单元数量:而平衡的二叉树需要评估 个输出,基于赫夫曼树的分层 softmax 只需要评估约 个 Unigram_perplexity 。例如,当词汇量为一百万个单词时,这将导致评估速度提高约两倍。虽然这对于神经网络语言模型来说并不是关键的加速因素,因为计算瓶颈在 项中,但我们将在后面提出不具有隐藏层且严重依赖 softmax 归一化效率的架构。


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


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

RNN 模型每个训练样本的复杂度是

单词表示 与隐藏层 具有相同的维度。同样,术语 可以通过使用分层 softmax 有效地减少到 。大部分复杂性来自


神经网络的并行训练


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


3 个新的对数线性模型


在本节中,我们提出了两种新的模型架构,用于学习分布式单词表示,试图最小化计算复杂性。前一节的主要观察是,大部分复杂性是由模型中的非线性隐藏层引起的。虽然这正是神经网络如此吸引人的地方,但我们决定探索更简单的模型,这些模型可能无法像神经网络那样精确地表示数据,但可能能够更有效地在更多数据上进行训练。

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


3.1 连续词袋模型


第一个提出的架构类似于前馈 NNLM,其中去除了非线性隐藏层,并且投影层被所有单词共享(不仅仅是投影矩阵);因此,所有单词都被投影到相同的位置(它们的向量被平均)。我们将这种架构称为词袋模型,因为历史中单词的顺序不会影响投影。此外,我们还使用来自未来的单词;通过在输入处构建一个具有四个未来和四个历史单词的对数线性分类器,我们已经在下一节介绍的任务中获得了最佳性能,其中训练标准是正确分类当前(中间)单词。然后,训练复杂度是

我们进一步将这个模型称为 CBOW,与标准的词袋模型不同,它使用上下文的连续分布表示。模型架构如图 1 所示。请注意,输入和投影层之间的权重矩阵与 NNLM 中的方式相同,对于所有单词位置都是共享的。


3.2 连续 Skip-gram 模型


第二种架构类似于 CBOW,但不是基于上下文预测当前单词,而是试图最大化基于同一句子中另一个单词的单词分类。更准确地说,我们将每个当前单词用作连续投影层的对数线性分类器的输入,并预测当前单词之前和之后一定范围内的单词。我们发现增加范围可以提高生成的单词向量的质量,但也会增加计算复杂性。由于远离的单词通常与当前单词的关联性较低,我们在训练示例中从这些单词中采样较少,从而给予远离的单词较少的权重。

这种架构的训练复杂度与

其中 是单词的最大距离。因此,如果我们选择 ,对于每个训练单词,我们将在范围 内随机选择一个数字 ,然后使用 个历史单词。

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

个来自当前单词未来的单词作为正确标签。这将要求我们进行 个单词分类,以当前单词作为输入,每个 个单词作为输出。在接下来的实验中,我们使用

 4 个结果


为了比较不同版本的词向量质量,先前的论文通常使用一个表格来展示示例词和它们最相似的词,并直观地理解它们。虽然很容易展示出单词“法国”与“意大利”以及可能一些其他国家相似,但当将这些向量置于更复杂的相似性任务中时,情况就会变得更具挑战性。我们遵循先前的观察,单词之间可能存在许多不同类型的相似性,例如,单词“大”与“更大”在相同意义上相似,就像“小”与“更小”相似一样。另一种关系类型的示例可以是单词对“大 - 最大”和“小 - 最小”。我们进一步将具有相同关系的两对单词称为一个问题,因为我们可以问:“与最大类似的单词与大类似的单词相同意义上的小是什么?”

有些令人惊讶的是,这些问题可以通过对单词的向量表示进行简单的代数运算来回答。要找到一个与“small”类似的单词,就像“biggest”与“big”类似一样,我们可以简单地计算向量("biggest") - 向量("big") + 向量("small")。然后,我们在向量空间中寻找与 最接近的单词,通过余弦距离进行测量,并将其用作问题的答案(在此搜索过程中丢弃输入的问题单词)。当单词向量训练得很好时,可以通过这种方法找到正确答案(单词"smallest")。

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

表 1:SemanticSyntactic 词语关系测试集中五种语义问题和九种句法问题的示例。
 关系类型  词对 1  词对 2
 常见的首都 Athens Greece Oslo Norway
 所有首都 Astana Kazakhstan Harare Zimbabwe
Currency Angola kwanza Iran rial
 城市在州内 Chicago Illinois Stockton California
Man-Woman brother sister grandson  孙女
 形容词转副词 apparent apparently rapid rapidly
Opposite possibly impossibly ethical unethical
 比较 great greater tough tougher
 最高级 easy easiest lucky luckiest
 现在分词 think thinking read reading
 国籍形容词  瑞士 Swiss Cambodia Cambodian
 过去时 walking walked swimming swam
 复数名词 mouse mice dollar dollars
 复数动词 work works speak speaks

 4.1 任务描述


为了衡量词向量的质量,我们定义了一个包含五种语义问题和九种句法问题的综合测试集。每个类别中各展示了两个示例,如表 1 所示。总共有 8869 个语义问题和 10675 个句法问题。每个类别中的问题是通过两个步骤创建的:首先,手动创建了一组相似的词对列表。然后,通过连接两个词对形成了一个大量的问题列表。例如,我们制作了一个包含 68 个美国大城市及其所属州的列表,通过随机选择两个词对形成了约 个问题。我们的测试集中仅包含单词标记,因此不包括多词实体(如纽约)。

我们评估所有问题类型的整体准确性,以及每种问题类型单独(语义,句法)。只有当使用上述方法计算的向量最接近的单词与问题中的正确单词完全相同时,问题被认为回答正确;因此,同义词被视为错误。这也意味着达到 准确度可能是不可能的,因为当前模型没有关于单词形态的任何输入信息。然而,我们相信单词向量对于某些应用的有用性应该与这个准确性指标呈正相关。通过合并有关单词结构的信息,特别是对于句法问题,可以实现进一步的进展。


准确性的最大化


我们使用了 Google 新闻语料库来训练词向量。这个语料库包含大约 60 亿个标记。我们将词汇量限制在 100 万个最常见的词汇。显然,我们面临着时间受限的优化问题,因为可以预期使用更多数据和更高维度的词向量将提高准确性。为了估计获取尽可能好的结果的最佳模型架构的选择,我们首先评估了在训练数据子集上训练的模型,词汇量限制为最常见的 个词汇。使用 CBOW 架构的结果,不同选择的词向量维度和增加的训练数据量在表 2 中显示。

可以看到,在某个点之后,增加更多维度或增加更多训练数据会带来递减的改进。因此,我们必须同时增加向量维度和训练数据的数量。虽然这一观察可能看似琐碎,但必须指出的是,目前流行的做法是在相对大量的数据上训练词向量,但规模不足。

表 2:使用 CBOW 架构的词向量在语义-句法词关系测试集的子集上的准确性,使用有限词汇表。仅使用包含来自最常见 个词的问题。

维度 / 训练词
50 13.4 15.7 18.6 19.1 22.5 23.2
100 19.4 23.1 27.8 28.7 33.4 32.2
300 23.2 29.2 35.3 38.6 43.7 45.9
600 24.0 30.1 36.5 40.8 46.6 50.4

表 3:使用在相同数据上训练的模型进行架构比较,使用 640 维词向量。准确率报告在我们的语义-句法词关系测试集上,以及[20]的句法关系测试集上。
 模型架构
语义-句法词关系测试集
 MSR 词相关性
 语义准确性 [%]  句法准确性 [%]  测试 [20]
RNNLM 9 36 35
NNLM 23 53 47
CBOW 24 64 61
Skip-gram 55 59 56

(例如 50-100)。根据方程 4,训练数据量增加一倍导致计算复杂度大约增加一倍,与向量大小增加一倍的情况大致相同。

在表 2 和表 4 中报告的实验中,我们使用了三个训练周期,采用随机梯度下降和反向传播。我们选择了初始学习率 0.025,并线性减小,使其在最后一个训练周期结束时接近零。


4.3 模型架构比较


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

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

在表 3 中,可以看到 RNN(如[20]中使用的)的词向量在句法问题上表现良好。NNLM 的向量比 RNN 明显好得多-这并不令人惊讶,因为 RNNLM 中的词向量直接连接到非线性隐藏层。CBOW 架构在句法任务上比 NNLM 表现更好,在语义任务上大致相同。最后,Skip-gram 架构在句法任务上略逊于 CBOW 模型(但仍优于 NNLM),在语义测试的部分比所有其他模型表现都要好得多。

接下来,我们评估了仅使用一个 CPU 训练的模型,并将结果与公开可用的词向量进行了比较。比较结果如表 4 所示。CBOW 模型是在子集上训练的。

表 4:在语义-句法词关系测试集上公开可用的词向量与我们模型的词向量进行比较。使用完整词汇表。
Model
 矢量维度
 训练词汇
 准确率 [%]
Semantic Syntactic Total
Collobert-Weston NNLM 50 9.3 12.3 11.0
 图里安 NNLM 50 1.4 2.6 2.1
 图里安 NNLM 200 1.4 2.2 1.8
Mnih NNLM 50 1.8 9.1 5.8
Mnih NNLM 100 3.3 13.2 8.8
Mikolov RNNLM 80 4.9 18.4 12.7
Mikolov RNNLM 640 8.6 36.5 24.6
 黄 NNLM 50 13.3 11.6 12.3
 我们的 NNLM 20 12.9 26.4 20.3
 我们的 NNLM 50 27.9 55.8 43.2
 我们的 NNLM 100 6B 34.2 50.8
CBOW 300 15.5 53.1 36.1
Skip-gram 300 55.9

表 5:对同一数据进行三个时期训练的模型和一个时期训练的模型进行比较。准确率报告在完整的语义-句法数据集上。
Model
 矢量维度
 训练词汇
 准确率 [%]
 培训时间
Semantic Syntactic Total
 3 个时代的 CBOW 300 15.5 53.1 36.1 1
 3 个时代的跳字模型 300 50.0 55.9 53.3 3
 1 个时代的 CBOW 300 13.8 49.9 33.6 0.3
 1 个时代的 CBOW 300 16.1 52.6 36.1 0.6
 1 个时代的 CBOW 600 15.4 53.3 36.2 0.7
 1 个时代 Skip-gram 300 45.6 52.2 49.2 1
 1 个时代 Skip-gram 300 52.2 55.1 53.8 2
 1 个时代 Skip-gram 600 56.7 54.5 55.5 2.5

Google News 数据的处理大约需要一天时间,而 Skip-gram 模型的训练时间大约为三天。

对于进一步报告的实验,我们只使用了一个训练周期(再次,我们线性降低学习率,使其在训练结束时接近零)。使用两倍数据在一个周期内训练模型的结果与在相同数据上迭代三个周期相比,表现出可比或更好的结果,如表 5 所示,并提供额外的小幅加速。


4.4 模型的大规模并行训练


正如前面提到的,我们在一个名为 DistBelief 的分布式框架中实现了各种模型。下面我们报告了在 Google News 6B 数据集上训练的几个模型的结果,使用了小批量异步梯度下降和自适应学习率程序 Adagrad [7]。在训练过程中我们使用了 50 到 100 个模型副本。CPU 核心数是一个

表 6:使用 DistBelief 分布式框架训练的模型比较。请注意,使用 1000 维向量训练 NNLM 将花费太长时间才能完成。
Model
 矢量维度
 训练词汇
 准确率 [%]
 培训时间
Semantic Syntactic Total
NNLM 100 6B 34.2 64.5 50.8
CBOW 1000 6B 57.3 68.9 63.7
Skip-gram 1000 6B 66.1 65.1 65.6

表 7:在微软句子完成挑战赛上模型的比较和组合。
 建筑  准确率 [%]
4-gram [32] 39

平均 LSA 相似度[32]
49
 对数双线性模型[24] 54.8
RNNLMs [19] 55.4
Skip-gram 48.0
 跳字模型 + 循环神经网络语言模型

由于数据中心的机器与其他生产任务共享,并且使用情况可能会有很大波动。请注意,由于分布式框架的开销,CBOW 模型和 Skip-gram 模型的 CPU 使用率比它们的单机实现更接近。结果报告在表 6 中。


4.5 微软研究句子完成挑战


Microsoft 句子完成挑战最近被引入作为推进语言建模和其他 NLP 技术的任务[32]。这项任务包括 1040 个句子,每个句子中缺少一个单词,目标是从五个合理选择中选择与句子其余部分最连贯的单词。已经有几种技术在这个数据集上报告了性能,包括 -gram 模型、基于 LSA 的模型[32]、对数双线性模型[24]以及目前在这个基准测试上保持最先进性能的循环神经网络组合,准确率为 [19]。

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

在表 77 中呈现了一些先前结果的简要总结以及新结果。虽然 Skip-gram 模型本身在这项任务上的表现不如 LSA 相似度,但该模型得分与 RNNLMs 获得的得分是互补的,加权组合导致了一个新的最先进结果 准确度(在集合的开发部分为 ,在集合的测试部分为 )。


学到的关系的 5 个例子


表 8 显示了遵循各种关系的单词。我们遵循上述描述的方法:关系是通过减去两个单词向量来定义的,然后将结果添加到另一个单词中。因此,例如,Paris - France + Italy = Rome。正如可以看到的那样,准确性相当不错,尽管显然还有很大的改进空间(请注意,使用我们的准确度指标)。

表 8:使用表 4 中最佳词向量的单词对关系示例(在 个单词上训练的 Skipgram 模型,维度为 300)。
 关系  示例 1  例子 2  例子 3
 法国 - 巴黎  意大利:罗马  日本:东京  佛罗里达:塔拉哈西
 大 - 更大  小:更大  冷:更冷  快:更快
 迈阿密 - 佛罗里达  巴尔的摩:马里兰  达拉斯:德克萨斯  科纳:夏威夷
 爱因斯坦 - 科学家  梅西:中场球员  莫扎特:小提琴家  毕加索:画家
 萨科齐 - 法国  贝卢斯科尼:意大利  默克尔:德国  小泉:日本
 铜 - Cu  锌:Zn  金:Au  铀:钚