精彩!Facebook开源RAG,绕开重新训练,轻松修改已训练模型丨NeurIPS 2020

AMiner平台由清华大学计算机系研发,拥有我国完全自主知识产权。平台包含了超过2.3亿学术论文/专利和1.36亿学者的科技图谱,提供学者评价、专家发现、智能指派、学术地图等科技情报专业化服务。系统2006年上线,吸引了全球220个国家/地区1000多万独立IP访问,数据下载量230万次,年度访问量超过1100万,成为学术搜索和社会网络挖掘研究的重要数据和实验平台。

今天和大家分享Facebook AI Research发表于NeurIPS 2020的工作《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》。虽然NLP在过去几年中突飞猛进,从为特定任务设计定制化的框架,再到如今各种基于海量语料无监督预训练而得到的强大通用语言模型,这些模型通过微调即可应对各种NLP任务。这些模型充满潜力,但它们也有三个主要缺点:

(1) 不能轻易地扩展或修正模型的记忆;

(2) 预测结果的可解释性差;

(3) 偶尔产生“幻觉”(hallucinations),即生成结果不可控。

为此,Facebook AI Research 联合卡耐基梅隆大学和纽约大学提出**检索增强生成(Retrieval Augmented Generation,RAG)**架构。RAG 是一种将信息检索与 seq2seq 生成器结合在一起的端到端可微模型。其中的信息检索系统是[dense-passage retrieval system],seq2seq生成器则是使用 [BART]模型,这两部分都是Facebook AI之前的研究成果。即使与最大的预训练 seq2seq 语言模型相比,RAG在知识密集型下游任务上的微调结果仍能刷新各项记录。与这些预训练模型不同的是,RAG的内部知识可以轻松地随时更改或补充,从而控制 RAG 知识的取舍,而无需浪费时间或算力重新训练整个模型。

模型介绍

从输入和输出看,RAG很像是一个标准的 seq2seq 模型。不过RAG还有一个中间步骤,RAG没有将输入直接传递给生成器,而是使用输入来检索一组相关文档,文章这里使用Wikipedia作为检索的文档数据源。一般而言,如果想要更改已经预训练好的语言模型所学的内容,需要使用新文档对整个模型进行重新训练。所以,RAG的这项优势确实得天独厚!RAG模型整体架构如下图所示:

AltFigure 1:retrieval-augmented generation (RAG)的整体框架。

RAG联合预训练的retriever (Query Encoder + Document Index)和预训练的生成器,能够进行端到端的微调。给定输入x,根据Maximum Inner Product Search (MIPS)寻得Top K个最相关文档z_i。预测最终输出y的时候将z作为隐变量,给定不同文档下计算对应的边缘概率。

比如输入问题是:“地球上第一个哺乳动物是什么时候出现的?”,RAG可能先用检索系统召回“哺乳动物”、“地球历史”和“哺乳动物的进化”相关文档。然后,这些文档作为上下文与原始输入拼接起来,再输入到seq2seq模型。为此,RAG有两个知识来源:

(1)以参数形式存储于seq2seq模型的知识(参数记忆)

(2)用检索系统召回的语料库中的知识(非参数记忆)。

由于中间步骤的存在,使得RAG的内部知识能够被扩展甚至改动。参数记忆由预训练的seq2seq transformer(具体到文章中是BART)提供,非参数记忆由预训练的神经检索器作用于 Wikipedia 的密集向量索引组成。这两种知识来源相互补充。RAG使用非参数记忆来“提示”seq2seq模型来生成正确的响应,本质上是将参数方法的灵活性与基于检索方法的性能结合起来。非参数记忆的使用让RAG擅长知识密集型任务的自然语言生成。RAG在后期使用融合的形式来整合来自所有检索文档的知识,这意味着会对每个document-question对做出单独的预测,然后聚合最终的预测分数。很重要的一点是,融合步骤可以将输出中的错误信号反向传播给检索系统,这可以大大提高端到端系统的性能。

