点击上方,选择星标,每天给你送干货!


来自:AI部落联盟

春节玩耍结束啦,又开始学习啦!最近笔者学习了一下开放领域问答(open-domain question answering)最近几年的进展和研究。由于背景知识和相关研究较多,笔者将其作为一个系列进行总结和记录,也希望能帮助到相关领域/对相关领域感兴趣的同学。这是第一篇,欢迎关注后续!

开放领域问答背景知识

在学习“开放领域问答(open-domain question answering)”之前,我们先看一个搜索+问答的例子。2021年2月,我在谷歌里搜索问题:“美国现任总统是谁?”,谷歌不仅能给出相关维基百科页面的推荐,还直接给出问题的答案:“拜登”。笔者记忆里,10年前的搜索是无法给出答案的。那么,搜索引擎从以往的关键词匹配到今天的智能问答(虽然目前还只能回答一些简单的事实问题),开放领域问答方面的研究有不小的贡献。

图1 谷歌搜索:美国现任总统是谁?

什么是问答(Question Answering,QA;或者也可以叫机器问答/机器阅读理解/Machine Reading Comprehension)?什么又是开放领域问答(open-domain QA)呢?我们先简单介绍如下几个基本概念。

机器问答:让计算机系统自动回答人类提出的描述性问题(一般来说需要用文字描述出来)。

开放领域:可以询问任何问题(不对问题的领域,比如科研领域,体育,NBA或者足球领域等做限制,同时问问题时不提供相关文献),比如可以问:EMNLP2020接收了多少篇文章?也可以问:现任美国总统是谁?。

知识库:一般来说这些问题的答案可以在一个给定的知识库中找到:比如纯文本无结构化的维基百科,或者是结构化的知识库(比如ConceptNet),或者是半结构化的表格。当然如果问题在知识库中没有答案,我们也希望机器能告诉我们此问题无解。本文涉及的相关研究都先重点关注无结构化的文本知识库,结构化知识库的开放领域问答放在后面的文章中进行介绍。

结合上面3条概念,图1的例子涉及的流程可以这样简要概括成如下二个阶段(当然实际流程要复杂得多):

  1. 提问者先描述了问题:美国现任总统是谁?谷歌搜索系统根据问题从谷歌构建好的知识库中(包括了维基百科、以及各种网页)找到最相关部分知识(比如美国总统选举的维基百科网页和相关文字报道)。

  2. 从最相关的部分知识(美国总统选举维基百科网页)中找到了问题的具体答案:拜登。

图2 引用2017年danqi chen的DrQA论文中的二阶段系统的例子

由于二阶段系统十分直观且便于结合检索工具+机器阅读理解实现,最近几年的关于开放领域问答的许多研究也都属于以上这种二阶段系统,本文作为开放领域问答梳理的第一篇也将优先学习这个系统:基于信息检索(information Retrieval, IR)+机器阅读理解(Machine Reading Comprehension, MRC)(retriever-reader)的开放领域问答系统,如图2所示。

当然除了二阶段系统之外,还有单阶段的系统(比如Phrase Retrieval期望直接通过检索IR找出答案,T5、GPT3这种大规模预训练模型甚至可以期望直接通过MRC生成答案),还有多阶段的系统(比如把二阶段系统中的IR细分到文档检索+文档ranking,MRC细分为answer extraction和answer ranking,或者是迭代式(iterative)问答/多轮问答/multi-hop QA),这些系统的相关研究将在后续文章中逐渐覆盖。

所以本文涉及的研究都有这么2个特点:1、关注事实性的、无结构化文本的识库;2、都是两阶段IR+MRC的开放领域问答系统。

第一个两阶段系统:DrQA

Reading Wikipedia to Answer Open-Domain Questions,简称DrQA,是danqi chen在2017发表于ACL上的一篇经典文章,业内也经常称该论文是深度学习时代关于开放领域问答的第一篇文章。该文相关代码地址为:https://github.com/facebookresearch/DrQA。

除开研究方面的贡献,该文开源代码十分值得入门的同学学习!包括但不限于:自然语言处理任务的文本预处理、TFIDF的高效实现、训练LSTM神经网络用于阅读理解抽取答案、python多线程加速信息检索、文本中的词性标注等作为特征帮助文本理解任务。

图3 DrQA示意图

如图3所示,该DrQA根据给定的问题,使用TF-IDF算法(不可训练)对相关文档在知识库wikipedia中进行检索,随后训练一个基于LSTM(直接替换成BERT也是可以的)的阅读理解模型抽取答案。知识库widipedia可以直接换成其他文本知识库的。

如何训练

1、文档检索的TF-IDF无法训练。

2、阅读理解模型使用LSTM模型,基于(问题Q,文档P,答案A)三元组进行训练,三元组来源一个是SQuAD标注的训练数据,一个是distant supervision。所谓distant supervision的意思是:根据问题Q使用TF-IDF找到相关文档P,只要相关文档P包含答案A,无论这个相关文档是什么文档,都可以构建出一个新的训练三元组(Q,P,A)。

如何预测?

1、使用TF-IDF检索出最相关的5个文档;

2、用训练好的LSTM阅读理解模型挨个抽取答案,每个文档抽取的答案都有一个得分。

3、根据所有文档抽取的答案,选择答案得分start位置end位置综合得分最高的answer span。

论文除了说DrQA效果好之外,还提到:多任务学习有帮助。

多任务学习的帮助可以见笔者上两篇公众号内容。

distant supervision有帮助笔者的2点理解为:

1、distant supervision构建了更多的训练样本,可以看作数据增强;

2、distant supervision让模型在训练和预测阶段更一致。在预测阶段,根据问题抽取的文档并不一定都是标注的那个唯一文档,还可能有其他包含答案但并不是标注的唯一文档,因此预测的时候模型见到这些文档也能抽取答案;

那么咱们想一下这个最基本的DrQA有哪些地方可以改进呢?比如:

  1. 是否可以优化一下文档的粒度?

    不按照documet来检索,而是按照段落paragraph、句子sentence来检索呢?

  2. TF-IDF抽取的top 5个文档并不准,是可以再训练一个ranker模型根据问题quesiton,document来选更准的模型?

    有推荐系统背景的同学其实可以按照召回-粗排-精排这个思路来考虑?

  3. 阅读理解时是否可以一阅读多个文档,而不是每次都只看一个文档?

    每次抽取一个文档的答案,然后再比较不同文档里的答案得分是否合理呢?

  4. 文档检索、文档rank和文档阅读理解阶段相互独立,是否可以让这两个阶段互相帮助一下呢或者一起考虑呢?

  5. 更直观的改进比如:

    LSTM换成更牛逼的BERT模型是否可以?

    pipeline的系统可否改进为end-to-end呢?

  6. 如果一个passage包含多个answer,那么选哪一个作为监督信号呢?

DrQA基本系统改进1:  BERTserini

图4 BERTserini

如图4所示,论文:End-to-End Open-Domain Question Answering with BERTserini 使用Anserini检索和BERT进行阅读理解。相对于DrQA,BERTserini论文的主要点有:

  1. 对sentence、paragraph、sentence粒度的检索进行了比较,发现paragraph级别的效果最好。

    笔者的一点理解

    a. SQuAD是基于paragraph标注的,如果是article粒度,一个文档太长,所以有大量的无关paragraph,不太适合;如果是sentence的话,检索出来的句子联系太少,不利于阅读理解;

    b.由于BERT是512长度限制,平均一个wikipedia的paragraph的长度在100多个token,如果按照paragraph来分的话,一个BERT是可以放入多个检索的paragraph的,这里其实也是可以帮助提升效果。

  2. 将阅读理解reader的打分和Anserini检索的打分进行综合考虑来选择最佳的答案span。

3. MRC模型升级为更强的BERT可以帮助抽取答案的效果更好。

BERTserini开源的代码在:https://github.com/rsvp-ai/bertserini

DrQA基本系统改进2: 训练一个passage ranker

简单来说就是将TF-IDF检索回来的文档用一个深度学习模型进行重新排序。

图6 通过增加一个Document ranker来改进

论文:Training a Ranking Function for Open-Domain Question Answering十分简单:直接训练一个ranker模型,把TF-IDF检索回来的passage或者document排序一下,让更准确更相关的文档送入阅读理解模型,提升模型。

相关的另一篇论文passage re-ranker with BERT字面意思理解就是:改成BERT跑一下效果更好。

另外论文:Revealing the Importance of Semantic Retrieval for Machine Reading at Scale对句子sentence、段落paragraph级别的影响做了详细的分析。

DrQA基本系统改进3: multi-passage一起处理

这里的passage其实可以指一个段落paragraph也可以说是一个文本片段segment,总之就是一段连续的文字。multi-passage一起处理的意思就是将检索回来的多个文档统一处理。

multi-passage最直观的地方有:1、reading comprehension;2、passage ranking。

multi-psaage最直观的方式是:想一想softmax是怎么统一归一化的即可。

reading comprehension的时候考虑multi-passage:

比如论文Simple and Effective Multi-Paragraph Reading Comprehension

和论文Multi-passage BERT: A Globally Normalized BERT Model for Open-domain Question Answering:都是按照单个段落独立抽取answer span,但最终对所有答案的得分统一归一化后选择最好的答案(属于answer ranking阶段的统一处理),都是在MRC抽取答案的时候归一化之后比较得分再选最高分。

它带来的明显好处是:根据问题检索的passage增加虽然会增大answer出现的概率,但同时也会引入更多的噪声让reader效果下降,有了这个统一归一化之后,reader抽取答案时候受到噪声的影响更小,如图5所示。

图5 随着passage数量增加,multi-passage BERT保持了高的F1得分

ranking passage的时候multi-passage考虑:

图6 multi-passage进行ranking

论文Denoising Distantly Supervised Open-Domain Question Answering便是多个passage一起ranking的一个代表。其主要点是:

  1. 对TF-IDF检索回来的passage训练一个re-ranking模型(TF-IDF passage检索可以看作是对passage的第一步rank打分)可以帮助找到更准确的相关passage。

  2. 如果我们能多个passage一起re-ranking,则这个re-ranking模型抗噪声能力会更好。

  3. passage re-ranking模型可以通过distant supervision训练,也就是说一个question+一个包含了答案的passage可以当作一个正样本。

DrQA基本系统改进4: Reader-Ranker互相帮助

Reader-ranker互相帮助的核心点在于:如果ranking模型和reader模型并不孤立的话,那reader模型的信息如何被ranking模型利用,ranking模型的信息如何被reader模型利用?

图7 reader-ranker互相帮助

如图7所示,论文R3: Reinforced Ranker-Reader for Open-Domain Question Answering基于强化学习让re-ranker-reader模型进行了交互。该文的主要点是:

  1. Ranker模型和Reader模型基于强化学习一起训练,具体可以如图8所示,简单描述为:Retriever根据question抽取top k的passages,然后passages经过ranker打分后,采样一个passage送入reader,reader抽取得到answer,根据预测answer和正确答案之间的F1得分作为reward,然后根据plolicy gradient来更新re-ranker模型,同时也根据监督信号来更新reader模型。

图8 R3: Reinforced Ranker-Reader示意图

笔者的一点想法:其实笔者更期待这个模型在多轮问答(multi-hop question answering)上的表现。

DrQA基本系统改进5:answer re-ranker

Answer re-ranker的基本思想是:如果检索到的多个passage,每个passage都会被reader抽取多个answer span的话,那是否可以根据检索部分的信息、阅读理解部分的信息对抽取出来所有可能的answer span再次进行re-rank呢?

图9 Answer re-ranker

如图9所示,论文Evidence Aggregation for Answer Re-Ranking in Open-Domain Question Answering基于信息检索部分的特征、阅读理解部分的特征给出了两种answer re-ranker方法:

1. 如图10所示,左边的例子a就是Strength-based answer re-ranker。意思是,如果reader预测的答案被多段文本所支撑,则该答案更大概率是正确答案。

2. 如图10所示,右边的例子b就是Coverage-based answer re-ranker。意思是,如果支撑该答案的多段文本对于问题信息的覆盖度更好,则该答案更有可能是正确答案。

