原文链接
本文发表于人工智能领域B类会议 COLING 2016
摘要
随着NLP研究如火如荼的发展,机器阅读理解技术也有了一个爆炸式的增长,一些机构公开的完形填空式的阅读理解数据集,极大的促进了机器阅读理解技术的提升。本文首先提出了提出了两个中文阅读理解数据集,分别为日常新闻数据集和儿童通话数据集。此外,本文提出了一种基于consensus attention的神经网络,其目的是能够让注意力机制关注到查询中的每一个单词。实验结果表明,本文提出的方法效果不错。
模型
假设我们有训练集
<D,Q,A>
<
D
,
Q
,
A
>
<script type="math/tex" id="MathJax-Element-97">
</script>,其中D是文章,Q是查询,首先我们将Q和D的onehot表示通过一个相同的embedding矩阵
We
W
e
转换为embedding表示,由于Q比D要短很多,通过与D共享embedding矩阵,可以使Q学到的embedding表示比使用两个不同的embedding矩阵要好。
本文使用两个不同的双向GRU来分别提取D和Q的特征,这样从不同维度的提取方式能够更加充分的提取特征。模型如下图所示:
模型底层是基于双向GRU的,没有啥特殊的地方,公式如下:
具体而言就是将D,Q进行embedding后输入双向GRU然后得到两个方向的隐状态输出之后,将两个方向的输出给concat起来。
这样我们就得到了D和Q通过双向GRU的输出
hdoc
h
d
o
c
和
hquery
h
q
u
e
r
y
,然后对
hdoc
h
d
o
c
中的每个单词的隐状态表示, 计算它与
hquery
h
q
u
e
r
y
中所有单词的隐状态表示的匹配程度:
α(t)=softmax(hdoc⨀hquery(t))
α
(
t
)
=
s
o
f
t
m
a
x
(
h
d
o
c
⨀
h
q
u
e
r
y
(
t
)
)
(t 表示时序, 即 query 的第 t 个位置,该公式本质就是计算attention)。
即:
α(t)=[α(t)1,α(t)2,...,α(t)n]
α
(
t
)
=
[
α
(
t
)
1
,
α
(
t
)
2
,
.
.
.
,
α
(
t
)
n
]
其中
n
n
是D中单词的个数
得到了之后,我们将其送入一个merge function
所谓 consensus, 是要在 query 的每个单词上达到某种共识; 所谓 consensus attention, 就是在单词对应的 attention 之间取得共识,本文用merge function来代表这种共识: s=f(α(1),…,α(m)) s = f ( α ( 1 ) , … , α ( m ) ) (m 表示 query 的长度).
本文定义了三种merge function:
- max (此时的共识就是推举出最大的 attention): s∝softmax(maxt=1…mα(t)) s ∝ s o f t m a x ( m a x t = 1 … m α ( t ) ) ;
- sum (此时的共识就是考虑所有的 attention): s∝softmax(∑mt=1α(t)) s ∝ s o f t m a x ( ∑ t = 1 m α ( t ) ) ;
- avg (此时的共识就是考虑所有 attention 的均值): s∝softmax(1m∑mt=1α(t)) s ∝ s o f t m a x ( 1 m ∑ t = 1 m α ( t ) ) ;
(注:本人认为本文这个地方有点强行解释的感觉)
最后, 和 ASReader 一样, 对 document 中 unique word, 计算所有位置上的概率和: