目录

  • 引言
  • 模型结构
    • 第一部分:Retriever
    • 第二部分:Generator
  • 实验结果
    • 结果分析
  • 总结

引言

在问答和对话的场景下,通常可以通过检索和生成两种方式得到一个回复。检索式回复是在外部知识库中检索出满意的回复,较为可靠和可控,但回复缺乏多样性;而生成式回复则依赖于强大的语言模型中储存的内部知识,不可控,解释性差,但能生成更丰富的回复。把检索和生成结合起来,Facebook AI research 联合 UCL 和纽约大学于 2020 年提出外部知识检索加持下的生成模型,Retrieval-Augmented Generation (RAG)

论文名称:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
论文地址:http://arxiv.org/abs/2005.11401
论文代码:https://github.com/huggingface/transformers/tree/master/examples/research_projects/rag

模型结构

RAG 由两部分组成,第一部分负责根据 query x x x 检索出 top-k 个匹配的文档 z i z_i zi​,第二部分将 query 和文档拼接起来送入 seq2seq 模型,生成回复 y y y。

第一部分:Retriever

在第一部分 Retriver 中,RAG 通过两个不同的 BERT 把外部知识和 query 嵌入为稠密向量,做内积得到内积最大的 k 个文档。将 query 和文档拼接起来组成 k 个输入,作为第二部分的输入。

第二部分:Generator

在第二部分 Generator 中,有两种使用文档的方式,第一种是使用同一个文档生成每个词,先确定一个文档 z i z_i zi​,然后计算 p ( y ∣ x , z i ) p(y|x,z_i) p(y∣x,zi​);第二种是使用不同的文档生成每个词,对于第 i i i个位置,候选词的概率等于所有文档的条件概率之和,即计算候选词对文档的边际概率。
第一种称为 RAG-Sequence model:

第二种称为 RAG-Token model:

BART 是一个基于完整的 transformer 预训练模型,使用去噪作为预训练任务。作者选用 BARTlarge 作为 RAG 的生成器。

在训练过程中,只有负责嵌入 query 的 BERT 和负责生成的 BART 参与微调更新参数,负责嵌入外部知识的 BERT 不用更新参数。在测试过程中,RAG-Token model 在计算当前词的概率时,前面位置候选词的概率已经完成计算了。因此,RAG-Token model 如同朴素的生成模型一样使用 beam search 解码。而 RAG-Sequence model 要遍历完所有文档才能得到每个位置候选词的概率。因此需要对每个文档使用 beam search 解码,然后再整合。

实验结果

作者在四个知识密集型的任务上测试了 RAG 的性能,统一使用维基百科(包含2100万个文档)作为外部知识:

  • Open-domain question answering:开放域问答,指没有参考文档的问答。从 Table 1 来看,RAG 在大部分数据集上表现最好;
  • Abstractive question answering:抽取式问答,是从数据集给的文档中选取一些词作为回答。在实验中,作者丢弃了数据集提供的文档 gold context,把抽取式问答当作了开放域问答。从 Table 2 的 MSMARCO 来看,RAG 不敌加了 gold context 的模型,但比朴素的 BART 表现好;
  • Jeopardy question generation:开放域问题生成,前面两个任务都是根据问题生成回答,这个任务是根据回答生成问题;
  • Fact verification:一个三分类推理任务,推理一段陈述被维基百科支持/被维基百科否认/无法判断。

结果分析

总体来看,RAG 在开放域回答和开放域问题生成上取得较好的成绩,而在依赖于 gold context 的任务上表现较差。与 BART 的结果对比可以发现,作者融合检索外部知识可以提高模型性能。同时,RAG 在生成句子的质量上也可圈可点。
从生成的结果可以看到,对比 BART,RAG 可以生成不重复、多样化和准确的回答。

RAG 的可解释性可以体现在解码过程中,文档对候选词的影响。分析候选词的概率可以发现,外部知识负责指导生成的大概内容,然后模型的内部知识负责生成具体的回复。例如,生成“sun”的时候,第二个文档占主导,而在解码“sun”后面的单词时,文档的概率都不高,说明是模型的内部知识在起作用。作者也通过朴素的 BART 来验证了这一观点。

总结

  • 在需要借助外部知识才能进行的生成任务上,RAG 表现出细致多样的生成能力,并在三个开放域问答任务上取得了 SOTA 的成绩;
  • 对比 T5 和 BART,RAG 更新外部知识是低成本的;
  • RAG 的 Retriver 使用稠密向量进行检索,作者也尝试直接使用基于重复词的检索算法 BM25,发现 BM25 只有在 fact verification 任务上比稠密向量好;
  • RAG 为我们提供了外部知识和内部知识如何交互的新思路,虽然作者只在问答任务中进行实验,但 RAG 也可以应用于其他 NLP 任务。例如,在闲聊对话系统中,RAG 可以让回复更加可控可解释,回答更丰富。

