CrossAttention KBQA

《An End-to-End Model for Question Answering over Knowledge Base with Cross-Attention Combining Global Knowledge》论文笔记

这篇文章于2017年发表在ACL上,个人认为是在MCCNNs这个模型的基础上所作的增量式的工作,两者结构非常相似。

Overview

本文的任务依然是给定一个问题,模型根据知识库生成一组答案。这篇文章也是属于IR-based的范畴,根据主题词从知识库中提取出topic graph,然后根据问题和答案各自的特征进行相似度匹配来得到最终的答案。

在这里插入图片描述

本文提出的模型叫做Cross-Attention,也就是将attention机制引入到问题-答案的匹配中。并且,本文还将全局的KB信息考虑进来,这个做法也对模型的效果起到了提升作用。总之,本文的contributions有如下两点:

  1. 提出了一个端到端的模型Cross-Attention,采用神经网络对问题和答案进行特征提取
  2. 充分利用全局的KB信息,以更精确地生成答案。同时,这也能缓解OOV(out of vocabulary)问题。

Method

Candidate Generation

对于候选答案的生成,本文采取的做法与MCCNNs一致,使用Freebase Search API,对于top1结果生成一张2-hop的候选答案图。候选答案实体集合记为 C q C^{q} Cq

Neural Cross-Attention Model

接下来就是模型的主体部分。特征的提取依然是分为问题、答案两个部分,然后通过attention机制来计算相似度得分。

在这里插入图片描述

Question Representation

首先来看问题的编码。对于问题 q   =   ( x 1 , x 2 , … , x n ) q\ =\ (x_1,x_2,\dots,x_n) q = (x1,x2,,xn),作者首先用一个可训练的embedding层 E w ∈ R d × V E_{w} \in R^{d \times V} EwRd×V来获取word embedding。接下来,与MCCNNs不同的是,作者采用了双向LSTM对问题进行特征提取,那么对于每一时刻 t t t的问题token,我们能得到 h t → \overrightarrow{h_{t}} ht h t ← \overleftarrow{h_{t}} ht ,concatenate起来作为最终表示 [ h t → ; h t ← ] [\overrightarrow{h_{t}};\overleftarrow{h_{t}}] [ht ;ht ]

Answer Representation

对于答案的特征学习,本文依然是考虑几个方面:答案entity a e a_{e} ae,答案relation a r a_{r} ar,答案type a t a_{t} at,答案context a c a_{c} ac。接下来,作者没有人工构建这些特征,而是针对每一个aspect分别用一个可训练的参数矩阵来学习特征,得到的embedding分别记为 e e , e r , e t , e c e_{e},e_{r},e_{t},e_{c} ee,er,et,ec。但是有一个细节,context是有多个KB resources所共同组成的 ( e c 1 , e c 2 , … , e c m ) (e_{c_1},e_{c_2},\dots,e_{c_m}) (ec1,ec2,,ecm),因此作者对所有resources取了个平均得到 e e   =   1 m ∑ j = 1 m e c j e_{e}\ =\ \frac{1}{m} \sum_{j=1}^{m}e_{c_{j}} ee = m1j=1mecj

Cross-Attention Model

得到问题和答案的特征以后,接下来就是cross-attention的部分。从cross这个词也能看得出来本文的attention计算是双向的,分为A2Q和Q2A两个反向。

Answer-to-Query Attention

对于答案的不同aspect,它应该对应问题中不同的单词。A2Q attention的计算公式如下:
w i j   =   f ( W [ h j ; e i ] + b ) α i j   =   e w i j ∑ j ′ e w i j ′ w_{ij}\ =\ f(W[h_{j};e_{i}]+b) \\ \alpha_{ij}\ =\ \frac{e^{w_{ij}}}{\sum_{j'}e^{w_{ij'}}} wij = f(W[hj;ei]+b)αij = jewijewij
然后用attention weight来计算query的加权和
q i   =   ∑ j = 1 n α i j h j q_{i}\ =\ \sum_{j=1}^{n}\alpha_{ij}h_j qi = j=1nαijhj
然后作者定义第 i i i个answer aspect与问题之间的相似度得分:
S ( q , e i )   =   h ( q i , e i )   =   q i T e i S(q,e_i)\ =\ h(q_i,e_i)\ =\ q^T_ie_{i} S(q,ei) = h(qi,ei) = qiTei

