谢正文, 柏钧献, 熊 熙, 琚生根
(1.四川大学计算机学院, 成都 610065; 2.广东财经大学财政税务学院, 广州 510320; 3.成都信息工程大学网络空间安全学院, 成都 610225)
答案选择(answer selection,AS)是问答(question answer, QA)中的一个子任务,也是近年来信息检索(information retrieval,IR)中的一个热门话题.答案选择是根据输入问题从候选答案列表中选择最合适的答案.一般情况下,好的答案主要有以下两个特点.
(1) 问题影响答案,因此一个好的答案必须与问题相关;
(2) 好的答案并非要求严格的单词匹配,而是要表现出更好的语义相关性.
本文给出了一个从WikiQA数据集[1]中提取的例子,如例1所示,正确的答案并没有直接提到丧生,而是用死亡,受伤等相关语义来代替.
例1 WikiQA数据集问答对
(1) Question:
有多少人在俄克拉何马城爆炸案中丧生?
(2) Postive Answer:
俄克拉荷马州的爆炸造成168人死亡,其中包括19名6岁以下儿童,并造成680多人受伤.
(3) Negative Answer:
据估计,炸弹造成至少6.52亿美元的损失.
传统的方法[2-3]通常基于词法和句法特征,例如解析树之间的编辑距离[2].这种方法在特征的设计和选择上非常耗时,而且由于语义的复杂性,特征选取更依赖于经验.端到端的神经网络模型可以自动选择特征[4-6],避免了手动构造特征的麻烦,同时具有强大的拟合能力,被广泛应用.
近几年的研究表明[7],答案选择任务的难点在于捕捉问题句子和答案句子之间复杂的语义关系.而问题和答案之间属于单向逻辑关系,答案需要根据问题来回答,因此问题表示在答案选择任务至关重要.鉴于此,本文提出一种基于增强问题重要性表示网络(question based importance weighting network, BIWN)的答案选择算法.该算法包括以下机制:(1) 本文在问题和答案进行交互前通过自注意力机制赋予问题句子各个词不同的权重从而缓解问题句子中的“无用词”噪声;(2) 本文构建词级矩阵,通过词级矩阵将问题和答案进行细粒度的交互,从而根据问题句子找出答案中的关键词;(3) 本文通过CNN捕获进行交互后的问题和答案的特征,进行匹配.
答案选择通常被表述为一个文本匹配问题.以往的工作大致可以分为两个分支:基于特征选择的方法和基于神经网络的方法.传统的方法倾向于使用特征工程、语言工具或外部资源,这种方法费时且数据稀疏.前人的研究[2,8]通常利用句法解析树上的信息来匹配问题和答案,而端到端的神经网络模型可以自动选择特征,避免了手动构造特征的麻烦;同时具有强大的拟合能力,更重要的是,在答案选择任务上神经网络模型的效果媲美于传统手动构建特征的方法,甚至更优于传统方法,因此如今被广泛应用.Feng等人[7]利用卷积神经网络(CNN)搭建6种不同的模型分别学习问题和答案的语义表示;Wang和Nyberg等人[9]利用循环神经网络(RNN)更容易捕捉全局序列信息的特点,将问题和答案句中的单词进行编码,然后输出它们的相关性得分; 然而这些模型都缺乏问题和答案句子的交互信息.注意力机制旨在关注与问题最相关的候选答案的片段[10-11],Wang等人[11]在词嵌入层利用门控注意力机制获取句子细粒度的语义表示;Nam等人[12]提出迭代模型MAN,该模型利用动态记忆网络[13]的思想,先用问题向量推导出第一个注意层中的答案向量,然后在下一步中对问题向量进行递归,学习第二个注意层中的答案向量.最后,与答案向量进行多步匹配得出分数总和.
以往的模型虽然取得了不错的效果,仍然存在噪声词的影响.本文把噪声词总结为以下两种情况.
(1) 如果问题句子中的词(例如一些is,are,the等词)与对应的答案句子中的词高度相关,但该词不是问题中的关键字,它应该被赋予更小的权重甚至是被忽略,因为它扰乱了加入问题信息后的答案句子的单词权重分布,从而产生噪声.
(2) 若一个单词在答案句子中是局部重要的,但与对应问题语义不相关,则需要赋予它在答案句子中较少的重要性,因其在语义匹配中无用.
本文模型利用自注意力在问题和答案进行交互前缓解问题噪声词的影响,同时构建词级交互矩阵,通过问题句子的信息来获取答案句子中重要的部分,从而更精确地完成问题和答案之间的语义匹配.
本文的工作很大程度上受到MAN模型进行逐步学习的思想.首先,模型利用自注意力机制将编码后的问题句子重新分配各个词的权重,从而产生“干净”的问题句子,然后将“干净”的问题句子通过词级矩阵与答案进行交互,最后通过CNN获取问题和答案之间的多个特征进行匹配.实验表明,在WikiQA数据集中,本文模型明显优于以往忽略了问题噪声词的模型,并且在MAP,MRR这两个评价指标上,本文模型超过MAN模型约0.7%.
本节将详细描述本文提出的BIWN模型, 模型结构图如图1所示.3.1节介绍编码层中BiLSTM的工作原理;3.2节介绍转化层中的自注意力机制;3.3节介绍对齐层的相似度词级矩阵交互;3.4节介绍特征融合层的多窗口CNN;模型最后将CNN提取的特征用一个多层感知机转换成最后的预测向量.
图1 BIWN模型总体结构图Fig.1 The network structure of BIWN
输入两个文本序列,表示为问题Q和答案A.通过预先训练的d维词嵌入,用Hq={hq1,...,hqm}和Ha={ha1,...,han}分别表示问题句向量和答案句向量.其中,hqi∈Rd是句子Hq的第i个词嵌入.m和n分别表示问题和答案的长度.为了捕捉句子上下文的信息,本文采用BiLSTM来对问题和答案进行编码.LSTM的隐层维度为u,在t时刻的词嵌入为xt,前一时刻的隐层和记忆单元分别为ht-1和ct-1,下一时刻的隐层ht和记忆单元ct计算如下.
gt=φ(Wgxt+Vght-1+bg),
it=σ(Wixt+Wiht-1+bi),
ft=σ(Wfxt+Wfht-1+bf),
ot=σ(Woxt+Woht-1+bo),
ct=gt⊙it+ct-1⊙ft,
ht=ct⊙ot.
其中,W∈Ru×d;V∈Ru×u;b∈Rd;σ和φ分别是sigmoid函数和tanh函数;⊙表示两个向量进行元素相乘,输入门i,遗忘门f和输出门o能够自动控制信息的流动.同时记忆单元ct可以记住长距离的信息,ht是t时刻的向量表示.
图2 基于自注意力机制的问题向量生成图Fig.2 The graph of re-generate the question vector based on Self-Attention Mechanism.
首先,计算问题向量Tq中每个单词的权重,具体计算公式如下.
v=TqW1
(1)
αq=sigmoid(v)
(2)
其中,W1∈R2u×1表示参数矩阵;αq∈Rm×1表示问题句子中每个单词不同的权重分布;sigmoid表示非线性激活函数,在得到权重分布之后,将权重αq与问题向量Tq相乘,生成新的问题向量表示Uq∈Rm×2u,具体计算公式如下.
Uq=αq⊙Tq
(3)
词级相似度矩阵的主要思想是将两个句子拆分,进行句子间的词级匹配,词级矩阵中的元素是句子的局部相似度集合.Wang等人[14]直接用原始的词向量计算词级矩阵,但词向量并未给句子带来上下文信息.本文采用经过BiLSTM层后的句子向量获取上下文信息,然后进行词级矩阵计算.词级矩阵有两种计算方式,一种是将两个句子直接相乘,不带训练参数;另一种是利用训练参数与两个句子共同作用本文采用两种词级矩阵进行建模,同时在后续的实验(详见4.2.3节)比较两种词级矩阵的优劣.词级矩阵的两种计算方式如下.
M(i,j)=Uq(i)Ta(j)T
(4)
(5)
其中,矩阵Wp∈R2u×2u是模型训练的参数;M(i,j)∈Rm×n,词级矩阵的每一行是问题中的词对答案中的每个词的影响.类似地,词级矩阵的每一列看成答案中的词对问题中的每个词的影响.分别对词级矩阵的行和列用softmax函数进行归一化,得到互信息影响因子λq(i,j)和λa(i,j),其中,λq(i,j)和λa(i,j)的取值范围均在[0,1],最后将问题向量和答案向量与对应的影响因子相乘得到两个新的向量Eq和Ea.具体计算公式如下.
(6)
(7)
(8)
(9)
其中,Eq∈Rm×2u;Ea∈Rn×2u.
(10)
(11)
其中,Kq∈Rm×8u;Ka∈Rn×8u.
CNN和LSTM经常被用于特征融合层,LSTM通过计算每个隐藏向量的上下文感知权重来捕捉句子的全局序列信息,但是LSTM的串行工作机制使得模型运行的时间较长.而CNN可以并行快速计算,并且CNN捕捉特征能力比LSTM要强,同时多窗口的CNN也在一定程度上弥补了其处理长序列信息能力较弱的缺点.综合上述原因,本文采用多层的CNN来提取融合特征.具体计算公式如下.
u=CNN(Fuse)
(12)
其中,Fuse表示融合向量Kq或者融合向量Ka.
本文将CNN的输出u通过最大池化和平均池化得到Sq,max,Sa,max,Sq,mean和Sa,mean,然后将其拼接成一个向量S,送入多层感知器中(MLP)得到最后的预测向量Score∈RN.本文选用Listwise方法来建模答案排序任务,具体计算公式如下.
G=softmax(Score)
(13)
(14)
其中,G表示得分向量;Y表示目标标签归一化后的标签向量;N表示Listwise的大小.本文使用KL散度作为模型的损失函数,该函数可以使得预测值的概率分布接近于标签值的概率分布.损失函数公式具体如下.
(15)
4.1.1 数据集 本文采用两个答案选择领域的基准数据集进行实验,数据集具体信息见表1.
WikiQA数据集[1]:WikiQA数据集是由微软雷德蒙研究院在2015年发布,主要针对英文领域的答案句子选择任务.该数据集包括3 047个问题,每个问题从微软必应搜索引擎的查询日志中采样获得,并保证该问题以疑问词开头、以问号结尾、并且点击过至少一个维基百科页面.数据集中将能够回答该问题的句子标注为1,将其他句子标注为0.
TREC-QA数据集[15]:TREC-QA数据集是从TREC问答网站收集的基准数据集.数据集包含一组事实型问题,其中候选答案仅限于一句话.
表1 问答数据集描述
4.1.2 实验参数设置集 本文实验算法基于Tensorflow 框架实现,BIWN模型采用300 d的Glove词向量[16]作为词嵌入;采用mini-batch的训练方式训练模型,采用用Padding的方式处理数据集,问题句子的padding长度设置为25,答案句子的padding长度设置为140;训练采用Listwise的数据格式,列表尺寸设置为15,CNN的窗口尺寸设置为[1,2,3,5].采用学习率衰减的方式训练模型,初始学习率设置为0.001,采用Adam优化器来进行梯度下降,为了避免模型过拟合,采用L2正则化来优化模型.
4.1.3 本文对比算法 (1) APLSTM[17]:该模型利用交互注意力获取问题和答案的交互信息;(2)MP-CNN[18]:该模型在CNN的基础上利用全连接层融合问题和答案的表示;(3) PWIM[19]:该模型将问题和答案的进行显式交互以计算问题和答案之间的重要部分;(4) BiMPM[20]:Wang于2017年提出的多尺度匹配模型,该模型将问题和答案进行词级,句子级的多尺度匹配,取得不错的效果;(5) MAN[12]:Nam于2018年提出的迭代匹配模型,该模型用顺序注意力机制将问题与答案进行多步匹配,最后将各个部分的分数相加进行预测.
4.2.1 基线模型对比 答案选择任务文档检索(IR)任务相似,因此本文采用IR领域的评价指标MAP(平均准确率),MRR(平均倒排准确率)来评估模型性能.实验结果如表2所示.
如表2所示,在WikiQA数据集上,BIWN模型的MAP值和MRR相比于其他模型分别提高了0.7%~5.9%和0.7%~6.1%.BIWN模型与APLSTM模型均使用了词级矩阵结构,但是BIWN模型的效果却远远好于APLSTM,原因在于BIWN模型在问题和答案进行交互前利用自注意力机制消除了噪声词.BIWN模型与MAN模型都采用了逐步学习的方式进行句对匹配,然而BIWN模型的指标优于MAN模型,表明BIWN模型中的词级矩阵可以捕获更细粒度的语义信息.在TREC-QA数据集上,BIWN模型的指标优于大部分基线模型,并且与MAN模型比较接近,原因在于TREC-QA数据集相比于WikiQA数据集更加规整,因此噪声词对模型的影响相对而言没有那么大,而本文针对噪声词提出的BIWN模型则不能发挥其最大的作用.
表2基于WikiQA和TREC-QA数据集的实验结果对比
Tab.2ComparisonofexperimentalresultsbasedontheWikiQAdatasetandTREC-QAdataset
模型WikiQATREC-QAMAPMRRMAPMRRAPLSTM0.6700.6840.7130.803MP-CNN0.6930.7090.7770.836PWIM0.7090.723--BiMPM0.7180.7310.8020.875MAN0.7220.7380.8130.893BIWN0.7290.7450.8060.889
4.2.2 词级矩阵对比 为了探究不同词级矩阵对BIWN模型的影响,本文在不改变模型其他结构和模型参数的情况下进行对比实验,实验结果如表3所示.
表3 词级矩阵实验对比
如表3所示,两种词级矩阵的效果没有太大的差别,但是使用参数W的相似度词级矩阵的效果要比两个向量直接相乘要好.本文对此进行分析得出原因:答案选择任务并不是完全意义上的句对匹配任务,相似的词在语义表示上有可能是不同的,但是可训练的参数W可以转换信息,将其映射到另一个相似的空间,因此效果更好.
4.2.3 消融实验对比 为了验证模型中各个部件的有效性,分别移除特定模块构建下列消融模型:(1) BIWN-Encoder表示去除Bi-LSTM编码层;(2) BIWN-SelfAtten表示去除自注意力层;(3) BIWN-CNN表示去除词级相似度矩阵;(4) BIWN-WordMatrix分表示去除CNN特征融合层的消融模型.图3展示在WikiQA和TREC-QA的实验结果,可以看出BIWN模型的每个模块都具有有效性,其中自注意力机制和词级矩阵相对其中结构影响最大.
图3 基于WikiQA和TREC-QA测试集的模型消融分析折线图Fig.3 Ablation analysis about different components of model on WikiQA and TREC-QA test set
本文针对句子中的噪声词,提出了基于问题重要性表示网络的答案选择算法.该模型利用自注意力机制重新赋予各个词不同的权重从而生成“干净”的问题句子向量;利用词级交互矩阵捕捉问题句子和答案句子之间的细粒度语义信息,缓解了答案句子中噪声词的影响.基准数据集上的对比实验表明,BIWN模型在答案选择任务的性能优于目前主流的答案选择算法.在未来的工作中,会将外部的知识加入BIWN模型中;同时,没有标签的数据相对与有标签的数据更容易获得,将会把无监督学习应用到答案选择任务中.