首页 >> 大全

论文记录笔记NLP(一):词向量

2023-09-30 大全 33 作者:考证青年

这篇笔记主要是结合,各种学习资源,整理而成的查找笔记,整理的不好,还望指出错误,主要是用于查找与记录。

摘要

我们提出了两个新颖的模型架构用来计算大规模数据集中的连续词向量表示。计算得出的结果通过词相似任务进行衡量。通过将这些结果和目前为止表现最好的基于不同类型的神经网络的方法进行对比后发现,该方法的精度得到大幅度提升,并且计算成本要小得多。举例来说,这个方法用了不到一天的时间从含有16亿个词的数字集中训练出了高质量的词向量。不仅如此,用这些词向量进行语法和语义上的词相似度任务均获得了最好的表现.

当前很多的自然语言处理系统或技术都把词当做原子单元—词表示就是词在字典中的索引,这导致了在词和词之间不能描述相似度的问题。这样做是因为大规模数据集上应用简单模型得到的结果优于在小规模数据集上应用复杂模型的结果,具体表现在:简单性,鲁棒性,可观测性这三方面。一个具体的例子是广为流传的N元模型(N-gram),它用于统计语言模型中。今天,实际上它可能训练任何数据集(万亿级别的词)。

然而,简单模型在很多任务上都有限制。比如说:用于自动语音识别的相关域内数据量是有限的—结果往往由高质量转录的语音数据的规模决定(通常是百万级别的词)。在机器翻译中,各种各样现存的语料仅仅包含不超过十亿级别的词汇量。因此,有些情况下,简单改进基本技术不会导致任何重大进展,我们必须关注更先进的技术。

伴随着近些年机器翻译的进展,在更复杂更大规模的数据集上训练模型成为了可能,而且这些方法比简单的模型效果更好。或许用词的分布式表示是最成功的概念,比如说基于神经网络的语言模型明显地优于N元模型。

1.1 论文的目标

该论文的主要目的就是提出了一个学习高质量词向量的技术,这个技术能够应用在十亿级别的数据集,百万级别的词汇量上。据我们所知,之前没有方法能从几百万的词当中成功地学习50维到100维之间的词向量。

我们使用了最近提出的方法并测试其产生的向量的质量,我们不仅仅希望相似的词之间距离更近,而且词有多种相似度。这在曲折语言的上下文中出现过,举例来说,名词可以有不同的尾缀,如果我们在原始向量空间的子空间中搜索一个名词,那我们应该可以找到具有相似尾缀的名词。

令人意外的是,词的表示的相似度比简单的语法规则更复杂。使用词偏移技术,在词向量上执行简单的代数运算,一个典型的例子是:King的词向量减去Man的词向量加上Woman的词向量的结果最接近Queen的词向量。

在本文中,我们试图通过开发新的模型体系结构来最大化这些向量操作的准确性,以保留词之间的线性规律性。我们设计了一个新的综合测试集用于测量语法和语义规则,并且结果显示许多这样的规律可以高准确度地学习到。此外,我们讨论训练时间和精度如何依赖于词向量的维数和训练数据的数量。

1.2 之前的工作

把单词表示为连续向量拥有很长的历史;一个用于估计神经网语言模型的非常流行框架模型由提出,这个模型用一个带有线性投影层和非线性隐藏层的前馈神经网络训练得到词向量和一个统计语言模型。很多人追随这个工作继续深入。

NNLM的另一个有趣的体系结构出现在[13,14]中,在这里,首先使用具有单个隐藏层的神经网络学习单词。然后使用这个词来训练nnlm。因此,即使不构建完整的nnlm,也可以学习单词向量。在这项工作中,我们直接扩展了这个体系结构,并且只关注使用简单模型学习word向量

后来发现,单词向量化可用于显著改进和简化许多NLP应用[4、5、29]。单词向量本身的估计是使用不同的模型结构进行的,并在不同的语料库[4、29、23、19、9]上进行训练,得到的一些单词向量可用于将来研究和比较。然而,据我们所知,这些体系结构在训练方面的计算成本明显高于[13]中提出的体系结构,但使用对角权重矩阵的对数双线性模型的某些版本除外[23]

