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

文 | Sherry 不是小哀
编 | 小轶

一部问答系统发展史就是一部人工智能发展史。早在1950年的图灵测试就提出:如果人类无法通过问答将机器和人区分开,那么这个机器就可以被认为具有智能。问答系统和人工智能有着密不可分的关系。从基于规则和结构化数据的自动问答,到基于精细设计神经网络的文本问答,再到T5[1]将一切文本任务都转化为问答,我们足以看出自动问答系统在走向机器智能的过程中的重要性。

当前主流的问答系统主要分为几类:FAQ检索型、闲聊型、任务型、知识图谱型、阅读理解型等等。他们之间互相有些区别,但本质上都可以被看作是从庞大的信息中找到想要答案的过程,方法上互相之间也有一些借鉴意义。

陈丹琦的DrQA[2]可以说是利用深度学习解决开放域问答的开山鼻祖了。我们也暂且将目光聚焦在这类开放域问答任务:基于一个巨大的文本库(例如维基百科)建立自动回答知识型问题的系统。这样的系统通常分为两个部分:

  • 检索模型:负责从庞大的文本库中筛选出与问题最相关的文本;

  • 阅读模型:负责处理检索模型筛选出的文本,从中精确地找出问题的答案。

今天,我们来看一篇开放域问答系统的最新SOTA。Facebook在这篇paper中提出:在开放域问答中,阅读理解模型的注意力权重可以提供更好的检索模型训练信号,该方法刷新了开放域问答系统的SOTA,同时在EffcientQA榜单上刷新了6GB量级模型的记录。

论文题目
DISTILLING KNOWLEDGE FROM READER TO RETRIEVER FOR QUESTION ANSWERING

论文链接
https://openreview.net/pdf?id=NTEz-6wysdb

Github
https://github.com/lucidrains/distilled-retriever-pytorch

Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【0127】 下载论文PDF~

“现代”开放域问答

最开始,DrQA[2]将基于TF-IDF的词频算法用作检索模型,与当时的SOTA阅读模型结合,得到了开放域问答系统的雏形。基于词频的检索模型的一大优点就是简单有效

  • 对于大量文本,可以将所有段落的词频都提前统计出来,并储存为向量的形式

  • 对于给定问题,通过向量近邻搜索就可以快速查询到最佳候选段落。

但是基于词频的检索模型也有一些很明显的缺点:

  • 词频不能完全表示文本的含义,检索出的文本质量也因此受限,从而影响问答系统整体的表现

  • 基于词频的检索模型不包含注意力机制,很难给关键程度不同的信息以不同的评分

为了解决这类检索模型的缺点,常见的问答系统先通过基于词频的检索模型初筛出较大量候选段落,再应用基于BERT的检索模型,将问题和段落拼接在一起进行精细排序。

然而,这类分阶段检索的模型仍然存在一些问题:它始终需要进过基于词频的检索,有信息损失;每次预测都需要将较大量的文本送入BERT进行精排。能否在一开始就用BERT这类效果更好的模型预先编码好所有段落,在检索的时候直接进行向量搜索呢?

DPR - 加入了BERT的检索模型

陈丹琦组在EMNLP 2020提出了Dense Passage Retrievel(DPR)[3]的方法来解决上述缺陷。由于BERT这类模型太过庞大,在预测的时候无法实时对所有段落进行重编码,因而问题和段落需要分开编码。文中采用两个不同的BERT模型分别编码问题和段落问题和段落编码向量相似度即为检索模型的打分。

DPR的一大创新点在于线下完成所有段落的编码。训练段落编码器时,将含有标准答案字串的候选段落作为编码器的正例,其他段落作为负例。训练完成后,即可在预测前对所有段落进行编码。预测时只需要编码问题,即可通过向量搜索得到相关段落。

然而,DPR在监督信息的获取上是存在一定问题的——这也是基于网络的检索模型训练的一大难点。DPR[3]是利用答案字符串是否出现在段落中的信号来定义编码器的正负例。这个信号中包含了大量的噪声:

  • 包含答案的段落并不能回答当前问题

比如对问题 “中国的首都是哪里?”而言,并非所有包含“北京”的段落都能用来回答这个问题。

  • 不包含答案的段落也可以回答当前问题

比如对问题“图灵测试是谁提出的”而言,并非只有“阿兰·图灵”才是正确候选,由于音译,省略等,其他字符串同时也可能是答案。

