论文标题:

Unsupervised Question Decomposition for Question Answering

论文作者:

Ethan Perez (FAIR,NYU), Patrick Lewis (FAIR,UCL), Wen-tau Yih (FAIR), Kyunghyun Cho (FAIR,NYU), Douwe Kiela (FAIR)

论文链接:

https://arxiv.org/abs/2002.09758

代码链接:

https://github.com/facebookresearch/UnsupervisedDecomposition


问答(QA)任务常常包含了很多难以直接回答的复杂问题,而这些问题一般需要搜寻多段文本才能找出答案。

本文提出一种无监督的问题分解方法:把复杂问题分解成若干简单问题,然后把这些简单问题的答案作为上下文提供给复杂问题,从而帮助模型回答复杂问题。

使用这种策略,我们能够在多跳问答数据集HotPotQA上实现显著效果,尤其对于领域外的问题十分奏效。

问答中的复杂问题

针对问答系统的研究已经有了多年历史,在近些年,各类数据集的出现对问答系统的要求越来越高。

如数据集HotPotQA就要求系统能够在多段不连续的文本中寻找线索,并且按照逻辑顺序把这些线索组织起来形成答案。

这种需要多次答案“跳跃”的问答形式就称为“多跳问答”(Multi-Hop QA),或者简单地称为复杂问题。

模型直接回答这些问题往往不现实,但一个简单的想法是,可以把这个复杂问题分解成若干模型能够回答的简单的子问题,然后再把这些子问题及其答案作为上下文提供给模型,再去回答复杂问题,这样就可以大大降低直接回答复杂问题的难度。

比如下图是一个例子,要回答复杂问题,我们先从中拆分出两个简单问题(或“单跳问答”),回答之后再回答复杂问题本身,就容易得多。

那么,现在的问题是,怎么得到简单的子问题。本文采用了一种无监督的问题分解方式:(1)首先以抽取的方式构建一个“伪分解”数据集,(2)利用构建的“伪分解”数据集和原来的复杂问题数据集训练一个序列到序列模型,(3)使用序列到序列模型生成子问题。以上问题分解步骤完全是无监督的,因而避免了大量的人工标注。

最后,本文在HotPotQA上测试了该方法的效果,并取得了显著效果。总的来说,本文贡献如下:

  • 提出一种完全无监督的问题分解方法,可以有效地把复杂问题分解为若干简单的子问题;

  • 在HotPotQA的实验上表明,这种方法已经非常接近强监督的方法;

  • 本方法尤其能够在各种类型的复杂问题都取得很好的结果,表明此方法的通用性较强。

无监督问题分解

问答任务是,给定问题和若干段文本,模型要去找到答案,即最大化概率

而问题分解就是,找到和相关的个子问题,并得到它们的答案,模型现在要基于以上所有信息去最大化答案的概率

所谓问题分解,指的就是复杂问题到子问题集的一个映射:,其中是从简单问题数据集中得到的一个问题。我们首先需要构造这样的映射对,然后学习这个映射,最后应用它。

Step1: 伪分解构造

假设我们现在有两个数据集:复杂问题数据集(本文使用HotPotQA中的所有问题作为)和简单问题数据集(使用SQuAD2的所有问题作为初始的)。

为了进一步扩大这两个数据集的大小,我们从Common Crawl中挖掘更多的问题补充,最终得到约2.4M句复杂问题,10.1M句简单问题。

另一方面,因为我们没有标注好的对,所以我们想要先构造出这样的问题对,然后在此之上学习映射。这种构造我们称为“伪分解”构造。

具体来说,我们对每个复杂问题,从中选取个简单问题作为伪分解,这些选取的简单问题需要尽量满足两个标准:和相似,相互不同。这两个标注可以统一为下述公式:

下面给出两种抽取子问题的策略(本文设):

  • 相似度抽取:使用余弦值改写上述公式为(其中为单位句向量,用fastText得到)

  • 随机抽取:随机中中抽取个简单问题作为

在抽取了若干子问题后,由于其中包含了很多噪声,所以我们还把其中没在中出现的实体都随机替换为中同类型的一个实体(如果存在)。如此一来,我们就得到了很多伪分解对。

Step2: 问题分解映射学习

在上述得到伪分解对之后,我们就要去学习分解映射,我们有以下学习策略:

  • 不学习(No Learning),直接使用抽取得到的作为复杂问题的子问题;

  • 序列到序列(Seq2Seq),把所有的拼接起来作为目标文本,学习一个的序列到序列模型

  • 无监督序列到序列(USeq2Seq),不直接从中学习,而是用各种无监督学习手段去学习。

对Seq2Seq和USeq2Seq,我们首先在上用MLM的方法预训练一个XLM去初始化,然后用上述伪分解对训练。

对Seq2Seq,直接用对训练;对USeq2Seq,用去噪和反译的方法训练。对去噪,把中字符随机掩码、交换、丢弃,得到,然后训练。对反译,分别用生成一个和用生成,然后去优化

Step3: 如何使用

在学习了映射之后,我们就可以针对每个复杂问题,得到它的分解后的子问题,然后用一个简单的QA模型找到每个子问题的答案,再把这些问题和对应的答案拼接起来,和原来的复杂问题、给定的上下文一道,送入最后的QA模型,得到复杂问题的答案即可。

具体地,我们使用RoBERTa(Large)和BERT(Base)作为简单问答模型,并且也使用了模型集成。类似地,对回答复杂问题我们也用同样的模型。

实验

我们在数据集HotPotQA上实验,测评指标有F1和EM,其他实验设置详见原文。

下表是实验结果,第一列是分解学习方法,第二列是分解构造方法。可以看到,和基线模型比较,在原始版本(Orig)上得到3F1的提升,在多跳(MultiHop)和领域外(OOD)版本上,得到10F1的提升,并且还能实现强监督模型DecompRC的效果。

在测试集上,本方法能接近当前最佳的强监督(额外的监督信号,知道哪些句子能回答问题)模型SAE和HGN。在后面的实验中,我们使用Useq2seq+fastText的方法。

下面我们想要知道提供怎样的上下文信息可以使模型更好。我们有几种选择:(1)简单的答案段(span);(2)答案所在的一整句话(sentence);(3)随机实体。

下表是实验结果,可以看到,相比提供子问题,子答案的选择更为关键。其中,提供一整句话而非仅仅是答案本身可以大幅提高效果,这说明,充足的额外的上下文对模型至关重要。

接下来我们探究子问题和子答案对最终结果的影响。如下图所示,左图是使用beam search生成的子问题的置信度对最终结果的影响,右图是子答案置信度对最终结果的影响。可以看到,置信度越大的子问题或子答案能最大化提升最终的结果。

最后来看看具体分解的子问题及其得到的答案的例子,如下表所示。可以看到,尽管有些子问题语法不通,但这并不妨碍简单模型找到相关答案,并为复杂模型提供有效的信息。

小结

本文提出了一种无监督式的“问题分解-分解学习-分解应用”的将复杂问题分解为简单问题从而提供丰富上下文信息的问答范式,在HotPotQA上能够接近当前最佳的强监督模型,并通过一系列分析实验验证了此方法的有效性。

这种方法的本质是为模型提供更多的上下文信息,非常类似我们推出的一系列工作——将各种任务归纳到阅读理解框架下。

实际上这种想法也是很直观的:人类也无法只从一句话中推出很多信息,总是需要各种各样的背景信息作为支撑。从这个观点看,未来拓展模型能够处理的文本长度也许会是一种趋势。

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

