APP下载

基于多任务联合训练的法律文本机器阅读理解模型

2021-08-13李芳芳任星凯毛星亮林中尧刘熙尧

中文信息学报 2021年7期
关键词:多任务编码文本

李芳芳,任星凯,毛星亮,林中尧,刘熙尧

(1.中南大学计算机学院,湖南长沙410083;2.移动医疗教育部-中国移动联合重点实验室,湖南长沙410028;3.湖南工商大学大数据与互联网创新研究院,湖南长沙410205)

0 引言

随着深度学习的快速发展,机器阅读理解这一能测试机器对于自然语言理解程度的任务成为自然语言处理领域的研究热点之一。根据返回的答案类型不同,可以将机器阅读理解任务划分为四类[1]:完形填空、多项选择、片段抽取及开放式问答,四项任务难度依次增大。

预训练模型及注意力机制是自然语言处理领域近几年的研究热点,得益于上述两者的快速发展,越来越多的深度学习模型结合预训练模型及注意力机制在阅读理解任务上取得了不俗的表现。传统的基于规则的模型需要人工构建复杂的特征工程,这类模型不仅耗时,并且对于不同的任务需要设计不同的特征工程。而经过大量语料训练得到的深层预训练模型可以取代特征工程的作用,并且通过海量语料的预训练,模型对下游任务有更加强大的泛化能力,使其可以与不同的下游任务相结合,这样不仅减少了研究人员的工作量,还会大大提高精度。此外,机器阅读理解模型中的“问题-文章”交互模块对于模型最终能否推断出正确答案十分重要,注意力机制的出现使得阅读理解模型能更好地挖掘文章与问题之间的相关性,进而模拟人类阅读习惯,更关注文章及问题中重要的部分,得到更加准确的结果。

因此,本文提出了基于多任务联合训练的机器阅读理解模型,该模型由文本编码模块、答案抽取模块、答案分类模块、支持句子判别模块四部分组成,四个模块联合进行训练,从而给出最终的答案。该模型在中国法研杯CAIL2020司法人工智能挑战赛的阅读理解评测任务近600支参赛报名队伍中最终排名第一。

本文的组织结构如下,第1节介绍相关工作,第2节介绍中国法研杯司法人工智能挑战赛,第3节介绍模型及具体细节,第4节展示实验结果,第5节是对全文的总结。

1 相关工作

1.1 机器阅读理解

机器阅读理解任务可以定义为:给定一段文本P及基于这段文本提出的问题Q,需要机器阅读问题和文章并回答出与问题对应的答案A。

机器阅读理解任务最初为完形填空类任务,随着深度学习模型的发展,以及对于自然语言的理解能力越来越强,逐步产生了多项选择类任务、片段抽取任务以及开放式回答任务。在CAIL2020机器阅读理解竞赛中包含了片段抽取、多类型答案、支持句子判别等多种任务类型。

完形填空及多项选择类任务与实际生活中考试的考题相似,对于完形填空类任务,给定一段移除了某些词语或实体的文本,模型需要根据上下文预测出被移除的词语或实体[1]。典型数据集有CNN/Daily Mail[2]、CBT[3]、LAMBADA[4]等。多项选择类任务可以定义为:给定一段文本及若干个待选回答,模型需要从待选回答中选择正确的集合[1],典型数据集有MCTest[5]、RACE[6]等。

实际生活中的问题通常难以仅凭单个词语或实体做出回答,而是需要多个词语甚至完整的句子作为答案。为了解决这个问题,产生了片段抽取任务:给定一段文本及一个问题,要求模型从文本中抽取一段连续的语句作为回答[1]。典型的数据集有SQuAD[7]、SQuAD2.0[8]、NewsQA[9]、TriviaQA[10]等。开放式回答类任务和现实生活需求最为相近,给定问题与文本,计算机需要根据问题及文本返回对应的答案[1]。与片段抽取类任务不同,开放式回答不一定能从文本中找到对应的答案,可能需要计算机生成,因此扩展了回答的自由度,该类任务典型数据集有Du Reader[11]等。

1.2 预训练模型

预训练模型,是指在大规模无标注数据集上进行训练、学习、泛化的语言表示模型,进而产生基于上下文的词向量。该词向量可以用于下游任务,进一步提升各项任务的表现。

根据模型深度,可以把预训练模型分为两个时期[12]。第一个时期是以Word2Vec[13-14]、Glove[15]为代表的浅层词嵌入阶段;第二阶段是以ELMO[16]、GPT[17]、BERT[18]为代表的深层预训练模型阶段。传统的Word2Vec及Glove预训练模型未考虑一词多义问题,ELMO 使用双层双向循环神经网络(BiLSTM)作为编码器编码上下文语义信息,从而解决一词多义问题,但ELMO 模型因为使用BiLSTM 存在一个缺点——RNN 系列的模型难以并行训练,因此模型训练需要花费大量时间。随后的GPT 采用Transformer[19]作为编码器,Transformer主要由注意力层构成,能够并行训练,极大地减少了训练时间,然而GPT 的缺陷在于只采用了单向Transformer,并未充分利用上下文信息对词语进行编码。为解决这一问题,BERT 采用双向Transformer作为编码器,能根据上下文信息进行编码。BERT 是自然语言处理领域预训练模型的里程碑之作,刷新了多项自然语言处理任务的最佳成绩,之后也有研究人员提出BERT 的一些缺陷,改善了BERT 的Mask机制,同时修改了训练任务,提出了RoBERTa[20]。

1.3 注意力机制

近年来,在自然语言处理领域及计算机视觉领域中,注意力机制炙手可热。注意力机制可以使模型更加关注数据中重要的部分,提升模型表现。注意力机制最早被用于机器翻译任务,在模型进行解码时,通过注意力机制计算编码后的原文中不同单词的权重,使得与当前翻译的单词相关的原文词汇得到更大的权重。注意力机制在机器翻译任务上的优异表现,使得其被广泛运用于自然语言处理及计算机视觉的各类任务,例如,文本摘要、情感分类等。在机器阅读理解任务中,注意力机制也以多种形式结合到模型之中。初期,Attentive Reader[21]等模型使用单向注意力机制找到与问题相对应的文本中重要的部分,而BiDAF[22]提出双向注意力机制,计算文本相对问题的注意力权重矩阵后,再次计算问题相对文本的注意力权重矩阵,使得模型更关注问题与文本中更重要的部分。

1.4 多任务学习

多任务学习是指,通过共享相关任务之间的某些参数,将相关任务进行联合训练,进而使模型达到更好的效果。多任务学习在计算机视觉和自然语言处理领域均表现优异。多任务学习按照共享的方式可分为两类:硬参数共享与软参数共享[23]。

硬参数共享方式指各个模型在某些层共享参数,一般是模型底层(如词向量层、特征提取层),再分别连接特定任务的输出层,各个特定任务的输出层参数不参与共享。Collobert等人[24]提出对各个任务共享编码层,能够有效提高各项任务的性能。Liu等人[25]也提出了基于共享编码层的多任务学习模型架构。在软参数共享方式中,各个模型不直接共享参数,而是通过某些约束方程使得参数之间的差异被限制在一定范围内。Duong等人[26]利用L2距离进行约束,进而进行多任务学习。Yang 等人[27]将Trace Norm 作为约束条件,来达到多任务学习的目的。

2 CAIL 2020

中国法研杯司法人工智能挑战赛CAIL 2020共设置如下四项赛题:机器阅读理解任务、司法摘要任务、司法考试任务和论辩挖掘任务。其中,阅读理解赛道由哈尔滨工业大学社会计算与信息检索研究中心和科大讯飞股份有限公司共同承办。在阅读理解的评测任务中,包含民事、刑事、行政三种类型的文书种类,同时问题类型从单步预测变为多步推理,任务的答案类型包括片段抽取、是/否回答及拒答三种,需要根据回答结果从给定文本中给出对应的支持句子,即所有参与推理的语句编号,其数据结构样例如表1所示。

表1 CAIL2020训练集样例

从表1中可以看出,CAIL 2020机器阅读理解任务不仅需要通过阅读文章回答出问题“被起诉书指控的人和谁达成了和解协议?”的答案“魏7”,还需要给出此答案所依赖的支持句子为1和3。

3 模型

本文提出的基于多任务联合训练的法律文本机器阅读理解模型,主要包含数据增强和多任务联合训练模型两方面的改进。数据增强部分主要是对CAIL 2019 机器阅读理解数据的重构,以扩充CAIL 2020的训练集。多任务联合训练模型部分主要是对输入的原始法律文章和问题进行语义编码,并得到最终的答案输出及支持句子。

3.1 数据增强

本模块的主要目的是使用CAIL 2019 机器阅读理解数据集对CAIL 2020数据集进行扩充,以增加所需要的训练集。CAIL 2019机器阅读理解数据集样例如表2所示,其中仅有答案文本,并没有标记出该答案所需要的支持句子。因此,本文提出了一种基于TF-IDF 文本相似度匹配的方法对CAIL 2019数据集进行重新标注。

表2 _CAIL 2019机器阅读理解数据集样例