图10 Strength-based和Coverage-based re-ranker举例

DrQA基本系统改进6: 监督信号的选择

在DrQA的研究中显示,如果训练的时候只有问题question和answer,通过信息检索得到相关passage来包含answer作为distant supervision,那么这个监督信号有它明显的问题的:如图11所示,如果一个段落中包含多个answer,那么选哪个位置的answer作为答案呢?因为训练的时候是按照answer的start和end位置作为监督信号的,以往的论文训练时一般直接选了第一个answer或者随机选一个answer的start和end位置作为监督信号。

图11 多个answer位置举例

如图12所示,论文A Discrete Hard EM Approach for Weakly Supervised Question Answering提出了一种Hard EM算法帮助模型在训练的时候选择最合适的answer作为。

笔者这样理解

1、 假设一个passage在多个位置包含了question的答案,那么在训练初期,先鼓励模型选择预测概率最大(最大概率与Question和Document有关)的answer位置作为监督信号。

2、训练一定steps之后,改为Hard EM算法(最大概率与Question、Document一个记一个可学习的参数C有关)选择概率最大的answer 位置作为监督信号。学习reader模型的时候同时学习了选择answer位置有关的参数C。

作者开源了代码在:https://github.com/shmsw25/qa-hard-em。代码基于Huggingface的transformers实现,还是很好看懂的。

图12 Hard EM学习过程

总结

本文主要包含了以下内容:

  1. 开放领域问答的基本背景,开放领域问答系统简化后的二阶段问答系统介绍。

  2. 二阶段问答系统DrQA介绍。

  3. 在DrQA系统之后,二阶段问答系统的几个改进方向,对6类比较经典的改进进行了描述和总结。

那么开放领域问答二阶段系统近期还有哪些其他的改进研究呢?

TF-IDF这类不可训练的检索工具如何改进为可训练的Dense retrieve,向量检索?

单阶段问答系统:只检索、只做阅读理解的系统又有哪些?

