
今天和大家分享 Facebook 发表于 NeurIPS 2020 的工作,既然『闭卷考试』不理想,那不如『开卷答题』?

「Key insight:」 虽然以GPT-3为代表的预训练语言模型可以看作是一个隐式的大规模知识库,但这些模型在知识密集型任务上的表现依旧有不少限制和不足。本文作者在此基础上提出了RAG模型,该模型引入了文档检索模块和外部知识库来增强生成式语言模型在知识密集型任务上的表现,并避免了大规模预训练模型的一些缺点,具有很不错的应用价值和前景。
Arxiv访问不方便的同学可以后台回复『0006』便捷获取论文喔

提醒: 微信深色模式下,有些公式会看不清,建议在正常模式下(白底)阅读本文~
近两年来,大规模通用预训练语言模型的出现刷新了整个NLP领域的模型范式(预训练+微调),实验表明预训练语言模型能够从海量数据中学习到广泛的世界知识,「这些知识以参数的形式存储在模型中,经过适当的微调就能在下游任务中取得SOTA表现,而不需要访问或检索额外的外部知识库」,比如GPT-3就可以被当作是一个参数化的大规模隐式知识库。
但是,这类通用语言模型在处理「知识密集型(knowledge-intensive)」 任务时仍旧存在一定的局限性,常常落后于面向特定任务的模型结构。所谓的知识密集型任务,就是指「如果不依靠外部知识,即使是人类也不能取得很好的表现」,因此模型容量再大,也很难记住所有知识,但是人类虽然记不住所有知识,却知道去哪里获取这些知识。
退一步讲,即使模型容量大到能够装下所有知识,「我们也很难方便地扩展或修改这些知识」,因为这些知识是分布式地存储或隐含在模型的所有参数中的,如果我们想让模型知道当前的美国总统变成拜登了,我们就必须想办法去微调模型并验证模型的确更新了相关知识。
另外,「我们很难解释模型是如何做出预测的,也很难控制模型给出的结果,无法保证模型不会给出意外的回复。」 假如GPT-3给出了带有种族歧视的回复,我们就很难去纠正模型不要生成这类回复。
综上,在当前的知识密集型任务的研究中,具有实用价值的模型基本都依赖于外部知识库,「开放域问答系统(Open-domain QA)」 是最经典也最重要的知识密集型任务之一,目前的SOTA模型基本都包含两个模块:文档检索器和文档阅读器,前者负责检索召回和查询相关的文档,后者负责从这些文档中编辑或抽取出答案片段。「这种检索-抽取范式类似于开卷考试,而单纯依靠模型参数来保存知识类似于闭卷考试」,前者当然要简单可靠得多。
既然单纯靠参数来存储知识效果还不太好,那有没有方法利用外部知识库来增强预训练模型的表现呢?因此,人们想到可以将参数记忆(模型参数)和非参数记忆(外部数据库)结合起来,这样,知识既可以直接扩展和修改,减小训练开销,模型给出的答案也变得更容易检查和解释,同时模型也更富有灵活性。REALM: Retrieval-Augmented Language Model Pre-Training (2020)[3]就将BERT预训练模型和一个可微的检索模型结合起来实现了这一思路,但「REALM只探索了抽取式开放域问答」。而本文作者面向更难的「生成式开放域问答」,提出了基于seq2seq结构的「检索增强生成模型(retrieval-agumented generation, RAG)」。
与一般的seq2seq模型不同,RAG将输入的查询编码以后并没有直接将其送到解码器中,而是基于查询从外部知识库中检索出一组相关文档,然后将这些文档编码后和查询拼在一起输入到解码器中,生成自然语言形式的回复。这样的方式相当于为参数化的seq2seq模型赋予了检索式的非参数记忆,总结起来就是「拿到问题后先查资料再答题」,因此GPT-3和RAG虽然同为NLG模型,但RAG给出的回复是「有理有据」的,我们可以从模型检索到的文档中直接验证回复的正确性。有趣的是,作者的实验结果表明生成式的RAG在抽取式QA任务上甚至超越了一些抽取式的SOTA模型。

