论文阅读-End-to-End Open-Domain Question Answering with BERTserini

news2024/12/28 19:43:36

论文链接:https://aclanthology.org/N19-4013.pdf

目录

摘要

1 简介

2 背景及相关工作

3 系统架构

3.1 Anserini Retriever

3.2 BERT 阅读器

4 实验结果

5演示

6结论


摘要

        我们展示了一个端到端的问答系统,它将 BERT 与开源 Anserini 信息检索工具包集成在一起

        与当今大多数对少量输入文本进行操作的问答和阅读理解模型相比,我们的系统将 IR 的最佳实践基于 BERT 的阅读器相结合,以从大量维基百科文章中识别答案以端到端的方式。我们报告了在标准基准测试集上比以前的结果有很大改进,表明使用 SQuAD 微调预训练 BERT 足以在识别答案跨度方面实现高精度。 

1 简介

        BERT(Devlin 等人,2018 年)是一系列大量使用预训练的神经模型的最新改进(Peters 等人,2018 年;Radford 等人,2018 年),在许多自然语言领域取得了令人瞩目的进步处理任务,从句子分类到问题回答再到序列标记。与我们的任务最相关的是,Nogueira 和 Cho (2019) 在使用 BERT 进行基于查询的段落重新排序方面取得了令人瞩目的成果。在此演示中,我们将 BERT 与开源 Anserini IR 工具包相集成,以创建 BERT-serini,一个端到端的开放域问答 (QA) 系统。

        大多数 QA 或阅读理解模型被描述为重新排序器或提取器,因为它们假设输入相对少量的文本(文章、前 k 个句子或段落等),我们的系统直接在维基百科的大型语料库上运行文章。我们将来自信息检索社区的最佳实践与BERT集成在一起,以生成端到端系统,并且在标准基准测试集合上的实验表明,与以前的工作相比,有了很大的改进。我们的结果表明,使用 SQuAD(Rajpurkar 等人,2016 年)微调预训练 BERT 足以在识别答案跨度方面实现高精度。这种设计的简单性是我们架构的一大特色。我们已将 BERTserini 部署为聊天机器人,用户可以在从笔记本电脑到手机的各种平台上与之交互。

2 背景及相关工作

        虽然问答的起源可以追溯到 1960 年代,但现代的表述可以追溯到 1990 年代后期的文本检索会议 (TREC)(Voorhees 和 Tice,1999)。扎根于信息检索,人们普遍认为 QA 系统将包含管道阶段,这些管道阶段会选择越来越细粒度的文本段(Tellex 等人,2003 年):文档检索以从大型语料库,然后通过段落排名来识别包含答案的文本片段,最后是答案提取来识别答案跨度

        随着 NLP 研究人员对 QA 越来越感兴趣,他们更加重视管道的后期阶段,以强调语言分析的各个方面。信息检索技术退居幕后,完全被忽视了。当今最流行的 QA 基准数据集——例如,TrecQA(Yao 等人,2013 年)、WikiQA(Yang 等人,2015 年)和 MSMARCO(Bajaj 等人,2016 年)——最适合作为答案选择任务.也就是说,系统会收到问题以及可供选择的候选句子列表。当然,这些候选列表必须来自某个地方,但他们的来源不在问题的表述中。同样,阅读理解数据集,如SQuAD (Rajpurkar et al., 2016)完全避免检索,因为只有一个文档可以提取答案。

        相比之下,我们所说的“端到端”问答是从大量文档开始的。由于使用当前模型(主要基于神经网络)将推理穷尽地应用于语料库中的所有文档是不切实际的,因此该公式必然需要某种类型的基于术语的检索技术来限制正在考虑的输入文本——并且因此,架构非常类似于十多年前的流水线系统。最近,人们对这项任务重新产生了兴趣,其中最著名的是 Dr.QA(Chen 等人,2017 年)。最近的其他论文研究了检索在这种端到端公式中的作用(Wang 等人,2017 年;Kratzwald 和 Feuerriegel,2018 年;Lee 等人,2018 年),其中一些本质上具有重新发现- 从 1990 年代末和 2000 年代初产生的想法。

        对于广泛的应用,研究人员最近证明了在语言建模任务上经过预训练的神经模型的有效性(Peters 等人,2018 年;Radford 等人,2018 年); BERT(Devlin 等人,2018 年)是这一想法的最新改进。我们的工作通过将 BERT 与 Anserini 相结合来解决端到端的问答问题,Anserini 是一种建立在流行的开源 Lucene 搜索引擎之上的 IR 工具包。 Anserini (Yang et al., 2017, 2018) 代表了研究人员最近为使学术 IR 更好地与构建现实世界搜索应用程序的实践保持一致所做的努力,其中 Lucene 已成为行业中使用的事实上的平台。通过强调严格的软件工程和可复制性的回归测试,Anserini 将当今的 IR 最佳实践编纂成文。最近,Lin (2018) 表明,十多年前提出的查询扩展模型的调整良好的 Anserini 实现仍然优于最近的两个文档排名神经模型。因此,BERT 和 Anserini 代表了构建端到端问答系统的坚实基础。

