基于多层注意力机制的回指消解算法

2020-02-19 11:26刘雨江付立军刘俊明吕鹏飞
计算机工程 2020年2期
关键词:指代注意力向量

刘雨江,付立军,刘俊明,吕鹏飞

(1.中国科学院大学 计算机科学与技术学院,北京 100049; 2.中国科学院沈阳计算技术研究所 研究生部,沈阳 110168;3.中国地质图书馆信息技术研究中心,北京 100083)

0 概述

指代是常见的语言现象,在描述性语言中较为频繁地出现,尤其是当语料篇幅较长时,极易造成信息抽取不完整的情况。指代关系既要考虑一个或多个词对组成实体的指代,又要考虑名词、名词性词组以及隐藏名词或指代部分对上述实体的指代。根据被指代部分(或先行词部分)与指代部分是否有语义关联,指代现象被分为共指和回指[1]。共指表示被指代部分与指代部分均指向客观存在的同一个实体;回指表示被指代部分与指代部分仅在特定语境下才有关系,即指代部分在某些上下文中时能指代被指代部分,当脱离这种上下文时不能表明是否存在指代关系。根据被指代部分和指代部分是否出现隐藏实词,指代现象又被分为显性指代和零指代。由于在数据集中显性指代和零指代会同时出现,因此对这2种情况分别进行考虑。在具体实验中,第1种为显性指代和零指代混合出现的情况,第2种为仅有零指代出现的情况。本文主要研究回指关系判别,属于回指解析。与文献[2-3]的目的相似,通过回指消解,减少指代现象干扰,可以提高语料在后续深入研究时的可用性,为信息抽取、知识图谱构建、人工智能对话等任务提供高质量语料。

对于回指关系判别,需要上下文与被指代部分和指代部分的词共同构建输入。文献[4]基于上下文编码思想,构建了2个多层编码器,同时对上下文和待翻译语料进行编码,完成了翻译过程中指代消解工作,而文献[5-6]则采用基于事实方法。文献[4]通过构建传统规则模板实现基于全局推理的回指消解方法,提高了位置三元组信息抽取的准确率。在共指消解研究上,更多地考虑了不同表达对同一事实的不同描述方式。文献[6]通过识别出同一个事实,再以该事实为核心寻找并抽取相关信息。另有一部分文献的指代消解研究方法基于mention-ranking方法,即先获取所有可能被指代的部分,再根据指代部分和这些被指代部分评分进行筛选,评分最高的就是当前指代结果。文献[7-9]均采用此方法,区别在于文献[7]使用RNN训练被指代部分集合与指代部分组成序列,文献[8]使用普通神经网络训练指代部分与被指代部分集合组成向量,文献[9]使用强化学习方法使得被指代部分进行选择时具有倾向性。在研究范畴上,文献[7]是共指消解,文献[8-9]均为回指消解。针对专有名词和代词,文献[10]采用表述识别二次分类,提高了汉语指代消解的性能。上述研究方法均考虑到了上下文、候选集合、语义关联等情况。

本文在研究回指消解时考虑指代部分与被指代部分周围的信息,将这部分信息作为一种引导,使得相同代词在嵌入周围信息时能构建一种输入模式,并由注意力机制实现。在模型设计上考虑多层注意力机制指代部分、被指代部分、周围信息、原文信息的综合处理过程,以捕捉上述信息的关联关系。

1 相关工作

在已有的研究中,回指消解主要参考注意力机制及机器阅读理解模型进行构建。本文模型在构建时参考了这两部分的研究。

1.1 注意力机制

基于注意力机制的Transformer网络结构最早由谷歌在2017年提出[11],其主要针对机器翻译问题,认为之前机器翻译模型大量地使用RNN及改进的RNN类网络会导致速度下降。RNN网络的缺点是无法实现并行计算,而Transformer网络结构中的注意力网络可以有效地避免该问题。注意力网络本质上是多层的前向神经网络,通过计算目标与来源之间的概率值作为注意力,用于增强或减弱网络对某些词的关注程度,并在误差反传中进行调整。由于注意力网络的时间复杂度小于RNN类网络,因此本文选择注意力网络结构用于模型构建。

1.2 阅读理解模型

分析机器阅读理解模型对研究回指消解模型具有指导性作用。在阅读理解模型中,用于训练的数据格式为问题集、答案集和文章集,通过对问题和文章进行编码,并使用神经网络进行训练,再通过Softmax层将得到的结果映射到全部词表中得到答案。文献[12]使用类似方法,利用多次迭代的GRU网络构建模型,最后通过计算候选答案的可能性实现阅读理解任务。文献[13]完成阅读理解任务时将答案定位在原文中,预测的结果分别为起始答案位置和终止位置,然后分别计算误差,再求出2个误差的算术平均数作为训练优化方向。而尝试使用阅读理解方式解决回指消解几乎不可行,在分析训练数据之后可以发现,在阅读理解的每一个实例中,问题中一部分词汇必然出现在答案周围。结合文献[13]中的BERT模型,可以推断在“预训练+微调”的训练策略下,使用自注意力机制可令文章对问题词汇分配更高的注意力概率值,从而找到答案。在回指消解任务中,指代部分和被指代部分周围的词可能完全不一致,又因为这2个部分本身有很大可能性是不同词汇组成,所以无法构建类似于阅读理解任务的输入模式。根据上述分析,本文提出一种多层注意力模型,通过构建“词/词组-语句片段-整篇文章”的关联注意力,并嵌入到最终需要判断的2个部分中,再计算出是否具有关联关系。这种过程无需考虑是否在指代部分和被指代部分有相同的词,也不必考虑两部分是否部分一致,通过层次映射关系即可构造出当前语境下两部分信息的向量,进而判断是否为指代关系。

1.3 已有指代消解方法

近年来中文零指代的研究较多,这种情况可以在Google学术搜索的返回结果中体现。文献[14]给出基于翻译对比的词映射指代消解策略。这种策略通过逻辑回归与聚类的思想为中文、英文以及中英混合文都构建了一个判别器,并给出了4种消解方法,其中有代表性的为方法2和方法4。方法2先考虑使用混合文判别器给出指代部分和被指代部分的判别概率,若大于0.5则认为是指代。如果在英文中找不到中文代词翻译后得到的词,则直接采用中文判别器,这种方法得到的召回率较高。方法4同时使用了3种判别器并在训练时调整每种判别器权重。文献[15-16]也采用基于翻译的方法,它们在判断指代关系时增加了很多模板规则与模板参数,直接使用模板规则进行判断。文献[17]总结了5种中文指代消解模型,能够基本涵盖到目前为止的主流方法,其包含了3种二元分类模型、传统规则模型和排序模型。中文零指代研究相对较新,基本采用深度学习方法。文献[9]通过强化学习解决零指代问题,文献[18]采用注意力机制,在构建指代对时采用了3组不同的RNN,文献[19]采用一个BP神经网络分别提取了距离特征、指代部分与被指代部分的前缀上下文、关键动词和关键宾语,并将这些内容编码通过使用LSTM进行训练。

本文在考虑了数据集指代分布特征和当前研究热点之后将实验分为下列对应的两部分:1)构建所有指代实例,并与文献[14-15]进行对比;2)仅构建零指代实例,并与文献[9,17-18]进行对比。

2 回指消解判别算法模型

回指消解判别算法模型主要依据多头注意力机制进行构建。在模型构建方面,本文主要在模型结构和结果判别上进行研究与创新。

2.1 模型结构与执行过程

输入信息分为5类,包括指代部分词汇、指代部分周围词汇信息、原文信息、被指代部分词汇和被指代部分周围词汇信息。输入信息均需要进行位置信息嵌入,嵌入过程考虑随机指定位置向量,并将得到的位置向量与词向量相加。令vocab_size表示词总数,dvocab表示词向量维度,length表示当前输入长度,vocab_slice表示嵌入位置信息之前的词向量集合,vocabe表示嵌入位置后的结果,计算公式为:

position=random(vocab_size,dvocab)×

slice(length)

vocabe= vocab_slice+position

使用位置信息嵌入主要考虑到多头注意力机制的计算方式,根据文献[8],位置信息在CNN和RNN类网络中不必要,而在多头注意力机制中位置信息的唯一来源是外部输入,因此必须进行计算。

