APP下载

基于注意力机制的上下文相关的问答配对方法

2019-02-25李寿山周国栋

中文信息学报 2019年1期
关键词:注意力向量架构

王 路,张 璐,李寿山,周国栋

(苏州大学 计算机科学与技术学院,江苏 苏州 215006)

0 引言

问答相关的研究是自然语言处理领域的一个热点领域。以往的研究主要集中于问答匹配,且主要是针对正式文本。然而,社会媒体上存在大量非正式文本的问答对。非正式文本存在问题文本里包含多个问题及回答文本里包含多个回答的情况。针对该情况,我们提出了问答配对任务。问答配对是针对问题文本中的每个问题,从答案中找到和该问题相关句子的任务。如图1所示,例1中的问题文本“系统更新后卡吗?屏幕怎么样?续航怎么样?”可以被切分为三个问题,分别是“系统更新后卡吗?”、“屏幕怎么样?”以及“续航怎么样?”。答案文本“一点都不卡,内存是4G的。不一直玩游戏的话,可以用一天。”根据空格、逗号、顿号、问号、感叹号和句号可以被切分为四个句子,分别是“一点都不卡”、“内存是4G的”、“不一直玩游戏的话”以及“可以用一天”。对于第一个问题“系统更新后卡吗?”,答案文本中只有第一个句子回答了该问题,对于第二个问题“屏幕怎么样?”,答案文本中第三个和第四个句子共同回答了该问题。对于第三个问题“电池怎么样”,答案文本中并没有针对该问题的回答。因此,非正式文本的问答配对是一个崭新并富有挑战性的任务。为了简化问题,我们假设问题已经被切分成多个子问题。本文关注于从答案文本中找到针对每一个问题的具体回答。总体而言,针对该问题的研究主要存在以下难点。

图1 非正式文问答对

答案文本中句子较多,换言之,噪声较多,挑选出正确的句子有一定难度。并且,有的问题的回答是由答案文本中多个句子组合而成的,例如,图1中,问题文本中的第三个问题“续航怎么样?”是由答案文本中“不玩游戏的话”以及“可以用一天”这两个句子共同回答的。基于此,将答案文本中每个句子和问题进行单独分类就显得不合理。

本文中,我们关注非正式文本的问答配对。首先,我们从产品评论网站上收集了大规模非正式文本的问答对,并标注这些问答对,从而创建了一个非正式文本的问答配对语料库。然后,针对上述难点,我们提出了一种上下文相关的输入架构来处理答案中多个句子共同回答一个问题的情况,为了处理答案文本中的噪声问题,我们引入了注意力机制来准确地挑选出正确的答案句子。实验结果表明,本文提出的基于注意力机制的上下文相关的问答配对方法能够在非正式文本的问答配对任务中获得较好的性能。

本文的结构组织如下:第1节介绍与本文相关的一些工作;第2节介绍语料收集和标注工作;第3节介绍本文提出的关于问答配对的模型;第4节给出实验结果和分析;第5节总结,并对下一步工作进行展望。

1 相关工作

目前尚无问答配对的相关工作。与之接近的是问答匹配的相关工作,即给定一个问题和一个答案,判断该答案和问题是否匹配。

总体而言,问答匹配方法可以分为两大类:浅层学习方法和深度学习方法。

浅层学习方法:Wang[1]等采用一些浅层学习算法,如条件随机场、支持向量机和最大熵等来训练模型。除了浅层学习算法,浅层学习方法的相关研究还关注于特征工程、语言学工具和外部资源等。如Yih[2]等采用了语义资源Word-Net,Yao[3]等采用了树的编辑距离,Severyn[4]等采用了命名实体等。

深度学习方法:采用神经网络来进行模型训练。主要分为三类:单纯网络(siamense networks)、注意力网络(attentive networks)以及聚合比较网络(compare-aggregate networks)。

(1) 单纯网络:相关研究采用的是经典的神经网络。Feng[5]等采用卷积神经网络(CNN)来获得问题和答案的融合表示,并利用这个表示进行分类。Yang[6]等采用卷积神经网络(RNN)来分别表示问题和答案,并连接它们进行分类。

