Facebook 开源人工智能模型 RAG:可检索文档以回答问题

2020 年 10 月 13 日

Facebook 开源人工智能模型 RAG:可检索文档以回答问题

教会计算机理解人类如何写作、说话,即所谓的自然语言处理(Natural Language Processing,NLP),这是人工智能研究领域最古老的挑战之一。然而,过去两年,方法出现了明显的变化。过去,研究主要集中在为特定任务开发特定框架,而今天强大的通用语言模型已经可以针对各种各样的不同任务进行微调。虽然前景看好,但这方面的努力都已经将这些通用模型应用于人类无需额外补充背景知识就能产生解决方案的任务(如情感分析)。


构建一个研究和情境化的模型更具挑战性,但它对未来的进步至关重要。最近,我们在这个领域取得了实质性的进展,我们的 RAG(RetrievalAugmentedGeneration,检索增强生成)架构是一个端到端的可差异化模型,它结合了信息检索组件(Facebook AI 的基于稠密段落检索系统(dense-passage retrieval system)和 seq2seq 生成器(Facebook 的BART 模型(Bidirectional and Auto-Regressive Transformers,双向和自回归 Transformer ))。与最大的预训练 seq2seq 语言模型相比,RAG 可以在知识密集型下游任务上进行微调,达到最优结果。而且与这些预训练模型不同,RAG 的内部知识可以轻松地随时更改或补充,从而使研究人员和工程师控制 RAG 所知道的内容,而不会浪费时间或算力来重新训练整个模型。


结合开卷和闭卷的优势


RAG 的外观和行为类似于标准的 seq2seg 模型,这意味着它接受一个序列并输出相应的序列。不过,还有一个中间步骤,它将 RAG 与通常的 seq2seq 方法区别开来并提升。RAG 不是直接将输入传递给生成器,而是使用输入检索一组相关文档,在我们的例子中,是从维基百科(Wikipedia)检索的。


例如,给出提示“地球上第一个哺乳动物是什么时候出现的?”,RAG 可能会提供“哺乳动物”、“地球历史”和“哺乳动物进化”的文档。然后,将这些支持文档与原始输入作为上下文连接起来,并提供给生成实际输出的 seq2seq 模型。因此,RAG 有两个知识来源:seq2seq 模型在其参数中存储的知识(参数记忆)和存储在 RAG 段落检索语料库中的知识(非参数记忆)。


这两个来源相辅相成。我们发现,RAG 使用其非参数记忆来“提示”seq2seq 模型产生正确的响应,本质上结合了“闭卷”或纯参数方法的灵活性与“开卷”或基于检索的方法性能。RAG 使用一种后期融合的形式集成所有检索到的文档知识,这意味着它对文档-问题进行单独的答案预测,然后聚合最终的预测分数。最关键的是,使用后期融合允许我们将输出中的错误信号反向传播到检索机制,这可以实质性地显著提高端到端系统的性能。



将基于检索的组件与生成组件相结合,即使在纯粹的提取任务(如开放域 NaturalQuestions 任务)中也具有优势。当 RAG 可以访问包含正确答案线索的文档,但答案从未逐字说明时,性能也会提高,并且 RAG 甚至可以在某些情况下生成正确答案,而正确答案在任何文档都检索不到。我们用 RAG 在 NaturalQuestions、CuratedTrec 和 WebQuestions 上获得了非常好的结果,证明了最先进的机器阅读性能可以用生成式阅读器而不是提取式阅读器来实现。


RAG 确实擅长知识密集型的自然语言生成,我们通过生成“Jeopardy!”问题进行了探索。RAG 生成的“Jeopardy!”问题比同类最先进的 seq2seq 模型的问题更具体、更多样、更符合事实。我们认为,这是因为 RAG 有能力使用从多个来源获得的不同信息来合成一个响应。


RAG 的真正优势在于其灵活性。要改变预训练的语言模型所知道的内容,需要用新的文档对整个模型进行再训练。通过 RAG,我们可以通过交换知识检索所用的文档来控制它所知道的内容。我们将维基百科的原始数据集换成一个旧的数据集,然后问一些问题,比如,“谁是冰岛的总理?”,对这种行为进行测试。结果表明,尽管参数知识保持静态,但 RAG 还是利用交换语料库中的知识来调整其答案。在事实(或我们对事实的理解)随时间演变的情况下,这种自适应方法是非常有价值的。


消除研究中的训练开销


如果人工智能助手要在日常生活中扮演更有用的角色,它们不仅需要能够访问大量的信息,更重要的是,能够访问正确的信息。考虑到世界的发展速度,事实证明,这对于预训练的模型具有挑战性,即使是很小的变化,也需要不断的计算密集型再训练。RAG 允许自然语言处理模型绕过再训练步骤,访问并提取最新的信息,然后使用最先进的 seq2seq 生成器输出结果。这种融合应该会使未来的自然语言处理模型更具适应性,而且我们确实已经从 Facebook 的人工智能相关研究项目 Fusion-in-Decoder 中看到了成果。


我们认为 RAG 具有广阔的潜力,这就是我们今天发布它作为 Hugging Face Transformer 库的一个组件的原因。Hugging Face 的Transformer已经成为开源自然语言处理中事实上的标准,这要归功于它较低的进入门槛和对最新模型的覆盖,并且它与新的Datasets库集成,以提供 RAG 所依赖的索引知识源。现在,随着 RAG 的加入,我们相信社区将能够基于检索的生成应用于我们已经探索过的知识密集型任务和一些我们甚至还没有想到的任务。




RAG 解放了研究人员和工程师,使他们能够快速开发和部署解决方案,以完成自己的知识密集型任务,而这些任务只需五行代码即可完成。我们可以预见未来对知识密集型任务的研究潜力,这些任务就像今天的情绪分析这样的轻量级知识任务一样简单易懂。


作者介绍:


Sebastian Riedel,研究主管;Douwe Kiela,研究科学家;Patrick Lewis,FAIR 博士生;Aleksandra Piktus,软件工程师。


原文链接:


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


2020 年 10 月 13 日 08:001254

评论

发布
暂无评论
发现更多内容

架构师作业

老姜

极客大学架构师训练营

极客时间第0期架构师训练营第一周作业1

2流程序员

架构师训练营-学习总结-第一讲

吕浩

学习 极客大学架构师训练营

架构师训练营第一周 - 食堂就餐卡系统设计

Eric

极客大学架构师训练营

程序员为什么技术这么厉害,赚得钱却不多?

金刚小书童

职业规划 技术管理 程序员成长 程序员次第 高级程序员

食堂就餐卡系统架构设计文档

冯凯

极客大学架构师训练营

食堂就餐卡系统设计文档

架构5班杨娟Jessie

极客大学架构师训练营

架构与UML总结

GalaxyCreater

带你了解 Ribbon 负载均衡器的实现

张晓辉

Spring Cloud

架构训练营第一周学习总结

陈靓-哲露

第一周学习总结

CP

作业一:食堂就餐卡系统设计

Safufu

食堂就餐卡系统架构设计

James-Pang

极客大学架构师训练营

第一周作业--食堂就餐卡系统系统

南宫煌

极客大学架构师训练营 UML

第一周学习总结

王铭铭

第一周学习总结

冯凯

极客大学架构师训练营

2020/06/09 架构师学习心得

架构5班杨娟Jessie

极客大学架构师训练营

食堂就餐卡系统设计

傻傻的帅

系统设计

架构师训练营学习总结

王凯

架构师训练营第一周总结

路人

架构师训练营-第一章-uml练习作业

而立

极客大学架构师训练营

架构师第一周作业

路人

plantUML的安装和使用

南宫煌

极客大学架构师训练营

架构师训练营学习心得【第一周】

王海

极客大学架构师训练营

架构师训练营No.1周总结

连增申

食堂就餐卡-系统设计文档

王凯

【架构师训练营-周总结-1】

小动物

总结 极客大学架构师训练营

架构师训练营-作业2-学习总结

狂奔嘀兔纸

极客大学架构师训练营

架构师训练营第一周作业

陈靓-哲露

架构师训练营第一周作业

不谈

极客大学架构师训练营

架构师课作业-第一周-架构文档

Tulane

极客大学架构师训练营

Facebook 开源人工智能模型 RAG:可检索文档以回答问题-InfoQ