自然语言处理(NLP)目前还没有找到合适的初始化方法。它不能像计算机视觉那样使用预训练的模型来获取图像的基本信息。我们在自然语言处理领域经常使用随机初始化词。向量。本文希望首先通过MT-LSTM学习到一个词向量,它可以表示词汇的基本信息,然后用这个词向量辅助其他自然语言处理任务来提高性能。本文首先介绍了如何训练一个带有注意力机制的神经机器翻译,然后介绍了如何提取模型的通用词向量并将其应用到其他任务中。了解上下文对于自然语言处理中的大多数问题都是必要的。为了生成英语句子的德语翻译,翻译模型需要了解英语句子中的单词是如何组合在一起的。为了知道哪些词是最重要的,文本摘要模型还需要上下文。执行语义情感分析的模型需要了解如何挑选出改变句子情感的关键词。问答模型依赖于对问题中单词分布如何改变答案中单词分布的理解。因为这些模型都需要了解上下文如何影响单词的含义,所以这些模型中的每一个都可以从与已经学会如何将单词上下文化的模型结合中受益。1.在自然语言处理(NLP)中模仿IMAGENET-CNN模式机器视觉在寻找可重用表征方面比NLP更成功。在大型图像分类数据集ImageNet上训练的深度卷积神经网络(CNN)通常用作其他模型的组件。为了更好地对图像进行分类,卷积神经网络通过逐渐构建更复杂的模型来理解像素与其他像素之间的关系。基于这些表示,模型可以解决图片中的说话、人脸识别和目标检测等问题,而不是从头开始。自然语言处理也应该做一些类似的表示来解决单词和上下文之间的关联。为了教神经网络理解上下文中单词的含义,我们首先教它如何将英语翻译成德语。然后,我们展示了可以重用此翻译任务的神经网络模仿了机器视觉中在ImageNet上训练卷积神经网络的方式。以下是我们的做法:使用神经网络的输出,我们称之为上下文向量(CoVe),作为神经网络的新输入,用于其他自然语言处理任务。在我们的实验中,为这些网络提供CoVe总是可以提高模型的性能,这让我们非常兴奋,因此我们发布了这个能够生成CoVe的可训练神经网络,以进一步探索自然语言处理中可能的可能性。重用令牌。2.词向量如今大多数用于自然语言处理的深度学习模型都依赖词向量来表示单个词的含义。对于不熟悉这个领域的人来说,可以这么简单地理解:我们将每种语言中的每个单词与一系列称为向量的数字相关联。图1图1是深度学习中很常见的一种情况,将单词表示为向量。深度学习模型将序列化的单词读取为单词向量序列,而不是文本。1.预训练的词向量有时在为特定任务训练模型之前,词向量被初始化为随机数。但是,还有其他常见的方式,例如使用word2vec、GloVe或FastText来初始化词向量。前两种方法逐渐包含这样的假设,即一个词的至少部分含义与其用法有关。Word2Vec训练一个预测局部上下文窗口的模型;该模型发现一个词,然后预测它周围的词。图2图2是像word2vec和GloVe这样的算法能够生成一些相关的词向量,这些词向量通常在自然语言中是相关的。如图所示,在“Wordvectorsarelistsofnumbers”这句话中,“vector”的向量围绕着“lists”、“of”和“numbers”这三个词。GloVe采用了类似的方法,它还明确附加了有关每个单词如何与其他单词一起出现的统计信息。在这两种方法中,每个词都由相应的词向量表示,并且训练过程将词向量之间的关联与词在自然语言中的使用方式联系起来。2.预训练词向量的自然属性将这些词向量视为空间中的点,我们发现了一些非常有趣的关联,让人联想到自然语言中单词之间的语义关联。图3.男女词对向量分布的差异(Penningtonetal.2014)图4.a-b,c:d的关系意味着:c+(a-b)将生成最接近d的向量(Mikolovetal.2013))图5.比较向量和最高级向量之间的区别很明显。对于目标任务,使用word2vec或GloVe的中间结果作为预训练词向量来初始化任务,会给目标任务的模型带来一些优势。.因此,由word2vec或GloVe生成的词向量已经找到了在许多自然语言处理任务中进行广泛实验的方法。3.Hiddenvectors这些预训练的词向量表现出非常有趣的特性,与随机初始化的词向量相比有显着的性能提升。但如前所述,单词很少单独出现。使用预训练词向量的模型必须学习如何使用它们。在这项工作中,我们训练了一个中间任务来获取环境词向量,通过截断找到比随机初始化方法更好的向量。1.编码器将词向量上下文化的一种常见方法是使用递归神经网络(RNN)。递归神经网络是可以处理可变长度向量序列的深度学习模型。此属性使它们适合处理词嵌入序列。为了更好地处理长序列,我们使用一种特定类型的RNN,即长短期记忆(LSTM)网络。在此过程的每一步,LSTM都会接收一个词向量并输出一个称为潜在向量的新向量。这个过程通常称为对序列进行编码,完成编码过程的神经网络称为编码器。图6.LSTM将一个词向量序列作为输入并输出一个新的隐藏向量2.双向编码器隐藏向量不包含有关当前输入序列之后出现的词的信息,但这很容易改进。我们可以反向运行LSTM以获得一些反向输出向量。我们将这对前向-后向LSTM视为一个单元,通常称为双向LSTM。它以一系列词向量作为输入,运行正向和反向LSTM,将每个LSTM的相应输出连接成一个输出,并返回生成的隐藏向量。图7.每个词前后都有信息的双向编码器。我们将两个双向LSTM堆叠在一起作为编码器。第一个双向LSTM处理整个序列,然后将输出作为输入提供给第二个双向LSTM。4.机器翻译中的隐藏向量因为事实证明,预训练词向量对许多NLP任务都是有用的表示,所以我们想预训练我们的编码器,以便它输出普遍有用的隐藏向量。对于预训练,我们选择机器翻译作为我们的首要任务。与其他自然语言处理任务相比,机器翻译具有更大的数据集。此外,翻译任务的性质似乎对训练通用上下文向量更有吸引力。例如,翻译似乎比文本分类等其他任务更需要语感来理解。1.解码器我们通过教编码器如何将英语翻译成德语来教它生成有用的潜在向量。解码器为英语句子生成隐藏向量,另一个称为解码器的神经网络在生成德语句子时参考这些隐藏向量。正因为LSTM是我们编码器的基础,所以LSTM在解码器中也起着非常重要的作用。和编码器一样,我们在解码器中也使用了一个两层的LSTM。用编码器的最终状态初始化解码器,通过读入德语词向量启动解码器,然后生成解码状态向量。图8.解码器使用单向LSTM从输入词向量创建解码器状态。2.注意力机制为了决定接下来翻译英文句子的哪一部分,注意力机制需要从隐藏向量回溯。它使用状态向量来区分每个潜在向量的重要性,并记录其观察结果,注意机制生成一个新的向量,我们可以将其称为上下文调整状态。图9.注意力机制使用隐藏状态和解码状态生成上下文调整状态3.生成模型生成器然后根据上下文调整状态决定生成哪个德语单词,上下文调整状态为传回给解码器中,让解码器对其翻译的结果有准确的感知。解码器重复这个过程,直到完成所有翻译。这是一种标准的基于注意力的编码器-解码器结构,用于学习机器翻译等序列到序列的任务。图10.生成器使用上下文调整状态来选择输出词提取的LSTM用作机器翻译的编码器。我们将这种预训练的LSTM称为机器翻译LSTM(MT-LSTM),并使用它为新句子生成潜在向量。当我们在其他自然语言处理模型中使用这些机器翻译潜在向量时,我们称它们为上下文向量(CoVe)。图11.两种通用架构:a)。我们如何训练编码器;b).我们如何在新的任务特定模型上使用经过训练的编码器。在文本分类和问答模型中使用预训练的MT-LSTM生成上下文向量(CoVe)的优势,但CoVe可用于任何以向量序列作为输入的模型。1.文本分类图12.Biattentionclassificationnetwork我们对两种不同类型的文本分类任务进行了实验。第一个是使用单一输入的任务,包括情感分析和问答分类。第二个有两个输入,但它只包含蕴含类。我们在这两个任务上都使用了双注意力分类网络(BCN)。如果只有一个输入,我们会复制它来呈现一个双输入的形式,但同时让模型知道,避免做一些多余的计算。在不了解BCN细节的情况下,我们可以了解CoVe以及使用它的好处。2.问答实验在问答实验中,我们使用动态共同注意网络(DCN)。在分析机器翻译(MT)数据集对其他模型的性能影响时,我们使用了经过轻微修改的DCN,而在测试CoVe和CoVe结合字符向量的全局效果时,我们使用了修改后的DCN+。表1:我们实验中的所有数据集和任务3.Glove+CoVe对于每个任务,我们用不同的方式来表示输入序列。我们可以使用随机初始化的词向量、Glove或Glove和CoVe的组合。在最后一种情况下,我们通过预训练的MT-LSTM运行它以获得CoVe序列,并使用相应的Glove序列扩展每个CoVe序列。MT-LSTM和Glove都没有被用作分类任务或问答模型训练过程的一部分。实验结果表明,包含CoVe和Glove的情况总是比随机初始化词向量和Glove单独的情况具有更好的性能。图13.结合使用Glove和CoVe可提高验证性能。4.更多机器翻译-->更好的上下文向量改变用于训练MT-LSTM的数据量表明:更大的数据集将获得更高质量的MT-LSTM,这里是更高质量的模型意味着用它生成的CoVes通常会产生在分类任务和问答任务上表现更好。结果表明,使用CoVe训练的MT-LSTM在较小的机器翻译数据集上的性能提升很小。在某些情况下,在小型机器翻译数据集上训练的MT-LSTM会生成损害模型性能的CoVes。这可能意味着使用CoVe获得的性能增益来自强大的MT-LSTM模型。这也意味着机器翻译训练集所在的域会影响MT-LSTM在其他任务上的最终表现。图14图14.用于训练MT-LSTM的数据集大小会对使用CoVe的模型的验证性能产生重大影响。这里,MT-Small是2016年的WMT多模态数据集,MT-Medium是2016年的IWSLT训练集,MT-Large是2017年的WMT新闻跟踪数据集。5.上下文向量和特征向量在这些实验中,我们尝试添加Glove和CoVe的特征向量。结果表明,对于某些任务,字符向量与Glove和CoVe一起产生更好的性能。这意味着CoVe为字符级和单词级信息带来了补充信息。图15.CoVe是字符级和单词级信息的补充6.测试性能我们最好的模型都使用Glove、CoVe和字符级向量。我们针对测试集上的每个任务测试具有最高验证性能的模型。上图显示添加CoVe总是从起点提高性能,下表显示我们的模型足以在7个任务测试集的3个上达到最先进的水平。表2.我们的模型与其他机器学习方法在测试时的性能比较(2017.7.12)。值得注意的一点是,正如我们使用机器翻译数据来改进我们的模型一样,SST-2和用于IMDb任务的最先进模型也使用外部监督训练集来改进模型。对于SST-2任务,最佳模型使用了8200万条未标记的亚马逊评论,IMDb任务的最佳模型使用了50,000条未标记的IMD评论和22,500个监督训练样本。这两种方法都使用比机器翻译数据集更相似的数据来扩充数据。这些模型的优点可能突出了附加数据的种类和有益的附加数据之间的联系。6.结论我们展示了如何训练神经网络来实现机器翻译,如何让模型学习上下文中单词的表示,我们还展示了我们可以使用网络的一部分(MT-LSTM)来帮助网络学习其他自然语言处理任务。MT-LSTM为分类任务和问答模型提供了上下文向量(即CoVe)并提高了它们的性能。我们用于训练MT-LSTM的数据越多,模型的性能提升就越大,这可能与使用其他形式的预训练向量表示带来的性能提升相辅相成。通过结合来自GloVe、CoVe和特征向量的信息,我们能够提高基线模型在许多NLP任务上的性能。1.代码发布我们希望我们最好的MT-LSTM模型(我们用来生成CoVe的模型)将进一步激发对自然语言处理中可重用表示的探索。该代码包含如何在PyTorch上生成CoVe的示例(请参阅代码的原始链接)。原文:https://einstein.ai/research/learned-in-translation-contextualized-word-vectors【本文为机器之心专栏原文翻译,微信公众号“机器之心”(id:almosthuman2014)》】点此阅读该作者更多好文
