面向多阶段匹配的答案选择模型
2023-02-14陈建贵张儒清郭嘉丰范意兴
陈建贵,张儒清,郭嘉丰,范意兴
1.中国科学院 计算技术研究所 网络数据科学与技术重点实验室,北京 100190
2.中国科学院大学,北京 100190
此近年来,互联网的普及使得数据量呈爆发式增长,搜索引擎所提供的排序文档列表无法满足用户对精准答案的需求。给定问题和候选答案,答案选择任务要求模型能从候选答案中找到与问题最匹配的答案[1-2]。答案选择技术可以直接为用户提供符合问题的答案,一定程度上提升用户的使用体验。近几年,答案选择技术广泛应用于智能问答客服,例如亚马逊公司的Alexa、苹果公司的Siri和Google助理。
不失一般性,对于一个问题,候选答案可以按照与问题的匹配程度分为三种类型:不相关、相关不合理、相关且合理答案。如表1所示,问题是“红酒干红和半干的区别?”。答案1明显与所提问题无关,所以答案1的类型是不相关;答案2提到了“干红葡萄酒”的定义,只能回答部分问题,不具备合理性,因此答案2的类型为相关不合理;答案3能够完整准确地回答所提问题,所以它的类型为相关且合理。然而,现有的答案选择模型和相关数据集存在一些限制。已有答案选择任务数据集主要考虑问题与答案的相关性,即将候选答案分为不相关答案和相关答案,如WikiQA[3]、InsuranceQA[4]等数据集。已有模型仅针对上述数据集进行建模[5-8],对于表1的三种答案类型无法区分,因此也只能建模问题与答案的相关性。
表1 三种候选答案类型Table 1 Three types of candidate answers
为了解决这一挑战,本文提出一种新的基于多阶段匹配的答案选择模型(MSMM)。人类在解决答题过程中,一般先解决简单的问题,对于比较难的问题,需要更多的推理步骤。为了模拟这一过程,将MSMM模型分为两个阶段。首先,第一阶段模块先将简单易解决的问答对分离出去。具体的,该模块依次由嵌入层、编码层、对齐层、融合层和池化层组成。嵌入层首先将离散文本转换为连续空间向量;编码层使用卷积神经网络对输入向量进行深度编码;对齐层对问题和答案的向量交互表示;融合层综合前面步骤生成的向量信息;池化层去除冗余信息,压缩特征。最后由预测层最终处理,从而给出第一阶段的预测。第二阶段模块的架构与第一阶段模块整体上相同,不同的是第二阶段模块的输入是第一阶段模块融合层的输出。
为了比较两阶段输出的可靠性,引入模型输出的不确定性,将两阶段不确定性更低的输出作为模型的最终预测。同时,还引入语义角色标注信息和单词相似矩阵信息来增强模型的推理能力。具体的,语义角色标注信息能够提供句子各个成分与谓词之间的关系,有助于软对齐问题与答案之间的相同成分单词,辅助分析它们的结构逻辑。单词相似矩阵信息利用WordNet知识库丰富的同义词关系信号,生成数字化的相似匹配矩阵,进一步增强模型对同义词的理解能力。
此外,为了便于模型的评估,基于WikiQA和InsuranceQA数据集构建了两个符合真实需求的答案合理性数据集。具体的,通过启发式方法将原有的数据集扩充成三种答案类型的数据集。实验结果表明,本文的模型与基准方法相比较,可以看到在不同数据集、不同指标上均取得一致的提升。
本文的主要贡献如下:
(1)发现并指出已有答案选择技术的局限性,即无法建模真实问答场景中的三种答案类型。
(2)提出基于多阶段匹配的答案选择模型用于建模答案合理性,同时引入与答案合理性相关的外部知识,即语义角色标注信息和单词相似矩阵信息,增强模型的问答推理能力。
(3)本文进行了详尽的实验和分析,表明所提模型的有效性。
1 相关工作
本章将简要回顾与答案选择相关的两个方面工作,即任务形式和模型结构。
1.1 任务形式
给定一个问题,答案选择任务要求模型从一堆候选答案中找到与该问题最符合的答案。答案选择是自然语言处理中的一个重要技术,有着广泛的应用场景,如社区问答、智能助手等。
当前流行的数据集包括TrecQA[9]、WikiQA和InsuranceQA等数据集。这些数据集常用于答案选择任务的基准测试集。TrecQA数据集是从TREC比赛中创建的,是比较早的问答数据集。现在常使用的TrecQA数据集有两个版本,区别在于验证集和测试集的不同。WikiQA数据集是一个开放域问答数据集,由Bing和Wikipedia的真实查询构建而成。在WikiQA数据集中,有些问题只有错误的答案,大部分工作都会将这部分数据过滤掉。InsuranceQA数据集是一个大规模的特定领域答案匹配数据集,其中所有问题和候选答案都属于保险领域。对于每个问题,候选答案库的大小为500。这些候选答案库是通过包含正确答案并从完整的唯一答案集中随机选择候选答案而构建的。
然而,这些答案选择数据集只关注候选答案的两个层次信息,无法理解问题与答案之间的合理性。为此,本文围绕答案合理性开展研究,不同于之前的工作,本文关注问答的三层逻辑关系。本文从实际应用出发,扩展原有的答案选择任务,考虑问答的合理性。对比以前的答案选择任务,更精细的答案类型具有更大的挑战性。
1.2 模型结构
传统答案选择方法主要基于人工提取的特征来进行语义的建模[9-11]。根据计算方法的不同,可以将传统答案选择方法分为基于字符串的方法、基于语料库的方法以及基于知识库的方法。例如,Wang等人[9]提出了一种基于统计语法的模型,该模型将问题与候选答案软对齐并返回分数。Yih等人[11]应用来自WordNet的丰富词汇语义信息来增强问答匹配。Riezler等人[12]通过使用在问答数据上训练的统计机器翻译模型将问题翻译成答案,在整个问题的上下文中引入了答案同义词。然而,这些基于特征的方法通常过于依赖人工特征,需要耗费大量的资源,并且难以捕捉问题和答案之间的隐式语义信息。
随着深度学习的发展,答案选择技术取得了极大的提升。基于深度学习的答案选择方法大多尝试引入连续空间表示来解决词汇鸿沟的问题[13-17]。不失一般性,这些方法根据模型结构的不同可分为三种类型:基于循环神经网络的方法、基于卷积神经网络的方法和基于注意力机制的方法。例如,Chen等人[5]提出了一种基于上下文对齐的循环神经网络,它结合了问答数据中对齐词语的上下文信息。Shen等人[15]应用卷积神经网络来学习问题和答案的低维语义向量。Yang等人[2]提出了一种基于注意力机制的问答匹配模型,该模型采用了值共享的加权方案并结合了问题词的重要性。
近几年,以BERT为代表的预训练模型在自然语言处理的多个任务上取得了全面的性能提升[18-20]。因此,一些答案选择工作也开始寻求基于Transformer的预训练模型的帮助。例如,Laskar等人[1]将上下文表示与Transformer编码器集成在一起,以此衡量问题和答案的相似性。
本文提出的多阶段匹配的问答模型不同于之前单一的模型架构。将问答模型分为两阶段,第一阶段先将简单的问答数据对分离出去,以免受到后面噪声的干扰;第二阶段进行复杂的问答推理。此外,还引入更多的外部知识,辅助分析问题与答案之间的隐式语义信息。
2 模型方法
本章将介绍基于多阶段匹配的答案选择模型(multi-stage matching model,MSMM)。
2.1 问题定义
该任务要求答案选择模型综合判断问题qi和答案ai之间的语义信息,给出它们之间的匹配分数。
2.2 模型框架
为了解决问答合理性的挑战,本文提出的多阶段匹配的问答模型不同于之前单一的模型架构。本文的方法基于人类在答题的时候,总是先解决简单的问题,然后再综合推理更复杂的问题。如图1所示,将问答模型分为两阶段,第一阶段先将简单易解决的问答对分离出去,第二阶段再推理解答复杂的问答对。为了进一步增强模型的推理能力,还引入了两个外部知识。
图1 MSMM模型整体架构图Fig.1 Overview structure of MSMM model
2.3 第一阶段模块
由Yang等人[21]启发,第一阶段模块由嵌入层、编码层、对齐层、融合层和池化层组成,整体结构如图2所示。
图2 模块化的模型结构图Fig.2 Overview structure of modular model
2.3.1 嵌入层
给定问题q={q1,q2,…,qm}和候选答案a={a1,a2,…,an},首先经过嵌入层将每个词转换成嵌入表示,从离散的符号映射到稠密的实值向量空间。具体的,单词的嵌入表示为:
2.3.2编码层
有了基础的问题和答案向量,使用编码层对它们进行深度编码。编码器由一组连续的卷积神经网络组成。因此,编码后的单词向量为:
2.3.3 对齐层
上一步已经得到编码后的问题和答案稠密空间向量表示,为了建模它们之间的匹配信号,使用注意力机制。具体的,对于问题单词qi和答案单词ai,可以通过点乘来计算它们的相似度分数Sij:
其中,F是一个单层的前向神经网络。计算得到问题和答案之间的匹配信号后,就能根据匹配句子的信息来得到新的向量表示。该表示通过当前位置和其他序列中相应位置之间的相似度得分加权求和:
2.3.4 融合层
至此,已经得到了向量的原始表示信息和匹配对齐表示信息,使用信息融合机制将这些不同层次的信息有效地聚合起来:
其中,G1、G2、G3和G都是单层的前向神经网络,◦表示元素乘法。答案向量的操作与问题向量一致。
2.3.5 池化层
目前为止,只得到每个词的表示,尚未对整个句子进行表征。这里,对文本序列的单词最大池化取得最后的文本表示。
2.4 第二阶段模块
第二阶段模块的组成与第一阶段模块相同,不同在于第二阶段模块的输入是第一阶段模块融合层的输出。
为了更好地利用先前的信息,还将第一阶段模块融合层的输出通过残差与嵌入层的表示连接起来:
其中,vnqi-1和vnai-1是第一阶段模块融合层单词qi和单词ai的输出。除此之外,剩下的组件与第一阶段模块相同。
2.5 知识增强
为了推理复杂的问答数据,建模更深层次的隐式语义信息,尝试引入两种不同的外部知识,即语义角色标注信息和单词相似矩阵信息,以此增强模型的推理能力。
2.5.1 语义角色标注
语义角色标注(semantic role labeling,SRL)任务是确定句子的潜在谓词论元结构,并提供能够回答句子意义基本问题的表征[22]。具体来说,语义角色标注的任务就是以句子的谓词为中心,研究句子中各成分与谓词之间的关系,并且用语义角色来描述它们之间的关系。简而言之,句子的语义角色标注是为了发现谁对谁做了什么,什么时候做了什么,为什么做了什么,这与答案选择任务目标很自然地匹配。例如,问题通常是由谁、什么、如何、何时和为什么组成的,这些问题可以方便地用上下文语义形式化为谓词关系。如图3所示,句子“When was Washington elected president”的语义角色标注有两种方式。以第二种方式为例,“elected”为谓词,“when”是谓词的时间论元。有了这层语义角色标注信息,就能知道该问题的答案需要包含时间信息,有效地将答案格式范围缩小。
图3 语义角色标注信息Fig.3 Semantic role labeling
在人类语言中,一个句子通常包含各种谓词论元结构,而神经模型将句子编码为嵌入表示,很少考虑多语义结构的建模。因此,本文将语义角色标注信息引入模型中,来增强模型的判别能力。具体的,先用预训练好的语义角色标注器将每个句子标注成若干SRL序列,接着对每个句子的SRL信息嵌入编码,最后将其与嵌入层的输出向量连接形成新的向量。
2.5.2 单词相似矩阵
深度模型能在一定程度上建模问题和答案之间的语义信息,但是有研究表明,引入同义词信息可以增强模型的性能。因此,由Xia等人[23]启发,设计了单词相似矩阵,具体的,给定问题q={q1,q2,…,qm}和候选答案a={a1,a2,…,an},构建了一个大小为m×n的单词相似矩阵T。
对于单词对(qi,aj),如果单词对中的单词,即qi和aj,在WordNet中是同义词,则Tij=1。否则,如果qi和aj不是同义词,根据WordNet中的拓扑距离计算单词相似度,其取值范围在[0,1]之间。当单词对中的一个或两个词在WordNet中找不到,或者这对词没有有效的Wu-Palmer相似度值时,直接令Tij=0。
本文中,单词相似矩阵添加到对齐层中得到的匹配信号矩阵:
其中,◦表示元素乘法。
2.6 模型预测
预测层将池化层输出的问题和答案向量合并作为输入,并通过一个多层前向神经网络得到输出:
其中,U是多层前向神经网络。两个模块分别都有各自的预测层。
用不确定性动态决定使用哪个模块的输出。具体的,给定输入问题和答案序列,模型输出的不确定性[24]计算方式为:
其中,p是输出概率的分布,M是标签类别的数量。做出如下假设:不确定性越低,准确率越高。因此,比较两个模块输出的不确定性,选择不确定性更低的模块作为最后的输出。
2.7 模型训练
第一阶段模块的损失函数使用交叉熵计算:
第二阶段模块的损失函数L2的计算方式与第一阶段模块一致。由此,得到模型的损失函数为:
3 实验和分析
本章介绍实验和分析。进行了一系列实验来验证本文方法的有效性。
3.1 数据集构造
本文基于WikiQA和InsuranceQA数据集构建了两个符合真实需求的合理性问答数据集。下面以基于WikiQA数据集的构造为例说明。
WikiQA的原始数据只包含两类标签。首先令数据集中原始的正例标签为2(相关且合理);接着使用ElasticSearch工具索引WikiQA所有答案;然后利用已有的问题在ElasticSearch中检索召回100条数据,前三条不含正例的答案标签设为1(相关不合理),第99、100条的答案标签设为0(不相关)。由此,得到包含三种类别并具有合理性信息的问答数据集。基于Insurance构造的数据集与上述步骤相同。最终得到的两个数据集的基本信息如表2所示。
表2 数据集基本信息统计Table 2 Overall statistics of benchmark datasets
3.2 实验设置
本文实验主要基于PyTorch框架编写代码,并在Tesla32GV100GPU上训练。在预处理的过程中,所有文本的单词都用空格分隔并且转换为小写。使用840B-300dGloVe向量[25]初始化嵌入层。词汇表外的单词初始化为零向量并固定。SRL嵌入维度为30。在进行参数调整优化后,将训练次数设置为50轮,优化器为Adam[26],使用具有线性warmup的指数衰减学习率,初始学习率从0.000 1调整到0.003,梯度剪裁的阈值设置为5,卷积编码器的层数为3,预测层是一个2层前馈网络,隐藏层神经元个数设置为300,损失函数参数α为0.2,β为0.8。将实验数据分为256一组的小批量进行训练。
对于语义角色标注信息,使用预训练好的基于BERT模型的语义角色标注器[27]将每个句子标注成若干语义角色序列。采用PropBank风格[28]的语义角色,用语义标签对输入序列的每个标记进行注释。给定一个特定的语义,会有多种谓词论元结构。
对于单词相似矩阵信息,使用NLTK工具进行计算。
3.3 评价指标
采用准确率(Accuracy)和F1来评估各方法的性能效果,它们的计算方法如下:
其中,给定类别,TP是预测为该类别且真实为该类别的样本数目,TN是预测为不是该类别且真实不是该类别的样本数目,FP是预测为该类别且真实不是该类别的样本数目,FN是预测为不是该类别且真实为该类别的样本数目。
3.4 对比模型
本文对比模型主要有两类基准方法,包括传统神经网络方法以及预训练方法。
3.4.1无外部知识模型
首先和无外部知识的模型进行比较,这类模型进一步可以分成基于表示和基于交互的模型。
(1)基于表示的模型:首先对问题和答案分别进行编码,然后计算两个表示之间的相似度。将本文的模型与这一类的两个代表性模型进行比较,即QA-CNN[29]和QA-LSTM[29],它们分别采用基于CNN和基于双向LSTM来获得问题与答案的表示。
(2)基于交互的模型:首先利用不同的注意力机制在问题和答案之间建立局部交互(即局部匹配信号),然后利用深层神经网络学习层次交互模式进行匹配。选择两个性能良好的基于交互的模型,即RE2[21]和ESIM[30]。具体来说,RE2模型强调了三个关键特征,即先前对齐的特征、原始逐点特征和序列间对齐的上下文特征。ESIM是另一个强大的模型,它使用双向LSTM对文本进行编码,并在表示上应用注意力机制和融合层来获得最后的结构。
3.4.2 外部知识模型
还考虑了利用外部知识的答案匹配模型。
基于知识图谱的模型:利用来自知识图谱的信息来提高答案排名。选择最近提出的KABLSTM[31]和CKANN[32]作为基准方法。具体来说,KABLSTM模型使用LSTM来建模知识图谱的外部知识以此丰富问题和答案的表示学习。CKANN模型则是利用图神经网络整合知识图谱的结构信息,并利用多视角注意机制综合关注上下文和知识之间的重要信息。
3.5 实验结果分析
本文的模型和对比模型的性能比较结果如表3所示。从表中可以观察到:
表3 MSMM模型和对比模型的Acc和F1性能对比Table 3 Performance comparison between MSMM model and baselines under Acc and F1 metric 单位:%
(1)基于交互的模型比基于表示的模型表现更好。例如,在InQA_3数据集的性能上,QA-CNN模型F1值为65.30%,而ESIM模型F1值为82.79%,以较大幅度超过了前者。可能的原因是基于表示的模型只关注自身的表示从而忽略问题和答案之间的匹配信号,基于交互的模型由于存在问答的匹配交互能更好地解决这一问题。
(2)外部知识模型比无外部知识模型的方法更优。例如,在WikiQA_3数据集的性能上,CKANN模型Acc值为87.74%,高于无外部知识模型。但是与RE2模型相比,性能的提升并不显著。这表示引入知识确实能增强模型的推理能力,但是精心设计的无外部知识模型也不弱。
(3)MSMM模型在各个评价指标上都比其他模型的表现更好。例如,在WikiQA_3数据集的性能上,MSMM模型Acc值为88.93%,F1值为88.19%,均优于其他基准模型。这验证了本文模型在建模问题和答案的合理性上具有较强的能力。
3.6 消融实验分析
为了更好地分析模型中不同组件对最后性能的影响,首先构建了模型的三个变体,然后在基准数据集上对它们进行评估。构造的变体如下:
(1)MSMM-stage:移除多阶段输出判断,只保留模型最后一层的输出。
(2)MSMM-sim:移除匹配对齐层使用的单词相似矩阵。
(3)MSMM-srl:移除语义标注信息,模型的输入只有单词的嵌入。
模型的三个变体的性能结果如表4所示。首先,从表4中可以看到,移除不同组件后,模型的性能均有不同程度的下降,说明这三个组件能辅助模型分析问题和答案之间的语义关系。其次,移除语义角色标注信息后,与其他两种变体比较,模型性能有更大的落差,这间接表明语义角色标注信息有助于表示问题和答案之间的结构逻辑关系,进而增强模型的匹配能力。
表4 MSMM模型消融实验结果Table 4 Ablation studies of MSMM model 单位:%
3.7 关键参数分析
为了探究参数变化对性能的影响,对SRL嵌入维度、隐藏层神经元个数进行探索实验。
3.7.1 SRL嵌入维度的影响
在MSMM模型中,添加语义角色标注信息的方式是将其嵌入与原始单词的嵌入连接组成新的稠密向量。为了比较不同SRL嵌入维度对性能的影响,在WikiQA_3数据集上分别使用10、20、30、40和50维度的SRL嵌入进行实验,结果展示在图4中。从图中,可以看到,随着SRL嵌入维度的增加,模型的性能逐渐增长,说明语义角色标注信息确实能为问答推理带来有用的信息;当SRL嵌入维度为30时,模型性能达到最高值。随后SRL嵌入维度增大,模型性能渐次下降,这可能是因为多维度的语义角色标注向量会带来噪声,从而影响原先的句子表示。
图4 不同SRL嵌入维度对结果的影响Fig.4 Performance comparison of MSMM model over different sizes of SRL embedding
因此,可以得出结论:SRL嵌入维度的选取并不是越大越好,过大的嵌入维度可能会造成的原有的信息损失。
3.7.2 隐藏层神经元个数的影响
隐藏层在MSMM模型许多组件中存在,发挥着举重若轻的作用。为了探讨不同隐藏层神经元个数的影响,尝试设定不同的数值,即100、200、300、400和500,在WikiQA_3数据集上进行实验。图5为不同隐藏层神经元个数对结果影响的柱状图,可以发现,隐藏层神经元个数为300时,模型取得最好的性能。随着神经元数量依次增大或者减小,性能也随着下降。例如,隐藏层神经元个数为300时,F1值为88.19%;隐藏层神经元个数为500时,F1值为87.46%,下降幅度较大。这可能是因为:(1)过多的神经元数量导致语义表示稀疏,容易引入噪音;(2)过少神经元数量可能导致问答匹配信息在传递过程中丢失。
图5 不同隐藏层神经元个数对结果的影响Fig.5 Performance comparison of MSMM model over different sizes of hidden layer
4 总结
本文提出了一种基于多阶段匹配的答案选择模型。具体的,模拟人类答题过程,将模型分为两个阶段。第一阶段先将简单且容易解决的问答对分离出去,第二阶段再更进一步综合推理较难的问题对。每个阶段模块都由嵌入层、编码层、对齐层、融合层和池化层组成。此外,还引入语义角色标注和单词相似矩阵信息,以此增强模型的推理能力。为了便于评估,基于WikiQA和InsuranceQA数据集构建了一个新的答案合理性数据集。实验结果表明,本文的模型对比基准方法在性能上取得一致的提升,验证了所提模型的有效性。
未来的工作可以进一步探索不同的模型架构以及引入知识图谱等外部知识来辅助模型推理。此外,如何从答案合理性建模上升到答案正确性建模,也是一个具有挑战性的问题。