具体做法如下:首先根据“。!?”等标点符号对文章进行分句,获得每篇文章所对应的句子集S={s1,s2,...,sn}(n为每篇文章对应的句子数目);然后使用每篇文章对应的问题Q={q1,q2,...,qm}(m为每篇文章对应的问题数目)与该文章的每个句子si计算TF-IDF相似度分数,最终取相似度分数最高的k条句子作为支持句子,如式(1)所示。

其中,si∈S,qj∈Q,n为某一词语,TF表示词条在文档d中出现的频率。某一特定词语的IDF可以由总句子数目除以包含该词语的句子数目,再将得到的商取以10为底的对数得到。

除此之外,本文统计了CAIL 2019机器阅读理解数据集的文章长度,如图1所示。该数据集的文章长度较长,经统计大约95%的文章超过969 个字,超过了RoBERTa模型支持的输入文章最大长度(512个字)。因此本文使用了一种截断的方法进行文章长度的缩减,具体做法为:将CAIL2019 数据集中答案开始位置大于480 的文章样本进行截断,选取答案开始位置前150个字和答案结束位置后150个字作为新的文章样本,这样可以避免在一个训练样本中出现过多的负样本。

图1 CAIL 2019阅读理解数据集的文章长度分布

3.2 基于多任务联合训练的机器阅读理解模型

本文提出的基于多任务联合训练的机器阅读理解模型将CAIL 2020 机器阅读理解任务拆分为四个子模块:文本编码模块、答案抽取模块、答案分类模块和支持句子判别模块。其中,后三个子模块进行联合学习与训练。在管道训练方式中,其不同子任务训练模块是相互独立的,导致无法利用其它模块的训练信息来促进当前模块的训练。而多任务联合训练的方式可以利用上游任务来帮助下游任务进行训练,从而避免了不同子任务训练模块中对文本的重复编码[28]。本文模型的主要架构如图2所示,下文将给出详细描述。

图2 基于多任务联合训练的机器阅读理解模型框架

3.2.1 文本编码模块

文本编码模块主要是对问题和文章进行编码以输入到下层的其他模块中。本文将问题和文章进行拼接,然后使用RoBERTa预训练模型对文本进行编码,获取到文本的向量化表示h∈RC×d,其中,C为文本的长度,d为编码的维度。根据问题和文章的长度,本文分别获取到问题和文章的表示,记为hquery∈RCq×d和hcontext∈RCc×d,其中,Cq和Cc分别为问题和文章的长度。本文使用BiAttention层获取问题到文章和文章到问题的双向表示,具体如式(2)所示。

3.2.2 答案抽取模块

其中,ps为模型预测的答案开始位置的概率,pe为模型预测的答案结束位置的概率,W为可训练的权重向量。定义训练损失函数为真实答案的开始和结束的负对数概率总和,并对所有训练样例取平均值,如式(4)所示。

其中,θspan为可训练的权重集合,N为训练样例数量,和分别为第i个实例的真实的开始和结束位置。测试时选择最大的作为模型预测的答案文本。

3.2.3 答案分类模块

CAIL 2020机器阅读理解任务所需要回答的答案包含:Span、YES、NO、Unknown四种类型。其中,Span类型答案是从文章中抽取出的答案文本,YES和NO 类型答案是“是否”类问题的答案,Unknown类型答案是文章中不存在问题的情况。答案分类模块将不同答案类型的识别视作一个分类任务来完成。本模块使用三个子网络进行答案类型的分类,具体如下:

①[CLS]分类模块。原始的BERT 预训练模型中使用编码后的[CLS]位置的向量进行文本的分类任务,本模型也借鉴该结构,使用编码后的文本表示的[CLS]位置接全连接层进行答案类型的4分类,输出的答案概率记为logitCLS。

②胶囊神经网络分类模块。第二个答案分类子模块借鉴胶囊神经网络的思想,将文本编码模块编码后的文本表示输入到胶囊网络中,得到胶囊表示之后再接一层全连接4分类层神经网络用于最终的答案类型概率logitcaps,如式(5)所示。

其中,具体的CapsuleNet结构可以参考文献[29],Wdense是可训练的权重参数。

③Attention网络分类模块。该子模块中使用两种Attention网络对答案类型进行分类。第一个Attention网络将文本编码模块的输出hbiattention∈RC×4d进行Self-Attention的计算,然后进行全连接层的4分类,获取答案类型的概率表示logitSA_Attention;第二个Attention网络通过获取答案抽取模块的答案开始和结束位置的表示ps和pe,然后与文本编码模块的输出hbiattention∈RC×4d表示做Attention 计算,同时后面也接一个全连接4分类层,获取到答案类型的概率表示logitSE_Attention。

最终答案分类模块的总概率由以上4种概率求平均而得,并使用交叉熵损失函数作为答案分类模块训练的损失函数,如式(6)所示。

其中,θc为可训练的权重集合,logitc为答案分类的最终概率。

3.2.4 支持句子判别模块

支持句子判别也是本次评测比较有挑战的一个子任务,其不仅需要模型预测出问题对应的答案,还需要找出该答案所依赖的文章句子。本模块将此任务转为二分类任务来完成。本文使用两种网络结构来完成支持句子判别任务。第一种网络通过对文章中的每个句子进行编码之后,与文本编码模块的输出hbiattention∈RC×4d计算点积,获取每条句子的表示hsp∈RC×S×4d,其中S为文章中句子的数量,并在C维度取最大值。然后,将其接二分类全连接层,获取每条句子是否是支持句子的概率logitspmax,进而进行判别,具体如式(7)所示。

第二种网络基于Attention 网络构造,具体做法为:首先获取答案开始和结束的句子映射表示与文本编码模块的输出hbiattention∈RC×4d,然后计算两者的点积,分别得到hsp_s和hsp_e,接下来将两种表示进行拼接之后接二分类全连接层,获取每条句子是否是支持句子的概率logitsp_se,如式(8)所示。

最终支持句子判别模块的总概率由以上两种概率求平均而得,同时使用二分类交叉熵损失函数作为训练网络的损失函数,如式(9)所示。

其中,θsp为可训练的权重集合,logitsp为支持句子判别的最终概率,如式(10)所示。

最终整个模型的训练损失为以上三个模块的损失加权之和,训练时三个模块同时训练并互相优化。

4 实验

4.1 数据集

本文使用CAIL 2020机器阅读理解评测任务的数据集对所提出的模型进行评估。此外,本文使用了CAIL 2019机器阅读理解数据集进行数据增强,通过数据增强之后,总数据集的数据达到了约39 000条,本实验将36 000条样本作为训练集,划分3 000条样本作为线下验证集。

4.2 评估指标

本次评测任务采用F1指标进行评估。对于每个问题,需要结合案情描述内容给出回答,回答为Span(内容的一个片段)、YES/NO、Unknown中的一种,并且给出答案依据,即所有参与推理的句子编号。评价包括两部分:①Answer-F1,即预测答案与标准答案作比较,计算F1;②Sup Fact-F1,即预测句子编号序列与标准句子编号序列作比较,计算F1。最终评价为这两部分F1的联合F1宏平均。

4.3 实验设置

在实验中,输入的文本长度c为512,输入的问题长度q为23,答案的最大长度a为64,选取的预训练模型为RoBERTa_Large版本,是由24 层的Transformer结构组成,向量表示维度d为1 024,batch的大小设置为6。训练中采用Adam 优化器进行优化,学习率设置为2e-5,单个模型训练10个epoch,式(10)中不同模块的损失设置为:α设为0.2,β设为0.3,γ设为0.5。整个模型在NVIDIA Tesla V100 32 GB机器上训练约24小时。

4.4 主要实验结果

为验证不同中文预训练模型在此次竞赛任务中的效果,本文对比了一些主流的中文预训练模型在替换了文本编码模块后的结果,具体为:RoBERTa_wwm_ext[20]、ELECTRA_Large[30]、NEZHA_Large[31]、RoBERTa_wwm_ext_Large[20]四种主流中文预训练模型,实验结果如表3所示。

表3 不同中文预训练模型实验结果

从表3中可以看出,RoBERTa_wwm_ext_Large模型的Ans_F1和Sup_F1指标最高,可能是由于该模型Transformer层数更大、在更大的中文语料上进行了预训练,并且,该模型将掩码语言模型(Masked Language Model)训练时遮盖单个字的策略改为遮盖整个词,提高了任务难度,因此RoBERTa_wwm_ext_Large模型具有更强的鲁棒性。

对于本文提出的重构CAIL 2019 机器阅读理解数据增强方法,本文分别选取了每条训练样本问题与对应文章分句后的TF-IDF相似度最高的1~4条句子进行支持句子的构建,实验结果如表4所示。

表4 不同数量相似度句子作为支持句子

从表4中可以看出,增强后的数据均比不进行增强的原始数据Joint_F1值要高,说明了本次竞赛数据增强的重要性。同时,可以发现选取Top2 最相似句子作为支持句子的Joint_F1最高,选取Top3、Top4最相似句子作为支持句子的Joint_F1反而下降了,这表明可能TF-IDF 相似度计算方式较为简单,随着相似句子的增多,容易引入过多的噪声,使得不是支持句子的句子也进入训练样本,干扰了模型的正常训练。