那么,如何能获得更优质的检索模型训练信号呢?

向阅读器学习

专门为检索模型训练标注数据固然是一种获得更好训练数据的方法,但我们能否自动获取更优质的监督信号呢?Facebook AI的研究者们提出[4],利用蒸馏阅读模型中的注意力权重可以获得更好的相似度信息。

除了训练检索模型外,开放域问答的另外一个难点在于如何将检索模型和阅读模型的打分结合选出最终答案。阅读模型的打分往往只基于被送入阅读器的段落。想要获得不同段落之间的交互信息,必须将所有候选段落拼接输入阅读器。但由于BERT的复杂度随着序列长度平方级增长,拼接输入并不高效。

在Fusion-in-Decoder model[5]中作者采用生成式(Encoder-Decoder)模型作为阅读模型,他们将不同段落分别输入Encoder获得段落的的表示,然后将这些表示拼接在一起作为Decoder的输入。这样Encoder不需要用平方级的复杂度;Decoder在生成答案的时候也获得了所有段落的信息。

而本文也采用这种阅读模型。作者提出:在生成式阅读模型中,Encoder和Decoder的交互注意力权重可看作预测时不同段落信息的重要度

作者通过一个简单的实验证明了这一论点:给定一个问题和100个已经由DPR选出的相关段落,筛选出最好的10个段落后再通过阅读理解模型,得到的端到端准确率下降越少说明筛选方法越好。基于前100个相关段落的问答系统准确率可以达到48.2EM;当我们直接选择前10个DPR筛选出的段落时,问答系统的准确率下降到了42.9 EM;但如果根据阅读模型的注意力权重筛选出前10的段落,准确率只下降到46.8 EM。

接下来,作者又进一步利用知识蒸馏的方法,让检索模型学习阅读模型的注意力信号。

将注意力转化为相关度

我们利用知识蒸馏,让检索模型学习阅读模型的知识。将检索模型在不同段落上的预测概率与阅读模型的注意力权重之间的KL-divergence作为蒸馏训练的损失函数。那么如何将注意力权重转化为数值呢?

将矩阵转化为数值的最直观方法就是池化。公式中表示Decoder第i个token对Encoder第j个token,在第k层第h个注意力头(head)的注意力权重,表示的是阅读模型对这个问题,段落对的注意力权重打分,表示检索模型对问题是检索出段落的打分,也就是检索模型的输出。这样,我们就可以让检索模型学习阅读模型的注意力信息了。

文中试验了不同的设置,最终确定:Decoder的第0个token对于Encoder同一段落中所有token的注意力权重平均值是最佳设定。

实验

至此,我们已经确定了训练检索模型的损失函数。那么我们如何开始训练呢?训练采取迭代的方式进行:

  1. 对于每个问题,用检索模型选取前k个相关段落,用于训练阅读模型。

  2. 在相关段落上训练好阅读模型后,对于每个问题的候选段落计算池化之后的注意力权重。

  3. 利用注意力权重作为检索模型的蒸馏训练信号,训练检索模型。

从随机初始化的检索模型开始训练无疑是效率很低的,初始的候选段落便显得尤为重要。作者选取了不同的初始筛选方法(BM25,BERT,DPR)来确定第一步的相关段落集合。

实验发现从DPR方法选择的初始相关段落可以让模型达到最好的效果。由于BERT的预训练目标和相关度排序相差甚远,因而用预训练好的BERT作为检索模型的初始参数并选择最初的相关段落集效果不佳。但作者提出的训练方法可以在4个迭代内让检索模型大幅提升效果。

最终,如此构建的问答系统在NQ和TriviaQA数据集上都超越了之前的SOTA。这个方法在TriviaQA上达到了更好的效果,原因是NQ数据集中的段落是人工标注的并用作了DPR的训练,但TriviaQA没有提供段落相似度信息。这正说明了本文方法在没有相似度标注数据的设定下十分有效。

总结

本文利用生成式阅读器中的注意力权重作为相似度信息训练检索模型,刷新了开放域问答系统的SOTA。该方法简单有效地解决了开放域问答系统中训练检索模型缺乏标注数据的问题,为研究者们提供了新思路。

萌屋作者:Sherry 不是小哀

