论文笔记
模型
由四个模块组成,分别是输入模块,记忆模块,推理模块和回答模块

输入模块
输入一个自然语言问题,使它经过embedding层将单词序列转换为embedding序列,使用双向LSTM将它编码,这些编码就是双向LSTM的隐藏状态
记忆模块
候选生成
虽然所有的KB中的实体都可以作为候选的答案,但是这样做代价非常高昂而且没有必要。我们只考虑和句子中主题词距离很近的词语。答案就是对实体节点的一个文本描述(例如,年龄)。举个例子,Ohio是问题“Who was the secretary of state of Ohio in 2011?”的主体词。在得到问题的主题词之后,我们要手机所有和它相连的h hops以内的实体作为候选答案。
知识库表示
从KB中得到的每一个候选答案,我们将它们编码为三种类型的信息,分别是答案类型,路径和上下文。
Answer type 答案类型
实体类型信息是排序答案的重要线索。举个例子,如果一个问题使用了疑问词where,那么答案中那些类型与地点相关的就更可能是正确答案。我们使用一个BiLSTM来编码它的描述来得到一个d维向量Ht
Answer path 答案路径
我们定义一个答案路径:一个从候选答案到主题词实体的关系序列。举个例子,对于Ohio这个问题,(见图)Jon A.Hused的答案路径既可以表示为关系id的序列[office_holder,governing_officials]或者文本描述[office,holder,governing,officials]。因此我们通过BiLSTM编码答案路径为Hip1H^{p1}_iHip1,Hip2H^{p2}_iHip2则是通过计算关系embeddings的平均值(通过一个关系embedding层)
Answer context 答案上下文
答案上下文指的是候选答案周围的实体,并且这些实体在有限制条件的情况下可以帮助回答问题。例如,还是上面的例子,实体Jon A.Hused的上下文包括了政府职务头衔secretary of state和开始日期2011-01-09。然而,对于没有限制条件的简单问题,答案上下文并不是必须的而且可能吸收噪音。我们使用两种策略来解决这个问题:
- 使用了一个importance module来聚焦于重要的答案层面(之后解释)
- 我们仅仅考虑那些与问题有重叠(overlap)的上下文节点。
特别地,对于每一个候选答案的上下文节点,我们首先计算它和问题的最长公共子序列,当且仅当我们得到一个非终结的子串,再将它通过BiLSTM编码。最后,候选答案的答案上下文会被编码为所有上下文节点的平均,记作向量HicH^c_iHic。
Key-value 记忆模块
在我们的模型中,我们使用了一个key-value记忆网络来存储候选答案。不像基础的记忆网络,它的addressing阶段基于key的记忆,reading阶段基于值记忆,通过这样的功能分离,为编码先验知识提供了很好地灵活性。因此,在编码完答案类型,路径和上下文之后,我们使用线性预测:
Mikt=ftk(Hit1)M^{kt}_i=f^k_t(H^{t_1}_i)Mikt=ftk(Hit1)
Mtvt=ftv(Hit1)M^{vt}_t=f^v_t(H^{t1}_i)Mtvt=ftv(Hit1)
Mikp=fpk([Hip1;Hip2])M^{kp}_i=f^k_p([H^{p1}_i;H^{p2}_i])Mikp=fpk([Hip1;Hip2])
Mivp=fpv([Hip1;Hip2])M^{vp}_i=f^v_p([H^{p1}_i;H^{p2}_i])Mivp=fpv([Hip1;Hip2])
Mck=fck(Hic)M^k_c=f^k_c(H^c_i)Mck=fck(Hic)
Mcv=fcv(Hic)M^v_c=f^v_c(H^c_i)Mcv=fcv(Hic)
MiktM^{kt}_iMikt和MivtM^{vt}_iMivt是答案类型AitA_i^tAit的d维key和value向量表示。相似的,我们同样有key和value表示答案路径和上下文。使用M来作为key-value记忆,它的行Mi={Mik,Miv}M_i=\{M^k_i,M^v_i\}Mi={Mik,Miv},这里Mik=[Mikt;Mikp;Mikc]M^k_i=[M^{k_t}_i;M^{k_p}_i;M_i^{k_c}]Mik=[Mikt;Mikp;Mikc]组成了key,
Miv=[Mivt;Mivp;Mivc]M^v_i=[M^{v_t}_i;M^{v_p}_i;M_i^{v_c}]Miv=[Mivt;Mivp;Mivc]组成values。这里的[,]和[;]表示按行和按列连接。
推理模块
推理模块由一个泛化模块还有我们的双层双向注意力网络组成。这个双层双注意力网络用来捕捉问题和KB间的双向交互。主注意力网络包括了KB-aware注意力模块,根据KB来聚焦于问题的重要部分,importance module则根据问题来聚焦于KB中的重要部分。副注意力网络通过进一步利用双向注意力机制来增强问题和KB向量。
KB-aware 注意力模块
问题中的所有单词并不都是一样的。我们是用一个KB-aware注意力机制来聚焦于问题中的重要部分,(例如图3)。特别地,我们首先使用self attention在所有的问题的词向量HQH^QHQ上来得到d维的问题向量q,公式如下:
q=BiLSTM([HQAQQT,HQ])q = BiLSTM([H^QA^{QQ^T},H^Q])q=BiLSTM([HQAQQT,HQ])
AQQ=softmax((HQ)THQ)A^{QQ} = softmax((H^Q)^TH^Q)AQQ=softmax((HQ)THQ)
softmax默认应用于输入张量的最后一个维度。使用问题总结向量q,应用另一个基于记忆的attention(AttaddAtt_{add}Attadd)来得到答案类型mtm_tmt,路径mpm_pmp,上下文mcm_cmc:
mx=∑i=1∣A∣aiX⋅Mivxm_x=\sum_{i=1}^{|A|}a^X_i\cdot M_i^{v_x}mx=∑i=1∣A∣aiX⋅Mivx
ax=Attadd(q,Mkx)a^x = Att_{add}(q,M^{k_x})ax=Attadd(q,Mkx)
这里x∈{t,p,c}x\in \{t,p,c\}x∈{t,p,c},Attadd(x,y)=softmax(tanh([xT,y]W1)W2)Att_{add}(x,y)=softmax(tanh([x^T,y]W_1)W_2)Attadd(x,y)=softmax(tanh([xT,y]W1)W2),W1∈R2d×dW_1\in R^{2d\times d}W1∈R2d×d,W2∈Rd×1W_2\in R^{d\times 1}W2∈Rd×1
,这都是可训练的权重
至此我们根据问题得到了KB summary m=[mt;mp;mc]m=[mt;mp;mc]m=[mt;mp;mc]。继续计算问题到KB的attention,在问题单词qiq_iqi和KB之间,通过公式AQm=HQTmA^{Qm}=H^{Q^T}mAQm=HQTm,对AQmA^{Qm}AQm的最后一个维度应用maxpooling,也就是说aiQ=maxjAijQma_i^Q=max_jA^{Qm}_{ij}aiQ=maxjAijQm,我们选择qiq_iqi和知识库之间最强的链接。这之后的想法是问句中的每一个单词都有特定的意义,(例如指明了答案类型,路径或者上下文),max pooling可以帮助找出这个目标。我们在应用一个softmax来得到一个向量a~Q\widetilde{a}^QaQ,这个就是一个KB-aware question attention 向量,因为它根据KB指明了qiq_iqi的重要程度
Importance 模块
importance模块聚焦于重要的KB部分,通过问题中的相关性来进行衡量。(通过问题来衡量知识库中哪一部分重要)。首先要计算一个∣Q∣×∣A∣×3|Q|\times |A|\times 3∣Q∣×∣A∣×3(应该是这么多维度)的attention 张量,AQMA^{QM}AQM它表示了每一对链接的强度{qi,Ajx}x={t,p,c}\{q_i,A^x_j\}^{x=\{t,p,c\}}{qi,Ajx}x={t,p,c}。然后我们取AQMA^{QM}AQM的问句单词维数的最大值并将它标准化得到注意力矩阵A~M\widetilde{A}^MAM,它表示了每一个候选答案某一方面的重要性。之后,我们继续计算question-aware记忆表示M~k\widetilde{M}^kMk。(论文公式4)
M~v={M~i=1∣A∣}∈R∣A∣×d\widetilde{M}^v=\{\widetilde{M}^{|A|}_{i=1}\}\in R^{|A|\times d}Mv={Mi=1∣A∣}∈R∣A∣×d
M~iv=∑j=13Mijv\widetilde{M}^v_i=\sum_{j=1}^3M^v_{ij}Miv=∑j=13Mijv
M~k={M~ik}i=1∣A∣∈R∣A∣×d\widetilde{M}^k=\{\widetilde{M}^k_i\}^{|A|}_{i=1}\in R^{|A|\times d}Mk={Mik}i=1∣A∣∈R∣A∣×d
M~ik=A~iMMik\widetilde{M}^k_i=\widetilde{A}^M_iM^k_iMik=AiMMik
A~=softmax(AMT)T\widetilde{A}=softmax(A^{M^T})^TA=softmax(AMT)T
AM=maxi{AiQM}i=1∣Q∣A^M=max_i\{A^{QM}_i\}^{|Q|}_{i=1}AM=maxi{AiQM}i=1∣Q∣
AQM=(MkHQ)TA^{QM}=(M^kH^Q)^TAQM=(MkHQ)T
Enhancing 模块
进一步加强问题和KB表示,通过利用双向attention。计算KB-enhanced问题表示q~\widetilde{q}q它利用了相关的KB信息,通过在AQMA^{QM}AQM的最后一个维度应用max pooling。那就是说AMQ=maxk{A.,.,kQM}k=13A^Q_M=max_k\{A^{QM}_{.,.,k}\}^3_{k=1}AMQ=maxk{A.,.,kQM}k=13,然后将其标准化得到一个question-to-KB attention 矩阵A~MQ\widetilde{A}^Q_MAMQ,我们从这个矩阵计算出了question-aware KB summary并且将它吸收至问题表示H~Q=HQ+a~Q⨀(A~MQM~v)T\widetilde{H}^Q=H^Q+\widetilde{a}^Q\bigodot(\widetilde{A}^Q_M\widetilde{M}^v)^THQ=HQ+aQ⨀(AMQMv)T。最后,我们得到了一个d维KB-enhanced问题表示向量
q~=H~Qa~Q\widetilde{q}=\widetilde{H}^Q\widetilde{a}^Qq=HQaQ。相似地,我们可以计算一个question-enhanced KB表示M‾k\overline{M}^kMk吸收了相关的问题信息:
M‾k=M~k+a~M⨀(A~QM(H~Q)T)\overline{M}^k=\widetilde{M}^k+\widetilde{a}^M\bigodot(\widetilde{A}^M_Q(\widetilde{H}^Q)^T)Mk=Mk+aM⨀(AQM(HQ)T)
a~M=(A~MQ)Ta~Q∈R∣A∣×1\widetilde{a}^M=(\widetilde{A}^Q_M)^T\widetilde{a}^Q\in R^{|A|\times1}aM=(AMQ)TaQ∈R∣A∣×1
A~QM=softmax(AMQT)∈R∣A∣×∣Q∣\widetilde{A}^M_Q=softmax(A^{Q^T}_M)\in R^{|A|\times|Q|}AQM=softmax(AMQT)∈R∣A∣×∣Q∣
泛化模块
我们在回答问题之前增加了一个one-hop attention。我们使用问题表示q~\widetilde{q}q在key 记忆矩阵M‾k\overline{M}^kMk上通过注意力机制查询,并从值记忆中取回最相关的信息,这些信息被用来使用取更新问题向量。最后,我们应用一个residual 层和batch norm,帮助模型优化。因此我们有:
q^=BN(q~+q′)\widehat{q}=BN(\widetilde{q}+q')q=BN(q+q′)
q′=GRU(q~,m~)q'=GRU(\widetilde{q},\widetilde{m})q′=GRU(q,m)
m~=∑i=1∣A∣ai⋅M~iv\widetilde{m}=\sum_{i=1}^{|A|}a_i\cdot\widetilde{M}^v_im=∑i=1∣A∣ai⋅Miv
a=AttaddGRU(q~,M‾k)a=Att^{GRU}_{add}(\widetilde{q},\overline{M}^k)a=AttaddGRU(q,Mk)
回答模块
给定一个问题Q的表示q^\widehat{q}q和候选答案{Ai}i=1∣A∣\{A_i\}^{|A|}_{i=1}{Ai}i=1∣A∣的表示{M‾ik}\{\overline{M}^k_i\}{Mik},我们可以计算一个匹配得分S(q^,M‾ik)S(\widehat{q},\overline{M}^k_i)S(q,Mik)在每一对(Q,Ai)(Q,A_i)(Q,Ai),S(q,a)=qT⋅aS(q,a)=q^T\cdot aS(q,a)=qT⋅a。候选答案根据这个得分来进行排序
本文介绍了一种基于深度学习的复杂问答系统,该系统由输入、记忆、推理和回答四个模块构成,利用双向LSTM和注意力机制处理自然语言问题,从知识库中高效检索答案。

2511

被折叠的 条评论
为什么被折叠?