为了对比多任务联合训练与管道方式两者之间的差异,本文使用了一种管道方式对此次竞赛任务进行实验,具体做法为:对于答案抽取和答案类型分类任务,本文使用一个RoBERTa_wwm_ext模型进行训练;对于支持句子判别任务,本文将其转为二分类任务,对每个文章中的句子直接进行二分类任务的学习,同时使用另一个RoBERTa_wwm_ext模型完成支持句子判别任务。最终将两个模型预测的结果进行组合并计算得分。对于多任务联合训练方式,本文使用RoBERTa_wwm_ext进行编码,并同时完成阅读理解、答案文本分类、支持句子判别三个任务,具体的实验结果如表5所示。

表5 多任务联合训练与管道方式结果对比

从表5中可以看出,管道方式虽然Ans_F1值仅比多任务联合训练方式低了1%左右,但是在Sup_F1值却低了约3.2%,这可能是因为单独训练支持句子判别任务时,非支持句子较多,造成了一定程度上的类别不均衡,使得模型偏向于将句子分类为非支持句,从而导致管道方式中的Sup_F1值有所降低。此外,管道方式仅优化了一种任务的损失,缺少了其他任务的相互影响,而多任务联合训练中不同任务会互相影响,并且共同优化最终的目标。但是管道方式也有其优点,如对于各个子任务的结果可控性较好,方便人工对每个子任务进行观测。

4.5 消融实验结果

为了评估模型每部分的贡献,本文对比了双向Attention编码、胶囊神经网络答案类型分类模块、Attention网络答案类型分类模块及Attention网络支持句子判别模块对整个模型性能的影响。

从表6的实验结果可以看出,不同模块均会对最终的模型性能产生影响,胶囊神经网络模块对答案F1的影响较大,这是因为胶囊网络提高了答案类型分类的准确率,从而提高了答案F1的指标。从消融实验中仍然可以看出,虽然RoBERTa_wwm_ext_Large已经在海量中文语料上进行了预训练,并且是由24 层的Transformer结构构成(Transformer结构主要组成模块是Self-Attention),对文本的表示已经有了极大的提升,但为了进一步加强问题与文章之间的交互,本文使用的各个Attention模块也会对模型最终的性能起到一定的提升作用。

表6 模型及消融线下实验结果

4.6 模型集成

本次评测最终提交到线上的模型由5个模型集成,具体如下:分别选取top1、top2和top3相似度构建的CAIL 2019机器阅读理解数据集并训练前3个RoBERTa_Large模型;使用平均池化与最大池化代替答案分类模块中的[CLS]字符分类模块,并训练第4个RoBERTa_Large模型;使用RoBERTa_Large表示的文本和Bi Attention编码后的文本进行连接,替换文本编码模块,训练第5个模型。这5个模型具体的集成方式如下:取每个模型预测出的答案开始和结束位置、答案类型、是否为支持句子三种logit进行加权平均,进行最终线上测试集的预测。表7为最终的评测结果,从表中可以看出,本文提出的模型表现比较稳定,集成模型最终在排行榜中获得位居第一的成绩,验证了本文方法的有效性。

表7 CAIL 2020机器阅读理解任务最终评测结果

5 总结

针对CAIL 2020评测任务,本文提出了一种基于多任务联合训练的机器阅读理解模型,该模型能够综合各个子任务及子网络的优势,通过多轮迭代训练模型既可以给出问题的答案,也可以较为准确地找出答案的依赖句子。同时,多任务联合训练使得不同模块之间可以相互促进,以获得相对于管道方式更好的结果。此外,借助对其他数据的重构,以实现数据增强目的,也是本模型提升的一个关键点。

未来工作中,我们希望将图神经网络引入到支持句子的预测中来,同时进一步优化模型不同模块子网络的设计,减少参数量,并尝试使用轻量级的预训练模型进行编码,降低模型的占用空间。

猜你喜欢

多任务编码文本
基于SAR-SIFT和快速稀疏编码的合成孔径雷达图像配准
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
在808DA上文本显示的改善
基于中心化自动加权多任务学习的早期轻度认知障碍诊断
Genome and healthcare
基于doc2vec和TF-IDF的相似文本识别
基于判别性局部联合稀疏模型的多任务跟踪
基于多任务异步处理的电力系统序网络拓扑分析
文本之中·文本之外·文本之上——童话故事《坐井观天》的教学隐喻