RAG开山之作

检索增强生成(RAG):让智能自然语言处理模型的创建更加高效

Meta AI 博客 · 2020 年 9 月 28 日

作者:Patrick Lewis、Ethan Perez、Aleksandra Piktus、Fabio Petroni、Vladimir Karpukhin、Naman Goyal、Heinrich Küttler、Mike Lewis、Wen-tau Yih、Tim Rocktäschel、Sebastian Riedel、Douwe Kiela

原文:https://ai.meta.com/blog/retrieval-augmented-generation-streamlining-the-creation-of-intelligent-natural-language-processing-models/


让计算机理解人类如何书写和说话——也就是自然语言处理(NLP)——是 AI 研究中最古老的挑战之一。不过,过去两年里研究方法发生了明显转变:研究重心曾经放在为特定任务开发专用框架,如今强大的通用语言模型通过微调就能适配各种各样的任务。

这条路线虽然充满希望,但到目前为止,这类通用模型被应用到的任务(比如情感分析),人类不需要额外背景知识也能得出答案。

构建一个会”查资料、结合上下文”的模型要难得多,却是未来取得进展的关键。最近,我们用 检索增强生成(Retrieval Augmented Generation,RAG) 架构在这一领域取得了实质性进展——它是一种端到端可微分的模型,把信息检索组件(Facebook AI 的稠密段落检索系统 DPR)和一个 seq2seq 生成器(我们的双向自回归 Transformer,BART 模型)组合在一起。

RAG 可以在知识密集型的下游任务上微调,即使和最大的预训练 seq2seq 语言模型相比,也能取得 state-of-the-art 的结果。而且与这些预训练模型不同,RAG 的内部知识可以随时被轻易替换甚至补充——研究人员和工程师不用浪费时间和算力重新训练整个模型,就能控制 RAG “知道什么、不知道什么”。

兼具”开卷”和”闭卷”之长

RAG 看起来和行为上都像一个标准的 seq2seq 模型:输入一段序列,输出对应的序列。但中间多了一步,正是这一步把它和普通 seq2seq 方法区分开来、又提升了一个层次——

它并不是把输入直接交给生成器,而是先用输入去检索一组相关文档(在我们的例子里来自 Wikipedia)。

比如给定问题 “地球上最早的哺乳动物是何时出现的?”,RAG 可能检索出 “Mammal(哺乳动物)”、”History of Earth(地球史)”、”Evolution of Mammals(哺乳动物演化)” 这些文档。这些支持文档随后与原输入拼接成上下文,一起送进负责生成最终输出的 seq2seq 模型。因此 RAG 拥有两个知识来源:

  • 参数化记忆(parametric memory):seq2seq 模型存储在参数里的知识
  • 非参数化记忆(nonparametric memory):RAG 检索段落的语料库中存储的知识

这两者互补。我们发现 RAG 用它的非参数化记忆去”提示”seq2seq 模型生成正确回答,本质上把”闭卷”(纯参数化)方法的灵活性与”开卷”(基于检索)方法的性能结合了起来。

RAG 采用一种 late fusion(后融合) 方式来整合所有检索到的文档知识——也就是说,它对每个”文档-问题”对分别做出回答预测,再汇总最终预测分数。关键之处在于,late fusion 让我们能把输出的误差信号反向传播到检索机制上,从而大幅提升端到端系统的性能。

把检索组件和生成组件结合到一起,即使在纯抽取式任务(比如开放域 NaturalQuestions 任务)上也有优势。当 RAG 能访问到”包含正确答案线索、但答案从未被逐字写出”的文档时,性能会提升;甚至在某些情况下,检索到的任何文档里根本找不到正确答案,RAG 依然能生成正确的回答。我们在 NaturalQuestions、CuratedTrec 和 WebQuestions 上取得了非常好的结果,证明了用一个生成式(而非抽取式)的 reader,也能达到 state-of-the-art 的机器阅读理解表现。

不过 RAG 真正擅长的,是知识密集型的自然语言生成(NLG)。我们通过生成 Jeopardy!(《危险边缘》)题目的方式做了探索:RAG 生成的题目,比同级别的前沿 seq2seq 模型生成的更具体、更多样、也更符合事实。我们推测这是因为 RAG 有能力用取自多个来源的零散信息综合出一个回答。

RAG 真正的强项在于它的灵活性。要改变一个预训练语言模型的知识,意味着要用新文档重新训练整个模型;而用 RAG,我们只需换掉它用来做知识检索的文档,就能控制它知道什么。我们通过”把原来的 Wikipedia 数据集换成一个旧版本、然后提问’谁是冰岛总理'”的方式测试了这个行为,结果显示 RAG 利用了换入语料库里的知识来调整回答,尽管它的参数化知识保持静止不变。在事实(或我们对事实的理解)随时间演变的场景下,这种自适应能力极其宝贵。

从研究中剔除训练开销

AI 助手若要在日常生活中发挥更大作用,不仅需要访问海量信息,更重要的是访问到正确的信息。考虑到世界变化的速度之快,这对那些哪怕只做微小改动也需要持续、高算力重训练的预训练模型来说是个挑战。RAG 让 NLP 模型绕过了重训练这一步——访问并汲取最新信息,再用前沿的 seq2seq 生成器输出结果。这种融合应该会让未来的 NLP 模型更具自适应性;事实上,我们已经在 Facebook AI 的相关研究项目 Fusion-in-Decoder 上看到了很好的结果。

我们看到了 RAG 的广阔潜力,因此今天把它作为 Hugging Face transformers 库的一个组件发布。Hugging Face 的 Transformers 库凭借低入门门槛和对前沿模型的全覆盖,已经成为开源 NLP 的事实标准,它还与新的 Datasets 库集成,为 RAG 提供其所依赖的索引化知识源。随着 RAG 的加入,我们相信社区将能够把基于检索的生成应用到我们已经探索过的知识密集型任务,甚至一些我们还没想象到的任务上。

RAG 让研究人员和工程师只需五行代码就能快速开发并部署各自知识密集型任务的解决方案。我们预见,未来的知识密集型任务研究,会变得像今天情感分析这类轻知识任务一样简单、易上手。

我们将在今年 12 月的 NeurIPS 2020 上展示 RAG,同时期待看到社区的反馈。此外,我们还计划继续这条路线——改进 RAG 的检索组件、扩展检索语料库和模型规模、并提升 RAG 在知识基准(如我们最近发布的 KILT benchmark)上的整体表现。


核心要点速记(面试向)

维度要点
RAG = 什么端到端可微模型 = DPR(检索)+ BART(seq2seq 生成)
两类记忆参数化(模型参数里)+ 非参数化(检索语料库)互补
late fusion对每个 doc-question 对独立预测再汇总,误差可反传回检索器
最大优势换文档即可更新知识,无需重训练整个模型
应用NaturalQuestions / WebQuestions / Jeopardy! 问题生成,均 SOTA

这是 RAG 的开山之作博客(Lewis et al., 2020)。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