模型框架

很多不同种类的模型提出后用来估计词的连续表示,包括著名的潜在语义分析 (LSA)和潜在狄利克雷分配(LDA)。在本篇论文中,我们把重点放在通过神经网络学习到的词的分布式表示上,就像之前展示的,它能存储词与词之间的线性规则从而使得性能明显优于LSA,同时,与LDA相比,LDA在大规模数据集上的计算代价很大。

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

对于以下所有模型,训练复杂性定义为正比例与:

其中,E是-Epoch的数量,T是训练集中的单词数量,Q是根据每个模型体系结构进一步定义的。常见的选择是E=3-50,T高达10亿。所有模型都使用随机梯度下降和反向传播进行训练[26]。

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

概率化的前馈神经网络语言模型由 提出,该模型由输入层,投影层,隐藏层,输出层构成。在输入层,前N个词使用 独热(one-hot)编码,V是指词典中词的数量;接着输入层被投影到到投影层P,该投影层的维度是N×D,共享同一个的投影矩阵,因为在任何给定时间只有N个输入有效,所以投影层的组成是性价比相对较高的操作。

神经网络语言模型架构在投影层和隐藏层之间的计算变得复杂,因为投影层上的值是稠密的。一个通常的选择是N取10,那么投影层可能包含500-2000个数,与此同时,隐藏层通常有500-1000个数,而且隐藏层用来对词典中的所有词计算概率分布的,这导致输出层含有V个数(V是词典中词的个数),所以对于每一个训练样本来说模型的计算复杂度为:

其中,对计算复杂度影响最大的为H×V这一项。为避免计算该项,Mnih等人提出了一些实际的解决方案,比如用的分层版本,或者通过使用在训练过程中没有归一化的模型来完全避免归一化模型。通过将词典构造成二叉树形式,需要被估计的输出单元的数量可以下降到log2(V),这样处理的话,对计算复杂度影响最大的就变成了N×D×H这一项。

在我们的模型中,我们使用的分层的形式,词典被构造成哈夫曼树的形式,这延续了我们之前的工作:在神经网络语言模型中词频对于获取类别很有效果。在哈夫曼树上,对于高频词赋予短的二进制编码,这进一步减少了需要被估计的输出单元的数量。虽然平衡二叉树需要评估log2(V)数量的输出单元,但是基于哈夫曼树的分层结构只需要评估大约log2(V的一元困惑度)数量的输出单元。举例来说,当词典含有一百万个词时,使用该结构会使评估速度大约提升两倍,但是对于神经网络语言模型来说这并不是主要的提速,因为计算的瓶颈在于N×D×H这项,之后我们将提出不包括隐藏层的结构,这样模型的计算复杂度主要取决于归一化的效率。

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

基于循环神经网络的语言模型被用于突破前馈神经网络语言模型的一些局限性,例如前馈神经网络语言模型需要指定上下文的长度,因为理论上比起浅层神经网络,循环神经网络可以有效地表征更复杂的模式,循环神经网络模型没有投影层,只有输入层,隐藏层、输出层。使用时间延迟连接将隐藏层和自身连接的循环矩阵是这类模型的特殊之处,这允许循环模型形成某种短期记忆,因为来自过去的信息可以由隐藏层状态表示,隐藏层状态根据当前输入和上一时间中隐藏层的状态得到更新。循环神经网络在训练每个例子时的复杂度为:

这里,词的表示D和隐含层状态H拥有相同的维度,这样,项H×V能够通过使用层次降低至H×log2(V),复杂度主要取决于H×H。

2.3 神经网络的并行训练

为了训练庞大的数据集上的模型,我们在称为的大规模分布式框架之上实现了几个模型,包括本文提出的前馈神经网络语言模型和本论文提出的新模型。该框架允许我们并行地运行同一模型的多个副本,并且每个副本都通过保留所有参数的中央服务器同步地进行梯度更新。对于这种并行训练,我们使用称为的自适应学习速率程序使用小批量且异步的梯度下降。在此框架下,通常使用100个或更多的模型副本,每个副本在数据中心的不同机器上使用多个CPU内核。

3 新对数线性模型

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

