1 《Iterative Alternating Neural Attention for Machine Reading》
(1)论文创新点
- 这个模型的文章和问题在真正使用时,都是根据前一时刻的隐层状态,动态的表示成一个向量;
- 在更新状态时,使用了gated机制(虽然看起来有点复杂)。
(2)论文模型
模型的整体结构图如下所示:
接下来将对该模型上的组成部分做简单的介绍。
bidirectional encoddings
对于问题和文章的基本表示,主要是使用BiGRU来对文本序列进行编码。具体来说,对文章,不对文章的语义信息进行整体表示,而是对文章中的每个单词序列逐一表示(即文章表示法的模型1),每个单词的表示由双向GRU的前后隐层状态拼接后得到:
d
i
=
[
h
i
⃗
,
h
i
←
]
d_i=[\vec{h_i},\overleftarrow{h_i}]
di=[hi,hi]
对于问题来说做同样的操作,对序列中每个单词进行表示:
q
i
=
[
h
i
⃗
,
h
i
←
]
q_i=[\vec{h_i},\overleftarrow{h_i}]
qi=[hi,hi]
在对推理状态进行更新的时候,每次都会从问题和文章中抓取相关信息,于是构造了下面几个组成部分。
query attention
这个我们可以把它形容成获取在当前时刻
t
t
t问题的重点,这个重点是通过一个注意力机制得到的,通过公式:
q
i
,
t
=
s
o
f
t
m
a
x
[
q
i
T
^
(
A
q
S
t
−
1
+
a
q
)
]
q_{i,t}=softmax[\widehat{q_i^T}(A_{q}S_{t-1}+a_{q})]
qi,t=softmax[qiT
(AqSt−1+aq)]
得到该时刻每个单词的权重(其中
q
i
T
^
\widehat{q_i^T}
qiT
是问题表示),于是这个时刻问题的重点由下面的公式表示:
q
t
=
∑
i
q
i
,
t
q
i
^
q_t=\sum_{i}q_{i,t}\widehat{q_i}
qt=i∑qi,tqi
document attention
首先计算文章中每个单词的权重,结合问题的重点,然后得到文章这个时刻的重点:
d
i
,
t
=
s
o
f
t
m
a
x
[
d
i
T
^
(
A
d
[
S
t
1
,
q
t
]
+
a
d
)
]
d_{i,t}=softmax[\widehat{d_i^T}(A_d[S_{t_1},q_t]+a_d)]
di,t=softmax[diT
(Ad[St1,qt]+ad)]
search gates
这个部分是由FFNN+sigmold来组成的,具体的计算公式如下:
r
=
g
(
[
S
t
−
1
,
q
t
,
d
t
,
q
t
⋅
d
t
]
)
r=g([S_{t-1},q_t,d_t,q_t \cdot d_t])
r=g([St−1,qt,dt,qt⋅dt])
更新推理状态
通过上述几个公式,得到问题和文章该时刻的重点,然后通过gates对这些重点进行过滤,结合前一时刻的推理状态来得到当前时刻的推理状态:
S
t
=
f
(
[
r
q
⋅
q
t
,
r
d
⋅
d
t
]
,
S
t
−
1
)
S_t=f([r_q \cdot q_t , r_d \cdot d_t],S_{t-1})
St=f([rq⋅qt,rd⋅dt],St−1)
(3)小结
这个模型动态的构建问题,文章,以及推理状态之间的相关性,也就是动态的注意力机制。一个可以扩展的点就是动态的决定推理步骤,此外,gate的计算方式或许也可以优化下。