Query-to_Answer Attention

对于不同的问题,它们也应该侧重于不同的answer aspect,Q2A的计算用到了上面所计算的相似度的得分。
q ˉ   =   1 n ∑ j = 1 n h j w e i   =   f ( W [ q ˉ ; e i ] + b ) β e i   =   e w e i ∑ j e w e j \bar{q}\ =\ \frac{1}{n}\sum_{j=1}^{n}h_{j}\\ w_{e_{i}}\ =\ f(W[\bar{q};e_{i}]+b)\\ \beta_{e_{i}}\ =\ \frac{e^{w_{e_{i}}}}{\sum_{j}e^{w_{e_{j}}}}\\ qˉ = n1j=1nhjwei = f(W[qˉ;ei]+b)βei = jewejewei
然后用attention weight来计算每个问题与不同answer aspect相似度得分的加权和:
S ( q , a )   =   ∑ e i ∈ { e e , e r , e t , e c } β e i S ( q , e i ) S(q,a)\ =\ \sum_{e_i \in \{e_{e},e_{r}, e_{t}, e_{c}\}} \beta_{e_{i}}S(q,e_i) S(q,a) = ei{ee,er,et,ec}βeiS(q,ei)
那么最终得到的这个 S ( q , a ) S(q,a) S(q,a)就是本文所提出的模型得到的最终的问题-答案之间的相似得分。可以看到这里的cross-attention并不是两个方向互相独立,而是递进的关系,先通过A2Q计算出问题与每个answer aspect之间的相似度,然后再用Q2A计算总的问题-答案相似度。

Training & Inference

本文所采取的训练方式与MCCNNs完全相同,先负采样,然后用Hinge Loss作为损失函数。inference的过程也和MCCNNs相同。

Combining Global Knowledge

接下来是本文的另一个创新点:补充全局知识。具体的做法是使用TransE模型来做Multi-task training,KB-QA和TransE的训练交替进行。由于Freebase实在太大,肯定不能把所有知识都考虑进来,因此作者先忽略掉所有完全不相关的信息,然后提取出问题中的所有实体,对每个实体在知识库中提取2-hop的信息来进行训练。训练的方式仍然是negative sampling + Hinge loss。

Experiment

在WebQuestions上的实验结果如下:

在这里插入图片描述

消融实验:

在这里插入图片描述

实验数据表明A2Q 的attention和Global Knowledge对模型效果的提升相对比较明显。

Analysis

在这里插入图片描述

作者也把attention进行了可视化,我觉得这个例子非常好,两个方向的attention都很好的捕捉到了正确的信息。比如where对应的是answer type, Carpathian对应answer entity, Carpathian mountain range是answer context的主体部分。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cross-attention是一种注意力机制,用于处理不同维度的数据。通常,cross-attention要求输入是相同维度的矩阵,但是有些情况下,可以处理不同维度的数据。在cross-attention中,有两个输入序列,一个作为查询(Q)输入,另一个作为键(K)和值(V)输入。这种注意力机制可以通过计算查询序列和键序列之间的相似度来为每个查询分配权重,并使用这些权重对值序列进行加权求和,从而得到最终的输出。在某些情况下,也可以使用一个序列的查询和值,另一个序列的键。总之,cross-attention通过将两个不同维度的嵌入序列组合在一起,实现了跨序列的信息交互。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [cross attention输入不同维度的矩阵](https://blog.csdn.net/m0_46482145/article/details/129637158)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [CrossAttention KBQA](https://blog.csdn.net/qq_42791848/article/details/122630149)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【科研】浅学Cross-attention?](https://blog.csdn.net/MengYa_Dream/article/details/126688503)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值