本科毕业于复旦数院,转行NLP目前在加拿大滑铁卢大学读CS PhD。经历了从NOIer到学数学再重回CS的转变,却坚信AI的未来需要更多来数学和自认知科学的理论指导。主要关注问答,信息抽取,以及有关深度模型泛化及鲁棒性相关内容。

作品推荐:

  1. 无需人工!无需训练!构建知识图谱 BERT一下就行了!

  2. Google Cloud TPUs支持Pytorch框架啦!

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

 

[1]Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer.(https://arxiv.org/pdf/1910.10683)

[2]Reading Wikipedia to Answer Open-Domain Questions.(https://arxiv.org/pdf/1704.00051)

[3]Dense Passage Retrieval for Open-Domain Question Answering.(https://arxiv.org/pdf/2004.04906)

[4]DISTILLING KNOWLEDGE FROM READER TO RETRIEVER FOR QUESTION ANSWERING.(https://openreview.net/pdf?id=NTEz-6wysdb)

[5]Leveraging passage retrieval with generative models for open domain question answering.(https://arxiv.org/pdf/2007.01282)

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

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

相关文章

LeetCode 1038. 从二叉搜索树到更大和树(逆中序-右根左-降序)

1. 题目 2. 解题 二叉搜索树 逆中序遍历&#xff08;右根左&#xff09;是降序的 class Solution { public:TreeNode* bstToGst(TreeNode* root) {stack<TreeNode*> stk;int sum 0;TreeNode *rootcopy root;while(root || !stk.empty()) {while(root){stk.push(root);…

Inode 导致 电脑的网络适配器和访问点出现问题

1 电脑好好的&#xff0c;由于项目原因需要安装inode去访问外网的数据集。安装好inode没有什么问题&#xff0c;网络依然可以用。然后不小心重启了一下电脑&#xff0c;发现电脑所有的网络均不正常。网络诊断是电脑的适配器和访问点出现故障。根据网络上的解决方案&#xff0c;…

应用实践 | 南方科技大学研发基于新型冠状病毒知识图谱模式挖掘系统

本文转载自公众号&#xff1a;南方科技大学计算机科学与工程系。随着新型冠状病毒疫情的不断发展&#xff0c;有关疫情的各类信息也在不断更新&#xff0c;如何利用知识图谱从大量新型冠状病毒肺炎信息中高效挖掘相关频繁模式&#xff08;如病毒的宿主、传播途径&#xff09;成…

java.lang.NoClassDefFoundError: * : Landroid/support/v7/gridlayout/R$styleable 异常终极解决办法

该问题解决办法适用于任何类似问题。 问题的标准异常描述为&#xff1a;java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/gridlayout/R$styleable 今天由于项目需要&#xff0c;想在项目中使用GridLayout&#xff0c;无奈&#xff0c;标准库中的…

训练一个130亿参数的模型要用几个GPU?微软:一个就够

文&#xff5c;蛋酱、张倩源&#xff5c;机器之心现在的模型动辄数百、数千亿参数&#xff0c;普通人训不动怎么办&#xff1f;前不久&#xff0c;谷歌发布了参数量为 1.6 万亿的语言模型Swith Transformer&#xff0c;将 GPT-3 创下的参数量记录&#xff08;1750 亿&#xff0…

技术年货:美团技术沙龙合辑大放送——85个演讲,70+小时视频

你好&#xff0c;2019 再见&#xff0c;2018 又到了一年辞旧迎新的时候&#xff0c;大家应该也和美美一样&#xff0c;在忙着总结回顾和展望规划吧。 按老惯例&#xff0c;我们该献上技术年货了。今年首先出场的&#xff0c;是我们的技术沙龙大套餐&#xff01; 美团技术沙龙是…

LeetCode 442. 数组中重复的数据

1. 题目 给定一个整数数组 a&#xff0c;其中1 ≤ a[i] ≤ n &#xff08;n为数组长度&#xff09;, 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗&#xff1f; 示例&#xff1a;输入:…

如何恢复在 PyCharm 中误删的整个项目文件

如何恢复在 PyCharm 中误删的整个项目文件 方案1: 在误删项目的原始文件地址下新建相同文件名的空文件夹,即新文件夹与被误删项目的路径相同. 在 PyCharm 中打开该新文件夹,右键文件夹,点击 Local History 下的 Show History. 页面左侧为删除的文件信息(时间等),点击文件名右…

征稿 | ​2020年全国知识图谱与语义计算大会

China Conference on Knowledge Graph and Semantic Computing(CCKS 2020)www.sigkg.cn/ccks2020征稿启事&#xff08;第二轮&#xff09;2020年8月15日-18日&#xff0c;南昌征稿截止: 2020年5月21日第十四届全国知识图谱与语义计算大会&#xff08;CCKS: China Conference o…

新手福利:百度官方中文教程,过年也要深度学习!

很多小伙伴在后台给我留言&#xff0c;零基础如何入门深度学习&#xff1f;想要做算法工程师&#xff0c;自学了python基础&#xff0c;现在还来得及吗&#xff1f;这个问题很大。很难说一篇文章几句话就能解决这个问题。今天我给大家说一下自己的一些个人经验&#xff0c;比较…

LeetCode 232. 用栈实现队列(双栈法-队列)

1. 题目 使用栈实现队列的下列操作&#xff1a; push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://le…

论文浅尝 | Tree-to-sequence 学习知识问答

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士生&#xff0c;研究兴趣&#xff1a;知识图谱问答。来源&#xff1a;Neurocomputing 372: 64-72 (2020)链接&#xff1a;https://sciencedirect.xilesou.top/science/article/abs/pii/S0925231219312639对于知识图谱问答…

别再搞纯文本了!多模文档理解更被时代需要!

文 | Ryan都已经2021年了&#xff0c;互联网已经今非昔比&#xff0c;20年前纯文本的日子已经一去不复返&#xff0c;文字已经满足不了网页、文章的需求&#xff0c;绝大部分都会有着精心设计的表格、图片&#xff0c;甚至视频。PDF文档这种富文本格式拥有更加复杂的结构信息&a…

iOS 覆盖率检测原理与增量代码测试覆盖率工具实现

背景 对苹果开发者而言&#xff0c;由于平台审核周期较长&#xff0c;客户端代码导致的线上问题影响时间往往比较久。如果在开发、测试阶段能够提前暴露问题&#xff0c;就有助于避免线上事故的发生。代码覆盖率检测正是帮助开发、测试同学提前发现问题&#xff0c;保证代码质量…

LeetCode 199. 二叉树的右视图(DFS 按层queue)

文章目录1. 题目2. 解题2.1 DFS2.2 queue按层从右边遍历1. 题目 给定一棵二叉树&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例:输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释:1 <--…

论文浅尝 | 中科院百度微软等学者最新综述论文40+最新方法阐述知识图谱提升推荐系统准确性与可解释性...

本文转载自公众号&#xff1a;先知。【导读】近来&#xff0c;知识图谱用于推荐系统是关注的焦点&#xff0c;能够提升推荐系统的准确性与可解释性。如何将知识图谱融入到推荐系统呢? 最近中科院计算所百度微软等学者最新综述论文《A Survey on Knowledge Graph-Based Recomm…

美团酒旅起源数据治理平台的建设与实践

背景 作为一家高度数字化和技术驱动的公司&#xff0c;美团非常重视数据价值的挖掘。在公司日常运行中&#xff0c;通过各种数据分析挖掘手段&#xff0c;为公司发展决策和业务开展提供数据支持。 经过多年的发展&#xff0c;美团酒旅内部形成了一套完整的解决方案&#xff0c;…

LeetCode 1103. 分糖果 II

1. 题目 排排坐&#xff0c;分糖果。 我们买了一些糖果 candies&#xff0c;打算把它们分给排好队的 n num_people 个小朋友。 给第一个小朋友 1 颗糖果&#xff0c;第二个小朋友 2 颗&#xff0c;依此类推&#xff0c;直到给最后一个小朋友 n 颗糖果。 然后&#xff0c;我…

计算广告与推荐系统有哪些区别?

文 | King James本文已获作者授权&#xff0c;禁止二次转载计算广告和推荐系统总感觉有千丝万缕的关系&#xff0c;但是它们之间又有什么异同呢&#xff1f;话不多说&#xff0c;上图&#xff01;计算广告和推荐系统有交集&#xff0c;但是不能说推荐系统是计算广告的一部分。因…

解决cuda版本与pytorch版本不兼容问题

解决PyTorch与CUDA版本不匹配&#xff1a; 2 pytorch官网查看安装命令 https://pytorch.org/get-started/locally/ 如果你发现你的版本与上面的都不符合&#xff0c;可以点击 进入以前版本页面&#xff1a;https://pytorch.org/get-started/previous-versions/的安装命令&am…