武钰智,向 伟,史娜维
(1.西南民族大学电子信息工程国家民委重点实验室,四川 成都 610041;2.西南民族大学电气工程学院,四川 成都 610041)
机器阅读理解(Machine Reading Comprehension, MRC) 是自然语言处理中一项重要且具有挑战性的任务,它通过要求机器根据给定上下文回答问题来测试机器对自然语言的理解[1-2]. 目前,随着迁移学习的不断发展,基于预训练的语言模型[3-4]在机器阅读理解领域的许多基准数据集[5]上取得了显著的性能提升并在该领域占据了主导地位,明显优于以前基于CNN 和RNN 的方法.然而这些预训练语言模型的输入长度是有限的,在某些情况下,数据集的通道长度会超过这些模型的最大限制长度.例如,TriviaQA[6]数据集的平均长度为2 622.
当数据集的序列长度超过BERT 模型的最大限制长度时,一种常用的方法是将这些文本等间距地切割成若干个片段,训练的时候对每个片段单独处理,各个片段之间没有联系,并根据每个片段独立进行预测,最终将来自多个段的答案集合起来[4]. 然而这种方法存在两个问题,第一由于片段之间是独立训练的,所以不同的token 之间最长的依赖关系取决于片段的长度;第二出于模型效率的考虑,在切割片段时往往不会考虑句子的自然边界,僵硬地按照固定长度切割片段,切割出来的片段大多都存在语义不完整的问题,这就可能会导致正确答案跨度被分成不同的部分,或者无法在正确答案跨度周围保留足够的上下文信息,如图1 所示.
图1 原始方法Fig.1 Original method
针对上述问题,本文通过添加重叠窗口层以更灵活的方式切割输入文本,防止正确的答案跨度被分成不同的部分,使用两个BERT 模型独立编码问题和文档,并且在模型中添加递归层来传递不同片段之间的信息,赋予模型建立更长期依赖的能力.最后在TriviaQA 和 CoQA[7]两个机器阅读理解数据集上验证BERT-FRM 模型的有效性. 实验结果表明,本文提出的BERT-FRM 模型与基线模型相比在基准数据集上性能有显著提升.
本文主要研究如下:
1)提出一种结合重叠窗口的双BERT 编码层,重叠窗口层用来将输入序列切割成具有重叠的固定大小的片段,编码层采用将问题和文本分别送到不同的BERT 模型的方法来获得问题和文本的编码表示.
2)添加了递归层,采用融合LSTM 层的方法允许信息跨段流动,保证BERT 模型在进行答案选择时可以借鉴当前段以外的信息.
3)本文复现了三种具有代表性的基于预训练的机器阅读理解模型,将其作为基准模型与提出的BERT-FRM 模型进行实验对照,并进行了消融性分析.
随着TriviaQA 和CoQA 等大规模机器阅读数据集的引入,出现了越来越多的以注意力为导向、需要理解问题和推理文档内容的机器阅读理解任务[8-10].在类似于TriviaQA 这样的抽取式机器阅读理解数据集中,机器需要根据给定的文档和问题从文档中提取一个连续的片段作为答案.对于机器阅读任务中长文本的处理,Choi Eunsol 等人[11]首次将文档的层次性质用于问答,并为长文本的机器阅读理解提供了一个由粗到细的框架.Min Sewon 等人[12]使用基于给定内容选择一组句子作为一些问题的输入的方法来处理机器阅读理解中的长文本问题.然而这些方法都不适用于需要跨段进行答案提取或深度推理的复杂任务.相比之下,本文提出的BERT-FRM 模型在处理长文本的同时,允许模型采用更简单的方法在不同段之间传递信息.
近年来,为了捕捉自然语言中的远距离上下文,一些模型探索了在Transformer 中使用局部+全局注意力的方式,并对其进行预训练以用于长文本自然语言任务.戴子航等人[13]提出了一种新型的网络结构Transformer-XL,它结合了片段级递归机制和位置编码的创新方法.而Longformer[14]则通过引入一个基于局部滑动窗口的掩码来代替全局掩码的方法来减少模型计算量,从而解决了Transformer 由于计算量而无法捕获长距离信息的问题,并将BERT 扩展到更长的基于序列的任务. 随着预训练语言模型的进步,目前已经提出了几种 BERT 变体来处理任务中的长文本并取得了重大进展. Raghavendra P 等人[15]提出了一种基于级联思想的方法,将文档切割成多个片段用于解决文本分类任务中的长文本问题. 龚宏宇等人[16]基于强化学习提出了一种分割策略网络,该网络使模型能够通过强化学习更准确地对长文本进行分割处理.
在本项工作中,本文遵循与Raghavendra P 和戴子航等人类似的做法,基于BERT-Base 模型提出了支持长文本处理的BERT-FRM 模型.本文工作表明,使用递归层传输跨段信息可以有效缓解机器阅读理解任务中的长文本问题并提升原模型的性能.
本节将详细描述所提出的BERT-FRM 模型,该模型建立在预训练的BERT 模型之上. BERT-FRM 模型的整体架构如图2 所示,由重叠窗口层、双 BERT 编码层和用于传输不同片段信息的递归层组成.
图2 BERT-FRM 的架构概览Fig.2 Overview architecture of BERT-FRM
模型在重叠窗口层使用滑动窗口的方法,通过将窗口大小和重叠步长大小设置成固定值,把数据集中的文档切割成具有重叠部分的若干个片段输入到BERT 编码层中,以解决正确的答案跨度可能会被切割成不同的部分的问题.编码层为每个问题和文档片段生成统一编码表示.其次模型在BERT 编码层后添加了递归层,用来积累每个片段中的有用信息,为模型建立长距离依赖能力提供保证.最后答案提取器采用最大池化的方法集成来自多个片段的候选答案,并选择概率最高的一个作为最终答案.
由于BERT 模型的最大输入长度为512,当面对超过这个长度的文本输入时,一种常用的解决方法是将这段文本等间距地切割成若干个片段,再独立地根据每个片段进行预测.但这种方法可能会导致正确答案跨度会被切割成不同的片段,或者正确答案跨度周围无法保留足够的上下文信息,如图1 所示(红色部分为正确的答案跨度).
针对这个问题,本文实现了一种基于级联(HIERARCHICAL)思想的做法,设计了重叠窗口层.级联思想本质上就是对数据进行有重叠地分割,这样切割出的每个片段之间都保留了一定的关联信息,如图3所示.本文通过设置滑动窗口层将数据集文档有重叠地切割成若干个片段,然后将它们输入到BERT 模型中.本次实验里将窗口大小设置为200 个单词长度,重叠步长设置为100 个单词长度(窗口大小的一半).
图3 重叠窗口层的方法Fig.3 Method for overlapping window layers
BERT 模型近年来得到了长足的发展,并在绝大多数机器阅读理解数据集上展示了最前沿的性能.在抽取式机器阅读理解数据集中,通常给出一个问题Q和文档D 的一段,任务是从文档中找到一个连续的片段作为答案.因此,BERT 模型需要预测答案在文档D中的开始和结束位置. BERT 模型的输入是问题和文档的串联,公式如下:
[CLS]Question[SEP]Document, (1)其中[CLS]用于每个文档段的开头,[SEP]用于分隔问题和文档. BERT 模型的输出是与每个token 对应的编码向量,由于答案是由文档中连续的token 组成,所以预测答案的过程本质上就是确定token 在答案开头和结尾的位置的过程. 为获得问题和文档的编码,本文将BERT 作为编码层.考虑到直接做问题和文档的编码,只使用一个BERT 模型的一个[CLS]向量是不足以充分并完全表示较长的文本的.因此本文提出了一种结合重叠窗口层的双BERT 编码层,将问题和文本分别送到不同的BERT 模型来获得问题和文本的编码表示.鉴于BERT 仅限于特定的输入长度,本文将输入序列切割成具有重叠的固定大小的片段,然后分别送入BERT 模型当中.
在抽取式机器阅读理解任务中,当数据集的序列长度超过BERT 模型的最大限制长度时,BERT 模型会独立地根据每个片段进行预测答案,这种分段式的数据提供方式存在信息并不能在片段与片段之间传递的问题,因此BERT 模型能够捕捉长距离依赖的上限就是片段的长度,这在高度依赖模型捕捉数据长距离依赖能力的机器阅读理解任务中无疑是很大的短板.并且由于BERT 模型在进行片段切割时,不考虑片段与片段之间的关系,各个片段之间缺乏上下文信息,这可能会导致跨段提取答案时出现偏差,这就会对模型的性能产生很大的影响.而重叠窗口层的方法本质上是将文档进行重叠分割,每段之间只保留了一定的关联信息,不能保证模型具备捕获长距离依赖的能力.为解决长距离依赖问题,本文在模型中融合了递归层,即将多个BERT 层的输出用一个长短期记忆网络(Long Short Time Memory,LSTM)[17]建立连接,从而实现一个“长”BERT.
与BERT 模型不同,BERT-FRM 在训练时是将具有重叠的固定大小的片段形式作为输入,并且BERTFRM 的上一个片段的状态会被缓存下来,然后在计算当前段时再重复使用上一个片段的隐藏层状态,由于对上一个片段的隐藏层状态进行了重复使用,这就赋予了BERT-FRM 建立更长期的依赖能力.
在图2 中,本文通过双BERT 组件获得问题编码EQ和片段编码ES,将编码拼接在一起以获得包含问题和片段的句子表示,并通过递归层进一步丰富句子表示.在BERT 模型中,[CLS]的最终隐藏状态聚合了整个序列的表示.因此,利用[CLS]的隐藏状态,通过一层单向的LSTM 来达到递归的目的. 具体来说,就是将上一个片段的LSTM 输出作为当前片段LSTM的隐藏状态,将当前片段的[CLS]表示作为LSTM 的输入,然后将当前LSTM 的输出作为该片段下一时刻的隐藏状态,并且上一个片段的所有隐藏状态只参与前向计算,不再进行反向传播,这就形成了递归层.例如将包含当前段a 的片段表示为Ra,由递归层丰富后的片段表示为
其中 f 是递归函数,使用 LSTM 递归,Ra是当前输入是之前的隐藏状态. 本文在 LSTM 递归中使用LSTM 单元作为递归函数:
最后,用softmax 来计算片段中每个词是答案的起始位置的概率和结束位置的概率:
其中,W1W2 是模型的可训练参数.
答案提取器通过监督学习进行训练,损失函数使用交叉熵损失,该损失函数可以根据真实答案yn和预测概率xn进行计算:
本文在实验中使用了两个机器阅读理解数据集来评估基线模型和BERT-FRM 的性能.
①TriviaQA,该数据集具有以下特点:文本语法复杂,需要大量的复合信息;有用的信息往往跨越多个句子,需要多层次的推理才能得到答案.此外,数据集中的每个文档平均包含2 622 个单词,非常适合本文的长文本实验. 在实验中,主要使用 TriviaQA 中的Wikipedia 子集.
②CoQA,该数据集是用于建立对话问答系统的大型数据集,该数据集是用于建立对话问答系统的大型数据集,通过真人问答的方法收集了8 000 多个对话,从中提取出了127 000 个问答.该数据集的特点在于答案能够从对话段落中找到原因,且形式更自然.
表1 汇总了本实验中使用的数据集的部分数据,包括问题数量、平均文档长度和最大文档长度.
表1 数据集特征统计Table 1 Dataset characteristics statistics
本文复现了三种基线模型与BERT-FRM 进行了实验对比.
①BERT-Base 是一个性能非常强大的基线模型,是抽取式机器阅读理解任务中具有先进性能的代表性模型. 类似地,它采用固定滑动窗口分割方法——以固定步长从左向右移动到下一段. 本文分析了在TriviaQA 和CoQA 两个数据集中不同步长大小下的Bert-Base 模型的性能,由表2 可以得出:最大输入长度设置为512 时,BERT-Base 模型分别在 TriviaQA 和CoQA 中获得了最佳性能.
②段落选择器[18]是一个结合了信息检索的机器阅读理解模型,主要用于解决开放领域的QA 问题.段落选择器是通过直接训练一个排序模型,然后给定一个问题,对检索到的段落或文档进行排序,将更相关的文档输入BERT-base 模型来提取答案的方法,从而提高模型的准确性.由于段落选择器中排序模型的输入会涉及到数据集中的会话历史问题,对于不涉及会话历史的TriviaQA 数据集,本文将段落选择器的输入设置为只与当前问题有关,对于CoQA 也进行同样的操作.
③RCM 模型是2020 年ACL 会议中新提出的一种用于长文本机器阅读理解的分块策略模型,通过强化学习方法以更灵活的方式对长文本进行切割学习.RCM 模型的主要特征在于它可以让模型通过强化学习学习如何在阅读长文档时智能地选择步长大小,从而有助于在答案周围保留足够的上下文,防止从片段中提取不完整的答案. 由于RCM 模型建立在BERTLarge 模型之上,为保证实验公平性,本文将BERTLarge 更换为BERT-Base 重新进行实验复现.
本文采用的评价指标为抽取式机器阅读理解任务中常用的模糊匹配度F1,用来计算预测结果与标准答案之间的匹配程度.
对于BERT-Base 模型,本文尝试了在192、256 和512 三种不同的步长大小下模型的性能实验. 对于段落选择器,在实验中使用的是由Htut 提出的选择器,并且对每个问题,都使用排序模型将检索到的前五个段落输入到Bert-Base 模型,以产生一个答案. 对于RCM 模型,采用与BERT-FRM 模型相同的实验参数进行复现.对于 BERT-FRM 模型,也采用了与BERTBase 模型相同的三种不同大小的步长进行实验,并且将窗口大小设置为200 个单词长度,将重叠步长设置为100 个单词长度.对于BERT-SLI,模型的训练使用四颗 GeForce GTX 1080Ti 11GB GPU,默认 BERT 版本的Adam 优化器,学习率为3e-5,训练的epoch 为3,每个epoch 耗时约为20 小时. 本文在 TriviaQA 和CoQA 的训练集上对模型进行了多次训练,并选择其中一个性能最好的来计算测试集的准确率.
本文分别在 BERT-Base、段落选择器、RCM 和BERT-FRM 上进行了实验,BERT-FRM 模型性能始终优于BERT-Base 和段落选择器两个基线模型,实验结果如表2 所示.在 CoQA 数据集上,可以发现随着最大序列长度的减少,BERT-Base 和段落选择器的性能有明显下降. 随着最大序列长度从512 减少到192,BERT-Base 和段落选择器的 F1 值分别下降了7.5%和20.9%. 在最大序列长度分别为192、256 和512的情况下,BERT-FRM 的性能比 BERT-Base 提高了2.3%、3. 1% 和 0. 8%,比段落选择器提高了 17.1%、13.2% 和 2.2%. 由于 TriviaQA (wiki) 数据集中的文档长度较长,本文直接将最大序列长度设置为512, 从表 2 可以得出,与 BERT-Base 相比,BERTFRM 的性能提高了0.8%,与段落选择器相比,性能提升1.7%.在CoQA 数据集中,可以发现当最大序列长度为192 时,BERT-SLI 的性能比 RCM 提高了0.3%,当最大序列长度为256 和512 时,BERT-FRM 性能虽略有逊色,但基本与RCM 模型成绩持平,也证实了本文提出的模型具备一定的性能优势.
表2 实验结果Table 2 Experimental results
为探究递归机制对模型的贡献,本文进一步设计消融实验进行分析:在没有重叠窗口层的情况下,单独使用 LSTM 递归的效果. 如表 3 所示,在CoQA 数据集上,当最大序列长度为 192 和256 时,仅使用LSTM 递归可以将F1 值提高 1.1%、1.9%,在TriviaQA(wiki) 数据集上,可以将F1 值提高0.2%.
表3 消融实验结果Table 3 Ablation experiment results
结果表明使用递归机制能够帮助模型建立长距离依赖的能力,通过将上一个片段的状态会被缓存下来,然后在计算当前段时再重复使用上一个片段的隐藏层状态,由于对上一个片段的隐藏层状态进行了重复使用,由此可以保证模型在进行答案选择时借鉴当前段以外的信息,可以有效解决模型无法回答跨段信息的问题,进一步提升了模型性能.
本文提出了一种基于递归机制的长文本机器阅读理解模型BERT-FRM.未经修改的 BERT 模型在机器阅读理解任务上就可以取得不错的效果,在此基础上,本文使用重叠窗口层解决了正确的答案跨度可能会被切割成不同部分的问题,双BERT 组件对问题和文档进行独立编码,递归机制可以使模型具备建立更长期依赖的能力,并在两个公开数据集 TriviaQA 和CoQA 上进行了实验,结果证明了提出的 BERT-FRM模型的有效性. 在未来的工作中,更有效地解决BERT 模型中的输入长度限制问题仍然是一个挑战,在下一阶段可以考虑结合全局注意力机制以加深文本理解实现更好的性能.