文本问答(TBQA)近年来得到了广泛的研究。大多数现有的方法主要是在一个段落内找到问题的答案。然而许多困难的问题需要在两个或多个文档之中寻找答案。本文提出了动态融合图形网络(DFGN)这种新的回答方法,为需要多个分散证据来进行推理的文本问答提供了新的思路。在人类的逐步推理行为的启发下,DFGN包含了一个动态融合层,该层从给定查询中提到的实体开始,沿着文本动态构建的实体图进行探索,并从给定的文档中逐步找到相关的支持实体。
论文地址:
https://arxiv.org/abs/1905.06933
引言
问答是自然语言处理的重要组成部分,它提供了一种可量化的方法来评估NLP系统的语言理解和推理能力。传统的问答研究大多数都集中在从一个段落中寻找证据和答案,很少测试底层模型的深层推理能力。有研究提出,现有问答基准中的大多数问题都可以避过推理,通过检索一组句子来回答。
本文研究了基于多跳机制的文本问答,所谓多跳机制为在多个原始文本中进行多跳推理。在不依靠任何与训练知识库的前提下,使用不同文档中的多个证据来进行答案的推理。即模型需要可以概括和回答开放域中的问题。此模型的两大难点为:1)多跳机制需要高效地从多文档种抽取有效信息。现有研究大多使用静态的图神经网络(GNN)来聚合QA对实体图中的信息。2)现有研究中,通常将所有文档信息聚合到一个QA对实体图种,然后直接在实体图上选择实体作为答案。这种方法很难应用于开放域的任务中。
本文针对多跳文本问答提出了动态融合图形网络的方法,并且提出了通过DFGN来预测部分被遮盖实体图来解释和评估推理链的方法。
方法
人类对于问答的推理过程是:首先从查询中的某个感兴趣的实体开始,接下来关注实体周围的词语、邻近的与此实体有关系的实体或者被相同表面引用连接的实体,之后不断地重复这个步骤形成一个推理链,最后定位到可能是答案的某个实体或者片段上。
通过模仿人类的推理行为,此文章针对于问答系统构建了5个组件:用于段落选择的子网络,实体图结构单元,编码层,多跳推理的融合模块和最终的推理层。
段落选择
对于每一个问题,有 N p N_p Np的段落用于推断答案。因为不是每段中的信息都与问题相关,作者训练了一个子网络用于选择段落。此子网络使用预训练的BERT模型,后接基于sigmoid预测的句子分类器进行训练。使用查询语句 Q Q Q和段落进行二分类。
构建图网络
文章使用斯坦福CoreNLP工具包,对内容 C C C进行POL(Person, Organization和Location)实体抽取,抽取出的实体数目为 N N N。首先对 C C C中所有句子出现的每一对实体对进行连接,作为句子层的连接;对具有相同文本的实体对进行连接,作为内容层的连接;对相同段落的中心实体点和其他实体点进行连接,作为段落层的连接,其中中心实体点为从段落题目中抽取出的实体点。
编码查询和内容
将查询
Q
Q
Q和内容
C
C
C进行级联,之后通过预训练BERT模型得到表示:
Q
=
[
q
1
,
.
.
.
,
q
L
]
∈
R
L
×
d
1
Q=[q_1,...,q_L]\in \mathbb{R}^{L\times d_1}
Q=[q1,...,qL]∈RL×d1,
C
T
=
[
c
1
,
.
.
.
,
c
M
]
∈
R
M
×
d
1
C^{T}=[c_1,...,c_M]\in \mathbb{R}^{M\times d_1}
CT=[c1,...,cM]∈RM×d1
其中
L
,
M
L,M
L,M为
Q
,
C
Q,C
Q,C的长度,
d
1
d_1
d1为BERT的隐状态层数。
之后将两个表示通过一个双注意层来增强两者之间的交互,然后将输出与输入相加得到最终表示
Q
0
∈
R
L
×
d
2
Q_0 \in \mathbb{R}^{L \times d_2}
Q0∈RL×d2,
C
0
∈
R
M
×
d
2
C_0\in \mathbb{R}^{M\times d_2}
C0∈RM×d2,其中
d
2
d_2
d2为输出嵌入的维度。
使用融合模块进行推理
整个模块分为四步:文档到图,动态图注意力机制,更新查询,图到文档。
文档到图
文章构建了一个二元矩阵 M M M,如果内容中第 i i i个token属于第 j j j个实体范围,则 M i , j M_{i,j} Mi,j等于1。使用之前的到的token嵌入通过平均池化层和最大池化层得到实体嵌入 E t − 1 = [ e t − 1 , 1 , . . . , e t − 1 , N ] E_{t-1}=[e_{t-1,1},...,e_{t-1,N}] Et−1=[et−1,1,...,et−1,N]。其中 E t − 1 E_{t-1} Et−1的维度为 2 d 2 × N 2d_2\times N 2d2×N, N N N为实体数目, 2 d 2 2d_2 2d2可以表示平均池化和最大池化的结果。
动态图注意力机制
文章假设每一个实体点都会传播信息到附近的实体点,所以与查询越接近的实体点,其附近的实体点收到的信息越多。首先将内容部分实体点进行遮蔽(mask),之后在查询的嵌入和内容的嵌入上使用注意力网络,来预测遮蔽的实体点,最终得到与查询最有关的实体点。
其中
V
t
V_t
Vt为线性投影矩阵,
σ
\sigma
σ为sigmoid函数。
接下来使用动态子图传播信息:
其中
U
t
∈
d
2
×
2
d
2
,
W
t
∈
(
R
)
2
d
2
U_t \in \mathbb{d_2\times 2d_2}, W_t\in\mathbb(R)^{2d_2}
Ut∈d2×2d2,Wt∈(R)2d2为线性投影参数,
α
i
\alpha _i
αi代表第
i
i
i行信息传播的比例。
在动态图注意力机制中,信息流的表示为:
其中
B
i
B_i
Bi为实体点
i
i
i的邻接点,实体点嵌入的更新表示为
E
(
t
)
=
[
e
1
(
t
)
,
.
.
.
,
e
N
(
t
)
]
E^{(t)}=[e_1^{(t)},...,e_N^{(t)}]
E(t)=[e1(t),...,eN(t)]
更新查询
一个完整的推理链包含很多个步骤,每一步新访问的实体点都会变成下一步的起始实体点。文章参考双重注意力网络设计了查询嵌入的更新机制
图到文档
使用之前构建的二元矩阵
M
M
M,联合内容嵌入
C
t
−
1
C_{t-1}
Ct−1和相应的实体嵌入
E
t
−
1
E_{t-1}
Et−1得到token。同时使用LSTM进行下一步内容嵌入的预测:
预测
预测框架由四格输出维度构成,包括支持句,答案的开始位置,答案的结束位置和答案类型。使用堆栈结构的4层同构LSTM来进行预测:
最终损失函数为:
实验
文章在数据集HotpotQA上进行实验。在段落选择阶段,文章使用BERT的分词器对所有段落和问题进行分词,句对的编码向量由BERT预训练模型确定。在图构建阶段,文章使用斯坦福Core NLP工具包里的预训练NER模型进行实体抽取。在编码阶段,文章依然使用BERT预训练模型作为编码器。
以下为模型表现:
本文还定义了ESP(实体等级支持)的分数:路径(Path)为融合模块的实体序列访问顺序,
P
=
[
e
p
1
,
.
.
.
,
e
p
t
+
1
]
P=[e_{p_1},...,e_{p_{t+1}}]
P=[ep1,...,ept+1];路径分数(Path Score)为遮盖与路径上注意力分数的乘积,
s
c
o
r
e
(
P
)
=
∏
t
i
=
1
m
i
,
p
i
α
t
,
p
i
,
p
i
+
1
score(P)=\prod_{t}^{i=1}m_{i,p_i}\alpha_{t,p_i,p_{i+1}}
score(P)=∏ti=1mi,piαt,pi,pi+1;击中句(Hit)为如果句子中至少有一个实体在路径中,则称此句为击中句。对于
m
m
m个支持句,根据最高分选择前
k
k
k个路径预测为推理链。对于每个支持句,使用这
k
k
k个路径计算多少句为击中句,最终得到两种ESP得分为:
ESP EM:对于
m
m
m个支持句,如果
m
m
m句都为击中句,则称为完全契合(Exact Match)。
ESP Recall:对于
m
m
m个支持句,如果
h
h
h句为击中句,则此值为
h
/
m
h/m
h/m。
结论
本文针对多跳推理文本问答提出了一种新的动态融合图网络,在HotpotQA上取得了很好的效果,并定义了新的评测分数ESP EM和ESP Recall,为多文档的QA问题提供了新的思路。
扫码识别关注,获取更多论文解读