新架构直接遵循我们早期工作中提出的架构,我们发现神经网络语言模型可以分两步成功训练:首先,使用简单模型学习连续词向量,然后使用N元神经网络语言模型在这些分布式词表示上进行训练。虽然后来大量的工作重点学习词向量,但我们认为我们之前提出的方法是最简单的。注意,相关模型也早已由等人提出过。

3.1 连续词袋模型

首先提出的架构类似于前馈神经网络语言模型,其中非线性隐藏层被移除并且投影层由所有词共享(不仅仅是投影矩阵),因此所有词都被投影到相同的位置(它们的向量被平均)。 我们称这种架构为词袋模型,因为词的顺序不影响投影。

此外,我们还使用前面的文字,通过用某个词前面四个词和后面四个词作为输入建立一个对数线性分类器,我们在接下来将要提到的任务里到达了最优的表现,其中训练标准是正确分类当前的词(中间的词),那么训练的复杂度为:

我们把这个模型称为CBOW,不同于标准的词袋模型,它使用上下文的连续的分布表示。这个模型框架如图1所示,注意输入层与投影层之间的权重矩阵由所有位置的词共享,和神经网络语言模型类似。

3.2 连续的Skip-gram模型

第二个框架与CBOW相似,但是不再基于上下文预测当前词了,该模型试图优化一个基于同一个句子中的其他词的词分类器;更精确的说,我们使用当前词作为带有连续的投影层的对数线性分类器的输入,然后预测当前词之前和之后一定范围内的词。我们发现增加范围能够提升词向量的质量,但同时也增加了计算复杂度。因为距离当前词远的词通常不如距离它近的词更相关,所以在我们的训练集中通过采样更少的那些距离当前词远的词从而赋给它们更小的权重。

这个框架的训练复杂度为:

Q=C×(D+D×log2(V)) (5)

这里,C是词与词之间的最大距离,所以如果我们取C=5,对于每个训练中的词,我们将随机地从1到C中选择一个数字R,然后使用当前词的前R个词和后R个词作为当前词的正确标签。这需要我们对R×2个单词做分类,分类器的输入为当前词,当前词的前R个词和后R个词作为输出,在下面的实验中,我们取C = 10。

图一:新模型架构,CBOW架构根据上下文预测当前词,Skip-gram架构根据当前词预测上下文

4.

为了比较不同版本的词向量的质量,以前的论文通常使用一个表格来显示示例词及其最相似的词,并直观地理解它们。尽管很容易表明这个词与Italy或其他一些国家相似,但在将这些向量置于更复杂的相似任务中时,它的挑战性要大得多,如下所示。我们根据前面的观察,单词之间可以有许多不同类型的相似性,例如,“big”和“”类似于“small”和“”具有相同的含义。另一种关系类型的例子可以是单词对big - 和small - [20]。如我们所问,我们进一步表示了两对与问题关系相同的词。如我们所问,我们进一步表示两对与问题关系相同的词。例如,我们可以问:”What is that is to small in the same sense as is to big?”

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

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

4.1 任务描述:

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

我们评估所有问题类型和每个问题类型(语义、句法)的整体准确性。只有当使用上述方法计算出的向量最接近的词与问题中的正确词完全相同时,才能假定问题得到正确回答;因此,同义词被视为错误。这也意味着要达到100%的准确度是不可能的,因为当前的模型没有任何有关词形的输入信息。然而,我们相信向量这个词在某些应用中的有用性应该与这个精度度量正相关。通过整合单词结构的信息,特别是在句法问题上,可以取得进一步的进展。

我们使用了谷歌新闻语料库来训练词汇向量。这个语料库包含大约6B个标记。我们已经将词汇量限制在一百万个最常见的词。显然,我们正面临时间约束的优化问题,因为可以预期,使用更多的数据和更高的维字向量都将提高精度。为了快速评估模型体系结构的最佳选择以获得尽可能好的结果,我们首先对训练数据子集上训练的模型进行了评估,词汇限制在最频繁的30K单词。表2显示了使用CBOW体系结构的结果,该体系结构具有不同的词向量维数选择和不断增加的训练数据。

