通过生成性证据融合和往返预测回答模糊问题
关键词: 生成性证据融合; 往返预测; 模糊问题
摘要
一般的开放域QA问题: 在开放域问答中,问题很可能是模棱两可的,因为用户在制定问题时可能不知道相关主题的范围。因此,系统需要找到问题的可能解释,并预测一个或多个可能的答案。当发现多个看似合理的答案时,系统应为每个答案重写问题以解决歧义。所以分为两步: 第一是找答案; 第二是预测答案; 第三是多个答案时,需要重新检查问题;
我们的方法:第一和二是找答案和预测答案: 模型聚集和组合来自多个段落的证据,以自适应地预测模糊问题的单个答案或一组问题-答案对;我们提出了一种新的往返预测方法,以迭代方式生成我们的模型在第一次传递中未能找到的其他解释,第三是:然后验证并过滤出不正确的问答对,以获得最终的消歧输出;
模型:REFUEL
数据集:AMBIGQA (NQ-OPEN and TriviaQA. )
提出的往返预测是一种模型不可知的通用方法,用于回答不明确的开放域问题,它改进了我们一些基线模型。
Introduction
开放域问题是使用不同主题的段落集合回答问题的任务;
难点: 开放域问题的起源是问题的歧义性
![](https://i-blog.csdnimg.cn/blog_migrate/174646ca52daaa956ed928c5f5a447f3.png)
而这个难点问题的答案就是自适应预测答案,当有多个答案时,预测一组同样合理的答案。 当预测一组多个答案时,应该提供一个明确的问题重写来澄清每个解释。
SpanSeqGen模型将该问题分为两个任务:答案预测和问题消歧;
答案预测:他们使用提示问句首先检索和重新排序段落,然后采用BART预训练的Seq2seq来生成所有可能的答案,条件是提示问题和前8个段落的连接。
问题消歧: 基于BART,他们首先在大规模开放领域QA数据集NQ-OPEN上预训练一个问题生成模型,生成给出答案和前8段的问题。然后他们将其作为一个问题消歧模型进行微调,以生成基于提示问题、答案和段落的消歧问题
但是上面的模型有三个缺点: 第一是只选择8个相关段落可能排除了信息量大的段落; 第二是NQ-OPEN上的问题生成前训练与AMBIGQA上的问题消歧微调不匹配;第三是与地面真实数据相比,SPANSEQGEN预测的平均答案数量要小得多
针对上面的问题,第一,REFUEL使用fusion-decoder在编码器中单独处理每个段落,在解码器中融合它们的编码,比SpanSeqGen多了12倍的段落(我们的为100); 第二,我们提出了一个删除标记的训练前任务,通过随机删除每个问题的信息范围,将NQ-OPEN转换为一个**“模糊的”QA设置**。因此,训练前的任务和微调任务是一致的,同时加入了基于插入的加权损失来强调新插入的标记; 第三,提出双向预测方法,以发现REFUEL在第一遍中未能预测到的其他解释。我们不断地将生成的问题输入REFUEL,直到我们的模型没有预测到新的答案。
贡献:
对于显著推动在回答模糊的问题的现状,可以总结如下:
- 我们提出了一个证据聚集的方法,可以有效地使用大量的文章,以揭示更多的候选解释的歧义问题。
- 我们提出了一个标记删除的前训练任务,以减少前训练与问题消除的微调之间的不匹配。基于插入的加权损失进一步有助于捕获与答案相关的约束。
- 我们提出了一种双向预测方法,以发现在第一次预测中错过的更多解释,并使用基于条件概率的滤波方法进一步细化。
REFUEL
该方法分为三个步骤:
- 段落检索和重排序模块
- 将重排序的通道和提示问题作为输入,单通道QA对儿生成模型进行第一次预测,就是预测一个答案或一组消除歧义的QA对。
- 双向预测基于条件概率的过滤方法细化了第一预测过程
![](https://i-blog.csdnimg.cn/blog_migrate/a88299efa5c0389dc1d42c59155f81ff.png)
2.1文章检索与重新排序
使用DPR密集通道检索器进行检索。 首先,将所有的维基百科页面分成100个标记(应该是一种标准)的段落,产生了24M个段落;然后DPR将所有的段落映射成d维的向量,计算提示问题的表示,并检索出与问题向量最接近的N个通道(我们使用N=1000)。
输入提示问题和N个段落的连接,我们将Bert作为我们的重新排序器,允许提示问题和段落之间的Cross-attention,通过CLS和一个线性层获得相关分数。重排序后,QA对儿生成模型将K个通道(K = 100)作为输入。
2.2单通道QA对生成
单道QA对生成模型的步骤包括回答预测模块和问题消歧模块。
首先,将重排序的段落和提示问题
Q
p
Q^p
Qp一块输入,回答预测模块生成一个或者多个模棱两可答案
A
1
,
.
.
.
,
A
m
A_1, ..., A_m
A1,...,Am。 如果找到了多个貌似合理的答案,提示问题就被视为歧义问题; 这样问题消歧模块会为该歧义问题的每个预测答案
A
i
A_i
Ai生成消歧问题
Q
i
d
Q_i^d
Qid。
2.3 Round-Trip Prediction
现有的工作预测的答案比实际情况少47%,因此,我们提出了双向预测,其中包括双向生成步骤和语言模型验证步骤。
Round-Trip Generation:保持检索到的相同段落,我们不断地将生成的消除歧义的问题输入Answer Prediction模块,以检查是否生成了任何新的答案,并生成相应的消除歧义的问题,直到没有新的预测答案。就像在图2中,
(
Q
1
d
,
A
1
)
(Q_1^d, A_1)
(Q1d,A1)和
(
Q
2
d
,
A
2
)
(Q_2^d, A_2)
(Q2d,A2)是经过第一个预测通道后,两对经过模棱两可的问题
Q
p
Q^p
Qp后的消除歧义的QA。当再次将
Q
d
1
Q_d^1
Qd1输入到答案预测模块时(第一轮双向预测),我们发现除了之前预测的答案
A
1
A_1
A1之外,还预测了一个新的答案候选人
A
3
A_3
A3。然后我们生成相应的问题
Q
d
3
Q_d^3
Qd3。 这个循环一直持续到没有新的预测答案
语言模型验证: 通过往返生成(Round-Trip Generation),我们从模糊的提示问题中生成一组QA对,但其中一些是不正确的。这里我们采用一个验证过程来过滤掉这些不正确的预测。
如何消除? 最近的工作合成QA对生成使用了EM(Exact Match (EM)验证)方法来删除QA对。 EM模型是:训练一个QA模型作为验证模型,当预测模型的答案是
(
a
′
≠
a
)
(a' ≠ a)
(a′=a),我们会删除预测(q, a)。然而,这种EM验证方法只适用于事实类阅读理解任务如SQuAD,在这个任务里QA模型具有接近人类的准确性,从而不会错误地过滤掉太多正确的QA对。
不是使用硬过滤,而是采用“语言验证模块LM”。LM验证是一种基于条件概率的软过滤QA对的方法。在LM验证中,我们首先利用AMBIGQA(二义性QA数据集)中的消歧QA对训练条件语言模型。条件语言模型被训练来估计gold消除歧义问题的答案的可能性。一旦训练完成,它就被用来给REFUEL生成的QA对(q, a)打分,这是给定问题q和段落的答案的可能性,
![](https://i-blog.csdnimg.cn/blog_migrate/00907c05e7097e7823106b59fdc1525d.png)
其中 N a N_a Na是生成的答案的长度,最后,我们根据LM评分对所有预测的QA对重新排序,并根据阈值Th = 6.1丢弃QA对。阈值是根据开发集调整的。
3单通道QA对生成细节
这一部分是对上一部分中第二部分的详细解释!
3.1 Answer Prediction(查看问题和答案的匹配度)
上面的左侧图片!
SPANSEQGEN :提示问题和排名最高的段落串联成单个序列进行BART编码,这受到BART最大输入序列长度(1024子词,相当于8个段落)的极大限制。因此,与GroundTruth相比,SPANSEQGEN发现对提示问题的解释更少
Fusion-in-Decoder: 为了确保检索和重新排序的段落的广泛覆盖,我们的答案预测模块使用fusion - decoder方法(Izacard和Grave, 2020),这允许我们缩放处理段落的数量。
具体实现过程: 将提出的问题和它对应的每个段落concat后分别独立地放入
B
A
R
T
A
P
BART_{AP}
BARTAP中,然后,所有经过encoder的token-level的表示被连接到一个单一序列中,
B
A
R
T
A
P
BART_{AP}
BARTAPdecoder对所有通道进行关注,以聚合和合并证据。最后,
B
A
R
T
A
P
BART_{AP}
BARTAPdecoder生成一个接一个的a sequence of plausible answers,由[SEP]分隔。 因为这里没有使用交叉通道的注意力,所以才可以大大的减少复杂度,才可以比SPANSEQGEN多出12倍的输入通道(多大100个,16000个词)。
考虑到AMBIGQA是一个只有10k训练样本的小数据集,我们首先对
B
A
R
T
A
P
BART_{AP}
BARTAP在 NQ-OPEN进行预训练,以预测一个答案,然后在AMBIGQA上对它进行微调,以预测一个或多个答案。
3.2 Question Disambiguation
如果前一个模块产出了多个可信的答案,那么就会激活消歧模块。 这里通过对每个预测答案生成提示问题,从而达到消歧重写的目的。由于我们不知道哪个输入段落是得出预测答案的关键证据,问题消歧模块将答案预测阶段的相同段落作为输入。与答案预测模块 B A R T A P BART_{AP} BARTAP类似,我们的问题消歧模块 B A R T Q D BART_{QD} BARTQD以同样的方式处理输入,但是不同的是 B A R T Q D BART_{QD} BARTQDencoder额外的将 B A R T A P BART_{AP} BARTAP的输出 A i A_i Ai同样作为输入(见上图即可得知了)。
Token-Deletion Pre-training(删除标记的预训练): 与Answer Prediction类似,我们也利用大规模的NQ-OPEN数据进行预训练,生成一个可以在给定段落和答案后给出会给出问题的模型,然后对其进行微调,以便在给定提示问题、答案和段落的AMBIGQA上消除问题。然而, the question generation pre-training task中没有所需要的输入问题来消除歧义,导致了前训练和微调之间的不匹配。消融术研究表明,这种预训练方法对问题消歧几乎没有帮助。
为了解决前训练和微调之间的不匹配, 我们提出了TokenDeletion前训练任务。其思想是在训练前构造新的合成的模棱两可的问题,以减少不匹配。
方法:第一步:给定一个来自NQOPEN的问题
Q
Q
Q,我们随机删除其中的一个信息跨度,产生部分问题
Q
s
Q^s
Qs。这个局部问题的设计是为了模拟微调阶段的模糊问题
Q
p
Q^p
Qp。然后,第二步:Token-Deletion Pre-training(删除标记的预训练)目标是从部分问题
Q
s
Q^s
Qs、答案和段落中恢复完整的问题
Q
Q
Q。通过这种方式,tokendeletion预训练将微调阶段对准。
提示问题通常需要通过添加新的约束来重写,包括事件/实体引用、属性、回答类型等。例如,图1中消除歧义的问题q1在歧义提示问题之后插入“由一个组合的团队”。因此,我们将信息性span定义为至少包含以下词性标签之一的span: ’ ADJ ', ’ NOUN ', ’ NUM ', ’ PROPN ', ’ SYM ', ’ VERB '。跨度长度在[1,5]中均匀采样。
Insertion-based加权损失(基于插入的加权损失):
由于消除了歧义的问题是对歧义提示问题的一个小修改,大多数标记都可以直接从输入中复制。这里我们引入了一种基于插入的加权损失方法,将重点放在消歧问题的新添加标记上,这可能是消歧提示问题的关键。给定提示问题
Q
p
Q^p
Qp,我们从消歧问题
Q
d
:
q
i
n
Q^d: {q^{in}}
Qd:qin中找到新插入的令牌。对
B
A
R
T
Q
D
BART_{QD}
BARTQD进行微调的最后损失是,所有问题标记的原始负对数可能性损失的组合,加上一个增加插入标记可能性权重的术语:
![](https://i-blog.csdnimg.cn/blog_migrate/f602b7e105cd133046c88d3315219b7b.png)
其中 L n l l = ∑ i = 1 n log ( q i ∣ A , Q p , Psg ) \mathcal{L}_{n l l}=\sum_{i=1}^{n} \log \left(q_{i} \mid A, Q^{p}, \text { Psg }\right) Lnll=∑i=1nlog(qi∣A,Qp, Psg ),n是被消除了歧义的问题的tokens的数目, λ = 3.5 \lambda{ = 3.5} λ=3.5是一个超参数调整开发集(dev.set.)
4. Experiments
4.1 Experimental Setup
Dataset: AMBIGQA数据集: 为了解决开放领域QA中问题的歧义性而构建的,它从NQ-OPEN中取样了14,042个问题,这是一个大规模的开放领域的QA数据集,每个问题只有一个答案, 并要求注释者搜索、导航和阅读多个维基百科页面,以找到尽可能多的解释,结果,每个问题都被注释为一个答案或多个消除歧义的QA对,这取决于可以找到多少种解释。Train、development和test集的大小是10036, 2002, 2004。在AMBIGQA中,每个问题平均有2.1个不同的答案。为了测试REFUEL在任何可能模棱两可的问题上的泛化能力,我们还在两个开放域QA数据集上评估了它:NQ-OPEN和TriviaQA.
Implementation Details在附录a中。我们在https: //github.com/amzn/refuel-open-domain-qa上发布我们的模型和实验的源代码
评价指标: 让 ( q 1 , a 1 ) , . . . , ( q m , a m ) (q_1, a_1),...,(q_m, a_m) (q1,a1),...,(qm,am)表示m对QA预测。 ( q ^ 1 , a ^ 1 ) , … , ( q ^ n , a ^ n ) \left(\hat{q}_{1}, \hat{a}_{1}\right), \ldots,\left(\hat{q}_{n}, \hat{a}_{n}\right) (q^1,a^1),…,(q^n,a^n)是n个gold QA对。每个预测的QA对 ( q i , a i ) (q_i, a_i) (qi,ai)的评估顺序是对所有黄金QA对的正确性评分: c i = 1 ( a i = a ^ j ) f ( q i , q ^ j ) c_{i}=\mathbb{1}\left(a_{i}=\hat{a}_{j}\right) f\left(q_{i}, \hat{q}_{j}\right) ci=1(ai=a^j)f(qi,q^j),其中 f ( q i , q ^ j ) f(q_i, \hat{q}_j) f(qi,q^j)是问题的相似函数。 ( q ^ j , a ^ i ) (\hat{q}_{j}, \hat{a}_{i}) (q^j,a^i)并不会用来评估其它的预测QA对,因为它用于 ( q i , a i ) (q_i, a_i) (qi,ai),总体正确性由预测与参考之间的F1计算
![](https://i-blog.csdnimg.cn/blog_migrate/75397718b59d72e851ad4179c1de1a22.png)
F
1
a
n
s
(
a
l
l
)
F1_{ans}(all)
F1ans(all): 在Answer prediction子任务中,所有的例子都会被评估,在这其中,
f
f
f函数总是产出1。 这个度量表示为
F
1
a
n
s
(
a
l
l
)
F1_{ans}(all)
F1ans(all)。
F
1
a
n
s
(
m
u
l
t
i
)
F1_{ans}(multi)
F1ans(multi): 而对于具有多个黄金QA对的例子子集,分别在答案预测子任务和问题消歧子任务进行了评价。仅在这个子集上计算的答案预测指标记为
F
1
a
n
s
(
m
u
l
t
i
)
F1_{ans}(multi)
F1ans(multi)。
BLEU和EDIT-F1: 为了评估问题消除歧义的表现,BLEU和EDIT-F1用于函数
f
f
f,被标注为
F
1
B
L
E
U
F1_{BLEU}
F1BLEU和
F
1
E
D
I
T
−
F
1
F1_{EDIT-F1}
F1EDIT−F1。 EDIT-F1计算从提示问题到预测消除歧义问题的添加和删除unigrams的F1分数。
4.2 Experimental Results
Main Results.表1显示了开发和隐藏测试集上的性能。即使没有双向预测,REFUEL(无RTP)在答案预测子任务和问题消歧子任务上都比SPANSEQGEN表现得更好。此外,通过发现更多更好的QA对,往返预测确实进一步提高了性能,开发集中每个提示问题的QA对从1.55对提高到了1.72对。第4.3节对往返预测进行了全面的分析。
![](https://i-blog.csdnimg.cn/blog_migrate/94c1862a30e4663a5264a3efaf4e0ef8.png)
“REFUEL w/o RTP”是不使用往返预测的单通道预测模型。
Controlled Comparison with SPANSEQGEN
除了双向预测外,REFUEL在输入通道方面比SPANSEQGEN有两个优势:(1)我们检索前N=1000个通道(而不是SPANSEQGEN的100个通道),在前100个通道中获得更高的答案召回率(2)REFUEL需要K=100个输入通道,而SPANSEQGEN最多需要1024个子单词(K≈8)。为了建立受控和公平的比较,我们删除了REFUEL的往返预测部分,并使用与SPANSEQGEN (N=100, K=8)相同的输入通道给REFUEL (w/o RTP)喂食。结果如表2所示。
![](https://i-blog.csdnimg.cn/blog_migrate/952607f2bc1d880f1d191d13facf6997.png)
其中N和K分别表示的是Development集中的检索/重排序的数量和QA输入的段落数。
#QAs: 每个提示问题的预测QA对的平均数量;
- :我们复制的结果
结果表明: (1)在相同的设置下,我们的结果还是要好于SPANSEQGEN (2)我们的模型的效果还是得益于检索阶段的answer recall以及允许更多的输入通道。
对其他数据集的泛化: 在NQ-Open和TriviaQA上评估了我们的模型,并且没有在这些数据集进行微调。当REFUEL预测多个答案时,我们取第一个预测答案进行EM评估;我们还引入了一种新的Oracle EM度量,如果黄金答案与当前问题的任何预测答案相匹配,则认为预测是正确的;下表显示,即使没有特定于数据集的微调,REFUEL也具有竞争性的性能。当REFUEL在NQ-OPEN和TriviaQA中发现问题的多种解释时,我们在4.4节中手动检查消除了歧异的QA对的质量。
![](https://i-blog.csdnimg.cn/blog_migrate/73b3bbe7883532d8599657b36a68d06a.png)
4.3往返预测的效果
我们将我们提出的往返预测(往返预测=往返生成+ LM 验证)与几种替代方法进行了比较,并研究了其对SPANSEQGEN和DPR Reader等其他模型的泛化能力。结果下表所示。
Round-Trip Generation Only:我们通过只对REFUEL进行往返生成来研究核查过程的必要性。结果表明,Round-Trip Generation可以多生成33.5%的QA对,但较低的
F
1
a
n
s
(
A
L
L
)
F1_{ans}(ALL)
F1ans(ALL)表明,当提示问题不存在歧义时,该策略可能会产生过多的QA对。因此,验证过程对于删除一些不正确的QA 是必要的。
![](https://i-blog.csdnimg.cn/blog_migrate/d600c0ddfab7abfc97189c63f2d82e0d.png)
LM Verification vs. EM Verification:如2.3节所述,我们比较了现有的EM Verification方法与我们的LM Verification。结果表明,EM Verification删除了太多的QA对——剩余的QA对的数量(1.43)甚至比不做往返预测(1.55)还要少。他证实了我们在2.3节中的直觉,即EM Verification并不适合于开放领域的QA任务,因为它在开放域问题上表现性能差。
对其他模型的归纳: 我们表明,通过在我们复制的基线模型DPR Reader和SPANSEQGEN上使用往返预测,往返预测是一种与模型无关的通用方法,用于回答可能模棱两可的开放域名问题。在双向预测的帮助下,DPR Reader和SPANSEQGEN生成了11.7%和12.3%的QA对,这导致整体性能提高了3.7%和2.1% (Comb)。
4.4 Human Evaluation
由于在AMBIGQA中收集的答案不一定是详尽的,所以有可能模型生成了正确的解释,但在AMBIGQA中却遗漏了。因此,我们雇了3个工人来评估生成消除歧义的问题和检索段落的答案的正确性。 令 ( q 1 , a 1 ) , … , ( q n , a n ) (q_1, a_1),…,(q_n, a_n) (q1,a1),…,(qn,an)对于同一提示问题生成的n个QA对,我们定义了两级正确性如下: #C-QAs: (q_i, a_i)被认为是正确的,如果 a i a_i ai是 q i q_i qi的正确答案; #CD-QAs:(q_i, a_i)被认为是正确的;(1) a i a_i ai是 q i q_i qi的正确答案并且(2)任何 a j ( j ≠ i ) a_j(j≠i) aj(j=i)是一个 q i q_i qi的错误答案 #CD-QA是用来检查消歧问题的正确性的,因为模棱两可的问题可能有多个有效答案。我们从每个QA对的3个注释者那里获得大多数判断。对于每个数据集,我们随机抽取50个具有多个预测答案的提示问题,并在**#CD -QA中应用QA交换策略,共产生960个问题-回答-段落三元组。表5的结果显示REFUEL(不带RTP)在#CD -QA**上比SPANSEQGEN正确生成的QA对多113%。此外,双向预测(RTP)可以在所有数据集中找到更正确的解释。
![](https://i-blog.csdnimg.cn/blog_migrate/1514952497a8cec51e416ce5acee2d16.png)