Multi-Granularity Hierarchical Attention Fusion Networks for Reading Comprehension and Question Answering

୧(๑•̀◡•́๑)૭

概述

这是首次机器阅读理解模型性能在SQuAD上超越人类性能的模型,EM高达79.2%。本博文旨在考察模型细节,以便学习掌握。
总览全文,该模型使用了很多优化技巧,总结有以下几点:

  1. 使用ELMo
  2. 除了常用的co-attention,self-attention外,还使用了Fusion Function
  3. 回答问题前,除了使用pointer network,还使用了bilinear match
  4. 在推理过程中使用了手动制定的特征

模型

记文档为词语序列$$P={w_t^P}_{t=1}^n$$, 问题为词语序列为$$Q={w_t^Q}{t=1}^m$$,其中$$n$$为文档长度,$$m$$为问题长度;答案为文档$$P$$中的某个连续的文档片段。学习目标为$$f(q, p)=\arg\max{a\in A(p)} \Pr{(a\vert q, p)}$$。

Hierarchical Attention Fusion Network.

模型整体框架如上图,可以细分为四部分:

  • Encoder Layer: 将文档和问题转化为向量表示;
  • Attention Layer: 捕捉文档与问题之间的相互关系,除了常用的co-attention/self-attention外,还运用了Fusion Function
  • Match Layer: 使用bi-linear match function捕捉问题与文档表示之间的关系;
  • Output Layer: 使用pointer-network搜索答案。

Encoder Layer

该模型除了使用常用的GloVe作为预训练的词向量外,还使用了ELMo该语言模型作为词向量表示的补充。如此,对于文档和问题我们得到了两种表示,即词向量$${e_t^Q}_{t=1}^m$$,$${e_t^P}_{t=1}^n$$和字向量$${c_t^Q}_{t=1}^m$$,$${c_t^P}^n_{t=1}$$。
之后为获取上下文信息,使用Bi-LSTM对词向量表示与字向量表示进行学习,并与字向量拼接作为该层的最终表示:
$$
\begin{align}
u_t^Q &= \Big[\text{BiLSTM}_Q([e_t^Q, c_t^Q]), c_t^Q \Big]\
u_t^P &= \Big[\text{BiLSTM}_P([e_t^P, c_t^P]), c_t^P \Big]\
\end{align}
$$

Attention Layer

该层主要负责推理,本模型基于co-attention和self-attention形成hierarchical attention,并在此外还使用了Fusion Function

Co-attention & Fusion

计算出问题表示$$u_t^Q$$及文档表示$$u_t^P$$后,我们即可计算两者语义相似度:
$$
S_{ij} = \text{Att}(u_t^Q, u_t^P) = \text{ReLu}(W_{lin}^T u_t^Q) \cdot \text{ReLu}(W_{lin}^T u_t^P)
$$

类似之前的做法,作者基于上述未归一化的矩阵$$S$$计算P2Q AttentionQ2P Attention:
P2Q Attention得到融入文档的问题表示:
$$
\begin{align}
\alpha_j &=\text{softmax}(S_{:j}) & \
\tilde{Q}_{:t} &= \sum_j \alpha_{tj} \cdot Q_{:j}, & \forall j \in [1,\cdots, m]\
\end{align}
$$

Q2P Attention得到融入问题的文档表示:
$$
\begin{align}
\beta_i &= \text{softmax}(S_{i:}) &\
\tilde{P}_{k:} &= \sum_i \beta_{ik} \cdot P_{i:}, & \forall i \in [1, \cdots, n]\
\end{align}
$$

之后通过结合原有的文档表示和问题表示,得到:
$$
\begin{align}
P’ &= \text{Fuse}(P, \tilde{Q})\
Q’ &= \text{Fuse}(Q, \tilde{P}) \
\end{align}
$$

在本文中选用了如下形式作为$$\text{Fuse}$$:
$$
m(P, \tilde{Q}) = \tanh(W_f \Big[P; Q; P\circ\tilde{Q}; P-\tilde{Q} \Big] + b_f)
$$

作者发现原先的表示反映了一些全文信息,为此引入门机制生成最终的文档或问题表示:
$$
\begin{align}
P’ &= g(P, \tilde{Q})\cdot m(P, \tilde{Q}) + (1 - g(P, \tilde{Q}))\cdot P\
Q’ &= g(Q, \tilde{P})\cdot m(Q, \tilde{P}) + (1 - g(Q, \tilde{P}))\cdot Q\
\end{align}
$$
门机制的实现在后文中将详细介绍,作者设计了三种:基于标量、基于向量、基于矩阵的三种。

Self-attention & Fusion

之后对文档进行self-attention,先后通过BiLSTM、双线性的softmax及Fuse Function
$$
\begin{align}
D &= \text{BiLSTM}(\Big[ P’;\text{feat}_{\text{man}}\Big]) \
L &= \text{softmax}(D\cdot W_l \cdot D^T)\
\tilde{D} &= L \cdot D \
D’ &= \text{Fuse}(D, \tilde{D})\
D’’ &= \text{BiLSTM}(D’)
\end{align}
$$
对于问题,鉴于其长度较短,没有采用上述复杂的操作方式:
$$
\begin{align}
Q’’ &= \text{BiLSTM}(Q’)\
\gamma &= \text{softmax}(w_q^T \cdot Q’’)\
q &= \sum_j \gamma_j \cdot Q’’_{:j}, \forall j \in [1, \cdots, m]\
\end{align}
$$

Match & Output Layer

作者通过下述的双线性方式得到答案的开始与结束位置:
$$
\begin{align}
P_{start} &= \text{softmax}(q \cdot W_s^T \cdot D’’)\
P_{end} &= \text{softmax}(q \cdot W_e^T \cdot D’’)\
\end{align}
$$
输出层使用常规的Pointer Network来预测文档的开始与结束位置。
在训练过程中,使用交叉熵作为目标函数;在预测过程中,使用动态规划寻找一定长度内为答案开始概率与为答案结束概率乘积最大者。

参考文献

Multi-Granularity Hierarchical Attention Fusion Networks for Reading Comprehension and Question Answering

0%