Document Modeling with Graph Attention Networks for Multi-grained Machine Reading Comprehension
https://github.com/DancingSoul/NQ_BERT-DM
Motivation
自然问题两种粒度的答案,即长答案(通常是一个passage)和短答案(长答案内的一个或多个实体)。现有方法在训练过程中单独处理这两个子任务,而忽略了它们的依赖性。
1 Introduction
图1介绍了NQ中的一个实例,根据以往研究,一个有效的长答案必须包含回答问题所需的所有信息。除此之外,一个准确的短答案应该有助于确认长答案。例如,当人们试图在图1中给定的维基百科页面中找到两个粒度的答案时,他们会首先尝试检索段落(长答案),然后尝试确认被问实体的位置(简短回答)是否存在于段落中,这有助于最终决定哪个段落是长答案。这样,两种粒度的答案可以互相提供证据。
作者使用图注意力网络和BERT将这两个子任务放在一起处理,直接在tokens、sentences、passages和documents这四个不同粒度级别对表示进行建模,以捕捉文档的层次性质。以这种方式直接从其passage级表示中获得长答案的分数,并从token级表示的开始和结束位置获得短答案的分数。因此,长答案和短答案选择任务可以联合训练,以相互促进。
2 Preliminary
2.1 Natural Questions Dataset
NQ数据集中的每个例子都包含一个问题和一整页维基百科。这些模型预计会预测两种类型的输出:
1)长答案,这是一个包含足够信息的HTML span,reader可以完全推断出问题的答案。它可以是passages、table、list项或整个列表。从候选人名单中选择一个长答案,或者如果没有候选人回答问题,则应给出“no answer”;
2)简短回答,可以是“yes”、“no”或长答案内的实体列表。同样,如果没有合适的简短回答,应该给出“no answer”。
2.2 Data Preprocessing
由于NQ文档的平均长度太长,不能作为一个训练实例来考虑,需先将每个文档分割成一个具有重叠token窗口的文档片段列表,就像最初用于MRC任务的BERT模型一样。然后从文档片段中生成一个实例:
[CLS] [question_tokens]、[SEP][document_tokens][SEP]
此外用答案类型作为五个分类标签来标记每个文档片段,以构建一个训练实例:“short”表示包含所有短跨度的实例,“yes”和“no”表示包含长答案跨度的实例,“long”表示包含长答案跨度的实例。除了上述情况之外,还有“no-answer”的标签。
3 Approach
整体架构
3.1 Input & Output Definition
在形式上,将训练集中的一个实例定义为一个六元组:
假设实例是从相应示例的第
i
i
i个文档片段
D
i
D_i
Di生成的,那么
c
c
c = ([
C
C
C
L
L
L
S
S
S],
Q
1
Q_1
Q1,…,
Q
Q
Q
∣
_|
∣
Q
_Q
Q
∣
_|
∣,[
S
S
S
E
E
E
P
P
P],
D
D
D
i
_i
i
,
_,
,
1
_1
1,…,
D
D
D
i
_i
i
,
_,
,
∣
_|
∣
D
_D
D
i
_i
i
∣
_|
∣,[
S
S
S
E
E
E
P
P
P]),其中
∣
|
∣
Q
Q
Q
∣
|
∣ +
∣
|
∣
D
D
D
i
_i
i| + 3 = 512。
S
S
S表示文档片段中的长候选答案。
l
l
l ∈
S
S
S是此实例的候选集
S
S
S中的目标长答案候选。
s
s
s,
e
e
e∈{ 0,1,…,511}是指向目标答案区间的开始和结束的包含索引。
t
t
t∈{ 0,1,2,3,4}是带注释的答案类型,对应五个标签。对于包含多个简短答案的实例,设置
s
s
s和
e
e
e分别指向第一个简短回答的最左边位置和最后一个简短回答的最右边位置。
整体目标是学习一个模型,该模型识别长答案候选 l l l和 l l l中的短答案跨度( s s s, e e e),并预测他们的分数以供评估。
3.2 Multi-granularity Document Modeling
用多粒度表示文档的直觉来自文档的自然层次结构。一般来说,文档可以分解为passage列表,passage列表又可以进一步分解为sentence列表和token列表。因此,直接将文档结构视为一棵树,它有四种类型的节点,即token节点、sentence节点、passage节点和document节点。不同类型的节点代表不同粒度级别的信息。
文档的层次树结构包含token和sentence之间、sentence和passage之间以及passage和document之间的边。此外,作者进一步在token和passage之间、token和document之间、sentence和document之间添加边来构建图,上述所有边是双向的,因此,每两个节点之间的信息只能通过图中的两条边传递。
3.3 Graph Encoder
上图显示了Graph Encoder的内部结构。每一层都由三个self-attention 层、一个graph integration 层和一个feed-forward 层组成。self-attention层用于具有相同粒度的节点之间的交互,而graph integration层旨在利用图注意网络从其他粒度级别收集信息。下图是graph integration层的示意图。由于self-attention 是图注意网络的一种特殊情况,其中图是完全连通的,下面只介绍图注意网络的一般形式,它可以推广到self-attention机制。
左边的图是graph integration层的图示。右侧的图显示了更新段落节点时的传入信息。实线代表文档层次树结构中的边,而虚线代表另外添加的边。
3.3.1 Graph Attention Networks
应用GAT来建模节点之间的信息流,这可以通过对来自其邻居的特征的注意力机制来进一步改善节点的表示。这样可以增强两个细粒度答案之间的交互。
定义一个图
G
G
G = (
V
V
V,
E
E
E,
X
X
X),它由一组节点
V
V
V组成,节点特征
X
X
X = (
h
1
h_1
h1,…,
h
h
h
∣
_|
∣
V
_V
V
∣
_|
∣)和一列有向边集
E
E
E = (
E
1
E_1
E1,…,
E
E
E
K
_K
K)其中
K
K
K为边数。每个
i
i
i ∈
V
V
V都有它自己的表示
h
i
h_i
hi∈
R
R
R
d
^d
d
h
^h
h,
d
h
d_h
dh是BERT的隐藏大小。
此外在GAT中使用了多头注意机制。下面描述了
m
m
m个注意头中的一个。所有参数对于每个注意头和层都是唯一的。如果从节点
j
j
j到节点
i
i
i有一条边,注意系数
e
e
e
i
_i
i
j
_j
j计算如下:
使用跨越所有邻居节点
j
j
j ∈
N
i
N_i
Ni的softmax函数来归一化节点
i
i
i的关注系数。特别是,每个节点(即
i
i
i∈
N
i
N_i
Ni)都有一个自循环,允许它自己更新。这个过程可以表示为:
.
然后,该注意力头
z
i
z_i
zi的输出被计算为线性变换输入元素的加权和:
在上面的等式中,
W
Q
W^Q
WQ,
W
K
W^K
WK和
W
V
W^V
WV∈
R
R
R
d
^d
d
h
^h
h
×
^×
×
d
^d
d
z
^z
z是参数矩阵,
d
z
d_z
dz是一个注意力头的输出大小,
d
z
d_z
dz
×
×
×
m
m
m =
d
h
d_h
dh。最后,得到多头注意力结果
z
z
z
’
^’
’
i
_i
i∈
R
R
R
d
^d
d
h
^h
h,它连接了
m
m
m个单独注意力头的输出:
3.3.2 Self-Attention Layer
Self-Attention 相当于图注意网络的全连通版本。为了在具有相同粒度的节点之间进行交互,利用三个Self-Attention 层,即token级Self-Attention 、sentence级Self-Attention 和passage级Self-Attention 。由于这四种类型的节点本质上是异构的,可以将Self-Attention 层与graph integration层分开,以区分来自相同粒度或不同粒度节点的信息。
3.3.3 Graph Integration Layer
在图4所示的图上使用GAT,这一层允许信息以不同的粒度传递给节点。首先并不是在graph encode之后只集成一次信息,而是将该层放在graph encoder内部的每个Self-Attention 层之后,这意味着Self-Attention 层带来的更新也将被具有其他粒度级别的节点利用。这一层有助于对两种答案的依赖性进行建模。然后将graph integration层的输入和输出连接,并将其传递给前馈层。
3.3.4 Feed-Forward Layer
在graph encoder的末端使用了一个额外的全连接前馈网络。它由两个线性转换组成,中间有一个GELU激活。
3.3.5 Relational Embedding
受Transformer启发,在构建的图上引入了一种新的关系嵌入,旨在对多粒度文档结构上节点之间的相对位置信息进行建模。作者在文档建模图中制作边来嵌入相对位置信息。通过修改
e
e
e
i
_i
i
j
_j
j和
z
i
z_i
zi引入关系嵌入,如下所示:
在上述等式中,节点
i
i
i和节点
j
j
j之间的边由可学习嵌入
a
a
a
K
^K
K
i
_i
i
j
_j
j,
a
a
a
V
^V
V
i
_i
i
j
_j
j∈
R
R
R
d
^d
d
z
^z
z表示。该表示可以在注意力头之间共享。与以前在嵌入层编码位置信息的工作相比,本文的关系嵌入更加灵活,并且位置信息可以在每个图形层中考虑。例如,相同类型的两个节点之间的关系嵌入表示它们在自我关注层中的相对距离。在图集成层中,句子与其段落之间的关系嵌入表示句子在段落中的相对位置,其他类型的边也是如此。
3.3.6 Graph Initialization
由于BERT模型只能提供token级表示,所以使用自下而上的平均池策略来初始化token级节点以外的节点。用
o
i
o_i
oi∈{ 0,1,2,3}来表示节点
i
i
i的类型,分别表示token节点、sentence节点、passage节点和document节点。初始化的表示计算如下:
其中,
a
a
a
i
_i
i
j
_j
j、
b
b
b
o
_o
o
i
_i
i∈
R
R
R
d
^d
d
h
^h
h表示图初始化器中的关系嵌入和节点类型嵌入。
3.4 Output Layer
目标函数被定义为预测分布的对数概率的负和,在所有训练实例上取平均值。预测分布的对数概率由真正的开始和结束索引、真正的长答案候选索引和此实例的类型来索引:
其中
p
p
p
s
_s
s(
s
s
s |
c
c
c,
S
S
S)、
p
p
p
e
_e
e(
e
e
e |
c
c
c,
S
S
S)、
p
p
p
l
_l
l(
l
l
l |
c
c
c,
S
S
S)和
p
t
p_t
pt(
t
t
t |
c
c
c,
S
S
S)分别是短答案的开始和结束位置的概率、长答案候选的概率和该实例的答案类型的概率。其中一个概率
p
p
p
s
_s
s(
s
s
s |
c
c
c,
S
S
S)的计算方法如下,其他的与它相似:
其中
f
s
f_s
fs是一个评分函数,从graph encoder的最后一层导出。类似地,在其他三个粒度级别上导出分数函数。对于没有简短答案的情况,将目标开始和结束索引设置为“[
C
C
C
L
L
L
S
S
S]”token。此外还将“[
C
C
C
L
L
L
S
S
S]”标记作为第一句和第一段,对于没有长答案的情况,段落级“[
C
C
C
L
L
L
S
S
S]”将被分类为长答案。在推理时,得到一个文档片段的评分
g
g
g(
c
c
c,
S
S
S),长答案评分
g
g
g(
c
c
c,
S
S
S,
l
l
l),短答案评分
g
g
g(
c
c
c,
S
S
S,
s
s
s,
e
e
e):
我们用
g
g
g(
c
c
c,
S
S
S,
l
l
l)和
g
g
g(
c
c
c,
S
S
S)的和来选择得分最高的长答案候选。
g
g
g(
c
c
c,
S
S
S)被认为是文档片段的一个偏置项。然后用
g
g
g(
c
c
c,
S
S
S,
s
s
s,
e
e
e)在选定的长答案跨度内选择最终的短答案。最终依靠官方的NQ评估脚本来设置阈值,以将长答案和短答案的预测分为肯定和否定。
4 Experiments
4.1 Data Preprocessing Details
忽略不属于任何长答案候选的token。在此过程之后,文档的平均长度约为4500个token。首先使用30522个单词tokenize问题和文档。然后在整个文档上滑动一定长度的窗口,步长为128个token,生成一个文档片段列表。每个文档片段大约有7个passages和18个sentences。我们根据候选的内容在每个长答案候选的开头添加特殊的标记令牌。特殊token的形式是“[Paragraph=N]”、“[Table=N]”和“[List=N]”。这一决定是基于这样的观察,即文档中的前几段和表格更有可能包含答案。最后为每个NQ示例平均生成30个实例,每个实例将在训练阶段独立处理。
4.2 Experimental Setting
三种模型设置
1)Model 1:改进的BERT基线;
2)Model 2 :一个管道模型,只有图形初始化方法来获得句子、段落和文档的表示;
3)Model 3 :在模型二的基础上增加两层的graph encoder。
batch为32的Adam最小化损失
L
L
L来训练模型。
2个epoch的训练,初始学习率为2e-5,预热比例为0.1。模型的训练在特斯拉P40 GPUs上进行,持续大约2天。
Bert选择:
(1) bert -base-uncase
(2)BERT-large
(3)BERT-syn在SQuAD上预训练
结果
不同bert的影响
不同图层数的影响
组件消融
case study
右边正确