简介
本文面向机器阅读理解问题(Machine Reading Comprehension),作者来自微软研究院。
下载链接
动机
现有的方法可以分为两类:单步推理(Single turn)、多步推理(multiple turns)。多步推理是由单步推理衍生而来,单步推理又可以看做是多步推理的特例(turn=1)。这两种方法的共同点是,推理轮数固定,这不符合人类的阅读行为。人会根据当前是否得到了足够的信息,决定中止阅读或继续阅读。本文基于此动机,提出ReasoNet,可以动态决定推理轮数。
贡献
- 将强化学习和多步推理结合,可动态终止推理过程。
- 实验结果较好,是SOTA模型。
方法
本文方法的整体架构如下图所示。按照原文的划分,主要包括5个部分,下面一一介绍。
- Memory
是一个外部库, M = { m i } i = 1... D M=\{m_i\}_{i=1...D} M={mi}i=1...D,用于生成attention。 - Attention
通过隐状态和外部库,得到当前时间步的attention, x t = f a t t ( s t , M ; θ x ) x_t=f_{att}(s_t,M;\theta_x) xt=fatt(st,M;θx) - Internel State
每个时间步的隐状态,通过RNN得到, s t + 1 = R N N ( s t , x t ; θ s ) s_{t+1}=RNN(s_t,x_t;\theta_s) st+1=RNN(st,xt;θs) - Termination Gate
终止门,用于判断当前时间步是否终止, t t ∼ p ( ⋅ ∣ f t g ( s t ; θ t g ) ) t_t \sim p(·|f_{tg}(s_t;\theta_{tg})) tt∼p(⋅∣ftg(st;θtg)), t t t_t tt是一个二值随机变量,当它是true时,终止。 - Answer
当 t t = t r u e t_t=true tt=true时,得到answer, a t ∼ p ( ⋅ ∣ f a ( s t ; θ a ) ) a_t \sim p(·|f_a(s_t;\theta_a)) at∼p(⋅∣fa(st;θa))
整个Inference过程如算法1所示:
在模型的优化过程中,梯度计算公式为:
上式中,
b
T
b_T
bT一般是预设的值
b
T
=
E
π
[
r
T
]
b_T=E_{\pi}[r_T]
bT=Eπ[rT],并根据
b
T
=
λ
b
T
+
(
1
−
λ
)
b
T
b_T=\lambda b_T+(1-\lambda)b_T
bT=λbT+(1−λ)bT不断更新,被称作reward baseline(奖励基线),用于在强化学习任务中降低方差。但是在本文中,作者发现,这么做收敛很慢,因为
b
T
b_T
bT不能捕获dynamic termination behavior。作者将梯度计算公式改为:
其中,
b
b
b的计算公式为:
作者还说了,使用
r
T
b
−
1
\frac{r_T}{b}-1
brT−1代替
r
T
−
b
r_T-b
rT−b能够更快的收敛。
实验
在两个数据集上的实验结果:
在CNN数据集上, termination step的分布情况: