《Self-Rag: Learning to Retrieve, Generate, and Critique through Self-Reflection》论文阅读

《Self-Rag: Learning to Retrieve, Generate, and Critique through Self-Reflection》ICLR2024

模块采用方案是否需要训练训练目标(损失函数)
检索器现成Contriever-MS MARCO(基于密集检索的双编码器架构)

提供外部知识支持,当生成模型预测“[RETRIEVE]”时触发检索

批评模型

基于Llama2-7B微调

根据GPT-4生成的种子数据,训练一个模型用来预测反思标记

\max_{\mathcal{C}} \mathbb{E}_{((x,y),r) \sim \mathcal{D}_{critic}} \log p_{\mathcal{C}}(r|x,y)

负责生成反思token,为训练数据提供监督信号。

生成器

基于Llama2-7B/13B扩展词汇表(增加反思标记)

将带有反思 token 的数据用于训练生成模型,使其学会生成自然语言和反思 token。

\max_{\mathcal{M}} \mathbb{E}_{(x,y,r) \sim \mathcal{D}_{gen}} \log p_{\mathcal{M}}(y, r|x)

负责端到端生成文本,包括自然语言内容和反思token。

  • 训练阶段
    • 使用 GPT-4 生成包含反思token的合成数据。
    • 训练批判模型预测反思token。
    • 使用批判模型增强训练语料库,包含输入、输出、检索段落和反思token。
    • 训练生成模型以预测下一token,包括反思token。
  • 推理阶段
    • 输入问题后,生成模型开始生成文本。
    • 若预测到“[RETRIEVE]”,触发检索器获取段落。
    • 模型根据检索内容生成回答,并插入批判令牌评估质量。
    • 通过段级束搜索选择最佳输出,重复此过程直到生成完成。

概论

尽管LLMs具有显著的能力,但由于其仅依赖于封装在模型中的参数化知识,生成的响应常常包含事实错误。检索增强生成(RAG)是一种临时方法,通过检索相关知识来增强语言模型,减少了此类问题。然而,不加区分地检索和固定数量的文档,无论检索是否必要或文档是否相关,都会降低语言模型的多样性,甚至可能导致生成无用的响应。我们提出了一种名为自我反思检索增强生成(SELF-Rag)的新框架,通过检索和自我反思来增强语言模型的质量和事实准确性。我们的框架训练一个单一的语言模型,使其能够自适应地按需检索文档,并通过生成特殊的反思标记(reflection tokens)来评估检索到的文档和自身的生成内容。生成反思标记使得模型在推理阶段可控,能够根据不同任务需求调整其行为。实验表明,SELF-Rag(7B和13B参数)在多个任务上显著优于当前最先进的LLMs和检索增强模型。具体而言,SELF-Rag在开放域问答、推理和事实验证任务上优于ChatGPT和检索增强的Llama2-chat,并且在长文本生成任务中显著提高了事实准确性和引用精度。

1. 简介

自我反思检索增强生成(SELF-Rag):

1. 确定是否需要检索

        给定输入提示和生成内容,SELF-Rag决定是否需要用检索到的文档来增强后续生成。

        如果需要检索,模型会生成一个检索标记,调用检索模型按需检索相关文档。

2. 处理检索到的文档

        SELF-Rag同时处理多个检索到的文档,评估这些文档的相关性。

        模型会生成相关性标记(ISREL token)来评估每个文档是否与输入相关。

3. 生成任务输出

        在评估文档相关性后,模型生成相应的任务输出。

        模型会生成支持性标记(ISSUP token)来评估生成的内容是否得到检索文档的支持。

4. 自我批评和选择最佳输出

        模型生成批评标记来批评自己的输出,选择在事实准确性和整体质量方面最佳的输出。

        模型还会生成有用性标记(ISUSE token)来评估生成内容的整体有用性。

5. 引用和自我评估

        SELF-Rag为每个生成段落提供引用,并自我评估输出是否得到文档的支持,从而更容易进行事实验证。

尽管模型和数据规模不断增加,当前最先进的LLMs仍然难以避免事实错误。检索增强生成(RAG)方法通过为LLMs的输入添加相关检索到的文档,减少了知识密集型任务中的事实错误。然而,这些方法可能会限制LLMs的多样性,或引入不必要或离题的文档,导致生成质量下降,因为它们不加区分地检索文档,而不考虑事实基础是否有帮助。此外,输出并不保证与检索到的相关文档一致,因为模型没有明确训练以利用和遵循提供的文档中的事实。

本文提出了自我反思检索增强生成(SELF-Rag),通过按需检索和自我反思来提高LLMs的生成质量,包括事实准确性,同时不损害其多样性。以端到端的方式训练一个任意的语言模型,使其能够在给定任务输入的情况下反思自身的生成过程,生成任务输出和间歇性的特殊标记(即反思标记)。反思标记分为检索标记批评标记,分别用于指示是否需要检索以及生成内容的质量(图1右)。

