面向机器阅读理解的多任务层次微调模型①

2022-05-10 12:12丁美荣刘鸿业徐马一龚思雨陈晓敏曾碧卿
计算机系统应用 2022年3期
关键词:多任务预测模块

丁美荣,刘鸿业,徐马一,龚思雨,陈晓敏,曾碧卿

(华南师范大学 软件学院,佛山 528225)

1 引言

机器阅读理解(machine reading comprehension,MRC)是通过计算机理解文章语义并回答相关问题的一项重要研究任务.让计算机系统能够理解文本的含义,并且做出正确的反馈,是自然语言处理的长期目标.机器阅读理解的研究对提升机器的自然语言理解能力具有重要促进作用,已受到学术界和工业界的广泛关注.

将机器阅读理解技术运用到智能客服问答系统中,能够更进一步的提高问答系统的扩展性和效率.例如,Long 等[1]提出了基于机器阅读理解的智能审判模型AutoJudge.Xu 等[2]推出了医疗阅读理解数据集CliCR.Šuster 等[3]提出了一种深度学习模型StockNet,可以同时分析股价历史以及Twitter 上相关的新闻.

目前机器阅读理解任务仍然面临着许多挑战,例如推理性不强,缺乏可解释性等问题[4].而将机器阅读理解应用于法律等其他领域时,对知识推理能力与可解释性有着更加巨大的需求和挑战.缺乏大量的训练数据是当前阅读理解领域急需解决的问题之一.现有的阅读理解模型和相关数据集存在一定限制,限定输出只有单个答案.而实际应用中,存在大量场景不仅需要答案,还需要这个答案具有一定的解释性,需要同时找出能够支撑该答案的相关句子.目前在司法领域的机器阅读理解研究还较少,因此也需要我们更多地围绕该领域对以上问题展开对有效模型和方法的研究探索.

在本文CAIL2020 比赛提供的中文法律机器阅读理解数据集就是能够解决这一问题的数据集.该数据集与传统机器阅读理解的数据集有所不同,传统机器阅读理解任务中,只需要给定文章和问题,通过模型得到答案.而这里的数据集参考了HotpotQA 数据集,使得该机器阅读理解任务具有更大的挑战,要求实现观点类问题作答的同时,每个问题都需给出答案的依据,如图1所示.

图1 CAIL2020 阅读理解数据样例

针对以上问题,本文结合预训练模型,提出一种层次微调模型(hierarchical fine-tuning reader model,HFReader Model),与机器阅读理解中主流的几种预训练模型进行实验对比和探索性研究分析,主要贡献包括3 个方面.

(1)提出一种机器阅读理解模型,能够以文章作为依据回答问题,并且能够有效定位多个支持答案的句子.

(2)参考Retrospective reader 方法并进行修改,将模型分为精读模块与泛读模块两个部分.精读模块使用字级别的向量对问题和文章进行处理,用作抽取以及分类,泛读模块使用句子级别的向量对问题与文章进行处理,用作句子二分类.通过实验证明该思路的有效性.

(3)提出层次微调方法.使用RoBERTa 预训练模型,在数据集上先使用多任务学习方法进行微调,再用于精读模块与泛读模块进行二次微调,使模型得到进一步的提升,验证该方法是较优的提升方式.

2 研究进展

机器阅读理解是一种利用算法使计算机理解文章语义并回答相应问题的技术.本节从当前国内外经典的抽取式机器阅读理解数据集以及相关模型两个角度来对机器阅读理解进行表述.

抽取式机器阅读理解的主要任务是给定一段文本和问题,通过模型从文中抽取相应的内容来回答问题.

Rajpurkar 等[5]提出了SQuAD 数据集,该数据集是通过人工方式获取的基于维基百科构造的数据集,许多经典的模型都是基于此数据集提出的,例如,Seo等[6]提出了BiDAF 模型,使用双向注意力流的方法获取上下文表示,使用多层次处理数据在SQuAD 上取得了较好的效果;Wang 等[7]提出了R-Net 模型,一种基于门控与自注意力的模型,该模型在某些指标上已经接近人类水平.Huang 等[8]提出了FusionNet,基于对以往工作中注意力方法的分析,提出单词历史与全关注注意力使模型结合了不同语义层的信息流.

Devlin 等[9]提出的双向语言理解模型BERT,在11 种不同的自然语言处理任务中达到了最佳成绩.该模型使用了Vaswani 等[10]提出的多层Transformers 结构,并且使用掩码机制对大量文本进行无监督训练,再将训练好的模型用于下游任务.在这之后如CoQA,SQuAD2.0,HotpotQA 等更具有挑战性的数据集也逐渐被发表出来.Reddy 等[11]提出的CoQA 数据集将抽取式阅读理解引入对话场景中,通过多轮对话问答的方式进行问答,该数据集还额外包含了答案为Yes/No的问题,使得模型不仅仅能从文中抽取答案,还能根据原文信息判断Yes/No的问题.Zhu 等[12]提出了一种全新的基于上下文注意力机制的深度神经网络SDNet 来解决对话问答任务,并将前几轮的问题和对当前问题的回答加入上下文从而解决多轮对话问题.

Rajpurkar 等[13]提出的SQuAD2.0 数据集则是包含了不可回答问题,使得模型不仅仅需要回答原文中可以找到答案的问题,还要避免回答原文中找不到答案的问题,从而达到更深层次的理解.Zhang 等[14]首次提出回顾式阅读方法Retro-Reader 模型,将其化为两个模块分别进行训练,第一个模块先进行判断是否是可回答问题,第二个模块来产生答案候选,最后综合两个模块来得到最后的答案.

Yang 等[15]提出的HotpotQA 数据集的挑战在于,该数据集是基于多文档以及推理的数据集.Ding 等[16]提出了CogQA 模型,使用BERT 模型输出答案信息以及多跳信息在GNN 上生成新的节点和下一跳的关系,以此方法进行推理计算.Qiu 等[17]提出了DFGN 模型,使用动态融合图网络来解决多跳推理问题,设计了融合模块来提高实体图和文章之间的交互性.Tu 等[18]提出了HDE 模型,通过互注意力学习候选答案、问题、文档以及实体之间的关系,同时利用这些关系构建了一个异构图,并通过图卷积神经网络进行推理寻找答案的支撑句.Nishida 等[19]提出了QFE 模型,将片段抽取任务与多跳推理任务进行联合学习,使用RNN来提取答案的支撑句.Tu 等[20]提出了SAENet 模型,提出了learning-to-rank 算法过滤冗余文档信息,结合多任务学习以及图神经网络对答案以及证据共同预测,增强了模型的可解释性.Shao 等[21]提出了C2F Reader模型,通过实验证明了Transformers 有能力学习从一个实体到另一个实体的注意力从而替代图结构,认为多跳推理并不一定需要图结构.

法律的智能化在近些年来成为一个热点研究方向,其中一项重要的任务就是将机器阅读理解技术应用在司法领域,让人工智能自动地阅读和分析海量的法律文书,以提高司法人员在案件处理环节的效率.但目前关于中文司法领域的机器阅读理解的数据集相对匮乏.因此,Duan 等[22]提出了一个中文司法阅读理解(CJRC)数据集,它包含了大约一万个文档和近五万个问题和答案.文件来源于判决书,问题由法律专家注释.CJRC 数据集可以帮助研究人员通过阅读理解技术提取元素.在该数据集上,谭红叶等[23]对阅读理解中问题类型多样性的解答展开研究,提出一种基于BERT的多任务阅读理解模型,利用注意力机制获得丰富的问题与篇章的表示,并对问题进行分类,然后将分类结果用于任务解答,实现问题的多样性解答.

3 模型与方法

3.1 任务定义

机器阅读理解任务主要分为3 大类型:填空式阅读理解,选择式阅读理解,抽取式阅读理解.本文的主要研究就是基于抽取式阅读理解的数据集CAIL2020,与传统的抽取式阅读理解任务不同,传统的抽取式阅读理解任务定义为:

给定一段文本c={w1c,w2c,…,wnc}和问题q={w1q,w2q,…,wnq},通过模型从文本中抽取出对应的答案a.

而本文研究的数据集,除了需要从文本中抽取对应的答案部分之外还需要额外抽取支撑该答案的句子,即支撑答案的证据Sk,k为证据的句子数目.对于上述任务,其定义如式 (1) 所示:

3.2 模型构建

层次微调模型分为两层,第一层我们先使用RoBERTa 模型进行编码分别用线性层进行输出计算损失值,并保存最优权重,进行第一次微调,如图2中(a)所示.第二层再结合Retro-Reader 方法,将模型分为精读模块和泛读模块分别读取模型(a)微调后的权重进行二次微调,最后进行预测,如图2中(b)所示.

图2 HF-Reader 模型架构图

3.3 编码层

编码层将问题和文章的离散符号转换为连续向量表示序列.本文使用RoBERTa-large-wwm 来实现编码层.该方法主要更改了原预训练阶段的训练样本生成策略,将全词掩码的方法应用在了中文中,即对组成的同一个词的汉字全部进行[MASK].

首先本文使用预训练模型RoBERTa的词表先将输入的文本转化Input=[CLS]Q[SEP]T[SEP]的方式.其中[CLS]用于分类任务,Q为问题,T为文章,[SEP]作为分隔符来对问题Q和文章T 进行分割.Input 长度为512,如果总长度未达到512,空余部分以0 补全.之后将离散的符号映射至高维的向量,通过24 层Transformers,隐藏层维度为1 024,激活函数使用高斯误差线性单(GELU),并采用16 头注意力机制进行编码.经过编码层得到的向量将用于后续的交互层进行处理.

3.4 层次微调方法

层次微调方法的主要作用是将图2中(a)的模型结合更多的任务获取更广泛的相关领域知识.

该方法是通过RoBERTa 预训练模型与多任务学习方法进行训练,并保存最优的RoBERTa 模型权重.然后再将其权重值传递给图2中(b)部分的精读模块和泛读模块分别进行读取,继续在对应的任务上进行训练,从而达到一个较好的效果.

3.5 精读模块

精读模块主要包含编码层,交互层以及输出层.而编码层均采用3.3 节方法进行编码故本节主要描述交互层以及输出层.

采用多任务学习方法,任务1为序列标注问题从文章中标注答案开始位置以及结束位置,任务2为分类问题,结合问题以及文章进行判断得到答案的类型.由编码层可以得到输入层的1 024 维向量表示,n为512.

任务1 中定义BERT的输入为[CLS]Q[SEP]P.定义P中n个单词的BERT 编码为[h1,h2,…,hn],hi∈Rd.在BERT的模型上加入一个前向网络Ws∈Rd*l来获取分数si∈hiWs.经过Softmax计算得到模型预测的答案在文本中每个位置开始的概率PiS,如式 (2) 所示:

同理,加入另一个的前向网络WE∈Rd*l来获取分数ei∈hiWE.经过Softmax计算得到模型预测的答案在文本中每个位置结束的概率PiE,如式 (3) 所示:

使用n维度的矩阵W,将每个开始位置与每个结束位置的概率相加,若开始位置大于结束位置,则置为0.从中W寻找概率最大的位置.矩阵W的定义如式 (4)所示.

任务2 中BERT的输入同样为[CLS]Q[SEP]P.定义[CLS]的BERT 编码为h0∈Rd.在BERT 模型上加入一个前向网络Ws∈Rd*4用来获取分数得到[t1,t2,t3,t4].经过Softmax 计算得到模型预测的每个答案类型的概率Pi,并得到概率最大的答案类别为Pt.答案类型为4 种分别为SPAN 类型,YES 类型,NO 类型以及UNKNOWN 类型.对于类型的分类定义,如式 (5):

