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

目录

  • 引言
  • 模型结构
    • 第一部分: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
【论文笔记】检索还是生成回复?RAG:我都要_第1张图片

第一部分: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(yx,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:我都要_第2张图片

结果分析

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

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

总结

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

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

你可能感兴趣的:(自然语言处理,深度学习,机器学习)