具体来说,给定输入提示和之前的生成内容,SELF-Rag首先确定是否需要用检索到的文档来增强后续生成。如果需要,它会输出一个检索标记,调用检索模型按需检索文档(step1)。随后,SELF-Rag同时处理多个检索到的文档,评估其相关性并生成相应的任务输出(step2)。然后,它生成批评标记来批评自己的输出,并选择在事实准确性和整体质量方面最佳的输出(step3)。这一过程与传统的RAG(图1左)不同,RAG无论检索是否必要(例如,下图中的示例不需要事实知识)都会固定检索一定数量的文档进行生成,并且从不重新审视生成质量。此外,SELF-Rag为每个生成段落提供引用,并自我评估输出是否得到文档的支持,从而更容易进行事实验证。

2. 相关工作

检索增强生成(Retrieval-Augmented Generation)

RAG通过为LMs的输入空间添加检索到的文本段落,显著提升了知识密集型任务的表现。最近的一项工作通过在输入前添加固定数量的检索文档来对LM进行指令微调,或者联合训练检索器和LM,然后在任务数据集上进行少样本微调。虽然之前的工作通常只在开始时检索一次,但Jiang等(2023)提出在专有LLM的基础上自适应地检索文档进行生成,或Schick等(2023)训练LM生成命名实体的API调用。然而,这些方法的改进通常以运行时效率、对无关上下文的鲁棒性和缺乏归因为代价。我们提出了一种方法,训练任意LM学习按需检索,以应对多样化的指令查询,并通过反思标记引导的生成进一步提高生成质量和归因。

并行的RAG工作

一些并行的RAG工作提出了新的训练或提示策略,以改进广泛采用的RAG方法。Lin等(2023)分两步对检索器和LM进行指令微调。虽然我们也在多样化的指令数据集上训练模型,但SELF-Rag通过细粒度的自我反思实现按需检索和选择最佳模型输出,使其更具广泛适用性、鲁棒性和可控性。Yoran等(2023)使用自然语言推理模型,Xu等(2023)使用摘要模型在提示LM生成输出之前过滤或压缩检索到的文档。SELF-Rag并行处理文档,并通过自我反思过滤掉不相关的文档,而不依赖于推理时的外部模型。此外,我们的自我反思机制还评估了模型输出质量的其他方面,包括事实准确性。LATS提示现成的LM为问答任务搜索相关信息,并通过LM生成的价值分数进行树搜索生成。虽然它们的价值函数仅表示每个生成的总体分数,但SELF-Rag训练任意LM生成细粒度的自我反思和可定制的推理。

使用批评进行训练和生成

通过强化学习从人类反馈中训练LLMs(RLHF)已被证明在使LLMs与人类偏好对齐方面非常有效。Wu等(2023)引入了具有多个奖励模型的细粒度RLHF。尽管我们的工作也研究了检索和生成的细粒度批评,但我们通过批评模型离线生成的任务示例中的反思标记来训练目标LM,与RLHF相比,训练成本大大降低。此外,SELF-Rag中的反思标记使得在推理时能够进行可控生成,而RLHF则侧重于训练期间的人类偏好对齐。其他工作使用通用控制标记来引导LM生成,而SELF-Rag使用反思标记来决定是否需要检索并自我评估生成质量。Xie等(2023)提出了一个自我评估引导的解码框架,但他们仅关注推理任务,且只有一个评估维度(推理路径一致性),并且没有检索。最近关于LLM改进的工作示模型生成任务输出、自然语言反馈和改进的任务输出,但以推理效率为代价。

3. SELF-Rag:学习检索、生成和批评

  • 训练批评模型:使用GPT-4生成的反思标记作为监督数据,训练批评模型\mathcal{C},使其能够评估检索到的段落和生成内容的质量。

  • 训练生成器模型:使用批评模型生成的反思标记增强训练数据,训练生成器模型\mathcal{M},使其能够生成输出和反思标记。

  • 推理过程:在推理阶段,生成器模型通过生成反思标记来自适应地决定是否需要检索文档,并通过批评标记评估生成内容的质量。

自我反思检索增强生成(Self-Rag)是一个通过检索和自我反思来增强LLM生成质量和事实准确性的框架,同时不牺牲LLM原有的创造力和多样性。端到端训练使得LM能够根据检索到的文档生成文本,并通过学习生成特殊标记来批评输出。这些反思标记(表1)用于指示是否需要检索[Retrieve],或确认输出的相关性[ISREL]、支持性[ISSUP]或完整性[ISUSE]

3.1 问题形式化与概述

给定输入 x,训练模型 \mathcal{M} 顺序生成文本输出 y,输出由多个段落y=[y_1,... ,y_T]组成,其中 y_t 表示第 t 个段落的标记序列。生成的标记y_t包括原始词汇表中的文本以及反思标记(表1)

推理概述

图1和算法1展示了SELF-Rag在推理时的概述。对于每个输入 x和之前的生成内容 y_{<t},模型解码一个检索标记以评估检索的效用。

  • 如果不需要检索,模型像标准LM一样预测下一个输出段落。
  • 如果需要检索,模型生成:一个批评标记以评估检索到的段落的相关性,下一个响应段落,以及一个批评标记以评估响应段落中的信息是否得到段落的支持
  • 最后,一个新的批评标记评估响应的整体效用。
  • 为了生成每个段落,SELF-Rag并行处理多个段落,并使用其生成的反思标记来对生成的任务输出实施软约束(第3.3节)或硬控制(算法1)。
  • 例如,在图1(右)中,检索到的段落 d_1 在第一步被选中,因为 d_2 没有提供直接证据[ISREL],而 d_3 的输出仅得到部分支持,而 d_1 的输出得到完全支持

训练概述

SELF-Rag通过将反思标记统一为扩展模型词汇表中的下一个标记预测,使得任意LM能够生成带有反思标记的文本。使用检索器 \mathcal{R} 检索到的段落和批评模型 \mathcal{C} 预测的反思标记来训练生成器模型 \mathcal{M}(总结见附录算法2)。训练 \mathcal{C} 生成反思标记,以评估检索到的段落和给定任务输出的质量(第3.2.1节)。使用批评模型,通过离线插入反思标记来更新训练语料库。随后,使用传统的LM目标训练最终的生成器模型(\mathcal{M})(第3.2.2节),使 \mathcal{M} 能够在推理时自行生成反思标记,而不依赖于批评模型。

3.2 SELF-Rag训练

描述监督数据收集两个模型的训练,即批评模型 \mathcal{C}(第3.2.1节)和生成器模型 \mathcal{M}(第3.2.2节)。

3.2.1 训练批评模型(批评模型能够预测高质量反思标记)

批评模型的数据收集。通过提示GPT-4生成反思标记来创建监督数据,然后将这些知识蒸馏到 \mathcal{C} 中。对于每组反思标记,从原始训练数据中随机采样实例:\{X_{sample},Y_{sample}\}\sim {X,Y}。不同的反思标记组使用不同的指令提示。在这里,我们以[Retrieve]为例。使用特定类型的指令(“给定一个指令,判断是否从网络上查找一些外部文档有助于生成更好的响应。”)提示GPT-4,然后使用原始任务输入x和输出y的少量示例来预测适当的反思标记作为文本:p(r|I,x,y)手动评估显示,GPT-4的反思标记预测与人类评估高度一致。我们为每种类型收集了4k-20k的监督训练数据,并将它们组合形成 \mathcal{C} 的训练数据。附录D显示了完整的指令列表,A.1包含更多细节和我们的分析。

批评模型的学习。在收集训练数据D_{critic }后,我们使用预训练的LM初始化 \mathcal{C},并在D_{critic }上使用标准的条件语言建模目标进行训练,最大化似然:

\max_{\mathcal{C}} \mathbb{E}_{((x,y),r) \sim \mathcal{D}_{critic}} \log p_{\mathcal{C}}(r|x,y)     (1)

r为反思标记。 

虽然初始模型可以是任何预训练的LM,但我们使用与生成器LM相同的模型来初始化 \mathcal{C}。批评模型在大多数反思标记类别上与基于GPT-4的预测达到了90%以上的匹配度。

3.2.2 训练生成器模型(生成器模型能够生成含有反思标记的内容)

生成器模型的数据收集。给定输入-输出对(x,y),使用检索和批评模型增强原始输出 y以创建精确模仿Self-Rag推理过程的监督数据(第3.1节)

  • 对于每个段落 y_t \in y,运行 \mathcal{C} 以评估是否需要额外的段落来增强生成。如果需要检索,则添加检索特殊标记 [Retrieve]=Yes,并且 \mathcal{R} 检索前 K 个段落D
  • 对于每个段落,\mathcal{C} 进一步评估段落是否相关并预测 [ISREL]。如果段落相关,\mathcal{C} 进一步评估段落是否支持模型生成并预测 [ISSUP]。
  • 批评标记 [ISREL] 和 [ISSUP] 附加在检索到的段落或生成内容之后。在输出 y(或 y_T)的末尾,\mathcal{C} 预测整体效用标记 [ISUSE],并将带有反思标记和原始输入对的增强输出添加到D_{gen} 中。

生成器模型的学习。通过训练生成器模型 \mathcal{M}来生成带有反思标记的文本,使用增强的语料库 D_{gen} 进行标准的下一标记目标训练:

