SG-Net

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的计算加以限制,以此来使模型更好地理解文章和问题,并提升正确率。

SG-Net

上图是一个加入句法结构分析的例子。

因此本文最主要的一个contribution就是在QA领域传统的self-attention变为带有syntactic dependency of interest(SDOI)的attention机制。

Syntax-Guided Network

本文提出的模型叫做Syntax-Guided Network(SG-Net),概括一下就是以BERT为Baseline,对其中encoder block的self-attention机制加以改进。

SG-Net

上图是模型的总体架构,由于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,如下图的例子所示。

SG-Net

因此对于文章和问题中的每个单词 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⋅(Qi​KiT​)​)
接着再计算attention score
W i   =   A i V i W_{i}\ =\ \Alpha_{i}V_{i} Wi​ = Ai​Vi​
之后和正常的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的方法,但是实验数据表明都没有文中这一种效果好

SG-Net

Experiment

作者在两个数据集上进行了实验,一个基于span提取的SQuAD2.0,另一个是基于MCQ的RACE数据集

SG-Net

SG-Net

可以看到SG-Net在两个数据集上都成为了新SOTA。

Ablation

作者也做了消融实验

SG-Net

可以看到Syntax-guided attention对baseline的提升是比较显著的(EM 1.3 % 1.3\% 1.3% F1 0.4 % 0.4\% 0.4%)

Analysis

作者对实验结果进行了两个层面的分析,一个是对长文本的表现能力,另一个是对syntax-guided attention的可视化。

首先看模型对长问题的回答能力

SG-Net

基本来说是呈正相关的,与BERT对比差异更加显著。

然后是对attention weight的可视化

SG-Net

左边是没有任何限制的self-attention,可以看到噪声是很多的,每个词对于句子中其他所有词都有着千丝万缕的联系。而右边是加入了syntax以后的attention weight,非常清爽,每个词都只与和它语法结构上相关的词之间有联系,而且也能看得出问题的答案也被成功地赋予了很大的权重。

Reflection

这篇文章的核心就是syntax-guided,加入了语法结构以后模型效果有了不小的提升。这一点可以结合《Improving the Robustness of Question Answering Systems to Question Paraphrasing》这篇文章所谈到的一个问题:如果把问题的某些词换为原文中与答案无关但具有迷惑性的词,那么模型的准确率会大大下降。从那篇文章的实验结果可以得出一个结论:普通的self-attention只能够让模型学习到语义特征,但是模型并没有完全理解文章和句子的结构,感觉像是通过语义相似度的匹配得出答案,因此加入语法结构特征对于模型理解文本是非常有帮助的。

上一篇:Python 自动化库介绍 PySimpleGUI


下一篇:PySimpleGUI 进阶| 原来用Python做一个图片查看系统,还能这么简单!