每天给你送来NLP技术干货!


来自:李rumor

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

还是选择相信吧

今天带大家一起学习丹琦女神和Scott大佬在ACL2020上主讲的Tutorial——Open-Domain Question Answering。开放域问答之所以重要,是因为它是搜索引擎的终极形态。而搜索引擎的重要性就不必多说了,需求量大,商业模式成熟,以搜索引擎为入口的应用养活了谷歌、百度和一系列垂搜大厂,占据了当今互联网的大半壁江山。要是掌握了这门技术,前途不可估量。

PPT&视频:https://github.com/danqi/acl2020-openqa-tutorial

丹琦女神这次的Tutorial,主要讲的是利用非结构化数据进行问答这一分支任务,也是当今场景最多的任务,毕竟结构化、半结构化数据有一定的获取成本。

从开放域问答兴起以来,可以分为以下四个阶段:

  • Pipeline:类似搜索引擎,分为Query理解、候选召回和答案抽取

  • Two-stage:对Pipeline进行简化,先用Retriever抽取候选,然后用Reader做阅读理解

  • End-to-end learning:用神经网络替换传统Retriever,尝试把Retriever和Reader一起训练

  • Retrieval-free models:不检索了,预训练都学会了,直接上模型就完了

下面我们就跟着女神的步伐,来看看这四类方法。

Pipeline

QA的研究从1960年左右就开始了,基本都是rule-based的方法,学者们通过大量人工定义的规则来进行query理解,然后从限定域数据库中寻找答案(那时的学者们可能不会知道,这种方法一直被沿用至今)。

1999年,信息检索领域的顶会TREC推出了QA Tracks,那时他们就开始意识到,搜索引擎的下一个形态就是问答。然而那时由于机器学习、算力的局限,主流方法还是跟搜索引擎类似,数据集也比较简单,都是用单实体作为答案(长了就抽不出来了)。

可以看2002年的冠军方案来体会一下Pipeline方法的复杂程度:

再之后,就是2011年,IBM Watson一举夺得Jeopardy问答竞赛的百万奖金。然而技术上还是没有太大进展,依旧是用Pipeline方法,任务形式也较为简单。

到了2013年,深度学习兴起,任务形式也开始发生变化,从Document层面的Macro-reading走向Passage层面的Micro-reading。出现了更偏向语义的阅读理解任务。以及更多形式的数据集:

Two-Stage

把问答整合成阅读理解任务的形式后,研究者们把Pipeline简化为了Retriever-Reader两步。最基本的解决方案可以参照2017年的DrQA,用TFIDF、BM25等同级方法召回合适的Document,再用神经网络作为Reader去标注合适的回答。

那接下来如何优化呢?除了把Reader替换为更复杂的网络外,还有几个点可以改进:

  • DrQA是从文档层面进行召回的,因此2019年的BERTserini[1]把文档切成segments,进行更精细的召回,同时用segment和答案片段的加权分数作为最终答案

  • 在预测时,不同段落中抽出的答案不方便做比较,因此2018[2]、19[3]年分别有工作尝试了Multi-passage训练,让一个batch内的段落进行交互,得到一个更好的span预测结果

  • 段落的重要性被忽略掉了,所以2018年的R^3[4]给召回的passage又加了一个强化学习的re-ranker

  • 目前的方法只对答案进行排序,而忽略了聚合,如果不同passage都抽出了同样的答案,可以用不同的方法进行汇总[5]

  • 开放域阅读理解的训练集很多都是远程监督来做的(只要passage包含答案就是正例),这样会忽略passage本身的合理性,也有工作探索这方面的改进[6]

Dense Retriever and End-to-end

上文介绍了Pipeline方法的改进思路,然而Retriever还处于远古时代。技术再往前一步,就是对Retriever进行优化。

事实上,在2019年之前,dense retriever的表现都弱于sparse retriever(例如用TFIDF表示的one-hot)。Retriever网络需要从成百上千万的文档中选出合适的,需要大量的语料和算力,终于到BERT出来之后,我们有了预训练模型+Faiss向量化召回框架,才终于让dense retriever的效果上去。

2019年的ORQA[7]提出了Inverse Cloze Task任务,通过预测一句话正确的Context对Retriever进行预训练,之后再对Retriever和Reader进行联合训练,终于在3个数据集上打败了传统的BM25+BERT。

2020年的REALM[8]则更进一步,提出了让Retriever和Reader更好结合的MLM预训练任务。具体的做法是,随机对句子的实体进行mask,作为query,让Retriever从候选中抽取句子,再让Reader根据query和候选预测被mask的实体:

但上述两种方法都需要进行预训练,这个成本是很高的。

接下来,2020年的DPR[9]提出,可以用更少的语料来训一个Retriever。那问题就来了,用什么数据训Retriever才好呢?DPR采用的正例是:

  • 阅读理解数据集的正例

  • 包含answer的BM25高分段落

而负例则采用:

  • 随机段落

  • 不包含答案的高分BM25段落

  • 其他问题的正例段落

同时在训练时采用In-batch negative策略,相比REALM提升了2个多点。同时又证实了Pipeline方法的高效性。

优化了半天Retriever,那Reader层面还有什么优化呢?能不能用生成模型?

2020年的RAG[10]就用DPR Retriever+BART模型来了一版生成式开放域QA:

不过讲了半天,上面方法本质还是Two-stage的,2019年的DenSPI[11]就想,能不能phrase level进行召回,那要是都召回phrase了,reader是不是就可以省了?

说干就干,于是DenSPI把phrase都切出来了,一方面用BERT的start和end表示作为dense表示,一方面用TF-IDF做sparse表示,两个表示拼接起来,居然效果还不错,在SQuAD上能超越一些Two-stage的方法。

最后,让我们来看看女神总结的各模型表现:

Retriever-free

开放域问答的尽头,难道是预训练大模型?

然而女神的报告是2020年做的,只介绍了GPT-2和T5,从效果上看,预训练大模型是可以得到不错的效果的,然而这个效果跟模型尺寸强相关,11B的T5刚刚能赶上3个BERT-base的DPR效果。

数据集与评估

评估方式主要有:F1、Exact match、Top-N accuracy等

总结

问答是搜索引擎的尽头吗?我不知道,但我相信未来几十年之后,随着互联网的信息越来越多,人机交互的形式一定会发生变化。而其中最重要的技术,除了NLP可能就是脑机接口了。

希望我35岁危机之前问答技术能有一波大突破,please。

参考资料

[1]

End-to-End Open-Domain Question Answering with BERTserini: https://arxiv.org/abs/1902.01718

[2]

Simple and Effective Multi-Paragraph Reading Comprehension: https://arxiv.org/abs/1710.10723v1

[3]

Multi-passage BERT: A Globally Normalized BERT Model for Open-domain Question Answering: https://aclanthology.org/D19-1599/

[4]

Reinforced Ranker-Reader for Open-Domain Question Answering: https://arxiv.org/abs/1709.00023

[5]

Evidence Aggregation for Answer Re-Ranking in Open-Domain Question Answering: https://arxiv.org/abs/1711.05116

[6]

A Discrete Hard EM Approach for Weakly Supervised Question Answering: https://arxiv.org/abs/1909.04849

[7]

Latent Retrieval for Weakly Supervised Open Domain Question Answering: https://arxiv.org/abs/1906.00300

[8]

REALM: Retrieval-Augmented Language Model Pre-Training: https://kentonl.com/pub/gltpc.2020.pdf

[9]

Dense Passage Retrieval for Open-Domain Question Answering: https://aclanthology.org/2020.emnlp-main.550.pdf

[10]

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks: https://arxiv.org/abs/2005.11401

[11]

Real-Time Open-Domain Question Answering with Dense-Sparse Phrase Index: https://aclanthology.org/P19-1436.pdf


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

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

记得备注呦

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

ACL Tutorial|开放域问答综述 -- 陈丹琦和Scott相关推荐

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

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

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

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

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

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

  4. ACL 2020今日放榜,779篇论文被接收,姚班校友陈丹琦首日演讲

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI ACL 2020,今天终于放榜啦! 今年的ACL总共有3088篇投稿,大会接收了779篇论文,其中长论文571篇.短论文208篇,接受率2 ...

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

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

  6. 骆驼QA:基于陈丹琦CoQA数据集的中文阅读理解模型,可给定知识文本进行问答...

    前言:骆驼(Luotuo)项目是由冷子昂@商汤科技,陈启源@华中师范大学以及李鲁鲁@商汤科技发起的中文大语言模型开源项目,包含了一系列语言模型,感兴趣的可以去github上了解下,非常棒. 进NLP群 ...

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

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

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

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

  9. 总结陈丹琦博士论文(二):NEURAL READING COMPREHENSION AND BEYOND

    DRQA文章 CoQA文章 陈丹琦博士论文阅读笔记第二部分 第五章:开放域问答 在第一部分,主要是介绍了阅读理解的任务:从形式到近年来的发展,以及阅读理解系统的关键组成部分和未来的研究方向.但是,依旧 ...

最新文章

  1. qt中关于按钮的click()函数卓见
  2. 数据结构链表知识入门
  3. 后端比android简单,android开发怎么少的了后端(下)
  4. 【论文复现】使用RNN进行文本分类
  5. Spark UI (基于Yarn) 分析与定制
  6. PXe Server Install for Linux
  7. php3.2项目怎么创建,php网站后台源码(thinkphp3.2.3开发微信编辑器创建后台)
  8. 裴礼文3.2.34解答
  9. MATROSKA 文件格式
  10. 如何写毕业设计——开题报告
  11. 当你灵感枯竭的时候,如何深挖客户需求?采用曼陀罗思考法(5W1H模式),相信你会找到出路
  12. linux笔记本电池管理,Linux系统笔记本电源管理方法实用指南
  13. WebSocket协议及聊天室的简易实现
  14. 小葵花妈妈课堂开课了:《Runnable、Callable、Future、RunnableFuture、FutureTask 源码分析》...
  15. USACO Training切题纪念
  16. EasyExcel如何返回业务处理中的错误信息
  17. 洛谷P4942 小凯的数字
  18. 【Unity人物动画】SALSA With RandomEyes (语音生成嘴型/人物说话) 使用
  19. 麻雀算法SSA,优化VMD,适应度函数为最小包络熵,包含MATLAB源代码,直接复制粘贴!
  20. 下雨天客流量少,美容院怎么做生意

热门文章

  1. 卡拉OK歌词原理和实现高仿Android网易云音乐
  2. CSS图片响应悬停效果
  3. android原生代码转h5,Android原生和H5交互;Android和H5混合开发;WebView点击H5界面跳转到Android原生界面。...
  4. 无需注册登录NVIDIA官网下载CUDNN
  5. Ubuntu安装过程中出现“没有定义根文件系统”,Ubuntu安装过程中无法读取Windows分区
  6. 两台手机通过4g网络直接通讯_手机直播只准备了一部手机?难怪直播效果不好!...
  7. 利用ffmpeg实现Windows音视频录制
  8. 展望 2017年商业智能BI发展的趋势分析
  9. SSM框架 基于Bootstrap fileinput 实现文件上传功能
  10. 随机梯度下降法步长的选择