如果RAG能够访问包含正确答案线索的文档,但这些文档的答案从来没有被一字不差阐述过,那么RAG的性能就会提高。在某些情况下,即使检索到的文档不包含答案,RAG也能够生成答案。

由于召回的文档作为隐变量,那么有2种方式可以将其边缘化:RAG-Sequence和RAG-Token。RAG-Sequence在预测每个token的时候使用相同的文档,而RAG-Token在预测每个token的时候使用不同的文档。这两种模型的公式如下所示,其中x为输入,y为预测的输出,z表示文档集。

Alt
Alt

实验结果

文章评测RAG的时候用了大量的知识密集型任务,包括开放域问答、生成式问答(Abstractive Question Answering)、Jeopardy 问题生成和事实验证,每一个都使用单一的Wikipedia dump文件作为它们的非参数知识库。RAG在NaturalQuestions(NQ)、CuratedTrec和WebQuestions(WQ)上获得了非常好的结果,并证明可以通过生成式而非抽取式也能够斩获最先进的机器理解性能。

RAG在开放域问答任务上使用了Natural Questions (NQ)、TriviaQA(TQA)、WebQuestions(WQ)、和 CuratedTrec (CT)这4个数据集。使用的评价指标是Exact Match (EM)。各模型在开放域问答上的实验结果如 Table 1 所示:

Alt
Table 1:开放域问答中各个数据集的 Test data上的得分。TQA的左列使用开放域问答中常用的测试分割。右列使用隐藏的TQA Wiki测试分割。

可以看出,RAG在所有四个开放域问答任务上都取得SOTA的结果。

生成式问答、Jeopardy 问题生成 和事实验证任务的实验结果如Table 2所示。其中生成式问答使用的数据集是MS-MARCO,Jeopardy问答生成数据集来自于SearchQA,这两类问题生成任务的评价指标都是Q-BLEU-1(是BLEU-1的变体)。事实验证任务(是一个分类任务)使用的数据集是FEVER,使用的评价指标是accuracy。

Alt
Table 2:生成任务和分类任务test data上的得分。由于FEVER是一个分类数据集,因此RAG-Token和RAG-Sequence是等价的。

在Jeopardy问题生成上,RAG在Q-BLEU-1指标上优于BART。此外,从人类的评测指标上来看,RAG生成的Jeopardy问题更加具体、多样化和真实。这可能是源于RAG能够利用不同来源的零散信息。

RAG真正的力量在于它的灵活性。此前如果想要更改预训练好的语言模型所学到的内容,需要使用新的文档对整个模型重新训练。使用RAG则可以通过交换用于知识检索的文档来控制所知道的内容。比如用旧的Wikipedia数据替换原始数据集,然后问一些问题,比如“谁是冰岛总理?”。结果表明,即使参数化知识保持不变,RAG仍然能够利用新插入的语料库中的知识来调整答案。这种自适应方法在随时间而变的场景下(包括事实或者对事实的理解)是非常宝贵的。

总结

真实世界随着时间变化,而常见的预训练模型难以应对这种变化的局面。传统预训练模型即使面对微小的变化也需要耗费大量算力进行重新训练。RAG的出现使得NLP模型可以绕开重新训练的步骤,并访问和获取最新的信息,再使用先进的seq2seq生成器生成结果。这种融合将使未来的NLP模型具有更强的适应性。事实上,Facebook另一个相关的人工智能研究项目——融合解码器(Fusion-in-Decoder)中已经初见端倪。未来可期!

最后,Facebook还联合Hugging Face在著名的Transformers库上发布RAG,尝鲜体验:https://huggingface.co/transformers/master/model_doc/rag.html?fbclid=IwAR25G7bkhxOUylW0aHEz_B9ZB0WR5hCBJaW7IPRSKzmr09dTd5f0m7JXSZc

论文地址:https://www.aminer.cn/pub/5ecce8d991e0119170395aab?conf=neurips2020

GitHub地址:https://github.com/huggingface/transformers

想要了解更多 NeurIPS 2020 论文,请移步这里