在得到具有位置信息的输入之后,构建多头注意力机制进行指代部分与其周围语句的映射向量,并将此法应用于被指代部分与其周围语句、原文与指代部分、原文与被指代部分,在第2个注意力层上得到2组计算结果。最后将得到的结果在第2个维度上拼接,通过Softmax方法求出二分类概率,进而判断是否存在指代关系。该模型与文献[20]提出的模型思路相近,但是其在输入构建时考虑属性与实体对应,这里考虑指代部分/被指代部分与周围信息的联系。算法模型结构如图1所示,多头注意力机制模型结构如图2所示。根据上述内容,算法模型过程表述如下:将指代部分信息、指代部分周围词信息、原文信息、被指代部分信息、被指代部分周围词信息进行向量化表示,分别嵌入位置信息作为输入。依据该方法分别得到指代部分向量、指代部分周围信息向量、原文部分向量、被指代部分向量和被指代部分周围信息向量。将指代部分向量与指代部分周围信息向量进行多头注意力机制计算,再使得到的结果继续与原文部分向量采用相同方法计算,得到指代部分在当前模型中的特征结果。该结果能够体现多层注意力机制条件下原文和指代部分周围词信息对指代部分的作用,利用同样的方式计算得到被指代部分在当前模型中的特征结果。最后,将两组特征结果连接组成一个综合结果,并利用Softmax层将它映射在判别空间中,进行指代与否的判断。

图1 算法模型结构

图2 多头注意力机制模型结构

2.2 多头机制的具体应用

多头注意力机制在应用于机器翻译时,包含“编码器-编码器”“解码器-解码器”和“编码器-解码器”3种注意力输入方式,文献[11]给出了输入方式的过程,计算公式为:

本文考虑分层次使用多头注意力机制构建模型,将多头注意力机制应用于分层结构中,使得相邻层次的信息能够获得充分交互。指代部分周围词汇与指代词/指代词组有包含关系,因此可以通过注意力机制计算指代词/指代词组在其周围词条件下的概率,进而通过这种概率对每一个指代部分词进行加权,获取指代部分相对周围信息的向量,记作指代扩展向量。同理,被指代部分采用相同方法也可以获取这种向量,记作被指代扩展向量。通过这种方式可以构建特定语句中每一个指代部分/被指代部分唯一向量,这种唯一性体现了相同词在不同语句中会被映射为一个仅属于该句的向量。这避免了以下的情形:因语境不同导致无法根据相同内容的2个部分判断指代关系。在获取上述指代扩展向量与被指代扩展向量之后,需要与原文向量进行注意力机制计算。考虑到原有指代部分的词汇可能在原文中出现多次,因此没有直接用原指代部分向量与原文向量进行计算。比如代词“它”,很可能在原文中出现不止一次,但是直接输入这种向量会使判断指代关系变得困难,因为在无周围信息的情况下无法确定这个代词指代的实体。而在经历上述扩展过程之后,无论是指代部分还是被指代部分都能在保留自身属性信息情况下附加周围语句的影响,在与原文进行计算时,可以防止出现一对多映射,即相同待确定的指代关系在不同语境下出现判断结果相反的情况。令xe、span_xe、articlee、we、span_we、attention_output分别代表位置信息嵌入之后的指代部分、指代部分周围信息和原文信息、被指代部分、被指代部分周围信息、用于计算概率的输出结果,计算公式如下:

extend_xe=attention(xe,span_xe,span_xe)

extend_we=attention(we,span_we,span_we)prone=

attention(extend_xe,articlee,articlee)

anae=attention(extend_we,articlee,articlee)

attention_output=concat(prone,anae)

2.3 结果判别与算法复杂度分析

在得到指代扩展向量与被指代扩展向量被原文扩展后的结果时,可以构建模型输出部分。由于输入部分包含指代项和被指代项,因此输出部分采用二分类方法直接判断是否存在指代关系。在控制输出向量维度为2时,采用Softmax函数构建输出向量,用作分类的2个元素分别表示预测类别的概率值。选取这种预测策略的原因在于负例构建时具有随机性。负例参考文献[11]中上下句预测方法,即使用约50%正例和50%负例混合构建训练和预测数据。在同时考虑判断为正例或负例条件下,选择Softmax函数进行计算。根据文献[21],在二分类情况下,Softmax等效于Sigmoid映射,不使用Sigmoid函数的原因会在实验部分说明。令predi表示第i次的预测结果,yi表示第i次的真实结果,则对应于n组结果,训练过程的loss值公式如下:

predi=Softmax(attention_outputi)

算法中时间消耗最大的部分为多层注意力机制计算部分,在构建模型时对时间复杂度和空间复杂度的分析如下:

RNN类网络:RNN类网络需要考虑常见的LSTM与GRU。LSTM将计算4组参数,分别对应输入门、输出门、遗忘门和候选态。LSTM更新公式为:

yt=f(yt-1,xt)

其中,t为句子长度,若此向量维度为d,隐藏层和输出层的维度均为h,反向传播时时间复杂度和前向时的计算相同,一个单层LSTM处理之后的时间消耗可以表示为8×t×h×(d+h+1),而将LSTM修改为GRU之后,时间消耗表示为6×t×h×(d+h+1)。因此,采用LSTM或GRU进行一次类似本算法模型中的多头注意力机制计算,时间复杂度为O(t×d×h2)。由于LSTM、GRU消耗空间最大的时刻是矩阵相乘计算,因此空间复杂度可表示为O(n2),其中n=max(d,h)。

多头注意力机制:根据注意力机制计算公式,仅注意力网络部分消耗的时间可表示为2×t×d2。若前向传递连接层输出的维度不变,整体消耗的时间为8×t×d2,因此一次多头注意力模型的时间复杂度为O(t×d2)。根据注意力机制计算过程,消耗空间最大的时刻是矩阵相乘计算,因此空间复杂度可表示为O(d2)。

因此,若LSTM或GRU的输出维度也为d,则时间复杂度为O(t×d3),明显高于多头注意力机制,而空间复杂度则几乎相同。

3 实验与结果分析

考虑到显性指代和零指代均存在以及仅存在零指代这2种情况,设计了4组实验和6篇文献进行对比,并记录结果。

3.1 数据集与评价标准

实验数据选择Conll-2012分享任务中的OntoNotes5.0数据集,仅选用中文部分。中文部分数据集包含了1 391个训练文件和172个测试文件;训练文件包含句子总数36 487组,测试文件包含句子总数6 083组;构建显性指代训练例子共计133 326个,测试例子共计20 074个;构建零指代训练例子共计20 563个,测试例子共计3 146。单个文件中可能不只包含1篇文章,回指消解结果位于单篇文章后。数据集内容与新闻报道有关,包括广播会话、广播新闻、杂志、通讯新闻、电话对话和博客文章共计6个类别。因此,使用这部分数据集进行实验能够展示通用语料环境下回指消解过程。

评价标准选择文献[14]给出的实验结果。该文献使用了相同数据集,旨在通过机器翻译解决汉语回指消解,同时给出了文献[15]的实验结果。文献[14-15]都采用了基于机器翻译的结果,且文献[14]的结果分为方法2和方法4两组。

3.2 实验过程

指代关系对构建过程参考文献[13]中上下句预测方法,即通过模型区分原有正例和随机负例,用于训练和预测的正负例数量比接近1∶1。由于文献[14]在训练分类器时构建正例和负例的比例为1∶1且负例随机选取,因此本文采用这种构建策略。对于单个文献多篇文章的情况,会将每篇文章及其附带的消解结果分开。为防止数据训练时对GPU显存占用过大,指代部分与被指代部分的长度限制在64,指代部分与被指代部分的周围信息长度限制在72,单篇文献长度限制在384。训练时学习速率为1e-5,用于防止过拟合的dropout值为0.4。单次实验批量大小为105,注意力机制下“注意力头”大小为64,数量为12。训练次数为10万次,相当于训练集完整循环625次。

在实验过程中对6个类别分别进行实验,最后将得到的6组精确率、召回率、F值求算术平均数,作为最终结果。在实验过程中补充了2个对比实验:1)将“注意力头”大小由16增加为64;2)增加了仅含零指代的实验,并与当前最新零指代数据集进行对比。

3.3 结果分析

