KBQA论文调研:Bidirectional Attentive Memory Networks for Question Answering over Knowledge Bases
作者:互联网
KBQA有两种主流的解决方式:
(1)SP:
基于 SP 的方法通过构建将 NL 问题转换为中间逻辑形式的语义解析器来解决该问题。
传统的语义解析器需要带注释的逻辑形式作为监督,并且仅限于具有少量逻辑谓词的专用领域。
最近的努力通过构建手工规则或特征 (Abujabal et al., 2017; Hu et al., 2018) 模式匹配 (Cai and Yates, 2013) 以及使用来自外部资源的弱监督 (Krishnamurthy 和 米切尔,2012)。
(2)IR
基于 IR 的方法根据问题中传达的信息直接从知识库中检索答案。这些基于 IR 的方法通常不需要手工制定规则,因此可以更好地扩展到大型和复杂的 KB。 最近,深度神经网络已被证明可以在许多 NLP 任务上产生强大的结果。 在 KBQA 领域,在基于 IR 的方法的保护下,许多基于嵌入的方法(Bordes et al., 2014b; Hao et al., 2017)已经被提出并取得了可喜的成果。这些方法采用各种方式将问题和 KB 子图编码到一个公共的嵌入空间中,并在该空间中直接匹配它们,并且通常可以以端到端的方式进行训练。
与现有的独立编码问题和知识库子图的基于嵌入的方法相比,我们引入了一种新的双向注意力记忆网络,称为 BAMnet,它捕获问题和知识库之间的相互交互,存储在内容寻址存储器中。
设计的两层双向 注意力网络,其中主注意力网络旨在根据知识库关注问题的重要部分,并根据问题关注重要的知识库方面。第二个注意力网络旨在通过进一步利用双向注意力来增强问题和知识库表示。通过这种方式来提炼与问题和知识库两面问题最相关的信息。
>>>>note:作者说这样的设计提高了模型的可解释性。but why?咋提高的?
RelateWork:
这部分作者介绍了SP和IR方法在KBQA上的发展。(笔者认为SP像特征工程似的,繁杂且不好学,不够AI....对这类的实在是提不起兴趣)
>>>>>note:此处需要记一个KBQA中最先用Embedding技术的时间点
因为在读20年印度人的EmbedKGQA模型时,印度人说他们最先提出的,真他娘的敢写.....
文章中的下面这一段非常详细的介绍了embedding形式的KGQA的研究发展,后面自己会用到。
提出的模型包含四个主要部分:input module, memory module, reasoning module and answer module,模型如下图
首先是InputModule,自然语言的问句Q经过分词,去挺词...等等一些列的经典NLP操作之后得到单词序列,再经过Wordembeddinglayer就得到对应单词的embedding,这些embedding作为双向LSTM的输入,输出正反双向隐状态进行concat作为问句Q的表示。
其次是Memory module,包含三个部分:
(1)Candidate Generation候选答案的生成模块, 从问句中获得该问题的主题词,在KB中找到距离该主题词h-hop之内的实体作为候选答案。
(2)KB representation:对于上面(1)中得到的KB中的每个候选答案,需要编码三种信息:answer type, path and context.
1.answer type:毫无疑问,答案类型包含了丰富的语义信息,例如问句q:where is .....答案为地名的可能性会大很多。text description--->BiLSTM-->
2.path,即是一种从候选答案实体反向递推回问句的主题实体在KB上的relation路径。
3.context,与候选答案实体同一级的兄弟实体,在一定范围内充当context。但是在简单的问句/问答中,context可能会使模型性能下降,将这部分认为是引入的噪声。又有两种方式对这个问题进行处理:【1】我们使用一个新颖的importance model(稍后解释)来关注重要的答案方面。【2】我们只考虑那些与问题重叠的context。 具体来说,对于候选者的context节点(即单词序列),我们首先计算它与问题之间的最长公共子序列,然后只有在获得非停用词子字符串时才通过 BiLSTM 对其进行编码。
【3】Key-value memory module:用于存储候选答案。
After encoding the answer type, path and context, we apply linear projections on them as follows:
(3)Reasoning module:
这部分是整个模型的大部头,包含两个Attention network和一个 Generalization Module。
对整个模型进行分块的介绍:
KB-aware attention module:并非问题中的所有单词都是一样的。 我们使用知识库感知的注意力机制来关注问题的重要组成部分.
具体来说,我们首先对所有问题词向量应用自注意力(SelfAtt),得到一个 d 维问题向量 q,如下所示:
对于答案类型,路径,上下文节点等也有:
至此,我们得到了KB关于提出的问题的表示 m = [mt ; mp; mc] 。
我们继续计算问题词 qi 和 KB 方面之间的 question-to-KB attention,由表示。
通过maxplooing得到问题词语KB之间最相关的联系。其背后的想法是问题中的每个单词都有一个特定的目的(即指示答案类型、路径或上下文),而最大池化可以帮助找出该目的。
然后,我们对结果向量应用 softmax 以获得 ,这是一个 KB 感知的问题注意力向量,因为它根据 KB 指示 qi 的重要性。
再介绍Importance Module:
标签:KB,知识库,Knowledge,over,Answering,module,问题,context,答案 来源: https://www.cnblogs.com/justkeen/p/16453351.html