RAG 已成为检索融合生成的经典范例,而且还有进一步发展的空间,相信未来检索融合生成的工作会越来越多。

【论文笔记】检索还是生成回复?RAG:我都要相关推荐

  1. 《A Point Set Generation Network for 3D Object Reconstruction from a Single Image》论文笔记_2D图像生成3D点云

    摘要 通过深度神经网络生成3D数据已在研究界引起了越来越多的关注. 现存的大多数作品都采用常规表示法,例如体积网格或图像收集: 但是,这些表示法掩盖了3D形状在几何变换下的自然不变性,并且还遭受许多其 ...

  2. 【论文笔记】基于生成对抗网络的强化学习算法的研究

    目录 摘要 关键词 0 引言 1 相关理论 1.1 强化学习理论 1.2 生成对抗网络理论 1.3 基于生成对抗网络的强化学习算法 1.3.1 算法总体结构框架 2 实验与分析 3 总结 摘要 解决: ...

  3. LeetCode刷题笔记:1374.生成每种字符都是奇数个的字符串

    1. 问题描述 给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 . 返回的字符串必须只含小写英文字母.如果存在多个满足题目要求的字符串,则返回其中任意 ...

  4. [论文笔记]弱监督条件下基于相似性条件学习的服饰搭配生成

    论文:<Learning Similarity Conditions Without Explicit Supervision> 论文地址:https://arxiv.org/pdf/19 ...

  5. 论文笔记--跨模态检索研究综述-2018

    论文信息: 期刊论文-跨媒体检索研究综述-2018-欧卫华 文末部分参考文献附有论文下载链接,并提供了本论文下载地址 转载本文请添加以下引用: 作者:lingpy 本文链接:https://blog. ...

  6. 论文笔记-对话系统综述

    原文出自彼得攀的小站 本文是对论文"A Survey on Dialogue Systems: Recent Advances and New Frontiers"的阅读笔记,该文 ...

  7. 论文笔记:WORD TRANSLATION WITHOUT PARALLEL DATA

    引用文章 Facebook MUSE 无监督跨语言迁移学习任务 face - Word Translation without Parallel Data 文献阅读笔记:Word Translatio ...

  8. 论文笔记(二十二):Soft Tracking Using Contacts for Cluttered Objects to Perform Blind Object Retrieval

    Soft Tracking Using Contacts for Cluttered Objects to Perform Blind Object Retrieval 文章概括 摘要 1. 介绍 2 ...

  9. 论文笔记:Editing-Based SQL Query Generation for Cross-Domain Context-Dependent Questions

    论文笔记:Editing-Based SQL Query Generation for Cross-Domain Context-Dependent Questions 目录 论文笔记:Editing ...

最新文章

  1. 骆驼命名法,帕斯卡命名法和匈牙利命名法(转)
  2. python查询数据库,打印查询结果过程中出现'NoneType' object is unsubscriptable
  3. Maven之(二)Maven生命周期
  4. mysql怎么修改表中的文字_mysql表中怎么修改字段?
  5. 为了找工作的学习计划
  6. sharepoint修改主机名以后出现cannot connect to the configuration database错误
  7. 通过开放重定向接管 GitHub Gist 账户,获奖$1万(GitHub $6.1万奖金系列之三)
  8. mysql批量生成随机姓名、手机号等数据
  9. 百度如流首发AI智能办公标准 ,BATH持续发力企业办公
  10. MFC中List控件
  11. Python爬虫之小说信息爬取与数据可视化分析
  12. python基础教程_python基础教程百度网盘
  13. 程序员也要学英语——数词攻略
  14. 将hexo博客部署到阿里云服务器
  15. Sothink SWF Decomplier v7.4.5320 Cracked By char_star
  16. 用配置文件配置数据源出现的access denied for user ‘root‘@这个问题的解决办法
  17. MP4格式及在MP4文件中提取H264的SPS、PPS及码流
  18. 2021年安全员-B证新版试题及安全员-B证证考试
  19. 如何下载微软虚拟学院MVA字幕
  20. matlab中的eps函数详解

热门文章

  1. UUID是什么及其获取方式
  2. 尚硅谷Python自学笔记
  3. 如何给图片添加水印?PhotoBulk for Mac批量给图片添加水印的图文教程
  4. apache2修改根目录及主页
  5. 阿里P8大牛亲自讲解!java实战第二版pdf下载
  6. listbox selectedindex 总是返回 0 / -1
  7. 备份utu信息丢失_关于数据丢失和家庭备份策略
  8. 智能无人机课程用的是研扬TX2底板+TX2核心板
  9. SpringBoot中无法用@Value获取yml中的配置值的原因
  10. MapboxGL——marker轨迹动画效果,自定义速度。暂停继续轨迹运动