关于前面的文章阅读《When to Retrieve: Teaching LLMs to Utilize Information Retrieval Effectively》,有网友问与Self-Rag有什么区别。
所以,大概看了一下Self-Rag这篇论文。
两篇文章的方法确实非常像,Self-Rag相对更加复杂一些。
When to Retrieve的文章中的模型被称为ADAPT-LLM模型。
两个模型,相同的地方,都是基于一个数据集,训练模型判断是否需要检索,数据集的生成有所不同:
1、ADAPT-LLM是基于开放域问答数据集,其中包含问题Q、相关上下文段落P和相应的答案A,根据模型的回答是否符合数据集的答案,来形成新的数据集。
2、Self-Rag:通过提示GPT-4生成反思token,然后将其知识提炼到内部集合中,创建了监督数据。
不同的地方,Self-Rag除了判断是否需要检索,还可以生成批评token来批评自身的输出,具体来说,Self-Rag除了有生成模型,还训练了一个批评模型,使用批评模型来评估每个生成的段落是否需要检索,如果需要,就检索相关的文档。然后,批评模型评估检索到的文档的相关性(IsRel),支持度(IsSup),以及整体效用(IsUse),通过这些评价选择最佳的检索。这是通过反思Token(Reflection Tokens)来完成的,反思Token(Reflection Tokens)的具体定义,见最后。
论文链接:https://ar5iv.labs.arxiv.org/html/2310.11511
这篇文章的标题是 “Self-Rag: Learning to Retrieve, Generate, and Critique through Self-Reflection”,由 Akari Asai、Zeqiu Wu、Yizhong Wang、Avirup Sil 和 Hannaneh Hajishirzi 五位作者共同撰写。
摘要:
尽管大型语言模型(LLMs)具有显著的能力,但它们仍然会产生包含事实错误的响应,这些错误仅依赖于它们所包含的参数知识。检索增强生成(RAG)是一种通过检索相关知识来增强LLMs输入的方法,这在知识密集型任务中减少了知识错误。然而,RAG方法会不加选择地检索和整合检索到的段落,无论检索是否必要或段落是否相关,这可能会减少LLMs的多功能性或导致生成质量低下。为了解决这些问题,文章介绍了一种新的框架——自反思检索增强生成(Self-Rag: Self-Reflective Retrieval-Augmented Generation),它通过按需检索和自我反思提高了LLMs生成的质量,包括事实准确性,同时不损害其多功能性。
解决的主要问题:
- 大型语言模型在生成响应时可能会产生事实错误。
- 传统的RAG方法在检索时存在不区分情况的检索和整合问题,可能会导致生成的回答质量下降。
方法:
Self-Rag框架训练一个任意的LLM,使其能够根据需求按需检索段落,并使用特殊的反思token来生成和反思检索到的段落以及自身的生成内容。反思token在推理阶段使LLM可控,使其能够根据不同任务需求调整行为。具体来说,Self-Rag通过以下步骤工作:
- 确定是否需要通过检索来增强生成。
- 如果需要,输出一个检索token,按需调用检索器模型。
- 并行处理多个检索到的段落,评估它们的相关性,并生成相应的任务输出。
- 生成批评token来批评自身的输出,并选择最佳输出。
文章的实验表明,Self-Rag在多个任务上的表现显著优于现有的最先进的LLMs和RAG模型,包括开放域问答、推理和长篇生成任务。此外,Self-Rag在提高长篇生成任务中的事实准确性和引用准确性方面取得了显著进步。
1 引言
尽管最新的大型语言模型(LLMs)在模型和数据规模上有所增加,但它们在事实错误方面仍然存在挑战。检索增强生成(RAG)方法通过向LLMs的输入中增加检索到的相关段落,减少了知识密集型任务中的事实错误。然而,这些方法可能会阻碍LLMs的多功能性,或者引入不必要的或离题的段落,导致生成质量低下,因为它们无论检索的事实基础是否有帮助,都会不加选择地检索段落。此外,输出并不能保证与检索到的相关段落一致,因为模型没有明确地被训练去利用和遵循提供段落中的事实。
这项工作引入了自反思检索增强生成(Self-Rag:Self-Reflective Retrieval-Augmented Generation),通过按需检索和自我反思,提高LLM生成质量,包括其事实准确性,而不会损害其多功能性。我们以端到端的方式训练任意的语言模型,让它学会在给定任务输入时反思自己的生成过程,通过生成任务输出和间歇性的特殊token(即反思token)。反思token被归类为检索和批评token,以分别指示检索的需求和其生成质量。
特别是,给定一个输入提示和前面的生成内容,Self-Rag首先确定是否需要通过检索段落来增强持续生成的内容。如果是这样,它将输出一个检索token,按需调用检索器模型(步骤1)。随后,Self-Rag同时处理多个检索到的段落,评估它们的相关性,然后生成相应的任务输出(步骤2)。然后它生成批评token来批评自身的输出,并在事实准确性和整体质量方面选择最佳输出(步骤3)。
这个过程与传统的RAG不同(图1左侧),后者在生成过程中始终检索固定数量的文档,无论是否需要检索(例如,底部图例示例不需要事实知识),并且从不重新审视生成质量。此外,Self-Rag为每个段落提供了引用,以及它自我评估的输出是否由段落支持,从而更容易进行事实验证。
Self-Rag通过将反思token统一为模型词汇表中的下一个token预测,训练任意的语言模型生成带有反思token的文本。
我们训练我们的生成模型LM在一个多样化的文本集合上,这些文本与反思token和检索到的段落交错在一起。受强化学习中奖励模型启发的反思token,是通过训练有素的批评模型离线插入到原始语料库中的。这消除了在训练期间托管批评模型的需要,减少了开销。
批评模型部分受到监督,是基于通过提示专有语言模型(例如,GPT-4;OpenAI 2023)收集的输入、输出和相应的反思token数据集进行的。虽然我们从使用控制token来启动和引导文本生成的研究中获得灵感,但我们训练的语言模型使用批评token在每个生成段之后评估自身的预测,作为生成输出的一个组成部分。
Self-Rag进一步实现了一个可定制的解码算法,以满足硬约束或软约束,这些约束由反思token预测定义。特别是,我们的推理时间算法使我们能够(1)灵活地调整不同下游应用的检索频率,(2)通过利用反思token,通过段级束搜索来定制模型的行为以满足用户偏好,使用反思token概率的加权线性组合作为段分数。
2 相关工作
检索增强生成(Retrieval-Augmented Generation, RAG)
检索增强生成(RAG)通过检索文本段落来扩展语言模型(LMs)的输入空间,这在微调后或与现成的LMs一起使用时,可以显著提高知识密集型任务的性能。最近的工作(Luo et al., 2023)通过在输入中添加固定数量的检索段落来对LM进行指令调优,或者联合训练检索器和LM,然后对任务数据集进行少量样本的微调(Izacard et al., 2022b)。虽然先前的工作通常只在开始时检索一次,但Jiang et al. (2023)提出在专有的大型语言模型之上为生成任务自适应地检索段落,而Schick et al. (2023)训练LM生成命名实体的API调用。然而,这些方法提高的任务性能通常以牺牲运行时效率(Mallen et al., 2023)、对不相关上下文的鲁棒性(Shi et al., 2023)和缺乏归因为代价(Liu et al., 2023a; Gao et al., 2023)。
我们介绍了一种方法,通过训练任意LM按需使用检索来处理多样化的指令跟随查询,并通过反思Token引导的控制生成来进一步提高生成质量和属性。
并发RAG工作
一些并发的RAG工作提出了新的训练或提示策略,以改进广泛采用的RAG方法。Lin et al. (2023)在两个步骤中对检索器和LM进行微调。虽然我们也在多样化的指令跟随数据集上训练我们的模型,但Self-Rag通过细粒度的自我反思实现了按需检索和选择最佳可能的模型输出,使其具有更广泛的适用性,更强大和可控性。
Yoran et al. (2023)使用自然语言推理模型,Xu et al. (2023)使用摘要模型,在将检索到的段落用于提示LM生成输出之前,过滤或压缩它们。Self-Rag通过自我反思并行处理段落,并在不依赖推理时的外部模型的情况下过滤掉不相关的段落。此外,自我反思机制还评估了模型输出质量的其他方面,包括事实准确性。
LATS (Zhou et al., 2023)提示现成的LM为问答任务搜索相关信息,并在LM生成的价值分数的指导下进行树搜索。虽然他们的价值函数仅指示每次生成的总体得分,但Self-Rag训练任意LM生成细粒度的自我反思和可定制的推理。
通过批评模型进行训练和生成
通过强化学习(例如,近端策略优化或PPO;Schulman等人2017)从人类反馈(RLHF)中训练LLM已被证明在使LLM与人类偏好相一致方面是有效的(Ouyang等人,2022)。吴等人(2023)介绍了具有多个奖励模型的细粒度RLHF。尽管我们的工作也研究了对检索和生成的细粒度批评,但我们在离线的任务示例上训练我们的目标LM,该任务示例使用了来自批评模型的反思Token,与RLHF相比,训练成本要低得多。此外,Self-Rag中的反思Token能够在推理时进行可控生成,而RLHF则专注于训练过程中的人类偏好对齐。其他作品使用通用控制Token来指导LM生成(Lu et al.,2022;Korbak et al.,2023),而Self-Rag使用反射Token来决定检索的需要并自我评估生成质量。谢等人(2023)提出了一种自评估引导的解码框架,但他们只关注具有一个评估维度(推理路径一致性)的推理任务,而不关注检索。最近关于LLM精化的工作(Dhuliawala et al.,2023;Madaan et al.,2022;Paul et al.,2021)促使模型迭代生成任务输出、自然语言反馈和精化任务输出,但以推理效率为代价。
3 Self-Rag: 学习检索、生成和批评
我们介绍了一种名为自反思检索增强生成(Self-Reflective Retrieval-Augmented Generation ,Self-Rag)的框架,如图1所示。Self-Rag是一个通过检索和自我反思提高LLM生成质量和事实性的框架,同时不会牺牲LLM原有的创造力和多功能性。我们的端到端训练允许语言模型ℳ,根据需要检索的段落生成文本,并学习生成特殊Token来批评输出。
这些反思Token(表1)表明了检索的需求或确认输出的相关性、支持性或完整性。相比之下,常见的 RAG 方法不分青红皂白地检索段落,而不能确保引用来源的完全支持。
表1: Self-Rag中使用的四种反思Token。每种类型使用几个token来表示其输出值。下面三行是三种批评Token,粗体文本表示最理想的批评token。x、y、d分别表示输入、输出和相关段落。
3.1 问题形式化和概述
形式上,给定输入x,训练模型ℳ顺序生成由多个段落组成的文本输出y,其中y=[y1,…,yT],yt表示第t个段落的一系列Token。在我们的实验中,我们把一个句子当作一个段落,但我们的框架适用于任何段落单位(即子句)。yt中的生成token包括原始词汇表中的文本以及反思token(表1)。
算法1 Self-Rag推理
推理概览:图1和算法1展示了Self-Rag在推理时的概览。对于每个x和前面的已经生成的y,模型解码一个检索token以评估检索的效用。如果不需要检索,模型像标准LM一样预测下一个输出段落。如果需要检索,模型生成:一个批评token来评估检索段落的相关性,下一个响应段落,以及一个批评token来评估响应段落中的信息是否由段落支持。最后,一个新的批评token评估响应的整体效用。
为了生成每个段,Self-Rag 并行处理多个段落,并使用自己生成的反射token对生成的任务输出强制实施软约束(第 3.3 节)或硬控制(算法 1)。 例如,在图 1(右)中,检索到的段落𝑑1在第一个时间步骤中被选中,因为𝑑2不提供直接证据、𝑑3输出仅部分支持,而𝑑1完全受支持。
训练概览:Self-Rag通过将反思token统一为模型词汇表中的下一个token预测,使任意LM能够生成带有反思token的文本。具体来说,我们在包含反思token的精选语料库上训练生成模型ℳ,使用标准的LM目标,使ℳ能够自己在推理时生成反思token,而无需依赖批评模型。
3.2 Self-Rag训练
这里,我们描述了两个模型的监督数据收集和训练,即批评模型ℂ(第3.2.1节)和生成器ℳ(第3.2.2节)。
3.2.1 训练批评模型
批评模型的数据收集
手动为每个段落注释反思token成本高昂(Wu et al., 2023)。像GPT-4这样的最先进LLM可以有效地用于生成此类反馈(Liu et al., 2023b)。然而,依赖这样的专有LM可能会增加API成本并降低可复制性(Chen et al., 2023)。我们通过提示GPT-4生成反思token,然后将其知识提炼到内部ℂ中,创建了监督数据。
对于每组反思token,我们从原始训练数据中随机采样实例:{Xsample,Ysample}∼{X,Y}。由于不同的反思token组有自己的定义和输入,如表1所示,我们对它们使用不同的指令提示。这里,我们以检索为例。我们用类型特定的指令提示GPT-4(“给定一个指令,判断是否查找一些来自网络的外部文档有助于生成更好的响应。”),然后是一些示例I,原始任务输入x和输出y,以预测适当的反思token作为文本:p(r|I,x,y)。
手动评估显示,GPT-4反思token预测与人类评估高度一致。我们为每种类型收集了4k-20k的监督训练数据,并将它们结合起来形成训练数据ℂ。
批评家学习
在收集到训练数据Dcritic之后,使用预训练的LM初始化ℂ,并使用标准的有条件的语言建模目标对其进行训练,最大化可能性见公式1:
虽然初始模型可以是任何预训练的LM,我们使用与生成器LM相同的模型(即Llama 2-7B;Touvron et al. 2023)来初始化ℂ。批评模型在大多数反思token类别上与GPT-4基础预测的一致性高于90%。
3.2.2 训练生成器模型
数据收集生成器。
给定输入输出对(x,y),我们使用检索和批评模型增强原始输出y,创建精确模拟Self-Rag推理过程的监督数据(第3.1节)。对于每个段落yt∈y,我们运行ℂ评估是否需要额外的段落来增强生成。
如果需要检索,检索特殊token Retrieve=YES被添加,并且ℛ检索K个最高段落,D。对于每个段落,ℂ进一步评估该段落是否相关,并预测IsRel。
如果一个段落相关,ℂ进一步评估该段落是否支持模型生成,并预测IsSup。批评token IsRel和IsSup被添加到检索到的段落或生成之后。
在输出的末尾,y(或yT),ℂ预测整体效用token IsUse,并且带有反思token和原始输入对的增强输出被添加到Dgen中。见图2中的示例训练数据。
生成器学习通过在带有反思token的精选语料库Dgen上训练,训练生成器模型ℳ的标准下一个token目标:
与ℂ训练(公式1)不同,ℳ学习预测目标输出以及反思token。在训练期间,我们为损失计算遮蔽检索到的文本块(在图2中被< p > and < /p >包围),并将原始词汇表V扩展为包含反思token的集合{Critique,Retrieve}。
3.3 Self-Rag 推理
生成反射token以自我评估其自身输出使得 Self-Rag 在推理阶段可控,使其能够根据不同任务需求调整其行为。
对于任务要求事实准确性(Min et al., 2023),我们的目标是使模型更频繁地检索文本来确保输出与可用证据紧密对齐。相反,在更开放式的任务中,比如撰写个人经历文章,重点转移到检索较少并优先考虑整体创造力或实用性得分。
在这一部分,我们描述了在推理过程中实施控制以满足这些不同目标的方法。
自适应检索与阈值
Self-Rag 动态决定何时通过预测 “Retrieve” 来检索文本段落。另外,模型框架允许设置阈值。具体来说,如果在 “Retrieve” 中生成的 “Yes” token的概率标准化后超过指定阈值,就会触发检索。
基于批评token的树形解码
在每个段落步骤 t,当需要检索时,无论基于硬条件还是软条件,ℛ(检索器)检索 K 个文档,并且生成器 ℳ(LM)并行处理每个段落,并输出 K 个不同的续写候选项。
我们对每个时间戳 t 进行段落级别的束搜索(束大小=B),并在每个时间戳 t 获取每个段落的前 B 个续写。最后,在生成结束时返回最佳序列。每个段落 yt 的分数会根据 “IsRel”、“IsSup” 和 “IsUse” 更新。
例如,在图 1(右)中,检索到的段落 d1 在第一时间步骤被选中,因为 d2 没有提供直接证据(“IsRel” 是无关的),而 d3 的输出只得到了部分支持,而 d1 得到了完全支持。
训练概述
Self-Rag 通过将反射token统一为模型词汇表中的下一个token预测,使任意 LM 生成带有反射token的文本。具体来说,我们在包含检索到的段落和由批评模型预测的反射token的策划语料库上训练生成模型 ℳ。
训练 ℳ 的过程涉及使用标准的语言模型目标函数,即最大化下一个token的预测概率。在训练期间,我们对检索到的文本块进行掩蔽,以便在损失计算时不包括它们,并扩展原始词汇表 ℒ 以包含一组反射token {Critique, Retrieve}。
反思Token(Reflection Tokens)的定义:
检索需求(Retrieval-on-demand):
Retrieve: 给定输入和前一步生成的内容(如果适用),语言模型(LM)确定继续生成是否需要事实基础支撑。
No 表示检索是不必要的,因为序列不需要事实基础支撑,或者可能不会通过知识检索得到增强。
Yes 表示检索是必要的。
Continue to use evidence 表示模型可以继续使用之前检索到的证据。例如,一个段落可能包含丰富的事实信息,因此Self-Rag会基于该段落生成多个段落。
相关性(Relevance):
IsRel: 检索到的知识可能并不总是与输入相关。这个方面表明证据是否提供了有用的信息(Relevant)或者没有(Irrelevant)。
支持度(Support):
IsSup: 归因(Attribution)是输出是否完全由特定证据支持的概念。
这个方面根据证据支持的程度,评价输出信息的相关性,分为三个等级:Fully supported(完全支持)、Partially supported(部分支持)和No support / Contradictory(无支持/相反)。
有用性(Usefulness):
IsUse: 根据Liu等人(2023a)的定义,我们将感知的效用性定义为响应是否是查询的有帮助和信息丰富的答案,无论它实际上是否真实。
对于有用性,我们使用五级评估(1是最低,5是最高)。