SG-Net: Syntax-Guided Machine Reading Comprehension
这是2020年上交发表在AAAI上的一篇文章,本文在MRC中引入了语法结构信息,这也是我在读《Improving the Robustness of Question Answering Systems
to Question Paraphrasing》这篇文章时所想到的一个创新点。
Overview
本文的motivation是之前所有用self-attention机制的QA模型都存在一个问题:attention的计算没有限制,有一些不相关的词容易造成干扰。简言之就是每次做self-attention都会把文章每个词考虑进来,这样一来一些与关键信息不相干的内容有可能attention score比较大,也会被考虑进来,也就是noise比较多。作者希望通过syntax特征self-attention的计算加以限制,以此来使模型更好地理解文章和问题,并提升正确率。
上图是一个加入句法结构分析的例子。
因此本文最主要的一个contribution就是在QA领域传统的self-attention变为带有syntactic dependency of interest(SDOI)的attention机制。
Syntax-Guided Network
本文提出的模型叫做Syntax-Guided Network(SG-Net),概括一下就是以BERT为Baseline,对其中encoder block的self-attention机制加以改进。
上图是模型的总体架构,由于BERT我们都比较熟悉了,因此重点来看一下本文的创新部分,也就是后面的Syntax-Guided Self Attention Layer和Dual Context Aggregation。
Syntax-Guided Self Attention Layer
在得到Encoder的输出 H H H后,我们再利用 H H H做一次带有syntax mask的self-attention,而关键之处就是设置带有句法结构信息的mask。本文作者采用的方法是先预训练一个dependency parser,然后对文章和问题都进行dependency parsing,这样我们可以得到一个依存分析图。然后作者令每个单词只能够看到它自己和它的子节点(直接和间接),以此来构建一个attention mask,如下图的例子所示。
因此对于文章和问题中的每个单词
s
i
s_i
si,我们预先通过dependency parser预处理出他可见的单词集合
{
p
i
}
\{p_{i}\}
{pi},然后根据这些信息训练出attention mask
M
M
M
M
(
i
,
j
)
=
{
1
i
f
j
∈
p
i
o
r
i
=
j
0
o
t
h
e
r
w
i
s
e
M(i,j)\ =\ \begin{cases}1 \ \ \ \ \ \ if \ j \in p_i\ or\ i=j \\ 0\ \ \ \ \ \ \ otherwise\end{cases}
M(i,j) = {1 if j∈pi or i=j0 otherwise
然后同样的,我们训练query、key、value三个矩阵
Q
、
K
、
V
∈
R
h
×
L
×
d
k
Q、K、V \in R^{h \times L \times d_k}
Q、K、V∈Rh×L×dk,对于每个头
i
i
i,在计算attention weight的时候把mask
M
M
M加入进去
A
i
=
s
o
f
t
m
a
x
(
M
⋅
(
Q
i
K
i
T
)
d
k
)
\Alpha_{i}\ =\ softmax(\frac{M\cdot (Q_{i}K^{T}_{i})}{\sqrt{d_k}})
Ai = softmax(dk
M⋅(QiKiT))
接着再计算attention score
W
i
=
A
i
V
i
W_{i}\ =\ \Alpha_{i}V_{i}
Wi = AiVi
之后和正常的Encoder Block一样再经过Layer Normalize和Feed Forward得到该层的输出
H
^
\hat{H}
H^。
Dual Context Aggregation
接下来作者将不带syntax信息的representation
H
H
H和带有syntax信息的representation
H
^
\hat{H}
H^进行融合,它采用的是一个线性组合
H
ˉ
=
α
H
+
(
1
−
α
)
H
^
\bar{H}\ =\ \alpha H + (1-\alpha)\hat{H}
Hˉ = αH+(1−α)H^
作者在后面提到这里还可以采用concatenation或者Bi-attention的方法,但是实验数据表明都没有文中这一种效果好
Experiment
作者在两个数据集上进行了实验,一个基于span提取的SQuAD2.0,另一个是基于MCQ的RACE数据集
可以看到SG-Net在两个数据集上都成为了新SOTA。
Ablation
作者也做了消融实验
可以看到Syntax-guided attention对baseline的提升是比较显著的(EM 1.3 % 1.3\% 1.3% F1 0.4 % 0.4\% 0.4%)
Analysis
作者对实验结果进行了两个层面的分析,一个是对长文本的表现能力,另一个是对syntax-guided attention的可视化。
首先看模型对长问题的回答能力
基本来说是呈正相关的,与BERT对比差异更加显著。
然后是对attention weight的可视化
左边是没有任何限制的self-attention,可以看到噪声是很多的,每个词对于句子中其他所有词都有着千丝万缕的联系。而右边是加入了syntax以后的attention weight,非常清爽,每个词都只与和它语法结构上相关的词之间有联系,而且也能看得出问题的答案也被成功地赋予了很大的权重。
Reflection
这篇文章的核心就是syntax-guided,加入了语法结构以后模型效果有了不小的提升。这一点可以结合《Improving the Robustness of Question Answering Systems to Question Paraphrasing》这篇文章所谈到的一个问题:如果把问题的某些词换为原文中与答案无关但具有迷惑性的词,那么模型的准确率会大大下降。从那篇文章的实验结果可以得出一个结论:普通的self-attention只能够让模型学习到语义特征,但是模型并没有完全理解文章和句子的结构,感觉像是通过语义相似度的匹配得出答案,因此加入语法结构特征对于模型理解文本是非常有帮助的。