从易到难,针对复杂问题的无监督式问题分解方法相关推荐

  1. 【阅读论文】基于统计特征的无监督时间序列异常检测方法

    文章目录 摘要 1.介绍 2.相关工作 3.问题描述 4.方法 4.1 统计特征 4.2提取特征总结 4.3 学习阶段算法 4.4测试阶段算法 5.结果 5.1 YOB评价:单变量 5.3对合成数据集 ...

  2. 一种新的无监督前景目标检测方法 A New Unsupervised Foreground Object Detection Method

    14.一种新的无监督前景目标检测方法 A New Unsupervised Foreground Object Detection Method 摘要:针对基于无监督特征提取的目标检测方法效率不高的问 ...

  3. 对抗样本无法被重建!CMU提出通用的无监督对抗攻击检测方法

    作者 | Ben Dickson 编译 | 琰琰 机器学习在应用程序中的广泛使用,引起了人们对潜在安全威胁的关注.对抗性攻击( adversarial attacks)是一种常见且难以察觉的威胁手段, ...

  4. 最强无监督行人重识别方法 Cluster Contrast ReID

    https://github.com/xiaomingzhid/sskd GitHub - JDAI-CV/fast-reid: SOTA Re-identification Methods and ...

  5. 最强无监督行人重识别方法 Cluster Contrast ReID,rank-1 94.6%

    代码连接: https://github.com/alibaba/cluster-contrast-reid 看了一下,主要是resnet50,resnet101训练的. 在行人重识别领域,如何获取海 ...

  6. ACL 2020 | 多跳问答的基于对齐的无监督迭代解释检索方法

    ©PaperWeekly 原创 · 作者|舒意恒 学校|南京大学硕士生 研究方向|知识图谱 论文标题:Unsupervised Alignment-based Iterative Evidence R ...

  7. A Two-stage Unsupervised Approach for Low light Image Enhancement(一种两阶段无监督的微光图像增强方法)

    主要参考文献及其收获 Unpaired image-to-image translation using cycle-consistent adversarial networks Deep reti ...

  8. 【Python-ML】无监督线性降维PCA方法

    # -*- coding: utf-8 -*- ''' Created on 2018年1月18日 @author: Jason.F @summary: 特征抽取-PCA方法,无监督.线性 ''' i ...

  9. 无监督式GAN(infoGAN) matlab实战

    一.infoGAN原理简介 普通的GAN存在无约束.不可控.噪声信号z很难解释等问题.InfoGAN 主要特点是对GAN进行了一些改动,成功地让网络学到了可解释的特征,网络训练完成之后,我们可以通过设 ...

最新文章

  1. mfc 应用程序 语言进行本地化
  2. 可视化应用实战案例:metacoder-相关进化树图的绘制
  3. element ui点击按钮弹出款_前端猿应该知道的十大最流行的前端UI框架
  4. 【直播回放】2小时全面剖析图像分类任务,学习CV必知
  5. access 合并多行字符串_八种方法玩转字符串合并,这篇文章全都给你讲明白!...
  6. java一键保存表格增删改,一个增删改功能的表格小demo
  7. celery 学习笔记定时任务和异步任务
  8. Focal Loss for Dense Object Detection解读
  9. 传统emmc所用的sdio接口_MMC/SD/SDIO介绍
  10. pip慢?半分钟解决方案
  11. Win7平台上通过QQ查询对方IP地址
  12. php语言的cmpp协议应用
  13. AM3352 bootloader引导程序开发
  14. java cnzz_cnzz 模拟请求登录(传入url get data ) demo
  15. SIM800C音频设计指南
  16. IDE、SCSI接口区别
  17. Android高级工程师面试必备之计算机网络基础,android体系架构
  18. 计算机网络--串行传输与并行传输
  19. 【车载开发系列】UDS诊断---DTC故障码基础回顾
  20. 深入C++对象模型(1) -- C++的三种模型

热门文章

  1. matlab朴素贝叶斯手写数字识别_TensorFlow手写数字识别(一)
  2. HTML 学习笔记3
  3. BZOJ2054: 疯狂的馒头(并查集)
  4. 【spark】SparkSession的API
  5. 听说”双11”是这么解决线上bug的
  6. 104.全排列(深搜)搜索与回溯
  7. Android开发(三十二)——延时
  8. 多个DIV排列时居中
  9. 推荐8个优秀的基于HTML5的信息图
  10. 3500字的txt文件_split文件拆分与合并,看完还不会,拿头拍我