APP下载

基于XLNET 的抽取式多级语义融合模型*

2020-07-19胡益淮

通信技术 2020年7期
关键词:语义向量单词

胡益淮

(杭州电子科技大学计算机学院,浙江 杭州 310018)

0 引言

在计算机算力越来越强的如今,许许多多的人工智能系统得到了发展与落地,诸如图像风格化、人脸识别技术、机器翻译等等。但仍有不少的人工智能任务仍然处于研究之中,机器阅读理解(Machine Reading Comprehension,MRC)任务便是其中之一。

MRC 任务一直是自然语言处理领域中最关键的一项任务之一。在2015 年各种大规模阅读理解数据集公布之前,MRC 往往使用传统的自然语言处理(Neutral Language Processing)采用基于人工规则的模式匹配方法,或者借鉴信息抽取的方法构造关系型数据库来寻得答案。但是这些方法均效率低下,且准确率不高。

这种情况由于深度学习技术的发展,新模型、新机制的提出得到了不断改善。词向量与注意力机制的提出,使得基于深度学习的阅读理解模型有了一个轮廓,可分为词向量模块、编码模块、注意力模块以及答案预测模块。

词向量模块将所有的单词映射到一个向量空间中,使得每个单词具有唯一的向量表示。

2013 年Google 开源了用于词向量计算的工具-word2vec[1],用以替代词袋模型,word2vec 基于局部语料库训练的,其特征提取是基于滑窗的。次年Jeffrey Pennington,Richard Socher,Christopher D。Manning 公开了Glove 词嵌入工具[2],有别于word2vec 的是glove 工具基于全局语料库训练,从某种意义上看,Glove 是更换了目标函数和权重函数的全局word2vec。但是这种做法有个明显的缺点,就是对于每一个单词都有唯一的一个embedding表示,显然对于多义词显然这种做法不符合直觉,而且单词的意识又和上下文相关。2018 年,Matthew E Peters 和Mark Neumann 等人提出了ELMo(Embedding from Language Models 模 型[3]。ELMo模型是从深层的双向语言模型(deep bidirectional language model)中的内部状态(internal state)学习而来的,他能够学习到词汇用法的复杂性,比如语法、语义,并且能够学习到不同上下文情况下的词汇多义性。虽然ELMo 模型结合了上下文的信息,但是其仅仅将节点的左右信息做了一次拼接,其左信息未包含右信息,反之亦然。从这个层面上来说,ELMo 依然只是单向的语言模型。同年OpenAI团队的Alec Radford 与Karthik Narasimhan 等人提出了GPT 预训练模型[4],他们第一个用Google 团队提出的Transformer 网络替代LSTM 网络作为语言模型来更好的捕获长距离语言结构。与ELMo 只提供词向量不同的是,GPT 预训练的模型一同提供给下游任务,供具体任务精调(Fine-Tune),但依然只是单向的语言模型。同年Google 提出了BERT(Pre-training of Deep Bidirectional Transformers for Language Understanding)预训练模型[5],其使用了Transformer 的编码器作为语言模型,采用了全连接的网络结构,并在语言模型预训练的时候,提出了两个新的目标任务(即遮挡语言模型MLM 和预测下一个句子的任务),使得训练出来的结果能够充分表示理解上下文之后的单词。但是BERT 没有考虑到在训练过程中屏蔽的单词与未屏蔽的单词之间的关系。2019年Google团队又提出了XLNET模型[6],其基于自回归(Autoregressive,AR)语言模型实现了新的双向编码,并且由于AR 方法的缘故,避免了BERT 的缺点。

编码模块将尚未包含上下文信息的词向量表示的文本序列作为输入,通过双向循环神经网络(Bidirectional Recurent Neural Network,BiRNN和向长短期记忆(Bidirectional Long Short-Term Memory,BiLSTM)[7]提取文本序列的特征,提取的特征拥有丰富的上下文信息以及语义信息。

每一篇文章的侧重点并不相同,因此各个文本序列中的各个单词所占的比重并不相同,需要通过注意力机制来挑选出与问题相关性最大的部分,排除不相干的部分。Karl Moritz Hermann 等学者在2015 年发表的论文“Teaching Machines to Read and Comprehend”中提出了两个基础模型——“Attentive Reader”和“Impatient Reader”,成为了后来许多研究的基础。次年IBM 公司的Kadlec提出了Attention-Sum Reader,该模型直接利用attention 机制基于问句表示在文章中寻找最相关的词作为答案。2017 年,Google 去掉RNN 仅仅依赖于Attention 机制实现了Transformer,并提出了多头注意力(Multi-headed attention)机制方法,在编码器和解码器中大量的使用了多头自注意力机制(Multi-headed self-attention)。由于attention 机制可以看到全文的特性,新的Transformer 效果显著,并且加快了训练速度。

答案预测模块是MRC 任务的核心部分。根据数据集的不同,答案的种类也不相同,新的答案预测模块也被不断提出。从最早的抽取式数据集(如SQuAD[8])到生成式数据集(如MS MARCO),不同的答案预测模块生成的答案也从文中文本序列到文本生成。

2016 年,Rajpurkar 等人提出阅读理解数据集SQuAD(Stanford Question Answering Dataset),该数据集包含10 万个(问题,原文,答案)三元组,原文来自于536 篇维基百科文章,而问题和答案的构建主要是通过众包的方式,让标注人员提出最多5 个基于文章内容的问题并提供正确答案,且答案出现在原文中。2018 年Percy Liang 等研究者介绍了机器阅读理解问答数据集SQuAD 的新版本SQuAD 2.0[9],相较于SQuAD 1.0 版本,其增大了数据集量,并且引入了不可回答问题,其难度要高于SQuAD 1.0.

基于上述研究现状,本文针对于SQuAD 2.0 数据集提出一种基于XLNET 的机器阅读理解模型,并获得了78.2%的EM 与81.75%的F1 成绩。

1 基于XLNET 的机器阅读理解模型

当前主流的机器阅读理解模型在表示层一般都是选用GloVe 词向量进行文本表征,GloVe 词向量的提出使得机器阅读理解模型的表现向前进了一步,模型在各个数据集的成绩也得到了提升。但是GloVe 词向量仍然存有不少的问题,其中之一就是无法处理自然语言文本当中的一词多义的情况。无论中文还是英文均存在一词多义的情况,是自然语言处理中一个较难处理的点。BERT 模型解决了一词多义的问题,因此其也成为了现今如何表示词向量的一个选择。BERT 模型还借鉴了图像领域的迁移学习的模式,通过了精调阶段使预训练的结果能够更好地表示当前数据集中各个单词的词义。但是BERT 模型仍然存在问题,即没有考虑到单词与单词之间的独立性,并且预训练阶段与精调阶段的过程存在不一致性的情况,不能更好地表示单词的词义。由于上述两个词向量在设计方面存在不足,本文提出的模型在表示层引入了XLNET 语言模型对文本进行表示,以期能够提升模型的效果,模型结构图如图1 所示。

在深度学习领域,特征的提取显得极为重要,选择优秀的特征还是平庸的特征会在很大程度上影响模型的效果。这一特性在计算机视觉领域得到了充分的证明,除此之外,计算机视觉方向的图像识别领域有人认为,一副图像是由不同层次的特征构成的,不同层次的特征拥有不同的信息,所有信息汇聚即可识别目标。自然语言的文本内容也可类比于计算机视觉领域的一幅幅图像,可以认为文本是由大量的语义构成的。因此,本文提出的模型在编码区采用了多层双向LSTM 网络对文本的语义进行提取。由于机器性能的限制,本文中在实验阶段仅采用了两层双向LSTM 网络来获取文本的语义,将其表示为低级语义与高级语义。

图1 基于XLNET 的机器阅读理解模型

在将文本表示为两层语义后出现了问题。多层次的语义会使得文本内容变得片面,若是仅仅将多层次的语义分别通过后续网络,则后续网络无法利用片面的信息得出正确的结果。FusionNet 模型[10]的出现为多层次信息融合提供了方法,而之前的模型受制于学习能力、计算能力的限制通常只利用了文本的部分信息。因此本文提出的模型在交互层采用了多层注意力机制对多层次语义的融合表征。

本文提出的模型参考了DenseNet 模型[11],DenseNet 模型是图像领域的优秀模型,其核心思想是网络每一层的输入为前面所有层的输出,该模型有效地降低了梯度消失问题,并加强了特征的传递。在获取到多层次语义的融合表征后,将其与文章、问题的原始输入进行组合,并在组合后通过双向LSTM 对文章、问题的信息进行编码。

SQuAD 数据集的答案是原文中的文本片段的起始位置与终止位置,为了对这两个位置进行预测,模型的输出层选用了指针网络[12]。

1.1 基于XLNET 生成词向量

目前,自然语言处理任务的数据是都是基于词向量表示的形式,把文本符号先用向量表示出来,然后使用深度学习的方法在不同层面抽取和具体下游任务相关的文本特征。可以看出,词向量表示是所有自然语言处理任务的基础,所有的深度学习模型都是建立在词向量表示的基础上的。因此,通过学习得到更具有表达性、具有丰富语义的向量表示,可以提高整个模型的性能。在机器阅读理解任务上,将文本表示成向量是机器阅读理解模型架构中的第一步。目前主流的模型使用词向量Glove 和字符向量表示(character embedding)组合的方式去实现。在本文的工作中,使用了XLNET 语言模型生成词向量,为了对比不同词向量对机器阅读理解模型的影响,本文在实验的过程中还实现了以GloVe 词向量以及BERT 模型生成的词向量作为输入的对照组。

由于数据集均以json 的形式存储,需要将网页数据解析成结构化的数据。首先采用ujson 模块快速解析json 文件,并将所有的中文引号处理成英文的引号,避免在利用spacy 工具处理数据时遇到特殊字符出现错误。

由于XLNET语言模型不同于传统的语言模型,如word2vec、GloVe。故其输入文本数据的格式也不同。

由于数据集的每一条数据均以文本形式读取,而词向量以单词为单位,故需要进行分词操作以得到单词。不同于GloVe 的是,XLNET 语言模型采用了Sentence Piece 来实现分词和WordPiece 切分,得到单词列表以及数字序列,数字序列代表原文本中的单词在单词列表中的序号。

XLNET 预训练语言模型预训练的数据格式如图2 所示。

图2 预训练数据格式

其中的CLS 特殊符号代表一个文章、问题的结束,并且用SEP 符号来隔离文章与问题。序列总长度可自行设定,在本次实验中的序列长度为512,并且问题内容为主。假设问题长度为48,则文章长度不可超过461 个单词。若是总序列超出了设定的序列长度,则将文章序列后多余的部分截断,反之若是总序列不足设定的序列长度,则在文章序列后面以0 填充。SQuAD 数据集的答案是两个数字,意味着答案在文本中对应字符的位置,在对文章进行截断后将造成一个问题,即该问题无解(无解是SQuAD 2.0 新引入的一个概念)。为了应对这个问题,若答案序列在文章中的内容被截断,则以一个特殊的标识代替,意味着本题无法回答。在SQuAD数据集中,以-1 来表示无法回答的问题。

将预处理好的数据作为XLNET 语言模型的输入,通过XLNET 语言模型提供的get_sequence_output 方法来获取文本中每一个句子(由问题、答案组成)的词向量。

1.2 基于注意力机制的多层语义融合

在表示层得到XLNET 语言模型输出的词向量后,经由编码层得到了低级语义Hl、高级语义Hh以及混合语义Hf等三层语义,在交互层经由多层注意力机制将文章与问题的语义相互结合,最终得到一个拥有所有语义编码的输出序列,本小节将详细介绍这一过程。

在第一层多级注意力机制中,将三级语义以文章、问题进行分离重新组合,得到与。之后采用FusionNet 模型的理念将两类语义在各个级别上进行交互。这里以低级语义为例,先计算出两者的仿射矩阵S:

接着采用一个双向注意力机制来计算交互表示

其中的softmax(·)是标准化函数。

之后运用同样的注意力机制得到三层语义的交互表示之后,再将其重新组合构成。紧接着将三层语义及文章与问题的交互表示拼接在一切,并经由一层双向LSTM 得到HA:

HA即代表着文章与问题不同层次之间所有语义及关系。

最后将原始的词嵌入后的文章、答案的内容V=[P;Q]与HA相拼接,先通过自注意力机制,再经由最后一层双向LSTM 网络,得到最终的文章、答案表示的内容O=[Op;Oq],公式化描述如下:

1.3 基于指针网络的答案预测模块

指针网络(Pointer Networks)是Seq2Seq 模型与注意力机制结合产生的一个网络。它不是把 一个序列转换成另一个序列,而是产生一系列指向输入序列元素的指针。最基础的用法是对可变 长度序列或集合的元素进行排序。在本章节中在SQuAD 数据集上进行实验,只需要预测答案的起始位置与终止位置即可,故由指针网络来作为本章模型的输出层。

由于指针网络需要一个初始状态进行计算,所以需要使用上一层中问题的表示向量算一个初始状态向量。计算公式如下:

其中,Wq是可学习的权重矩阵,代表着第i个单词在问题中的表示,然后我们将cq作为指针网络的初始状态向量。

接下来根据指针网络公式,计算答案的起始位置和终止位置:

起始位置:

终止位置:

在训练时,使用交叉熵损失函数,其中第n条数据的答案片段在原文中的开始位置和终止位置分别用xn,yn来表示:

2 实验结果分析

为了评估本文提出模型的性能,将本文模型在SQuAD 2.0 数据集中测试的结果与其他模型的结果进行了对比,实验结果如表1 所示。

表1 本文模型与其他模型准确率对比

本文提出的模型获得了78.32%的EM 分数以及81.75%的F1 分数,超过了Match-LSTM 模型与BiDAF 模型,表明本文提出的多层语义融合的方法比早期模型能够获取更多文本语义。但 是本文提出的模型准确率没有R-NET 模型的高,说明本文所提出的模型仍旧存在局限性,可能原因为多层语义的获取数量不够,在实验过程中由于机器性能的缘故,仅仅采用了两层BiLSTM 进行了语义获取,如果借鉴图像领域对卷积神经网络模型的研究,可以猜测更多层次的语义能够 帮助模型获得更加优异的成绩,但是这个层次数量并不是越多越好,需要经过不断的调整获取最 佳数量,该部分内容有待后续研究。

3 结语

本文针对SQuAD 2.0 数据集提出了基于XLNET的机器阅读理解模型,该模型由四个部分组成:表示层、编码层、交互层以及输出层。表示层通过XLNET 生成词向量,编码层通过双向LSTM 网络来对文本进行编码,并抽象成多级语义,交互层将语义进行融合并让答案与文本进行信息交互,输出层利用指针网络输出答案。该模型引入了XLNET 语言模型来生成词向量,使得词向量能够富含丰富的语义,并为机器阅读理解的研究提供了新的模型思路。

猜你喜欢

语义向量单词
真实场景水下语义分割方法及数据集
向量的分解
聚焦“向量与三角”创新题
单词连一连
看图填单词
向量垂直在解析几何中的应用
“吃+NP”的语义生成机制研究
向量五种“变身” 玩转圆锥曲线
情感形容词‘うっとうしい’、‘わずらわしい’、‘めんどうくさい’的语义分析
汉语依凭介词的语义范畴