本文主要介绍GA reader模型的基本思想,由论文《Gated-Attention Readers for Text Comprehension》提出,论文直通车
1 论文概述
本篇论文的思想其实是很简单的,可以把其看成是AS reader模型的扩展,尽管模型简单,但是也取得了不错的成绩,也证明了乘法操作机制带来的效果显著。值得一提的是,论文中的相关工作部分,对之前的模型进行了分门别类的概述,这一点要比其他论文的相应部分丰富得多。
2 模型细节
GA reader模型的整体架构如下图所示,看起来很多层有些复杂,其实单独拿粗来看就不复杂了。
[外链图片转存失败(img-H1qpwCZf-1567583608598)(https://i.imgur.com/YJ7tEYL.png)]
总的来说可以分为四个模块:
- 文本表示模块
- 多层结构
- GA 模块
- 答案预测模块
下面就依次来介绍这些模块,不过都是介绍最基本的模型,不包括后面追加的特征。
(1)文本表示模块
文本表示是基础,这篇论文中对问题和文章的表示均采用文本表示法的模型一,即对文本中的单词序列逐一表示,而不是对问题或文章的整体语义信息进行表示。使用这种方法的模型较多,因为没有将所有信息都压缩在一个向量中,所以这样对问题或文章的语义信息保留得相对完整。将输入序列
X
=
[
x
1
,
x
2
,
.
.
.
,
x
T
]
X=[x_1 , x_2 , ... , x_T ]
X=[x1,x2,...,xT]送入GRU,得到输出
H
=
[
h
1
,
h
2
,
.
.
.
,
h
T
]
H=[h_1 , h_2 , ... , h_T]
H=[h1,h2,...,hT],在这个模块中,本篇论文使用的是BiGRU来对文章和问题进行处理,所以对输出的前后向隐层状态进行拼接:
G
R
U
↔
(
X
)
=
[
h
1
f
∣
∣
h
T
b
,
.
.
.
,
h
T
f
∣
∣
h
1
b
]
\overleftrightarrow{GRU}(X)=[h_1^f||h_T^b , ... , h_T^f|| h_1^b]
GRU
(X)=[h1f∣∣hTb,...,hTf∣∣h1b]
最后,使用
X
(
0
)
=
[
x
1
(
0
)
,
x
2
(
0
)
,
.
.
.
,
x
∣
D
∣
(
0
)
]
X^{(0)}=[x_1^{(0)},x_2^{(0)}, ... , x_{|D|}^{(0)}]
X(0)=[x1(0),x2(0),...,x∣D∣(0)]表示文章序列,使用
Y
(
0
)
=
[
y
1
,
y
2
,
.
.
.
,
y
∣
Q
∣
]
Y^{(0)}=[y_1,y_2, ... , y_{|Q|}]
Y(0)=[y1,y2,...,y∣Q∣]表示问题序列。
文章表示序列中有个上标
(
0
)
(0)
(0),因为在这个模型中有很多层,添加上标为了区别于后面每层的文章表示。下面就介绍,不同层之间文章表示是怎么形成的。
(2)多层结构
在上一个模块中得到了文章序列和问题序列表示,在这一个模块中,使用两个不同的BiGRU分别对文章和问题进行处理:
D
(
k
)
=
G
R
U
↔
D
(
k
)
(
X
(
k
−
1
)
)
D^{(k)}=\overleftrightarrow{GRU}_D^{(k)}(X^{(k-1)})
D(k)=GRU
D(k)(X(k−1))
Q
(
k
)
=
G
R
U
↔
Q
(
k
)
(
Y
)
Q^{(k)}=\overleftrightarrow{GRU}_Q^{(k)}(Y)
Q(k)=GRU
Q(k)(Y)
这里的上标也是表示这是第几层的,接下来使用Gated-Attention来对这两个信息进行组合,作为下一层的输入:
X
(
k
)
=
G
A
(
D
(
k
)
,
Q
(
k
)
)
X^{(k)}=GA(D^{(k)},Q^{(k)})
X(k)=GA(D(k),Q(k))
其中GA就是接下来要介绍的GA模块。
(3)GA模块
这个模块的思想也是很容易理解的,对于文章中的每一个单词 d i d_i di,后续操作可以分解成三个操作:
- 计算问题中每个单词与这个给定单词之间的相关性: α i = s o f t m a x ( Q T d i ) \alpha _i=softmax(Q^T d_i) αi=softmax(QTdi)
- 对问题进行加权求和,得到特定于文章单词 d i d_i di的问题表示: q i ^ = Q a i \widehat{q_i}=Qa_i qi =Qai
- 将特定的问题表示和这个文章单词做乘法操作: x i = d i ⊙ q i ^ x_i=d_i \odot \widehat{q_i} xi=di⊙qi
(4)答案预测模块
答案预测模块和AS reader模块的一样,主要有以下两个部分:
P
r
(
c
∣
d
,
q
)
∝
∑
i
∈
I
(
c
,
d
)
(
s
i
)
Pr(c|d,q) \propto \sum_{i \in I_(c,d)}(s_i)
Pr(c∣d,q)∝i∈I(c,d)∑(si)
其中,
I
(
c
,
d
)
I(c,d)
I(c,d)是单词c在文章d中出现位置的集合,最后概率最大的作为答案:
a
⋆
=
a
r
g
m
a
x
c
∈
C
P
r
(
c
∣
d
,
q
)
a^{\star}=argmax_{c \in C}Pr(c|d,q)
a⋆=argmaxc∈CPr(c∣d,q)