3 系统架构

        BERTserini 的架构如图 1 所示,由两个主要模块组成,即 Anserini 检索器和 BERT 读取器。检索器负责选择包含答案的文本片段,然后将其传递给阅读器以识别答案范围

为了便于与以前的工作进行比较,我们使用Chen等人(2017)(2016年12月起)描述的相同的维基百科语料库,其中包括508万篇文章。接下来,我们依次描述每个模块。

3.1 Anserini Retriever

        为简单起见,我们采用了单级检索器,直接识别维基百科中的文本片段以传递给 BERT 阅读器,而不是首先检索文档然后对其中的段落进行排序的多级检索器。然而,为了增加灵活性,我们在索引时尝试了不同粒度的文本: 

        文章:5.08M维基百科文章被直接索引;也就是说,一篇文章是检索的单位。

        段落:语料库被预先分割成 2950 万个段落并进行了索引,其中每个段落都被视为一个“文档”(即检索单元)。

        句子:语料库被预先分割成 7950 万个句子并进行了索引,其中每个句子都被视为一个“文档”。

        在推理时,我们使用问题作为“词袋”查询来检索 k 个文本段(上述条件之一)。我们使用 Anserini 的 post-v0.3.0 分支,以 BM25 作为排名函数(Anserini 的默认参数)。

3.2 BERT 阅读器

        来自检索器的文本片段被传递给 BERT 阅读器。我们使用 Devlin 等人的模型 (2018),但有一个重要的区别:为了允许比较和聚合来自不同片段的结果,我们删除了不同答案范围内的最终 softmax 层;参见(克拉克和加德纳,2018 年)。

        我们的 BERT 阅读器基于谷歌的参考实现 (TensorFlow 1.12.0)。训练,我们从 BERT-Base 模型(uncased,12 层,768 隐藏,12 头,110M 参数)开始,然后在 SQuAD(v1.1)的训练集上微调模型).读取器的所有输入都被填充为 384 个token;学习率设置为 3 × 10−5 并使用所有其他默认设置。

        在推理时,对于检索到的文章,我们逐段应用 BERT 阅读器。对于检索到的段落,我们对整个段落进行推理。对于检索到的句子,我们对整个句子进行推理。在所有情况下,读者都会选择最佳文本跨度并提供分数。然后我们通过线性插值将读者分数与检索器分数结合起来:

         其中 μ ∈ [0, 1] 是超参数。我们对来自 SQuAD 训练集的 1000 个随机选择的问答对调整 μ,并以十分之一的增量考虑所有值。

4 实验结果

        我们采用与 Chen 等人完全相同的评估方法 (2017),也用于后续工作。试题来自SQuAD的开发集;因为我们的答案来自不同的文本,所以我们只根据 SQuAD 答案范围进行评估(即忽略段落上下文)。我们的评估指标也与 Chen 等人相同 (2017):精确匹配 (EM) 分数和 F1 分数(在token级别)。此外,我们计算召回率 (R),即在任何检索到的片段中出现正确答案的问题部分;这就是Chen et al.(2017)所说的文献检索结果。请注意,此召回与F1分数中的token级召回组件不同。

        我们的主要结果如表 1 所示,其中我们报告了具有不同 Anserini 检索条件(文章、段落和句子)的指标。我们比较了 k = 5 时的文章检索、k = 29 时的段落检索和 k = 78 时的句子检索。文章设置与 Chen 等人的检索条件相匹配 (2017)。选择段落和句子条件的 k 值,以便读者考虑大致相同数量的文本:每个段落平均包含 2.7 个句子,每篇文章平均包含 5.8 个段落。该表还复制了以前工作的结果以供比较。

        我们看到文章检索的性能大大低于段落检索:我们认为,原因是文章很长并且包含许多不相关的句子,这些句子会分散 BERT 阅读器的注意力。句子的表现还算不错,但不如段落,因为它们通常缺乏读者识别答案范围的上下文。段落似乎代表了一个“最佳点”,与以前的结果相比,精确匹配分数有了很大的提高。

        我们看到文章检索的性能大大低于段落检索:我们认为,原因是文章很长并且包含许多不相关的句子,这些句子会分散 BERT 阅读器的注意力。句子的表现还算不错,但不如段落,因为它们通常缺乏读者识别答案范围的上下文。段落似乎代表了一个“最佳点”,与以前的结果相比,精确匹配分数有了很大的提高。

        我们的下一个实验检查了不同 k 的影响,k 是 BERT 阅读器考虑的文本片段的数量。在这里,我们只关注段落条件,μ = 0.5(通过交叉验证学习的值)。图 2 绘制了关于 k 的三个指标:召回率、前 k 个精确匹配最高部精确匹配。召回率测量正确答案出现在任何检索到的片段中的问题的比例,与表 1 完全一样。

         顶部精确匹配表示一种宽松的条件,在这种条件下,系统在任何检索到的段中接受正确识别的跨度。最后,根据得分最高的跨度评估最高精确匹配,与表 1 中报告的结果相当。表中还报告了 k = 100 的段落条件的分数:我们注意到精确匹配分数大大高于我们所知道的先前发布的最佳结果。

        我们看到,正如预期的那样,分数随着 k 值的增加而增加。然而,top exact match score 在 k = 10 左右后似乎并没有增加太多。top k exact match score 继续增长的时间更长一些,但也达到了饱和。召回率似乎会一直增加到 k = 100,尽管随着 k 的增加速度会变慢。这意味着 BERT 阅读器无法利用这些出现在候选池中的额外答案段落。

        这些曲线还提供了失败分析:顶部召回曲线(蓝色)表示当前 Anserini 检索器的上限。在 k = 100 时,它能够在大约 86% 的时间内返回至少一个相关段落,因此我们可以得出结论,段落检索似乎不是当前实施中整体有效性的瓶颈。

        顶部蓝色召回曲线和顶部 k 精确匹配曲线(红色)之间的差距量化了 BERT 阅读器的改进空间;这些代表读者在任何段落中都没有找到正确答案的情况。最后,红色曲线和底部顶部精确匹配曲线(紫色)之间的差距代表 BERT 确实识别出正确答案的情况,但不是得分最高的跨度。这种差距可以被描述为评分或分数聚合失败,它似乎是最大的改进领域——表明我们目前的方法(BERT 和 Anserini 分数之间的加权插值)是不够的。我们正在探索能够整合更多相关信号的重新排序模型

        最后一个警告:此错误分析基于 SQuAD ground truth。尽管我们的答案可能与 SQuAD 的答案跨度不匹配,但它们可能是可以接受的(例如,对时间相关问题的不同答案)。在未来的工作中,我们计划手动检查错误样本以生成更准确的故障分类

5演示

        我们部署了 BERTserini 作为聊天机器人,用户可以通过两种不同的方式与之交互:Slackbot 和 RSVP.ai 的智能平台,允许企业轻松快速地构建自然对话服务。但是,两者都使用相同的后端服务。 RSVP.ai 聊天平台的屏幕截图如图 3 所示。当前界面使用段落索引条件,但我们仅返回包含 BERT 阅读器识别的答案的句子。答案跨度在响应中突出显示 (Lin et al., 2003)。在屏幕截图中,我们可以看到 BERTserini 可以处理的问题的多样性——不同类型的命名实体以及答案不是名词短语的查询。

         根据图 2 中的分析,在我们的演示系统中,我们在段落条件下设置 k = 10。虽然这不能为我们提供最大可能的准确性,但它代表了良好的成本/质量权衡。为了量化处理时间,我们从 SQuAD 中随机选择了 100 个问题并记录了平均延迟;测量是在配备 Intel Xeon E5-2620 v4 CPU (2.10GHz) 和 Tesla P40 GPU 的机器上进行的。 Anserini 检索(在 CPU 上)平均每个问题 0.5 秒,而 BERT 处理时间(在 GPU 上)平均每个问题 0.18 秒。

6结论

        我们介绍了 BERTserini,这是我们的端到端开放域问答系统,它集成了 BERT 和 Anserini IR 工具包。通过一个简单的两级流水线架构,我们能够实现对以前系统的重大改进。错误分析指出了检索、答案提取和答案聚合方面的改进空间——所有这些都代表着持续的努力。此外,我们也有兴趣扩展我们系统的多语言功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MSYS2安装

最近在学习windows上编译FFmpeg,需要用到msys2,在此记录一下安装和配置过程。 点击如下链接,下载安装包: Index of /msys2/distrib/x86_64/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 我下载的是:ms…

相信人还是相信ChatGPT,龙测首席AI专家给出了意料之外的答案

最近,关于ChatGPT的话题太火了!各大社交软件都是他的消息!从去年12月份ChatGPT横空出世,再到近期百度文心一言、复旦Moss的陆续宣布,点燃了全球对AIGC(内容人工智能自动生成)领域的热情&#xf…

搭建Bitbucket项目管理工具详细教程

目录 1.安装前准备 2.jdk安装 2.1.rpm安装方式: 3.创建bitbucket数据库 4.安装Git 5.安装bitbucket 5.1下载完成上传至服务器的 /usr/atlassian/ 目录下 5.2安装atlassian-bitbucket-7.21.0 5.3安装MySQL驱动 5.4破解激活bitbucket 1.安装前准备 首先查看操…

Python 之网络式编程

一 客户端/服务器架构 即C/S架构,包括 1、硬件C/S架构(打印机) 2、软件B/S架构(web服务) C/S架构与Socket的关系: 我们学习Socket就是为了完成C/S的开发 二 OSI七层 引子:   计算机组成…

【Spark分布式内存计算框架——Spark Streaming】13. 偏移量管理(下)MySQL 存储偏移量

6.3 MySQL 存储偏移量 此处将偏移量数据存储到MySQL表中,数据库及表的DDL和DML语句如下: -- 1. 创建数据库的语句 CREATE DATABASE IF NOT EXISTS db_spark DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci; USE db_spark ; -- 2. 创建表的语句 CRE…

蓝牙资讯|2022 年 Q4 全球 TWS 耳机出货量 7900 万部

Canalys 最新数据显示,2022 年第四季度,全球个人智能音频设备出货量下降 26%,跌至 1.1 亿部。所有品类的出货量都面临不一的下滑趋势,甚至是一直支撑市场的 TWS 品类也遭遇 23% 两位数的下降至 7900 万部。 全球市场方面&#x…

MySQL中varchar(M)存储字符串过长

最近写项目&#xff0c;数据库报了一个错&#xff0c;错误原因是MySQL中存储的字符串过长最近在学MySQL的基础&#xff0c;刚好学到了关于varchar类型要存储的字符串是 “<p>12121212121212</p>\n<p><img src\"https://zzjzzjzzjbucket.oss-cn-hangz…

附录5-大事件项目前端

目录 1 前言 2 用到的插件 2.1 截取图像 cropper 2.2 富文本编辑器 tinymce 3 项目结构 4 config.js 5 主页 5.1 iframe 5.2 页面的宽高 5.3 修改文章 6 个人中心-基本资料 7 个人中心-更换头像 8 个人中心-更换密码 9 文章管理-文章分类 10 文章…

Springboot集成kafka(环境搭建+演示)|超级详细,建议收藏

Springboot集成kafka一、前言&#x1f525;二、环境说明&#x1f525;三、概念&#x1f525;四、CentOS7安装kafka&#x1f525;1.下载kafka安装包2.下载好后&#xff0c;进行解压六、kafka项目集成&#x1f525;1️⃣pom引入2️⃣配置kafka3️⃣一个kafka消息发送端4️⃣定义一…

MySQL45讲笔记04深入浅出索引上

索引的目的: 索引的出现其实就是为了提高数据查询的效率&#xff0c;就像书的目录一样。常见索引模型&#xff1a; hash表&#xff0c;以K-V键值对的形式的一种数据结构&#xff0c;底层是数组加链表形式。通过一定的hash运算找到数据合适的位置放入&#xff0c;如果放入的位置…

[jetson]paddlepaddle2.4.0在jetpack5.0.2源码编译流程

由于官方暂时没有提供jetson对应的jetson jetpack5.0.2预编译包&#xff0c;因此只有源码编译&#xff0c;本次编译不带Tensorrt,编译已经顺利成功&#xff0c;注意本次使用的设备是jetson NX 测试环境&#xff1a; ubuntu20.04 jetpack5.0.2 GCC-8.4 Software part of jet…

Centos7搭建NFS

1.NFS简介Network File System(网络文件系统&#xff0c;通过网络让不同的机器系统之间可以彼此共享文件和目录&#xff0c;类似Samba服务。2.NFS挂载原理 在网络中服务器和客户端进行连接都是通过端口进行数据传输&#xff0c;而NFS服务端的端口是随机的&#xff0c;从而导致N…

Linux----网络基础(2)--应用层的序列化与反序列化--守护进程--0226

文章中有使用封装好的头文件&#xff0c;可以在下面连接处查询。 Linux相关博文中使用的头文件_Gosolo&#xff01;的博客-CSDN博客 1. 应用层 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层 1.2 协议 我们在之前的套接字编程中使用的是…

最适合你的团队云协作工具

团队云协作工具哪个好&#xff1f;使用Zoho Projects的团队云协作软件套件&#xff0c;在一个平台上无缝协作&#xff0c;激励您的团队在任何地方以最好的状态完成他们的工作。 使您的团队能够使用团队云协作软件在任何地方进行协作和沟通。Zoho Projects提供了一套强大…

三天吃透计算机网络八股文

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/…

一文读懂光学天线

天线&#xff0c;按维基百科的定义&#xff0c;"是一种用来发射或接收无线电波—或更广泛来讲—电磁波的器件"。例如&#xff0c;在无线通信系统中&#xff0c;天线被用于发射与接收射频与微波波段的电磁波。而在我们的智能手机中&#xff0c;就有内置的平面倒F天线(…

01-认识产品经理

文章目录引入1.1 合格的产品经理1.2 产品经理的分类按服务对象不同划分按产品平台不同划分按公司所属行业不同按工作内容划分按职级高低划分1.3 产品经理的岗位职责产品的开发流程核心团队成员及其职责产品经理工作中常见误区1.4 产品经理的能力素质专业技能&#xff08;干得了…

Unity Lighting -- 配置平行光源和天空盒

识别不同种类的光源 在游戏或实时应用程序中&#xff0c;我们可能会创建多种不同种类的场景&#xff0c;比如室内场景、室外场景、真实的场景或完全想象的场景。即便项目是一个完全的想象的或是科幻的故事&#xff0c;灯光也是非常重要的一环&#xff0c;它能极大提升沉浸感。 …

Python3-条件控制

Python3 条件控制 Python 条件语句是通过一条或多条语句的执行结果&#xff08;True 或者 False&#xff09;来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: 代码执行过程&#xff1a; if 语句 Python中if语句的一般形式如下所示&#xff1a; if condi…

Atlassian Server用户新选择 | 数据中心产品是否适合您的企业(3)?

2024年2月&#xff0c;也就是一年不到&#xff0c;Atlassian将终止对Server产品及插件的所有支持。 此公告发布后&#xff0c;许多用户需要了解怎样的前进方向才是最适合企业的。为此&#xff0c;Atlassian不仅提供云版&#xff0c;还提供了本地部署的数据中心&#xff08;Data…