将任务1 中,W矩阵中概率最大的开始位置与结束位置与标准答案的位置输入交叉熵损失函数得到loss1.

同样将任务2 中概率最大的类型与标准答案的类型进行交叉熵函数得到loss2并将两者的loss相加返回总损失值L进行训练,具体定义如式 (6)-式 (8) 所示:

其中,yS与yE分别代表开始位置的标准值与结束位置的标准值,yt代表答案类别的标准值,PS与PE则是分别代表模型预测的开始位置与结束位置,Pt代表模型预测的答案类别,a与b为系数.

3.6 泛读模块

泛读模块也同样包含编码层,交互层以及输出层.编码层均采用3.3 节方法进行编码故本节主要描述交互层以及输出层.

本模块单独进行编码不与精读模块进行共享权重参数,该模块先将3.3 节得到512×1024 维度向量按照句子的位置信息,转化为m×1024 维的句子向量,其中m为文章中句子的数目,句子向量表示为S={s1,s2,…,sn}.然后再经过全连接层与Sigmoid函数输出预测值x,判断该句子是否为答案的证据.

最后损失函数使用二元交叉熵函数,计算过程如式 (9)和式 (10) 所示,其中y为目标值,x为预测值.

3.7 预测模块

精读模块的预测结果有两部分,第1 部分为答案类型一共有4 种分类.分别为截取类型(SPAN 类型),是否类型(YES/NO 类型)以及不可回答类型(UNKNOWN类型).第2 部分为根据问题在原文中所截取的片段.

我们先取第1 部分答案类型分类结果,如果分类为是否类型与不可回答类型,则直接输出答案类型作为精读模块结果.如果为截取类型,则取第2 部分输出内容为结果.

最后,将精读模块预测内容与泛读模块中输出的答案支撑句进行拼接,进行最终答案的输出,得到如图1的结果方便后续评估.

4 实验

4.1 数据集

本文的实验数据集为CAIL2020,训练集包括重新标注的约5 100 个问答对,其中民事、刑事、行政各约1 700 个问答对,均为需要多步推理的问题类型.验证集和测试集各分别约为1 900和2 600 个问答对,同样均为需要多步推理的问题类型.其中训练集中按照答案类型进行划分,如图3截取类型(SPAN 类型)数据包含2748 个问答对,是否类型(YES/NO 类)包含1 512个问答对,不可回答类型(UNKNOWN 类型) 包含758 个问答对.

图3 答案类型图

4.2 实验参数

实验训练过程中模型采用Loshchilov 等[24]提出的带有权重衰减的自适应动量估计算法(AdamW)作为优化算法,学习率为1e-5.使用预热学习率(warmup step),即先用较小的学习率训练,然后每步逐渐增大,直到达到最初设置的学习率,批处理大小为1,一共训练10 轮.

4.3 实验结果

由于预测结果主要包含两个字段,分别为“answer”和“sup”.“answer”对应的是模型预测的答案,“sup”则是模型预测的答案的依据.本文使用F1 作为评分的主要评分标准,分别对“answer”和“sup”的值进行计算精确率(precision)和召回率(recall),得到pAns,rAns,pSup,rSup.再计算综合的Joint F1 值作为最终评价标.其中precision用来描述所有预测的答案文本中与真正答案文本的相同字数所占比率,recall用来描述所有真正答案中与预测答案文本的相同字数所占比率.F1 综合了precision和recall两个指标,其定义如式 (11)和式 (12).

TP表示真实样本与预测样本中令牌(token)相同的部分,TP+FP表示预测样本中所有的令牌数目,TP+FN表示真实样本中所有的令牌数目.

Ans_F1 以及Sup_F1的计算方法则是将其对应的精确率与召回率分别相乘如式 (13)和式(14) 所示:

Joint_F1的计算方法则是将“answer”与“sup”的精确率与召回率分别相乘,再计算Joint 最终评价指标.具体如下式所示:

本文使用机器阅读理解中流行的主流预训练模型进行对比实验.并且选取了4 种不同规模的模型进行对比分析,主要为:

(1)BERT 模型,在预训练模型之后使用多任务学习方法进行预测.

(2)ALBERT 模型,采用矩阵分解等方法为轻量级的BERT 模型[25],并在预训练模型之后采用多任务学习方法进行预测.

(3)RoBERTa 模型,相较于BERT,训练时去除了下一句预测部分.其中对比实验中用到了其base 版本和large-ext 版本[26].同样使用多任务学习方法进行预测.

(4)MJL-DPCNN 模型,使用句法关系增强的关系要素图构建方法在DFGN 模型上进行支撑句挖掘并使用DPCNN 进行观点类问题分类[27,28].

(5)DFGN_CAIL 模型,按照CAIL2020的数据格式,修改了DFGN的数据处理部分.

(6)Cola 模型,CAIL2020 阅读理解比赛第4 名所用模型.

由于本文的数据集为中文数据集,因此使用中文全词覆盖的方式取代原本英文的WordPiece 方法.本文采用RoBERTa 作为预训练模型,实验的评价指标与HotpotQA 一致.以上模型在测试集上的实验结果如表1所示,可以看出所有的基线模型中RoBERTa-large模型效果最好.本文的模型方法相较于RoBERTa-large基线模型综合评分提升了3.38%.

表1 CAIL2020 实验结果 (%)

4.4 消融实验

消融实验部分将训练集按照9:1 进行分割分别作为新的训练集和验证集.为了进一步评估模型各个模块的贡献,本文进行了如下消融实验:

(1)-Retro Reader:去掉精读模块与泛读模块,并使用多任务方法取代进行预测.

(2)-HF:去掉层次微调方法.

表2实验结果显示,去掉层次微调方法后,Ans_F1的值下降了1.24,Sup_F1 下降了1.99,Joint_F1 下降了2.24.去精读模块与泛读模块,并使用多任务方法取代后,Ans_F1的值下降了2.01,Sup_F1 下降了2.48,Joint_F1 下降了3.7.通过消融实验分析,证明了本文所提模型的有效性.

表2 消融实验 (%)

5 结束语

本文提出了一种多任务层次微调模型,灵活使用预训练与多任务学习方法获取到更广泛的语义信息,并将答案类型预测和答案预测两个任务放入精读模块.使用多任务学习方法进行预测,再将证据抽取任务单独分放进泛读模块,单独进行训练预测,最后综合两个模块的预测结果进行输出,并且选取了BERT、ALBERT、RoBERTa、RoBERTa-large 四种不同规模的预训练模型对输出的实验结果进行了对比分析.实验表明,本文所提方法可以有效提高机器阅读理解的答案抽取以及证据抽取的效果.为了进一步评估模型各个模块的贡献,本文又通过消融实验将训练集按照9:1 进行了分割,用分割后新的训练集和验证集进行实验,分别去掉Retro-Reader 部分以及层次微调部分,并使用多任务方法取代进行预测后,F1的值均显示下降,进一步证明了本文所提模型的有效性.未来将把侧重点放在精读模块与泛读模块上,以进一步对模型进行改进优化,例如结合当前热门的图卷积网络技术以句子作为节点进训练并行预测,进一步提升机器阅读理解的效果以及可解释性.

猜你喜欢
多任务预测模块
数字时代的注意困境:媒体多任务的视角*
无可预测
28通道收发处理模块设计
“选修3—3”模块的复习备考
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
选修2—2期中考试预测卷(A卷)
结合自监督学习的多任务文本语义匹配方法
面向多任务的无人系统通信及控制系统设计与实现
基于Reworks操作系统的信息交互软件设计