徐 铭,李林昊*,齐巧玲,王利琴
(1.河北工业大学 人工智能与数据科学学院,天津 300401;2.河北省大数据计算重点实验室(河北工业大学),天津 300401;3.河北省数据驱动工业智能工程研究中心(河北工业大学),天津 300401)
人们使用各种知识和推理来帮助理解语言的含义。例如,思考Minsky[1]说的这些句子:“杰克需要一些钱,所以他去摇了摇他的存钱罐。存钱罐没有发出任何声音,他很失望。”将这两句话分别作为起始观测事件以及最终观测事件,在这两个观测事件中可以推断出一个合理的假设——存钱罐中并没有钱。这种使用常识性推理[2]获取观测事件之间最合理假设的过程被称为溯因推理。
Bhagavatula 等[3]从语言的蕴含[4-5]、逻辑[6]和常识性推理[7]中获得灵感并建立了溯因自然语言推理(abductive Natural Language Inference,aNLI)任务;此外,还发布了一个新的挑战数据集,即叙事文本中的溯因推理(Abductive Reasoning in narrative Text,ART)。
图1 展示了一个来自ART 数据集的真实案例,其中,H1和H2为正确假设,H3和H4为错误假设,O1和O2分别为起始观测和最终观测,S(H)表示对于H的分数。L2R2(Learning to Rank for Reasoning)模型[8]根据假设在数据中出现的次数将其标记为正确的、更正确的、错误的以及更错误的进行训练;但是这种使用排名的方式忽略了合理假设与不合理假设之间的相对性,会导致部分合理假设与不合理假设的距离过于接近。此外,传统模型缺少对于事件中重要单词的捕捉能力。
图1 L2R2与ABL模型的对比Fig.1 Comparison of L2R2 and ABL models
针对以上问题,本文提出下面3 个观点:1)在实际中引起观测变化的原因是多种多样的,合理假设往往不唯一,因此可以解释观测变化的假设都为合理的,不需要进行区分;2)一个假设是不合理的,因为它不能解释初始观测到最终观测的原因,即在构建推理模型的过程中,不需要对不合理假设进行排序区分;3)假设与观测中存在词语之间的深层语义联系,这些联系对于推理结果有至关重要的影响,应当更加关注于带有语义联系的单词。
基于以上观点,本文提出注意力平衡列表(Attention Balance List,ABL)的溯因推理模型,该模型主要有以下两点创新:1)考虑到合理假设与不合理假设的差异性和相对性约束,设计平衡列表损失,将多个一对一的训练方式改进为多对多的训练方式,拉大不同类别假设的差异;2)考虑到事件表达过程中单词重要性的差异,设计特征信息注意层获取权重矩阵,使用注意力机制增强对模型中关键单词信息特征的捕获。
aNLI 起源于针对两个句子之间语义关系的自然语言推理(Natural Language Inference,NLI),与之不同的是aNLI 任务需要在3 个事件之间判断两两事件之间的因果性。近年来,aNLI 引起了越来越多的关注,它使得自然语言处理(Natural Language Processing,NLP)工具更易于解释和理解。到目前为止,aNLI 任务典型的应用有知识图谱的补全[9-10]、常识性问答[11]、句子填充[12]以及知识整合[13]等。
NLI 与aNLI 任务进行的对比如表1 所示。对于NLI 而言,给出前提状态P以及假设H,它的任务是根据给出的前提P来判断P和H之间存在何种关系。P和H的关系可以为蕴含(E)、无关(N)与矛盾(C)。对于aNLI 任务,给出起始观测O1和最终观测O2以及一些假设(比如在例子中给出的H1和H2)。aNLI 的任务是推断H1和H2哪个可以解释O1到O2的情景变化的原因。除了构建aNLI 任务,Bhagavatula 等[3]还通过直接使用或再训练一些NLI 的先进模型展示了aNLI 的综合基线性能,比如ESIM(Enhanced Sequential Inference Model)+ELMo(Embeddings from Language Models)[14],使用了最新的语言模型如GPT(General Pre-Training)[15]、BERT(Bidirectional Encoder Representations from Transformers)[16]展示了一些测试结果,但是基线模型与人类的表现之间仍有相当大的差距。
表1 NLI与aNLI任务对比Tab.1 Comparison of NLI and aNLI tasks
然而,仅仅区分正确与错误并不能衡量一个假设的合理性。因此,为了充分模拟这些假设的合理性,Zhu 等[8]从排名的角度出发,提出L2R2模型,并使用BERT、RoBERTa(Robustly optimized BERT pretraining approach)[17]和ESIM[18]作为预先训练的模型进行测试,并根据假设发生的可能性对这些假设进行排序,使用Ranking SVM[19]、RankNet[20]以及LambdaRank[21]作为成对排名损失,ListNet[22]、ListMLE[23]以及ApproxNDCG[24]作为列表排序损失进行实验。实验结果表明,将aNLI 任务重新定义为排序任务确实带来了明显的改进。在此之后Paul 等[25]提出一种新的多头注意模型(Multi-Head Knowledge Attention,MHKA),该模型对半结构化的常识推理规则进行转码,并将它们合并到一个基于转换器的推理单元中,还通过建立反事实无方差预测任务(Counterfactual Invariance Prediction,CIP)证明了使用反事实推理的模型对于预测溯因推理任务是有效的。
aNLI 的任务包括观测和假设两个主要概念。观测描述了场景的状态,而假设是将一个观测转化为另一个观测可能的原因。具体来说,给出两个观测O1,O2∈O,其中O表示所有可能观测结果的空间,观测O1的发生时间早于O2。aNLI的任务目标是预测最合理的假设H*∈H,其中H是所有假设的集合。
假设被认为是直接蕴含于起始观测并且受限于最终观测。最合理的假设可以公式化如下所示:
其中:Hj依赖于起始观测O1,最终观测O2依赖于O1和Hj。
最合理的假设H*需要最大化P(O2|O1,Hj)和P(Hj|O1)这两部分的得分。它可以通过一个将O1、O2和H j作为输入的评分函数来进行建模,并且输出一个真实的值sj。
为了模型适应,aNLI 任务最初被定义为一个双项选择问题,其目标是从两个候选的H1和H2中选择最合理的假设。从分类的角度来看,它可以表示为一个区分s1−s2类别的鉴别任务:结果为正表示s1比s2更可信,而负表示相反。这是一种不完全的一对一的方法,它只考虑了平衡列表中多对多方法的一部分。
本文从列表的角度重新定义了这个任务,并使用了均方误差与交叉熵损失函数进行验证。在平衡列表中,观测O1和O2可以看作是一个查询,它们的候选假设Η=可以看作是相应的候选文档集,标记有可信分数y=,其中N是候选假设的数量。
传统的溯因推理模型仅仅考虑成对假设之间的关系,为了捕捉更多假设之间的语义关系,本文采用平衡列表的训练方式,并在模型上增加了注意力机制来关注假设与观测之间关联度较高的单词。
如图2 所示,模型总体分为输入层、上下文编码层以及特征信息注意层:输入层主要对观测和假设进行格式化处理,使用不同的向量来表示文本中包含的各类信息;在上下文码层中,本文使用RoBERTa 获取对于输入的上下文表示;在特征信息注意层中,使用注意力机制对上下文表示中重要区域进行捕获。
输入层 本文使用[O1;H j;O2]作为模型的原始输入,其中“;”表示句子的拼接。为了更好地区分句子开头与结尾的位置,需要使用不同的占位符来进行标识。模型输入中使用[CLS]来作为段落的开头,使用[SEP]作为每个句子的结尾。标识后的输入SInput 可表示为[[CLS];O1;[SEP];H j;[SEP];O2]。对于所有的SInput 都进行嵌入并得到HInput,其中HInput 中包含词向量(如E[Doug])、文本向量(如Ea)以及位置向量(如Ei)三个不同的向量进行表示。对于这三个嵌入向量的描述如表2 所示。
表2 HInput中向量的描述Tab.2 Description of vectors in HInput
上下文编码层 该层是对输入的词向量使用RoBERTa模型进行特征提取。RoBERTa 是双向训练的语言模型,与word2vec、GloVe(Global Vectors)等静态词嵌入模型相比,可以得到与语境相关的词向量(即词向量会跟随上下文而发生变化),提取语料特征更加有效。由于RoBERTa 可以用于各种自然语言处理(NLP)的任务,且可以使用标记的语料进行有监督的训练模型,因此本文使用基于RoBERTa 的微调分类模型。
将SInput 中标记词嵌入、片段词嵌入以及位置词嵌入拼接得到每个单词的信息表示向量Ei,并将Ei输入到RoBERTa模型并通过串联的Transformer 块进行编码,生成深度的双向语言表征,得到对于HInput 中每个标识的特征表示hi,如式(2)所示:
其中RoBERTa 表示使用RoBERTa 预训练模型对Ei进行编码。RoBERTa 使用大规模文本数并采用标记语言模型(Masked Language Model,MLM)的方式来构建预训练任务。
特征信息注意层 对于人们而言,在寻找更合理的假设时,并不会关注于所有的单词,而是会更加注意某些单词之间的联系。举例来说,对于图2 中的输入,分析时会更加关注 于O1中 的“lonely”到O2中“no”“lonely”的变化,而对于“was”“longer”等词并不需要太多关注。对于H j而言,会更加关注于“made”和“friends”。
为了捕捉假设与观测中哪些单词对模型起了重要作用,本文使用了注意力机制。对于上下文编码层得到的hi,首先使用修正线性单元(Rectified Linear Unit,ReLU)激活函数进行去线性化处理,减少参数的相互依存关系。定义了键值对中键的表示如下:
由于每句话的长度不同,所以不同hi的大小也不同,导致使用键值对不相等的注意力机制较为困难,因此本文采用键值相等的形式,具体定义如下所示:
由于观测和假设中单词的重要程度取决于注意力权重,本文采用点击的方式来计算注意力权重,然后通过值与注意力权重对应相乘得到带有注意力权重的特征表示Ai。
其中:Q∈RM×d(M表示一句话中单词的长度,d表示隐藏层的大小),Q为可训练的参数,将键的表示矩阵映射到不同的空间中,⋅表示点积,MatMul 函数表示对应相乘。
经过注意力层之后,使用均值的方式对特征表示进行降维,最后经过一个全连接层(Fully Connected layer,FC)将分布式特征表示映射到样本标记空间得到对于每个假设的分数sj。为了计算效率,本文采用线性回归公式预测分数。
其中:Wi∈R2d×d,bi∈Rd,*表示矩阵乘法,Wi、bi表示可训练参数。
为了在损失函数中使用平衡列表的训练方式,当在不同的HInput 中观测相同时,本文将这些观测相同的HInput 作为同一组进行输入,每组内最少有两个不同的假设,将一组HInput 作为一个列表同时输入上下文编码层。
本文使用均方误差(Mean Square Error,MSE)损失和交叉熵(Cross Entropy,CE)两种损失函数来验证模型的有效性。在计算损失时,采用平衡列表的方式,将所有观测相同的潜在假设都加入到同一样本中作为一组,可以得到对于不同假设的分数,将分数作为一组并计算损失。其中标定所有正确假设的标签都是相同的,所有错误假设标签也为相同值,以保持正样本内部和负样本内部的平衡性。
1)交叉熵(CE)损失函数。交叉熵可看成是两个概率系统之间的信息量差异,主要用于描述真实样本分布与训练后模型的预测标记分布的相似性。本文首先使用softmax 函数将样本分数映射到(0,1)区间,如式(8)所示:
然后使用交叉熵函数对模型输出的分数列表计算损失,具体公式如式(9)所示:
其中:ℓCE表示交叉熵损失函数,yj表示样本标签,N表示一组样本中假设的数量。由于真实值中可能存在多个正确假设,本文采用传统的交叉熵对预测值与真实值之间的差值进行计算。
2)均方误差(MSE)损失函数,主要用于回归损失,描述目标变量和预测变量之间差异绝对值之和,不考虑方向,如式(10)所示:
早期的语言推理方法是由一些简单的神经网络结构来发现语言中有用的特征,如word2vec[26]、GloVe[27]等,最近的工作已经开发了上下文表示模型。例如,Peters 等[28]的对于语言模型的嵌入ELMO 和Devlin 等[16]的BERT。BERT 的原始实现和架构已经被一些变体和其他基于Transformer 的模型所超越,如RoBERTa、DeBERTa 和UNIMO(Towards Unified-Modal Understanding and Generation via Cross-Modal Contrastive Learning)等。RoBERTa 取代了BERT 的训练方法,并使用更大的批次和更多的数据进行训练;DeBERTa[29]使用分散的注意力机制和增强的掩码解释器来改进BERT模型。为了有效地适应单模式和多模式的理解任务,Li 等[30]提出统一模态学习模型UNIMO。由于设备资源的限制,本文选择RoBERTa 作为预训练语言模型。
aNLI 任务使用ART 数据集,这是第一个用于叙事文本中的外展推理的大规模基准数据集。它由大约2 万项观察结果和大约20 万对假设组成。观察结果来自一套手工策划的故事集,训练集包括所有通过众包收集的可信和不可信的假设,而验证集和测试集包括通过以BERT-Large 对抗性过滤算法选择每个叙事上下文的候选假设。关于ART 的统计数据如表3 所示,其中:h+表示合理的假设,h-表示不合理假设;测试集未对标签进行公开,需要在网络上进行提交,且有提交限制。
表3 ART数据集的统计信息Tab.3 Statistics of ART dataset
本实验采用AUC(Area Under Curve)和准确率(Accuracy,Acc)两种广泛适用的评价指标。Acc 用来描述模型对假设选择的准确程度,当合理假设标签被模型预测为正类的样本时,认为是正确的,反之认为是错误的。由于原有的Acc 评价指标不能更好地评估远离测试数据的模型,因此本文将AUC 作为一个额外的评估指标来处理偏态样本分布。AUC 被定义为ROC(Receiver Operating Characteristic)曲线下与坐标轴围成的面积,是一种统计上一致且比Acc 更具鉴别性的测量方法。Acc 计算公式如下所示:
其中:TP(True Positive)表示合理假设被模型预测为正类的样本数量;FP(False Positive)表示不合理假设被模型预测为正类的样本数量;FN(False Negative)表示合理假设被预测为负类的样本数量;TN(True Negative)表示不合理假设被预测为负类的样本数量。
特征提取层 使用预训练RoBERTa-Large 模型,模型由24 个Transformer 模块串接而成,16 个注意力头,1 024 个隐藏节点数,输入句子HInput 的最大长度为72,在O1和O2相同的一组内,也就是一个批次大小内,限制最多有22 个HInput 作为样本的数量。
注意力层 注意力层中使用ReLU 作为激活函数,设置隐藏层的大小为1 024,为了防止过拟合,Dropout 值设置为0.6。
由于数据量的差异,对于不同训练数据,选择在验证集中产生最佳性能的超参数。具体来说,学习率固定在1E-6,学习率不进行衰减,使用交叉熵作为损失函数,使用Adam 优化器更新参数,固定批大小为1,训练的轮数会随着训练数据的量而变化。对于验证集,使用Acc和AUC进行评估。
本文使用以下4 个基准模型进行比较:
1)BERT 是一种预训练语言模型,它使用掩蔽语言模型,并预测下一个句子作为目标训练。例如,它遮住输入中的某些单词,然后训练并预测被遮住的单词。
2)RoBERTa 与BERT 具有相同的结构,但没有对下一句话的预测(Next Sentence Prediction,NSP)。RoBERTa-Base 和RoBERTa-Large 使用更多的数据和更大的批次进行培训。
3)L2R2是一种学习推理排名模型。L2R2使用1 个包括1个分数函数和1 个损失函数的学习排名框架,将aNLI 任务重新定义为一个排名问题。
4)MHKA 是一种新的多头知识注意模型,并采用了一种新的知识集成技术。由于MHKA 未公开CIP(Counterfactual Invariance Prediction)训练数据集(MHKA 论文中使用CIP 进行预先训练,然后再进行ART 数据集的训练),因此在准确率中借鉴MHKA 论文中的结果,MHKA 中未使用AUC 评价指标,在AUC 结果中不与MHKA 进行对比。
在4 个基准模型中,使用成对的假设作为输入,其余参数设置与ABL 模型中一致。具体来说,学习率固定为1E-6,使用交叉熵作为损失函数,使用Adam 优化器更新参数,固定批大小为1,Dropout 值设置为0.6,训练的轮数会随着训练数据的量而变化。
为了证明注意力机制平衡列表模型的有效性,在ART数据集上将本文提出的模型与其他当下比较流行的模型和基线进行了对比实验。实验结果中本文提出的训练方式在Acc 和AUC 上均有所提升,表明了本文模型的有效性。实验结果如表4 所示,使用带有注意力机制的平衡列表方式在验证集上和测试集上均有提升,相对于L2R2,在验证集上Acc提升了0.46 个百分点,AUC 提升了1.36 个百分点,表明本文模型可以更好地处理偏态样本分布。在测试集上本文模型有较小的提升,分析原因可能是测试集需要在网上进行测试,本模型在测试时,并没有将验证集加入训练过程进行训练。表4 中ABL 表示本文模型,其中使用带有注意力机制的交叉熵平衡列表损失。
表4 不同模型的实验结果 单位:%Tab.4 Experimental results of different models unit:%
为了进一步观察本文模型中平衡列表训练方式和注意力机制分别对模型的影响,进行了详细的消融实验。借鉴MHKA 中使用{1%,2%,5%,10%,100%}的训练集作为低资源数据,即{1 700,3 400,8 500,17 000,169 000}的数据进行训练,验证本文模型在aNLI 任务中稀疏数据上的稳健性,其中k表示1 000 条数据。在保持模型结构和大部分超参数不变的情况下,只改变训练数据集的规模以及训练时间,在低资源数据集上进行实验。实验结果表明使用平衡列表的方式以及增加注意力机制分别对模型有较好的效果,并且在低资源数据上稳健性要优于其他模型。
为了证明本文平衡列表训练方式的有效性,使用平衡列表与其他主流模型进行对比。本文使用MSE 和CE 两种不同的损失函数在低资源数据集上进行对比实验来更好地对比不同损失函数对平衡列表的影响。实验结果表明,相较于RoBERTa、L2R2以及MHKA 等模型,平衡列表的训练方式可以捕捉更多的组内信息,因此精度也有所提升。
添加平衡列表后在低资源设置上与其他模型准确率的对比表现如图3 所示。其中,ABL-A 表示去掉特征信息注意层即仅使用平衡列表方式的实验结果,ABL-A 使用交叉熵作为损失函数。MSE 表示将ABL-A 方法中的交叉熵损失函数替换为均方误差损失函数,ABL-A(MSE)在低资源数据集上平均有0.6 个百分点的提升,ABL-A 在低资源数据集上平均有1.1 个百分点的提升。由于均方误差主要应用于预测数值,也就是线性回归任务,因此在分类任务场景中效果较差,但是平均效果仍高于其他模型,可以体现出平衡列表的有效性。
图3 平衡列表与其他模型在Acc上的对比Fig.3 Comparison of balanced list and other models on Acc
使用平衡列表在低资源设置上AUC 的表现如图4 所示,与Acc 一样使用了MSE 以及CE 损失函数进行实验,其中ABL-A(MSE)在低资源数据集上平均有0.9 个百分点的提升,ABL-A 在低资源数据集上平均有1.8 个百分点的提升。表明平衡列表对于分类器的效果有较大提升。由于MHKA中未对CIP 数据集进行公开,因此在AUC 评价指标中未与MHKA 对比。
图4 平衡列表与其他模型在AUC上的对比Fig.4 Comparison of balanced list and other models on AUC
为了探索注意力机制对于模型的影响,本文在平衡列表的基础上增加了对注意力机制的消融实验。表5 和表6 分别展示了注意力机制在低资源数据集上Acc 与AUC 的效果。在平衡列表基础上增加注意力机制的Acc 结果如表5 所示,平均约有0.6 个百分点的提升,实验结果表明增加注意力机制捕捉输入句子中每个单词的重要程度可以提高对模型对因果关系的判断。
表5 增加注意力机制在Acc上的结果 单位:%Tab.5 Results of adding attention mechanism on Acc unit:%
在平衡列表基础上增加注意力机制的AUC 结果如表6所示,增加注意力机制对AUC 平均约有1 个百分点的提升,在稀疏数据上有更好的提升效果。实验结果表明在低资源数据集上增加注意力机制可以提高分类器的性能。
表6 增加注意力机制在AUC上的结果 单位:%Tab.6 Results of adding attention mechanism on AUC unit:%
基于上述实验,训练数据的规模对模型的分类效果有较大的影响,大量高质量的训练数据集可以提高模型对特征的捕捉能力。使用平衡列表的训练方式以及增加注意力机制在低资源数据集上也可以取得较好效果。
本文针对传统溯因推理任务中没有考虑到正确假设和错误假设整体之间影响的问题,构建了基于RoBERTa 平衡列表的训练方式,并且为了捕获关键词之间的强联系对模型增加了注意力机制,证明了带有注意力机制的平衡列表模型有较强的表征学习能力。通过与L2R2、MHKA 等主流模型进行对比,由实验结果可知本文模型在所有低资源数据集Acc和AUC 的评价指标上平均有1.2 个百分点和2.7 个百分点的提升,表明带有注意力机制的平衡列表损失的溯因推理模型可以高效地提取观测与假设之间的语义关系。