\max_{\mathcal{M}} \mathbb{E}_{(x,y,r) \sim \mathcal{D}_{gen}} \log p_{\mathcal{M}}(y, r|x)     (2)

与 \mathcal{C} 训练(公式1)不同,\mathcal{M} 学习预测目标输出以及反思标记。在训练期间,我们屏蔽检索到的文本块(在图2中用<p>和</p>包围)以进行损失计算,并将原始词汇表\mathcal{V}扩展为一组反思标记 {[Critique], [Retrieve]}。

与先前批评学习工作的联系。最近的工作在训练期间引入了额外的批评(反馈),例如通过PPO进行的RLHF。虽然PPO依赖于训练期间的单独奖励模型,但我们离线计算批评并直接将其插入训练语料库中,生成器LM使用标准的LM目标进行训练。与PPO相比,这显著降低了训练成本。我们的工作还与先前使用特殊标记控制生成的工作相关。我们的Self-Rag学习生成特殊标记以在生成每个段落后评估其预测,从而在推理时启用软重排序机制或硬约束(接下来讨论)。

3.3 SELF-Rag推理(根据不同任务需求调整行为)

生成反思标记以自我评估其输出使得SELF-Rag在推理阶段可控,使其能够根据不同任务需求调整行为对于需要高事实准确性的任务,希望模型更频繁地检索文档,以确保输出与可用证据紧密一致。在更开放的任务中,如撰写个人经历的文章,重点转向减少检索并优先考虑整体创造力或效用分数。

在本节中,我们描述了在推理过程中满足这些不同目标的方法。

基于阈值的自适应检索。SELF-Rag通过预测[Retrieve]动态决定何时检索文本段落。如果生成[Retrieve]=Yes标记的概率在所有输出标记中归一化后超过指定阈值,则触发检索(详见附录A.3节)。

基于批评标记的树解码。在每个段落步骤t,当需要检索时,基于硬条件或软条件,\mathcal{R}检索K个段落,生成器\mathcal{M}并行处理每个段落并输出K个不同的续写候选。进行段级束搜索(束大小为B)以在每个时间戳 t 获得前 B 个段落续写,并在生成结束时返回最佳序列。每个段落y_t相对于段落d的分数通过批评分数\mathcal{S}更新,该分数是每个[Critique]标记类型的归一化概率的线性加权和。对于每个批评标记组G(例如,[ISREL]),我们将其在时间戳t的分数表示为s_t^G​,并计算段分数如下:

f(y_t, d, \text{Critique}) = p(y_t | x, d, y_{<t}) + \mathcal{S}(\text{Critique})      (3)

其中\mathcal{S}(\text{Critique}) = \sum_{G \in \mathcal{G}} w^G s^G_t       \mathcal{G}={[ISREL],[ISSUP],[ISUSE]}      (4)

其中s^G_t = \frac{p_t(\hat{r})}{\sum_{i=1}^{N^G} p_t(r_i)}表示最理想的反思标记\hat{r}(例如,[ISREL]=Relevant)的生成概率,对于批评标记类型G,有N^G个不同的标记(表示G的不同可能值)。公式4中的权重w^G是超参数,可以在推理时调整以在测试时启用自定义行为。例如,为了确保结果y主要由证据支持,可以将[ISSUP]分数的权重设置得更高,同时相对降低其他方面的权重。或者,可以在解码期间使用[Critique]显式过滤掉生成不理想[Critique]标记(例如,[ISSUP]=No support)的段落续写。在RLHF中已经研究了平衡多个偏好之间的权衡,这通常需要训练来改变模型的行为。SELF-Rag无需额外训练即可定制LM。

附录A:SELF-Rag 详细信息

A.1 反思标记

反思标记的定义。下面我们提供了反思类型和输出标记的详细定义。前三个方面将在每个段级别提供,而最后一个方面仅在每个输出级别提供。

  • 按需检索[Retrieve]:给定输入和之前的生成内容(如果适用),LM 决定续写是否需要事实基础。No 表示检索不必要,因为序列不需要事实基础或可能无法通过知识检索增强,Yes 表示检索必要。我们还有 Continue 表示可以继续使用之前检索到的证据。例如,一个段落可能包含丰富的事实信息,因此 SELF-Rag 基于该段落生成多个段。

  • 相关性[ISREL]:检索到的知识可能并不总是与输入相关。此方面指示证据是否提供了有用的信息(Relevant)或不相关(Irrelevant)。

  • 支持性[ISSUP]:归因是指输出是否完全由某些证据支持。此方面判断输出中的信息在多大程度上由证据支持。我们以三个等级评估归因:Fully supported(完全支持)、Partially supported(部分支持)和 No support / Contradictory(不支持/矛盾)。

  • 有用性([ISUSE]):将感知效用定义为响应是否是对查询的有帮助和信息丰富的回答,独立于其是否事实正确。对于有用性,我们使用五级评估(1 为最低,5 为最高)。