显性指代和零指代均存在时的实验结果如表1所示,其中,本文方法及对比文献的方法均是6组数组结果的均值。文献[14]的训练集为OntoNotes5.0,包括1 391个中文文件和1 940个英文文件,测试集为166个中文文件;文献[15]采用相同的数据集。

表1 显性指代和零指代均存在时的实验结果对比

在上述实验结果中,模型中不同注意力头对应的F值均超过文献[14]的方法2以及文献[15]的方法。文献[14]方法4则仅有精确率被本文方法超过。对上述结果分析如下:OntoNotes5.0中文数据集既包含显性指代消解,又包含零指代消解。文献[14]仅研究显性回指消解,为保持原数据集给出的指代特征,考虑显性指代和零指代混合出现的情况。本文方法在混合了零指代数据时与文献[14]效果相接近。相比较仅研究零指代,如文献[9]在随机构建一个负例仅研究零指代时,模型的精确率、召回率、F值分别为70.8%、69.8%、70.0%,其中,F值高出文献[14]12.8%。为保证训练过程和判别逻辑与文献[9]一致,增加一个对比实验,对比实验在构建负例时不是随机构建,而是考虑将所在文章中比当前零指代序号小的全部被指代部分都作为这个指代词的负例,以适配模型的训练策略。

从实验中可以发现,当正例过少时,损失函数值在下降过程中使得正例准确率较低,因此在构建负例时通过复制正例将两者比例调整为1∶1再进行训练。构建的训练集例子数增加到199 841个,测试集例子数增加到27 646个,此时,精确率、召回率、F值分别为64.9%、57.5%、60.7%,F值仍比文献[9]高出3.2%。相比于文献[8]使用候选集合构建的方式,这种训练方式需要训练的负例数量更多,因此本文的模型更具优势。由于采用相同的数据集,文献[9,18-19]训练集与测试集的文件数和句子数与本文相同,构建的训练例子数为12 111个,测试例子数为1 713个,对比结果如表2所示,其中本文方法及对比文献的方法均是6组数组结果的均值,由于被引用文献未给出精确率和召回率,这里仅比较F值。

表2 仅存在零指代时指代判别分析比较结果

进一步分析预测结果可以发现,OntoNotes5.0回指消解的真实结果中有一大部分为多次同词指代。以文件cmn_0010.onf为例,Chain 1_15编号下被指代部分为“爸爸”,而对应的指代部分有16组结果,其中15组为“爸爸”。这种情况导致了模型一旦判断一组结果错误,就可能连续判断所有的这类结果错误。

Sigmoid函数可以将一个任意实数转化到[0,1]上进行二分类。在实验过程中发现若采用Sigmoid函数作为loss,会导致精确率和召回率极低。观察输出的倒数第2层数据可知,随机构建的负例因为不存在规律,会严重压缩正例结果空间,无法找到一个合适的概率阈值区分正例和负例。Softmax函数会同时预测正例概率和负例概率,判断时根据概率值的大小,而不是根据一个固定阈值,因此能够一定程度上避免Sigmoid函数的缺陷。

4 结束语

本文提出一种回指消解方法,通过构建多层注意力模型实现不同层次信息的处理。根据注意力机制计算指代部分和被指代部分在其周围信息和原文条件下的向量表示,进而得出是否存在指代关系。该方法可使指代部分和被指代部分在当前语境下直接进行指代关系判别,对于显性指代和零指代2种情况都有较好的效果。在测试数据集上的实验结果表明,模型在采用随机负例生成策略时,显性指代和零指代均存在情况下的F值为70.4%,仅存在零指代时为70.0%,在构建全部可能的负例时,仅存在零指代时F值为60.7%。下一步将考虑适当增加词性、语义相似度等外部信息,并通过嵌入信息的方式构建词向量进行训练,或采用共指解析中候选集方法,在缩小结果空间的条件下提高召回率。

猜你喜欢
指代注意力向量
奥卡姆和布列丹对指代划分的比较
向量的分解
让注意力“飞”回来
聚焦“向量与三角”创新题
The Ways of Leading a Healthy Life
“扬眼”APP:让注意力“变现”
基于深度学习的维吾尔语名词短语指代消解
A Beautiful Way Of Looking At Things
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线