Efficient Estimation of Word Representations in Vector Space翻译

摘要

我们提出了两种新的模型体系结构,用于从非常大的数据集计算单词的连续向量表示。这些表征的质量通过一个单词相似性任务来衡量,然后将结果与之前基于不同类型的神经网络的表现最好的技术进行比较。我们观察大改善准确性以低得多的计算成本,即需要不到一天学习优质词向量从16亿字数据集。此外,我们表明,这些向量提供最先进的性能测试集测量句法和语义词相似之处。

1. 引文

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

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

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

1.1 本文目标

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

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

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

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

1.2 现有工作

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

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]类似,为了比较不同的模型架构,我们首先将模型的计算复杂度定义为需要访问的参数的数量,以充分训练模型。接下来,我们将尝试最大化精确度,同时最小化计算复杂度。

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

NNLM和RNNLM的参考资料:神经网络语言模型

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

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

由于投影层中的值比较密集,NNLM体系结构使得投影层和隐层之间的计算变得复杂。对于通常选择的N = 10,投影层P的大小可能是500到2000,而隐藏层的大小H通常是500到1000个单位。并利用隐含层计算词汇中所有单词的概率分布,得到维数为V的输出层。因此,每个训练示例的计算复杂度为
Q = N × D + N × D × H + H × V (2)
主要项是H乘以V。然而,提出了一些实际的解决方案来避免它;要么使用softmax的层次版本[25,23,18],要么使用在训练中没有标准化的模型来完全避免标准化模型[4,9]。有了词汇表的二叉树表示,需要计算的输出单元的数量可以下降到log 2 (V)左右。因此,大部分复杂性是由N×D×H这一项引起的。

在我们的模型中,我们使用分层的softmax,其中词汇表表示为霍夫曼二叉树。这与之前的观察结果一致,即在神经网络语言模型[16]中,单词的频率对于获取类别非常有效。哈夫曼树为频率高的单词分配短编码,这将大大减少输出单元需要计算的数目;与平衡二叉树在输出单元需要计算log2(V)个单元相比,基于 hierarchical softmax的哈夫曼树只要大概log2 (Unigram-perplexity(V ))。虽然这对于神经网络LMs来说并不是关键的加速,因为计算瓶颈在N×D×H项,但我们稍后将提出没有隐藏层的架构,因此严重依赖softmax归一化的效率。

具体参考:
NNLM
神经网路语言模型(NNLM)的理解
基于Hierarchical Softmax的模型

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

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

RNN模型每训练例的复杂度为
Q = H × H + H × V (3)
其中表示词D与隐含层H具有相同的维数,通过使用softmax分级,术语H * V可以有效地降为H * log2 (V)。大部分的复杂性来自于H乘以H。

RNNLM

2.3 神经网络的并行训练

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

3. 新的log-linear模型

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

新架构直接按照那些在我们之前提出的工作(13、14),在那里发现神经网络语言模型可以成功地训练两个步骤:第一,使用简单模型学习连续词向量;然后,N-gram NNLM是在这些单词的分布表示上训练的。虽然后来有大量的工作集中在学习单词向量上,但我们认为[13]中提出的方法是最简单的。值得注意的是,相关的模型也在更早的时候被提出[26,8]。

3.1 Continuous Bag-of-Words Model

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

3.2 Continuous Skip-gram Model

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

这个架构的训练复杂度正比于Q = C × (D + D × log 2 (V )) (5)
C是单词间的最大距离。

一篇很好的全文笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值