基于 GPT-4 的数据收集详细信息。使用指令和示例对来提示 GPT-4,列在附录 D 中。根据官方建议,我们用“##”分隔指令和输出。我们使用温度 1 并将最大输出标记数设置为 200。我们丢弃了 GPT-4 未遵循指定输出格式或输出序列与预期类别名称不匹配的实例。结果,我们收集了 12,594 个 [Retrieve],11,181 个 [ISREL],19,317 个相关性,3,831 个效用。

GPT-4 预测的手动分析。本文作者手动评估了每个方面的随机采样 20 个实例,并检查 GPT-4 预测是否与他们的评估一致,给定相同的指令、示例和测试实例。我们发现我们的评估与 GPT-4 预测高度一致,尤其是相关性(95%)、检索必要性(95%)和支持程度(90%)。有用性的一致性略低(80%),主要是由于 1 和 2 或 4 和 5 之间的分歧。

A.2 SELF-Rag 训练

训练概述。算法 2 提供了我们训练的高级概述。

完整种子数据集列表。为了采样多样化的输入-输出对,我们从 OpenInstruct 数据集中采样实例。特别是,我们使用了他们的 ShareGPT、GPT-4 Alpaca、Alpaca、OpenAssistant 和 FLAN 子集。我们还从几个知识密集型数据集中采样实例,包括 Natural Questions、Wizard of Wikipedia和 FEVER来自 KILT 基准,ASQA和多个 QA 数据集,包括 ARC-Easy 和 OpenBookQA。表 3 显示了完整的训练实例列表,总共我们使用了 145,619 个实例。

批评模型 \mathcal{C} 的性能。我们通过将 GPT-4 生成的反馈分为train、dev和test来评估奖励预测的准确性。表 5 显示了预测 GPT-4 判断的模型性能。总体而言,微调奖励模型显示出与 GPT-4 预测反馈高度匹配。

虽然我们的最终模型使用 Llama2-7B 作为基础 LM,但我们也训练并比较了 FLAN-3B模型在相同数据上的表现,以研究不同数据大小对最终奖励预测的影响。在大多数方面,我们的奖励模型显示出高于 80% 的准确性,表明微调专用 LM 评估文本的强大能力。虽然两个模型在 [ISUSE] 上表现相对较低,这是因为两个模型经常混淆两个最高情况(5 和 4),人类注释者也可能存在分歧。

\mathcal{M} 数据创建的详细信息。在这里,我们提供了详细的数据创建过程。算法 3 总结了该过程。这里我们将 y_t 简化为 y

  • 对于每个检索到的段落,我们预测 [ISREL] 和 [ISSUP]。
    • 如果有任何段落和续写具有 [ISREL]=Relevant 和 [ISSUP]=Fully Supported/ [ISSUP]=Partially Supported,则我们将其采样为续写。
    • 如果有多个段落满足此标准,我们使用检索分数最高的段落。
    • 如果只有 [ISREL]=Irrelevant 或 [ISSUP]=No Support 段落,我们随机采样一个段落。

训练示例。表 4 显示了用于 \mathcal{M} 训练的几个训练示例。

A.3 SELF-Rag 推理

束搜索分数计算的详细信息。我们首先通过取理想标记的归一化概率计算每个批评类型的分数。对于 [ISREL],我们计算分数如下:

s(\text{[ISREL]}) = \frac{p(\text{[ISREL]}=\text{Relevant})}{p(\text{[ISREL]}=\text{Relevant}) + p(\text{[ISREL]}=\text{Irrelevant})}

对于 [ISSUP],我们计算分数如下:

s(\text{[ISSUP]}) = \frac{p(\text{[ISSUP]}=\text{Fully})}{S} + 0.5 \times \frac{p(\text{[ISSUP]}=\text{Partially})}{S}

其中S=\sum_{t \in \{\text{Fully, Partially, No}\}}p([ISSUP]=t)。对于 [ISUSE],我们有一个五级分数,我们计算分数的加权和。我们为标记 [ISUSE]={1,2,3,4,5} 分配加权分数 w=\{-1,-0.5,0,0.5,1\},并计算最终分数如下:

s(\text{[ISUSE]}) = \sum_{i=1}^{5} w_i \frac{p(\text{[ISUSE]}=i)}{S}

其中S=\sum_{t\in{1,2,3,4,5}}p([ISUSE]=t)

自适应检索的详细信息。对于基于软约束的检索,如果满足以下条件,则触发检索:

\frac{p(\text{[Retrieve]}=\text{Yes})}{p(\text{[Retrieve]}=\text{Yes}) + p(\text{[Retrieve]}=\text{No})} > \delta

4. 实验

4.1 任务和数据集

实验类型数据集描述与特点样例
闭集任务PubHealth公共卫生事实验证,判断声明真伪,需检索证据,规模小,强调事实性声明:“Vaccines cause autism.” 答案:“False”
ARC-Challenge科学考试多项选择推理,4个选项,测试推理能力,问题复杂问题:“Which gas is most abundant in Earth’s atmosphere?” 答案:“Nitrogen”
短文本生成任务PopQA开放域问答,长尾知识,1,399个稀有实体查询,测试稀有知识检索问题:“What is the capital of Tuvalu?” 答案:“Funafuti”
TriviaQA-unfiltered未过滤开放域问答,11,313个测试查询,多样且开放,答案不需严格匹配问题:“What element was discovered on the sun before Earth?” 答案:“Helium”
长文本生成任务Biography传记生成,基于提示生成多段落文本,需连贯性和事实性提示:“Write a biography of Alan Turing.” 输出:“Alan Turing was born on June 23...”
ALCE-ASQA长文本问答,复杂问题需详细解释,强调正确性和引用质量问题:“Why did the Roman Empire fall?” 输出:“Due to economic instability...”

在多个下游任务上对SELF-Rag和多种基线模型进行了评估,全面评估了输出的正确性、事实性和流畅性。在这些实验中,我们进行了零样本评估,即提供任务描述而不提供少量示例。实验设置的详细信息,包括测试时的指令,见附录B.1。

闭集任务包括两个数据集,即关于公共卫生的事实验证数据集PubHealth)和从科学考试中创建的多项选择推理数据集ARC-Challenge)。我们使用准确率作为评估指标,并在测试集上报告结果。我们对这两个数据集的目标类别的答案概率进行了聚合(附录B.2)。

短文本生成任务包括两个开放域问答数据集,PopQA和TriviaQA-unfiltered,系统需要回答关于事实知识的任意问题。对于PopQA,我们使用长尾子集,包含1,399个月维基百科页面浏览量少于100的稀有实体查询。由于TriviaQA-unfiltered(开放)测试集未公开,我们遵循先前工作的验证和测试集划分,使用11,313个测试查询进行评估。我们根据模型生成的内容是否包含正确答案来评估性能,而不是严格要求完全匹配。

长文本生成任务包括传记生成任务长文本问答任务ALCE-ASQA。我们使用FactScore评估传记,并使用官方指标评估ASQA的正确性(str-em)、基于MAUVE的流畅性以及引用精度和召回率。

4.2 基线

基线类别包含模型在论文中的特点
无检索的专有模型ChatGPT
Llama2-chat-13B
使用私有数据训练的商业模型,作为性能上限参考;ChatGPT在ASQA任务表现最佳(引用精度65.1%)
无检索的开源模型Llama2-7B,13B
Alpaca-7B,13B
纯参数化知识模型,展示基础能力;Alpaca在指令任务上优于原始Llama2
带检索的专有模型Ret-ChatGPT
Ret-Llama2-chat13B
perplexity.ai
在专有模型上外接检索模块(与SELF-Rag相同检索器);perplexity.ai作为生产环境检索系统对比
带检索的开源模型Llama2+Retrieval
Alpaca+Retrieval
Llama2-FT-7B
标准RAG基线,固定检索前5文档;Llama2-FT作为消融对照(同数据但无反思机制)
并行检索增强方法SAIL-7B
Toolformer-6B
CoVE-65B
SAIL:检索文档预拼接指令
Toolformer:API调用式检索
CoVE:迭代提示优化(对比反思机制的优越性)

无检索的基线。我们评估了强大的公开预训练LLMs,Llama2-7B,13B,指令微调模型,Alpaca7B,13B​(我们基于Llama2的复现);以及使用私有数据训练和强化的模型,ChatGPT和Llama2-chat13B​。对于指令微调的LMs,我们使用官方系统提示或训练期间使用的指令格式。还并发工作CoVE-65B进行了比较,该工作引入了迭代提示工程以提高LLM生成的事实性。

带检索的基线。我们评估了在测试时或训练期间进行检索增强的模型。第一类包括标准RAG基线,其中LM(Llama2,Alpaca)在查询前添加检索到的文档生成输出,使用与我们系统相同的检索器。还包括Llama2-FT,其中Llama2在我们使用的所有训练数据上进行微调,没有反思标记或检索到的段落。我们还报告了使用私有数据训练的检索增强基线的结果:Ret-ChatGPT和Ret-Llama2-chat,它们部署了与上述相同的增强技术,以及perplexity.ai,一个基于InstructGPT的生产搜索系统。第二类包括在训练期间使用检索到的文本段落的并发方法,即SAIL在Alpaca指令微调数据上对LM进行微调,并在指令前插入检索到的文档,以及Toolformer使用API调用预训练LM。

4.3 实验设置

训练数据和设置。我们的训练数据包括多样化的指令-输出对。特别是,我们从Open-Instruct处理的数据和知识密集型数据集中采样实例。总共,我们使用了150k指令-输出对。我们使用Llama2 7B和13B作为生成器基础LM,并使用Llama2 7B作为基础批评LM。对于检索器模型R,我们默认使用现成的Contriever-MS MARCO,并为每个输入检索最多十个文档。更多训练细节见附录B.1。

推理设置。作为默认配置,我们为[ISREL]、[ISSUP]、[ISUSE]分配权重值1.0、1.0和0.5。为了鼓励频繁检索,我们将大多数任务的检索阈值设置为0.2,对于ALCE由于引用要求设置为0。我们使用vLLM加速推理。在每个段级别,我们采用束宽度为2。对于标记级生成,我们使用贪婪解码。默认情况下,我们使用Contriever-MS MARCO检索的前五个文档;对于传记和开放域QA,我们使用网络搜索引擎检索的额外前五个文档;对于ASQA,我们使用作者提供的GTR-XXL检索的前五个文档,以确保所有基线的公平比较。

5 结果与分析

5.1 主要结果

表2展示了SELF-Rag在六个任务上的整体表现(完整结果见附录表7)。

与无检索的基线模型对比

表2(上半部分)展示了无检索基线的表现。SELF-RAG在所有任务上都显著优于经过监督微调的LLMs,甚至在PubHealth、PopQA、传记生成和ASQA(Rouge和MAUVE指标)任务上超越了ChatGPT。我们的方法也明显优于采用复杂提示工程的并行方法——具体而言,在传记生成任务中,我们的7B和13B模型优于CoVE,后者通过迭代提示Llama2-65B来优化输出。

与带检索的基线模型对比

如表2(下半部分)所示,我们的SELF-RAG在多数任务上也优于现有的RAG方法,在所有非专有语言模型中获得最佳性能。

  • 在PopQA和传记任务上,采用检索的强力指令微调模型(如Llama2-chat、Alpaca)相比其无检索版本显示出较大提升。
  • 然而,我们发现这些基线模型对于无法简单复制或提取检索段落子串的任务提供有限解决方案。在PubHealth和ARC-Challenge任务上,带检索的基线相比无检索版本没有显著改进。我们还观察到,大多数带检索的基线在提升引用准确性方面存在困难。

在ASQA任务上,我们的模型展现出显著更高的引用精度和召回率,仅落后于ChatGPT。ChatGPT在这个特定任务中始终表现卓越,超越了较小规模的LMs。我们的SELF-RAG缩小了这一性能差距,甚至在引用精度上超越了ChatGPT(该指标衡量模型生成的主张是否完全得到引用证据的支持)。我们还发现,在事实精度指标上,SELF-RAG 7B有时会优于13B版本,这是因为较小模型倾向于生成更精确但更简短的输出。

Llama2-FT-7B作为基线模型(与SELF-RAG使用相同的指令-输出对训练,但不包含检索或自我反思机制,仅在测试时进行检索增强),其表现落后于SELF-RAG。这一结果表明SELF-RAG的优势不仅来自训练数据,更证明了该框架的有效性。

5.2 分析

消融实验

方法定义流程与 Self-RAG 省略的步骤
Self-RAG完整框架,自适应检索与自我批判输入 → 预测 [RETRIEVE] → 检索(若需)→ 生成 → 束搜索([ISREL] + [ISSUP] + [ISUSE])无(完整流程)
No Retrieval禁用检索,仅用参数化知识输入 → 生成 → 束搜索(仅批判自身输出)无 [RETRIEVE] 和检索相关批判
Hard Constraints[RETRIEVE]="Yes" 时强制检索输入 → 若 [RETRIEVE]="Yes" 检索 → 生成 → 束搜索无自适应阈值调节
Retrieve Top 1总是检索并用前 1 个文档输入 → 检索 Top 1 → 生成 → 束搜索无自适应检索和多文档选择
Remove [ISSUP]束搜索中移除 [ISSUP] 分数输入 → 检索(若需)→ 生成 → 束搜索(仅 [ISREL] + [ISUSE])无 [ISSUP] 评估

评估两种以不同方式训练的模型变体:No Retriever(在没有检索段落的情况下使用标准指令跟随方法训练LM)No Critic(在没有反思标记的情况下训练LM,始终用前1个检索到的文档增强)。我们还对推理算法进行了消融:

  • No retrieval(在推理时禁用检索);
  • Hard constraints(当[Retrieve]="Yes"时检索,而不是使用自适应阈值);
  • Retrieve top 1(总是检索并使用前1个文档,类似于标准RAG方法);
  • Remove [ISSUP](在公式4的批评引导束搜索中仅移除[ISSUP]分数)。

在这个消融实验中,我们使用50k训练实例规模以更高效地探索训练变体。我们在三个数据集PopQA、PubHealth和ASQA(采样150个实例)上进行消融研究,排除了涉及自适应或无检索过程的消融。

表3a显示了消融结果。观察到SELF-Rag与No Retriever或No Critic基线之间存在巨大性能差距,表明训练LM与这些模型在很大程度上促成了SELF-Rag的性能提升。不加区分地使用前几个段落(Retrieve top 1)如传统RAG方法那样,在PopQA和ASQA上会导致性能大幅下降,移除[ISSUP]在束搜索中会损害ASQA的性能。这表明SELF-Rag基于细粒度多标准仔细选择生成的能力是有效的,而不是使用检索模型的所有前几个段落或仅依赖相关性分数。

推理时定制化的影响

我们分析框架的一个关键优势是能够控制每个批评类型在多大程度上影响最终生成采样。我们在ASQA上分析了不同参数权重对我们7B模型的影响,其中考虑了多个评估维度。图3b显示了改变[ISSUP]的权重项的影响。如图所示,增加权重对模型的引用精度有积极影响,因为这更强调生成是否被证据支持。相反,更大的权重会导致较低的MAUVE分数:当生成变得更长、更流畅时,往往会有更多主张没有被引用完全支持。我们的框架允许从业者通过调整这些参数在测试时定制模型行为,而无需额外训练。

效率与准确性的权衡

使用我们的框架,从业者可以通过奖励标记的概率调整检索频率。我们评估了这个自适应阈值如何影响整体准确性和检索频率,在PubHealth和PopQA上使用不同阈值δ(较大的δ导致较少检索)。图3c显示,在两个数据集上,随着δ的变化,模型的检索频率发生了显著变化。一方面,在PubHealth上减少检索的性能下降较小,但在PopQA上较大。

训练数据规模的影响

分析数据规模如何影响模型性能。具体来说,从原始150k训练实例中随机抽取5k、10k、20k和50k实例,并在这些子集上微调四个SELF-Rag-7B变体。然后,将模型性能与在完整150k实例上训练的最终SELF-Rag在PopQA、PubHealth和ASQA(引用精度)上进行比较。

图4a、4b和4c显示了不同数据量训练的模型性能。在所有数据集上,增加数据规模通常显示出上升趋势,在PopQA和ASQA上的改进显著更大,而在Llama2-FT-7B上将训练数据从50k增加到150k时没有观察到这种显著改进。这些结果还表明,进一步扩展SELF-Rag的训练数据可能会带来更多改进,尽管在这项工作中我们将训练数据规模限制在150k。

人工评估结果

进行小规模人工评估来评估SELF-Rag输出的质量以及预测反思标记的可靠性。具体来说,从PopQA和Bio结果中各抽样50个样本。人工评估者评估S&P,表示模型输出是否合理(即输出是对问题的合理且切题的响应,就像在对话中出现的那样)和支持(即提供的证据足以验证答案的有效性)。对于S&P,我们不考虑SELF-Rag预测不相关或没有支持的实例。然后,我们要求评估者判断模型预测的关于[ISREL]和[ISSUP]的反思标记是否与他们的检查结果匹配(例如,完全支持的输出是否被引用证据支持)。人工评估者发现SELF-Rag的答案通常合理且被相关段落支持,在短文本PopQA上的S&P分数更高。人工评估者还发现[ISREL]和[ISSUP]反思标记预测大多与他们的评估一致。附录表6展示了几个标注示例和评估解释。

5.3 定性分析

表7展示了SELF-Rag(13B)生成的几个示例。

第一个示例是模型对ASQA问题的输出。第一个引用指出君士坦丁大帝将周日定为休息日,第二个引用进一步支持君士坦丁在公元321年正式采用周日作为休息日的事实。

在第二个示例中,模型预测第一个输出与证据矛盾,因为输出称该人自2010年起担任CEO,而段落称他于2015年卸任CEO。将这些事实矛盾标记为反思标记能够实现硬控制,并更容易验证模型输出。

在第三个示例中,虽然生成基本正确,但SELF-Rag预测对列出歌曲名称的陈述是部分支持,因为这些歌曲没有被明确提及。

6. 结论

本研究提出了Self-Rag,这是一个通过按需检索和自我反思来提高LLMs生成质量和事实性的新框架。Self-Rag训练一个通用的LM来自适应地检索段落(如果需要),并通过生成特殊的"反思标记"来批评检索到的段落及其自身的生成内容。生成反思标记使得LM在推理阶段可控,使其能够根据不同任务需求调整行为。实验表明,Self-Rag(7B和13B)在多样化任务上显著优于最先进的LLMs和检索增强模型。特别是,Self-Rag在开放域QA、推理和事实验证任务上超越了ChatGPT和检索增强的Llama2-chat,并且在长文本生成中显著提高了事实性和引用准确性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值