RAG的整体框架并不复杂,它包含两个部分,检索器(retriever):
和生成器(generator):
。首先输入查询句
,检索出
个最相关的文档并编码为
来近似文档先验分布
,然后以
和
为条件以自回归的方式生成目标句
。整个Seq2Seq结构的参数就是模型的参数知识,而外部知识库(纯文本)就是模型的非参数知识。
RAG的检索器
采用的是Dense Passage Retrieval for Open-Domain Question Answering (EMNLP 2020)[4] 提出的DPR检索模型,DPR包括一个查询编码器和一个文档编码器:
其中
和
是两个不同的BERT生成的稠密表示,计算先验概率
最高的前
个文档
是一个「最大内积搜索问题(Maximum Inner Product Search, MIPS)」,我们可以使用「近似最近邻(ANN)」 在亚线性时间复杂度内获取高精度的近似解(Billion-scale similarity search with GPUs (2017)[5])。
RAG的生成器
可以是任意的encoder-decoder模型,比如T5和BART,作者采用了更先进一些的BART[6]模型。生成器的输入很简单,就是将查询表示
和文档表示
拼接起来。
输入一批用于微调的训练样本
, 模型的训练目标为最小化负边际对数似然
,需要注意的是,我们并不会提供针对某个查询,模型应该检索出哪些文档的监督信息,因为这种标签在实际应用场景下通常是不存在的。
另外,由于文档编码器的训练比较耗费时间,因为每次微调后都得重新建立MIPS索引,并且不训练它对模型最终表现影响不大,所以作者只微调了查询编码器和生成器。为了端到端地联合训练检索器和生成器,我们可以将检索到的文档看作是潜在变量
,以概率的方式建模边际似然
,
有下面两种计算方法:
当任务的输出长度为1时(比如在分类任务中可以将类别看作是长度为1的序列),RAG-Sequence和RAG-Token等价。
在测试阶段,RAG-Sequence和RAG-Token以不同的方式来近似
:
不能分解为每个词的条件概率乘积,我们需要针对每个文档表示
运行beam search,得到一个候选集
,为了估计候选集中每个
相对于每个文档的生成概率,作者提出了两种解码方式:Thorough Decoding和Fast Decoding,前者对那些未出现在其他文档beam seach路径的
重新计算生成概率,后者将这部分概率直接近似为
。
在下面的实验中,模型使用的外部知识库均为2100万个Wikipedia文档,每个文档包含100个词。在训练之前,首先用文档编码器获取文档的稠密向量表示,然后利用 FAISS[7] 构建MIPS索引实现文档的快速检索。
作者在开放域问答(Open-domain QA)、生成式问答(Abstractive QA)、开放域问题生成(Open-domain QG)和事实验证(Fact Verification)这四类知识密集型任务上测试了不同模型。不同任务的特点如下:
在开放域问答任务中,作者对比了RAG和一些流行的抽取式QA模型,包括依赖于非参数知识(Open Book)的REALM和DPR,以及仅依靠参数知识(Closed Book)的生成式模型T5,评估指标为EM分数。在其余三项任务中,作者还对比测试了BART模型和利用了文档监督信息的SOTA模型。

下面是一些主要结论:



为了评估文档检索机制的有效性,作者对比了基于BM25的检索器和冻结了检索器的模型。实验结果表明训练检索器对所有生成任务都是有帮助的,但在事实验证任务上BM25表现却是最好的,这可能是因为该任务主要以实体为中心,因此非常适合基于单词重叠的BM25检索器,所以数据集的特征对于模型的选择还是很重要的。

检索文档的数量
会对模型表现产生一定影响,如下图所示,对于RAG-Token来说,
值过大会带来一些负面影响,同时会导致Rouge-L分数提升,但BLEU-1分数降低,而RAG-Sequence就不存在这些问题。

除了RAG的检索式增强范式,引入外部知识来增强模型的方式还有很多,比如在预训练模型还没有流行起来的2017年,风靡一时的记忆网络(Memory Networks)就在QA任务上得到了不少运用。
但这些网络都需要在特定任务上进行额外的训练才能使用,这个过程可以类比于对外部知识做一个"小抄",如果训练不当,质量也许还不如"先检索再理解"的方式好,而RAG模型也正表明了「靠预训练和预加载就可以以很小的代价获取知识的高质量表示」。
同时,「这样的方式也更具有可读性和可解释性,因为知识是以纯文本而不是分布式表示的形式存放的,因此可以随时更新文档内容而不需要重新训练任何模块」,这样的能力在时事问答场景下(比如美国现任总统是谁?)是很有价值的。

[1]
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks: https://arxiv.org/abs/2005.11401
[2]
huggingface/transformers: https://huggingface.co/facebook/rag-token-base
[3]
REALM: Retrieval-Augmented Language Model Pre-Training (2020): https://arxiv.org/abs/2002.08909
[4]
Dense Passage Retrieval for Open-Domain Question Answering (EMNLP 2020): https://arxiv.org/abs/2004.04906
[5]
Billion-scale similarity search with GPUs (2017): https://arxiv.org/abs/1702.08734
[6]
BART: https://arxiv.org/abs/1910.13461
[7]
FAISS: https://arxiv.org/abs/1702.08734
[8]
危险边缘: https://en.wikipedia.org/wiki/Jeopardy!
[9]
Language models as knowledge bases? (EMNLP-IJCNLP 2019): https://www.aclweb.org/anthology/D19-1250/
[10]
How Much Knowledge Can You Pack Into the Parameters of a Language Model? (2020): https://arxiv.org/abs/2002.08910
[11]
The Next Decade in AI: Four Steps Towards Robust Artificial Intelligence (2020): https://arxiv.org/abs/2002.06177
[12]
Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs (2016): https://arxiv.org/abs/1603.09320
[13]
danqi/acl2020-openqa-tutorial: https://github.com/danqi/acl2020-openqa-tutorial
腾讯云网站各个云产品页、活动页的链接都可以作为插入的超链接。比如云服务器,云硬盘,数据库(包括MySQL、Redis、MongoDB、SQL Server),CDN流量包,短信流量包,cos资源包,消息队列ckafka,点播资源包,实时音视频套餐,网站管家(WAF),大禹BGP高防(包含高防包及高防IP),云解析,SSL证书,手游安全MTP,移动应用安全、 云直播等等。