可以看出,在某一点之后,添加更多维度或添加更多培训数据会减少改进。因此,我们必须同时增加向量维数和训练数据的数量。虽然这种观察可能看起来微不足道,但必须注意的是,目前流行的方法是在相对大量的数据上训练单词向量,但大小不足(如50-100)。在等式4中,两次增加训练数据的数量会导致计算复杂性的增加,与两次增加向量大小的结果大致相同。

对于表2和表4中报告的实验,我们使用了三个具有随机梯度下降和反向传播的训练Epoch。我们选择起始学习率0.025,并将其线性降低,使其在最后一个训练阶段结束时接近零。

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

训练数据由几个LDC语料库组成,并在[18]中详细描述(320M单词,82K词汇)。我们使用这些数据提供了一个比较以前训练的RNN神经网络语言模型,该模型在一个CPU上训练大约需要8周。我们使并行训练[6]对640个隐藏单元的前馈NNLM进行了训练,使用之前8个单词的历史记录(因此,NNLM的参数比RNNML多,因为投影层的大小为640×8)。

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

接下来,我们评估只使用一个CPU训练的模型,并将结果与公开可用的字向量进行比较。比较见表4。cbow模型在大约一天的时间内对新闻数据的子集进行了训练,而skip-gram模型的训练时间约为三天。

-------------------- 这些段,待翻译 开

-------------------- 这些段,待翻译 关

微软的句子完成挑战最近被作为一项推进语言建模和其他NLP技术的任务引入[32]。这个任务由1040个句子组成,每个句子中有一个单词丢失,目标是选择与句子其余部分最连贯的单词,给出五个合理的选择列表。已经报告了这组技术的性能,包括n-gram模型、基于LSA的模型[32]、对数双线性模型[24]以及目前在这一基准上保持55.4%精确度的最先进性能的复发神经网络组合[19]。

我们研究了Skip-Gram体系结构在这项任务中的性能。首先,我们在[32]中提供的50M单词上训练640维模型。然后,我们用输入的未知词来计算测试集中每个句子的分数,并预测句子中所有周围的单词。最后一句话的得分就是这些个别预测的总和。根据句子得分,我们选择最可能的句子。

表7简要总结了一些以前的结果以及新的结果。虽然skip-gram模型本身在这项任务上的表现并不比lsa相似性更好,但该模型的分数与用获得的分数是互补的,加权组合导致了一个新的最新结果,准确性为58.9%。

4 学习到的关系示例

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

也可以应用矢量运算来解决不同的任务。例如,通过计算单词列表的平均向量并找到最远的单词向量,我们已经观察到了选择不在列表单词的良好准确性。在某些人类智力测试中,这是一种流行的问题。显然,通过使用这些技术仍然有很多东西等待我们发现。

6.

本文研究了在一组句法和语义语言任务中,由不同模型导出的词的矢量表示的质量。我们观察到,与流行的神经网络模型(前馈和循环)相比,使用非常简单的模型结构来训练高质量的字向量是可能的。由于计算复杂度低得多,从大得多的数据集中计算高维字向量是可能的。使用分布式框架,可以训练cbow和skip-gram模型,甚至在拥有一万亿个单词的语料库上,基本上不限制词汇的大小。这比之前公布的同类模型的最佳结果大几个数量级。

-2012任务2[11]是一项有趣的任务,其中词矢量化技术最近被证明显著优于先前的技术水平。公共可用的RNN向量与其他技术一起使用,以使的秩相关比之前的最佳结果提高50%以上[31]。基于神经网络的词向量以前应用于许多其他NLP任务,例如情感分析[12]和释义检测[28]。可以预期,这些应用程序可以从本文描述的模型体系结构中获益。

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

7.-Up Work

在完成该论文的最初版本之后,我们开源了单机多线程C ++代码,用于计算词向量,同时使用CBOW模型和Skip-gram模型。训练速度明显高于论文之前记录的速度,举例来说,对于典型的超参数选择,模型每小时大约能够训练十亿级别的词向量。我们还开源了140多万个表示命名实体的向量,这是在超过1000亿词的语料上训练得到的。我们的一些后续工作将在即将发布的NIPS 2013论文中发表

-------------未完,待完善

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了