(2) 注意力网络:不同于用LSTM的最终时间步来表示一个句子,一般采用注意力机制来得到每个时间步的权重,然后用这些权重来表示句子。Tan[7]等通过计算出问题的权重来附加到答案中,然后利用问题和附加了问题信息的回答来进行分类。Yin[8]等将问题和答案通过卷积神经网络计算出注意力矩阵,利用注意力矩阵来进行分类。

(3) 聚合比较网络:采用不同的匹配策略来获得单词间的关系,从而进行分类。Wang[9]等将问题和答案间的时间步分别进行了矩阵乘法、元素级别乘法、元素级别除法和欧几里得距离等计算,从而进行分类。Wang[10]等提出了一种新的计算方式,相对于传统的单角度计算,他采用了多角度的计算方式,获得了较好的效果。He[11]等利用卷积神经网络计算出一个配对的词的相互作用矩阵,并利用该矩阵进行分类。

然而,上述所有方法都是一对一(一个问题句子对应一个答案句子)匹配模型。本文为了充分利用上下文信息,采用的是上下文相关的结构,并结合注意力机制来进行问答配对。

2 语料收集和标注

淘宝[注]https://www.taobao.com/是中国最大的电子商务平台。我们从淘宝的“问大家”板块收集了2 000个问答对,这些问答对主要来自于数码领域。需要注意的是,如果一个问题包含多个子问题,我们把问题切分为多个子问题,且把每个子问题和答案所有的句子看作是一个问答对。例如,如图1所示,例1包含了三个问题,每一个问题的答案都是通过该问题的答案句子在所有答案句子中的位次来标注的。其中“X-Y”表示的是第X个问题的回答是答案文本中的第Y个句子。

为了确保较高的一致性,在多次标注少量语料后,我们提出了一些标注规范。然后,我们让更多人根据该标注规范来标注整个数据集。下面具体展示一些标注的例子。

例2:问题:怎么查是不是正品?另外是新机吗?

答案:是的,手机设置理由

标注:1-2,2-1

例3:问题:有没有买红米4高配的?手机是不是正品?卡不卡?

答案:手机正品 还可以!送的耳机不能用

标注:1-0,2-1,3-2

例4:问题:可以玩王者吗?卡不?

答案:可以,不开高特效的话,不卡

标注:1-1,2-2+3

对于每个问答对,我们安排了两位标注人员来标注类别,一致性检验kappa值为0.83。为了应对两位标注人员标注不一致的情况,我们安排了一位熟练的标注人员来检查,确保标注的一致性。表1展示了语料的类别分布(把每一个问题和答案的每一个句子进行分类,看该答案是否匹配该问题)。

表1 语料类别分布

3 基于注意力机制的上下文相关的问答配对

本章中,我们把问答配对的方法分为两步。首先,提出了充分利用上下文信息的输入架构。然后,提出计算问题文本和融合了上下文信息答案文本间匹配度的基于注意力机制的配对模型。

3.1 基于注意力机制的上下文相关的输入架构

图2给出上下文相关的输入架构的整体框架图。该架构的主要目的是充分将当前文本与上下文信息相结合,从而提升信息量。图中的相关层将在下面进行详细介绍。

图2 基于注意力机制的上下文相关的输入架构

词编码层:该层有三个输入,当前答案句子前面所有的句子,当前答案句子和当前答案句子后面所有的句子。首先,用word2vec[注]https://radimrehurek.com/gensim/models/word2vec.html来预训练词向量,并用这些词向量来表示这三个输入。然后,利用三个双向长短期记忆网络(Bi-directional Long Short Term Memory,Bi-LSTM)来同时把三个句子的时间步编码为上下文相关的词向量,如式(1)~式(3)所示。

注意力层:该层的目的是给词向量矩阵分配权重,从而获得当前句子最有信息量的表示。

通过下面的句子计算注意力权重,并归一化,如式(4)、式(5)所示。

其中,WFro.和WBeh.是权重矩阵,bFro.和bBeh.是偏置矩阵。

然后,我们分别计算出句子向量vFro.和vBeh.,如式(6)、式(7)所示。

连接层:该层的目的是连接当前句子的词向量矩阵和上下文句子向量vFro.以及vBeh.,从而获得上下文相关的答案表示,如式(8)所示。

HCon.=vFro.⊕Ha⊕vBeh.

(8)

3.2 基于注意力机制的上下文相关的问答配对

图3给出基于注意力机制上下文相关问答配对的整体框架图。该模型的主要目的是利用问答匹配机制来进行分类。图中的相关层将在下面进行详细介绍。

图3 基于注意力机制的上下文相关的问答配对

词编码层:该层有两个输入,问题文本和答案文本。答案文本参照上文提出的基于注意力机制的上下文相关的输入架构进行编码,再按前向和后向两个方向分别拆分为HCon.。将问题文本通过一个双向长短期记忆网络来把问题的时间步编码为上下文相关的词向量。

匹配层:该层的目的是在每个方向上分别比较问题的最终时间步向量和问题的每个时间步向量,反之亦然。

通常,我们通过余弦函数来计算两个向量间的相似度,如式(11)所示。

(11)

受到Wang[10]的影响,我们采用了多角度的全匹配策略,如式(12)所示。

(12)

其中,∘代表元素级别的乘法,Wp代表W的第p行,它控制着第p个角度并且给维度空间中的不同维度分配不同的权重。

然后,我们可以得到相似度矩阵,如式(13)所示。

(13)

其中,P表示角度的数量。

注意力层:该层的目的是给匹配矩阵分配权重,从而获得当前问答对最有信息量的表示。

首先,我们连接Q→A和A→Q相似度矩阵,从而得到问答匹配矩阵,如式(14)所示。

(14)

然后,我们计算出注意力权重并归一化,如式(15)所示。

aq a=softmax(tanh(Wq aHq a+bq a))

(15)

其中,Wq a是权重矩阵,bq a是偏置矩阵。

最后,将aq a和M相乘,从而获得问答向量vq a,如式(16)所示。

vq a=aq aMT

(16)

分类层:该层的目的是利用问答向量vq a来进行分类。我们将vq a传入softmax分类器,如式(17)所示。

o=Wlvq a+bl

(17)

其中,o∈RK是输出,Wl是权重矩阵,bl是 偏置矩阵。K表示类别的数目,那么对于类别k∈[1,K]的概率计算如式(18)所示。

(18)

最后,具有最高概率的标签作为最终的分类结果。

3.3 模型训练

我们采用交叉熵损失函数来端到端训练模型。具体而言,输入训练数据集合xt,yt,xt是第t个要被预测的问答对,yt是xt的真实标签。模型表示为一个黑盒函数σ(x)。模型的输出是一个代表了每个类别概率的向量。训练的目标是最小化下面的损失函数,如式(19)所示。

(19)

其中,N代表训练样例的数目,λ是对偏置参数的L2正则化。

4 实验

4.1 实验设置

数据设置:采用第二节内容介绍的数据集作为实验数据。该数据集包含5 698个问答对。我们随机将数据分为训练集(每个类别的80%)和测试集(每个类别剩下的20%)。此外,将来自训练集的10%数据作为开发集,用于学习算法中的参数调整。

词切分和词向量训练:采用Jieba[注]https://pypi.python.org/pypi/jieba/分词来进行分词,并采用Word2Vec来训练词向量。训练词向量的数据来自于数码领域,共计200 000条问答对。词向量的维度设置为100。

句子切分:采用斯坦福大学自然语言处理实验室公布的CoreNLP[注]https://stanfordnlp.github.io/CoreNLP/download.html工具来进行句子切分。

模型参数:实验中所有模型使用深度学习开源框架Tensorflow[注]https://www.tensorflow.org/搭建。模型中所有的超参数都是通过开发集的性能来进行调整。LSTM的单元数设置为128。Batch size设置为64。优化器的学习率为0.001。迭代次数为30。

评价标准和显著性测试:我们用标准的精确率(P),召回率(R),F1值和准确率(Accuracy)来评价性能。我们采用t测试来评价两个方法间的显著性程度。

4.2 基线模型

所有基线模型均采用3.1节与3.2节提出的切分方式。

(1) 最大熵(MaxEnt):刘[31]等提出一种基于浅层学习方法最大熵训练的分类器。

(2) LSTM:Bowman[14]等提出的一种基于单纯网络的问答匹配方法。

(3) SCNN:Zhang[15]等提出的一种基于单纯网络的隐含话题识别的最佳方法。

(4) Attentive LSTM:Tan[7]等提出的一种属于注意力网络的性能最佳的问答匹配方法。

(5) MULT:Wang[9]等提出的一种基于聚合比较网络的性能最佳的问答匹配方法。

(6) BIMPM:Wang[10]等提出的另一种基于聚合比较网络的性能最佳的问答匹配方法。我们实现了集成了四种匹配方式的BIMPM(Ensemble)。

4.3 我们的方法

(1) 上下文相关的输入架构(Contextual Input Structure,CIS):具体实现中,只采用了上下文相关的输入架构,并没有采用注意力机制,所有通过注意力机制挑选的向量均用LSTM输出的所有时间步的词向量的平均来代替。

(2) 注意力机制(Attention Mechanism,AM):具体实现中,只采用了注意力机制,并没有采用上下文相关的输入架构。即输入只有当前句子,不再需要当前句子的上下文信息。

(3) 基于注意力机制的上下文相关的问答配对方法(Contextual QA Pairing Method based on Attention Network,CPMAN):具体实现中,同时利用了上下文相关的输入架构以及注意力机制,整体结果如图2及图3所示。

4.4 实验结果

表2和表3给出了不同问答匹配方法的总体性能及每个类别上面的性能。从表中结果来看,所有深层学习方法的性能均优于浅层学习方法。我们方法的3种实现性能均优于所有基线方法。t测试结果表明我们方法带来的性能提升具有统计显著性(p-value<0.05)。此外,我们的方法在“匹配”这个类别上表现更出色。我们的CPMAN的实现比基线方法中最好的BIMPM在P值上高了0.050,在R值上高了0.094,且在F值上高了0.073。在所有的实现中,CPMAN的整体性能最好。该结果表明在问答配对中,上下文相关的输入架构以及注意力机制均可以显著提高配对性能,并且两者相结合的性能最佳。

表2 不同问答配对方法的整体性能

表3 不同问答配对方法在每个类别中的性能

4.5 注意力可视化

为了更好地理解注意力机制并检验模型是否可以获取句子中的关键信息,我们对注意力权重进行了可视化。

图4给出了某个问答对的注意力可视化结果。图中阴影部分表示词的权重,阴影颜色的深度表示了重要程度,颜色越深表示重要性越高。从图中结果可以看出,注意力机制确实可以挑选出和匹配相关的词。例如,当前句子中的词“的话”,隐含地表示了条件型回答,模型从之后的句子中挑选出“可以”和“一天”两个词,最终分类问题和当前句子匹配。

图4 问答对的注意力可视化

5 结束语

本文构造了一个问答配对语料库,用于研究非正式文本的问答配对方法。在此基础上,本文提出一种基于注意力机制的上下文相关问答配对方法。该方法提出一种上下文相关的输入架构并结合注意力机制。实验结果表明,本文提出的方法能够显著提升问答配对的性能。

下一步工作中,我们准备进一步扩大语料的标注规模,尝试标注其他领域的数据。此外,我们将测试本文的方法在其他领域或其他语言问答配对任务中的有效性。

猜你喜欢

注意力向量架构
基于FPGA的RNN硬件加速架构
向量的分解
让注意力“飞”回来
聚焦“向量与三角”创新题
功能架构在电子电气架构开发中的应用和实践
如何培养一年级学生的注意力
基于云服务的图书馆IT架构
A Beautiful Way Of Looking At Things
向量垂直在解析几何中的应用
VoLTE时代智能网架构演进研究