分享

揭开知识库问答KB-QA的面纱7·深度学习下篇(二)

 tianlord 2017-06-01

内容速览

 引入注意力机制的KB-QA

 深度学习篇总结


上一篇揭开知识库问答KB-QA的面纱7·深度学习下篇(一)点击末端“阅读原文”即可查看中我们介绍了关于如何将记忆网络应用到KB-QA中的文章。今天我们将给大家介绍另一篇使用深度学习另一种经典模型进行KB-QA的文章,带注意力机制的循环神经网络(Recurrent Neural Networks with Attention Mechanism)。这也是深度学习用于自然语言处理领域(Deep Learning for NLP)中相当火热的方法,就让我们一起来看看如何将它应用到KB-QA中吧。

引入注意力机制的KB-QA


文章QuestionAnswering over Knowledge Base with Neural Attention Combining Global KnowledgeInformation由中科院自动化所刘康老师等人在2016年发表在arxiv上,是一篇相对较新的文章。该文章和我在深度学习上篇分享的文章类似,也是使用深度学习对向量建模方法进行提升,不同于之前使用CNN提取问句特征,而该文章使用双向LSTM并结合问题引入注意力机制提取问句特征,在WebQuestion上取得了42.6的F1-Score,击败了之前的Multi-Column CNN。


深度学习提升向量建模方法的大体框架都很接近:根据问题确定主题词,根据主题词确定候选答案,通过候选答案和问题的分布式表达相似度得分确定最终答案。而方法的核心在于学习问题和候选答案的分布式表达,其实相关的方法都是在这两个部分做文章。这篇文章的想法在于,对于不同的答案,我们关注问题的焦点是不同的,我们根据候选答案的信息,来引入注意力机制,对同一个问题提取出不同的分布式表达。


比如对于问题 'who is the president of France',其中之一的答案是实体“Francois Holland”,我们通过知识库可以知道Francois Holland 是一个总统,因此我们会更加关注问句中的 “president” 和 “France” 单词,而根据Francois Holland的类型person,我们会更关注问句中的疑问词who。

(如果你之前没有接触过注意力机制也没有关系,可以直接往下看,也可以看看关于注意力机制最经典的文章,Yoshua Bengio等人在2015年ICLR发表的NeuralMachine Translation by Jointly Learning to Align and Translate,该文章提出的encoder-decoder with attention mechanism模型几乎可以横扫大部分的NLP问题)

该方法的整体框架如下图所示:

具体来说,可分为以下三个步骤:

1.将候选答案转化为分布式表达

我们从多个方面考虑答案的特征:答案实体答案上下文环境(知识库中所有与答案实体直接相连的实体)、答案关系(答案与问题主题词之间的实体关系)、答案类型。每一种特征都可以用维的multi-hot向量表示,即知识库实体和实体关系的数量之和。我们通过Embedding矩阵将每一种特征转化为低维的分布式表达,我们就得到了四种关于答案的分布式表达(其中由于答案上下文环境涉及的实体较多,我们取这些实体的embedding均值作为上下文环境的embedding)。

2.将自然语言问题转化为分布式表达

将问句中的每一个单词经过Embedding矩阵转化成word-embedding,使用双向LSTM(bi-LSTM)提取问句特征。bi-LSTM第时刻的输出记作,使用bi-LSTM的好处在于既包含了第个单词之前的信息,又包含了该单词之后的信息。

3.在得分函数中引入注意力机制

我们希望我们问句的分布式表达对于四种不同的答案特征有不同的表达(根据答案的特征对于问题有不同的关注点),第种答案的分布式表达对应的问句分布式表达记作,我们的得分函数定义为四种对应表达的点乘之和,即:


对于一般的LSTM,我们通常将最后一个时刻的输出作为句子的最终表达,而在这里,我们引入注意力机制,根据问题的特征,给予每一时刻的输出不同程度的关注(对bi-LSTM每一时刻的输出进行加权求和),即:


其中的权重系数取决于bi-LSTM第 时刻的输出和第种答案特征的分布式表达,因此我们可以使用一个单层的神经网络去学习这个权重,并通过Softmax对权重进行归一化,公式如下:

4.OOV问题
特别一提的是,在测试的过程中,我们的候选答案可能从未在训练集中出现过,因此它对应的分布式表达是没有被我们的模型训练过的(这个问题称为the problem of out of vocabulary, OOV,之前的文章很少有考虑过这个问题的)。为了解决该问题,作者利用TransE对知识库进行训练,训练实体和实体关系对应的Embedding矩阵
(实际操作中,作者通过轮流训练KB-QA模型和TranE的方式训练并共用Embedding矩阵 ,每训练一个epoch的KB-QA就训练100个epoch的TransE)。这样,我们就利用了整个知识库的特性,预先对每一个知识库实体都进行了训练,使得相似实体的分布式表达也很相似。因此,即使遇到KB-QA训练集中未遇到的候选答案实体,KB-QA模型也能将它视作是在训练集中出现过的某个和它分布式表达相似的实体,这样就减轻了OOV问题所带来的破坏性。


(关于TransE:TransE是知识图谱补全的经典方法,它借鉴了word-embedding的思想,能够将知识库中的实体和实体关系用分布式向量表达。其主要思想是对于一个知识三元组(s,r,o),我们希望主语实体的分布式表达e(s)加上关系实体的分布式表达e(r)能够尽量接近宾语实体的分布式表达e(o),因此我们可以构建类似的margin-rank损失函数通过正样本和采样负样本进行训练。TransE提出之后还出现了大量的改进算法,诸如TransH、TransR、TransG、TranSparse、TransD等等。之后如果有机会我会专门写文章或专栏对知识图谱补全相关的方法进行介绍)


在实验环节,作者对模型进行了分析,分析使用注意力机制(记作ATT)、利用知识库全局信息使用TransE训练实体embedding(记作GKI)以及bi-LSTM对性能的影响,在WebQuestion测试集上F1-Score的结果如下:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多