开放领域多轮问答(open domain multi-hop question answer最近又有哪些研究?

这些问题笔者将在后续的文章中进行梳理和总结。

由于笔者水平优先,各项描述难免存在不正确的地方,欢迎大家进行批评指正!谢谢!点在在看,你最好看~~

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

整理不易,还望给个在看!

参考文献

  1. R3: Reinforced Reader-Ranker for Open-Domain Question Answering

  2. Denoising Distantly Supervised Open-Domain Question Answering

  3. Multi-passage BERT: A Globally Normalized BERT Model for Open-domain Question Answering

  4. Simple and Effective Multi-Paragraph Reading Comprehension

  5. Revealing the Importance of Semantic Retrieval for Machine Reading at Scale

  6. Training a Ranking Function for Open-Domain Question Answering

  7. Multi-passage BERT: A Globally Normalized BERT Model for Open-domain Question Answering

  8. End-to-End Open-Domain Question Answering with BERTserini

  9. A Discrete Hard EM Approach for Weakly Supervised Question Answering

  10. Evidence Aggregation for Answer Re-Ranking in Open-Domain Question Answering

  11. https://github.com/danqi/acl2020-openqa-tutorial

【问答总结】开放领域问答梳理系列(1)相关推荐

  1. 通过prompt方法增强开放领域问答模型

    前言 开放领域问答任务最常见的两个难点就是保证回答的答案具有事实性和时效性,但是模型通常在训练好后就是固定的即权重固定好了,尤其是时效性基本上很难保证. 今天要给大家介绍的这篇paper主要就是通过p ...

  2. 检索器与阅读器:开放域问答的综述 Retrieving and Reading: A Comprehensive Survey on Open-domain Question Answering

    开放域问答(OpenQA)是自然语言处理(NLP)中的一项重要任务,旨在基于大规模非结构化文档以自然语言的形式回答问题.最近,关于 OpenQA 的研究文献数量激增,特别是与神经机器阅读理解 (MRC ...

  3. 【论文阅读】开放域问答论文总结,文本召回与问答的另一种思路

    [论文总结]开放域问答,纯文本召回与精排的另一种思路 前言 SCIVER: Verifying Scientific Claims with Evidence 任务介绍 数据样例 开放域问答 Read ...

  4. EMNLP 2020 | 基于超边融合的文本增强知识图谱开放域问答

    ©PaperWeekly 原创 · 作者|舒意恒 学校|南京大学硕士生 研究方向|知识图谱 论文标题: Open Domain Question Answering based on Text Enh ...

  5. ACL Tutorial|开放域问答综述 -- 陈丹琦和Scott

    每天给你送来NLP技术干货! 来自:李rumor 做了三年多的问答,我对这个领域真是又恨又爱.恨吧,互联网里的问答产品就是个锦上添花的东西,而且效果还上不去,一堆case等着我解.爱吧,我们NLP可是 ...

  6. 丹琦女神出品|开放域问答综述

    卷友们好,我是rumor. 做了三年多的问答,我对这个领域真是又恨又爱.恨吧,互联网里的问答产品就是个锦上添花的东西,而且效果还上不去,一堆case等着我解.爱吧,我们NLP可是人工智能的掌上明珠,而 ...

  7. Facebook刷新开放域问答SOTA:模型训模型!Reader当Teacher!

    文 | Sherry 不是小哀 编 | 小轶 一部问答系统发展史就是一部人工智能发展史.早在1950年的图灵测试就提出:如果人类无法通过问答将机器和人区分开,那么这个机器就可以被认为具有智能.问答系统 ...

  8. 论文浅尝 | XQA:一个跨语言开放域问答数据集

    论文笔记整理:刘晓臻,东南大学计算机科学与工程学院本科生. Citation: Liu, J., Lin, Y., Liu, Z., & Sun, M. (2019,July). XQA: A ...

  9. AI实战:垂直领域问答机器人QA Bot常见技术架构

    垂直领域问答机器人QA Bot常见技术架构 对话系统示意图 基于知识图谱的智能问答:点击查看 人机对话体系结构 问答产品知识结构 基于知识图谱的问答系统关键技术研究: 点击查看 研究架构图 对话机器人 ...

  10. DSTC10开放领域对话评估比赛冠军方法总结

    本文介绍了国际竞赛DSTC10开放领域对话评估赛道的冠军方法MME-CRS,该方法设计了多种评估指标,并利用相关性重归一化算法来集成不同指标的打分,为对话评估领域设计更有效的评估指标提供了参考.相关方 ...

最新文章

  1. python 数字格式化
  2. 网络定位-能定位到国家省份市区县街道
  3. kax格式怎么导入不了pr_pr如何导入.mogrt文件 pr模板导入教程
  4. 类与对象初识 类是模具 对象是产品 0314 2101
  5. 事件 ID 3001错误的解决方法
  6. linux dhcpd 设置 关于 subnet
  7. .net下调用WebService
  8. Atitit 输入法原理与概论ati use
  9. paip.deivsuit安装.检测文件与文件夹锁定进程与解锁
  10. TraceView的使用
  11. c#进阶一:使用ILDASM来查看c#中间语言
  12. fw325r虚拟服务器,fw325r无线路由器设置
  13. OC Foundation框架 集合
  14. fiddler+mitmproxy+夜神模拟器安装
  15. TAHOMA:Physical Representation-based Predicate Optimization for a Visual Analytics Database,IEEE2019
  16. 2021最新 深圳互联网公司排名
  17. 趋势:TypeScript - 一种思维方式
  18. measure_solder_paster_dff.hdev测量BGA封装焊锡膏深度的 相关例程学习
  19. 通用公司信息安全规范
  20. 怎样利用DOI快速检索文献?

热门文章

  1. Python的包(Packages)
  2. CF113D 高斯消元、dp
  3. JavaScript删除数组里的某个元素
  4. Appium移动自动化测试-----(一)Appium介绍
  5. gridview划线
  6. [转]5个JavaScript面试题
  7. Android 自定义progressDialog实现
  8. DMA驱动开发(6,参考资料)有用链接
  9. selenium java maven testNg环境搭建
  10. ibatis的result标签中用select详解