为什么LLM 和 RAG 存在幻觉? 一文给你说明白

我们对幻觉了解多少?为什么 LLM 和 RAG 系统会产生幻觉?这是一个错误吗?还是一个特性?当我们思考幻觉时,了解它为什么会发生非常重要。让我们深入研究幻觉并发现其起源!

根据论文《不熟悉的微调示例控制语言模型如何产生幻觉》,当大型语言模型 (LLM) 在测试期间遇到不熟悉的输入时,它们的预测会模仿与微调数据中的不熟悉示例相关的响应。这种行为归因于模型在微调过程中学习根据这些不熟悉的示例做出智能的“盲猜”。LLM 学会在微调过程中预测不熟悉示例的这种智能“盲猜”,并且在测试时面对不熟悉的查询时默认采用这种预测。

现在你已经了解了 LLM 产生幻觉的原因。现在让我们详细看看这些模型到底是怎么回事。要理解这一点,《自然语言生成中的幻觉调查》是一个很好的参考资料。让我们看看它说了什么。

据该论文称,幻觉有两种类型。

  1. 内在幻觉:生成的内容与训练的内容相矛盾。这里 LLM 提供了虚假信息。例如,LLM 生成的“第一种埃博拉疫苗于 2021 年获得批准”与源内容相矛盾,源内容表明该疫苗于 2019 年获得批准。
  2. 外在幻觉:LLM 生成的内容无法从源内容中得到验证。LLM 发明的新内容可能为真也可能为假。例如,如果 LLM 输出“中国已经开始对 COVID-19 疫苗进行临床试验”,而源内容并未提及这一点。

现在我们知道了幻觉的类型。让我们考虑一下原因。我们可以将幻觉的来源分为两种。它们是

  1. 数据引起的幻觉
  2. 训练导致的幻觉

2. 数据带来的幻觉

根据该论文,数据产生幻觉的主要原因是源参考分歧

2.1. 来源参考分歧

当源输入数据(LLM 生成文本的原始数据。这可以是模型用作生成输出的基础的任何结构化或非结构化输入数据)与训练阶段使用的参考输入数据( LLM 在给定源输入的情况下训练生成的目标文本。这可能是在训练期间作为基本事实的人工书写的文本)之间存在不匹配或差异时,就会发生源参考分歧。

2.1.1. 来源参考分歧的原因

启发式数据收集

当我们构建大型数据集时,通常使用启发式方法来配对源文本数据和参考文本数据。这可能会导致潜在的不匹配。例如,在WIKIBIO数据集中,源是 Wikipedia 页面的信息框(文章右侧的表格,用于显示有关主题的信息摘要),参考是页面的第一句话。但第一个数据集的 62% 包含信息框中不存在的附加信息。它导致显著的源-参考分歧。

某些语言生成任务的内在性质

一些 NLG 任务本质上可能涉及其数据集中的源参考发散。例如,优先考虑生成输出多样性的任务可能会生成包含源中没有的附加信息或上下文的响应。例如,在开放域对话系统中,它有时会生成通过包含不直接来自对话历史或外部知识库的相关事实或主观意见来提高用户参与度的响应。然而,这种数据集特征可能会导致幻觉

数据集中的重复项

当数据集中的重复项没有被正确过滤掉时,来自预训练语料库的重复示例会使模型倾向于从重复的示例中生成记忆短语的重复

2.1.2. 总结中的例子

源输入数据:一篇关于埃博拉疫苗批准的文章。

例如:“第一种埃博拉疫苗于 2019 年在美国获得 FDA 批准,距 2014 年首次爆发疫情已有五年。为了生产这种疫苗,科学家必须对埃博拉病毒的 DNA 进行测序。”

参考输出数据:文章的人工摘要。

例如:“第一种埃博拉疫苗于 2019 年获得批准。”

如果参考输出数据为:“第一种埃博拉疫苗于 2021 年获得批准”,那么就会出现分歧,因为参考数据包含一个事实(2021 年),而源输入(其中指出 2019 年)不支持该事实。

3. 训练和推理产生的幻觉

3.1. 不完美的表征学习

不完善的表示学习是指 LLM 中的编码器无法准确理解输入文本并将其编码为有意义且正确的表示。这种不完善可能由多种因素引起,包括输入数据的质量、模型的架构和训练程序。当编码器无法从输入数据中捕获必要的细节和上下文时,就会导致学习到的表示存在缺陷或不完整。这些有缺陷的表示在文本生成过程中通过解码器时会导致错误的输出。当编码器产生不完善的表示时,生成的输出可能包含幻觉——源输入中不存在的信息。这可能表现为事实错误、不相关的细节或完全捏造的内容。

例子

假设源输出为“第一种埃博拉疫苗经过严格测试后于 2019 年获得 FDA 批准”。编码器应捕获关键细节:“第一种埃博拉疫苗”、“经 FDA 批准”和“2019 年”。假设编码器未能准确捕获批准年份或参与批准过程的实体。LLM 可能会输出“第一种埃博拉疫苗于 2021 年获得 CDC 批准”。

3.2. 错误解码

错误解码是指在 LLM 解码阶段发生的错误。解码器的作用是从编码的输入表示生成目标序列(输出文本)。此阶段的错误可能来自多种因素,包括注意力机制、解码策略和解码器整体架构的问题。我们可以将其分类如下。

注意力机制错误。

注意力机制允许解码器在生成输出的每个单词时专注于输入序列的特定部分。如果注意力机制错误地识别了应该关注输入的哪些部分,则可能导致生成的文本出现错误。在翻译任务中,如果注意力机制错误地关注输入句子中不太相关的部分,则生成的翻译可能会混淆主语、宾语或其他关键细节。

解码策略问题。

在解码过程中,会使用不同的策略来生成文本,例如贪婪搜索、定向搜索或前 k 个采样等采样方法。每种策略都有其优点和缺点。有些策略,尤其是那些引入随机性的策略(例如前 k 个采样),如果管理不当,可能会导致幻觉。前 k 个采样通过从前 k 个可能的下一个标记中随机选择来引入可变性,这有时会导致意外或不相关的文本。

曝光偏差

曝光偏差源于训练和推理之间的差异。在训练期间,解码器通常使用[教师强制最大似然估计](https://cedar.buffalo.edu/~srihari/CSE676/10.2.1 TeacherForcing.pdf)(MLE) 进行训练,其中解码器根据真实前缀序列预测下一个标记。然而,在推理过程中,解码器根据迄今为止生成的序列生成下一个标记。这种差异可能导致生成的错误随着时间的推移越来越多,尤其是对于较长的序列。

3.2.1. 示例

训练阶段:模型学习使用训练数据中的实际先前单词来生成摘要。

示例源文本:“该公司第三季度利润增长了 20%。”该模型学习根据前面的正确单词来生成摘要中的下一个单词。

推理阶段:模型根据其先前的输出生成摘要。

示例:如果模型以“公司报告”开头,但随后错误地生成了“损失”而不是“利润”,它可能会继续说“第三季度增长 20%”,从而导致摘要与源文本相矛盾。

3.3参数知识偏差

当预训练语言模型过于依赖其在预训练期间内化的知识,而不是专注于生成过程中输入数据提供的特定上下文时,就会出现参数知识偏差。这可能导致生成的文本虽然基于一般世界知识在事实上是正确的,但可能与特定输入不相关或不忠实。出现这种偏差的原因是大型语言模型是在大量文本语料库上进行训练的,这使它们能够记住大量的事实信息。

LLM 是在包含各种主题和事实的海量数据集上进行预训练的。这种广泛的训练使模型能够内化大量的常识。虽然这些常识对许多任务都很有用,但它有时会掩盖输入数据的具体背景,导致模型根据它“知道”的内容而不是它应该从输入中推断的内容来生成文本。

3.3.1. 示例

来源输入:“2022 年诺贝尔文学奖授予安妮·埃尔诺,以表彰她在揭示个人记忆的根源、隔阂和集体限制方面的勇气和临床敏锐度。”

生成的输出(具有参数知识偏差):“诺贝尔文学奖授予加布里埃尔·加西亚·马尔克斯和托妮·莫里森等作家,以表彰他们对文学的重大贡献。”

该模型正确地提到了过去的诺贝尔奖获得者,但未能关注 2022 年授予安妮·埃尔诺 (Annie Ernaux) 的奖项的具体背景。

4 RAG 幻觉

基于以上细节,你可能会认为在你的 RAG 系统中修复幻觉是不可能的。但根据论文《自适应变色龙或顽固的懒惰:揭示大型语言模型在知识冲突中的行为》,你可以这样做,这样 LLM 就可以被说服依赖外部数据。

本文研究了 LLM 在面对单一反记忆(与他们的参数记忆相矛盾的外部证据)时的反应。该研究对比了两种构建反记忆的方法:

  1. 实体替换:一种启发式方法,其中参数内存中的特定实体被其他实体替换。
  2. 基于生成:直接生成相干反记忆的方法,以确保高质量和自然度。

4.1 基于实体替代的反记忆

这里使用实体替代法来创建反记忆,即用相同类型的不同实体替换参数记忆中的实体。然而,这种方法可能导致证据不一致。

让我们考虑一个例子。

  • 参数记忆:“华盛顿特区是美国首都。这里有华盛顿纪念碑。”
  • 基于实体替代的反记忆:“美国首都伦敦有华盛顿纪念碑。”
  • 问题:“美国的首都是哪里?”
  • LLM 的答案(基于参数记忆):“华盛顿特区”

结果表明,面对此类反记忆,法学硕士倾向于坚持他们的参数记忆。这是因为替代证据的连贯性较低,因为上下文仍然与原始实体(例如华盛顿纪念碑和美国)有很强的关联性。

4.2 基于生成的计数器记忆

法学硕士被要求从头开始生成反记忆。这种方法可以产生更连贯、更令人信服的反记忆。以下是一个例子:

让我们考虑一个例子。

  • 参数记忆:“巴黎是法国的首都。”
  • 基于世代的反记忆:“内马是法国的首都。这已得到法国政府官方网站的证实,该网站将其列为首都。”
  • 问题:“法国的首都是哪里?”
  • LLM 的答案(基于反记忆):“Néma。”

4.3. 实验结果

本文展示了实体替换和基于生成的方法的 LLM 答案(基于参数记忆与基于反记忆)的分布结果:

  • 实体替换:LLM 大多遵循其参数记忆。
  • 基于代际:LLM 更有可能接受反记忆作为正确答案。
  • **大型闭源模型(ChatGPT、GPT-4、PaLM2):**它们在使用基于替换的反记忆时表现出对参数记忆的显著依赖,但对基于生成的反记忆的接受度显著提高。
  • 较小的开源模型,如 Qwen-7B 和 Llama2–7B:它们更有可能接受两种方法的反答案。
  • 同一系列中的较大开源模型(Llama2–70B 和 Vicuna-33B):当使用基于替换的反记忆时,它们表现出更高的坚持参数记忆的倾向,但对基于生成的反记忆更为开放。

对于所有 LLM,记忆率越高的问题越受欢迎。这表明 LLM 在回答有关更受欢迎的实体的问题时更有可能依赖他们的参数记忆。受欢迎程度越高,对内部知识的依赖就越强。

  • GPT-4:在所有流行度级别中具有最高的记忆率,这表明与其他模型相比,它具有更强的确认偏差。
  • ChatGPT 和 PaLM2:它们也表现出较高的记忆率,但与 GPT-4 相比波动略大。
  • Llama2–7B:与其他相比,它的记忆率较低,表明它更灵活,并且不太依赖内部记忆。

我们可以总结如下研究结果

  1. 接受连贯的反记忆:LLM 非常容易接受连贯且令人信服的反记忆,即使它与他们的参数记忆相冲突。这与之前的结论相矛盾,即 LLM 通常会固执己见并坚持他们的参数记忆。
  2. 易受误导:生成的反记忆在误导法学硕士 (LLM) 方面的有效性凸显了一个重大问题。法学硕士 (LLM) 很容易被精心编造的误导信息所欺骗。
  3. 方法比较:在说服 LLM 接受反记忆方面,基于生成的方法优于实体替换方法。

4.4 多源证据

当 LLM 面对多个证据时,它们会如何表现?其中一些证据可能支持参数记忆,而另一些证据可能与参数记忆相冲突?这种情况代表了现实世界中的应用,其中 LLM 会从各种来源(例如搜索引擎或 RAG 系统)获得信息。在此设置中,会向 LLM 提供多个证据。重点是了解 LLM 如何优先考虑和整合这些证据,尤其是当它们包含相互冲突的信息时。该研究主要探讨三个方面。它们是

  • 证据的普及性
  • 证据呈现顺序
  • 支持证据与矛盾证据的数量。

研究发现法学硕士生存在确认偏见,尤其是对更流行的知识。法学硕士生在培训期间更频繁遇到的事实,这种偏见更为强烈。

4.5 实验结果

  1. 证据偏好和受欢迎程度

LLM 对参数记忆表现出强烈的确认偏差,尤其是对热门问题。例如,GPT-4 对最热门问题的记忆率为 80%,这表明它更倾向于内部知识,而不是相互矛盾的外部证据。

让我们考虑一个例子。

问题:“美国现任总统是谁?”

  • 参数记忆:“乔·拜登是美国现任总统。”
  • 反记忆:“John Doe 是美国现任总统,最新新闻报道证实了这一点。”

对于一个流行且众所周知的事实,例如现任总统,像 GPT-4 这样的 LLM 更有可能坚持他们的参数记忆(乔·拜登),由于在训练期间经常接触这一事实,因此表现出很高的记忆率。

2. 订单敏感度

LLM 对证据呈现的顺序表现出敏感性。当参数记忆首先呈现时,LLM 更有可能坚持下去。这种顺序敏感性因模型而异。例如,虽然 GPT-4 表现出的波动较小,但 PaLM2 和 Llama2–7B 等模型会根据证据呈现的顺序表现出显著的响应变化。这种对上下文中证据的顺序敏感性可能不是 RAG 的理想特性。

问题:“澳大利亚的首都是哪里?”

  • 第一个证据(参数记忆):“堪培拉是澳大利亚的首都。”
  • 第二个证据(反记忆):“悉尼是澳大利亚的首都。”

当参数记忆(堪培拉)首先出现时,LLM 更有可能选择它作为答案。如果反记忆(悉尼)首先出现,则响应可能会发生变化,尤其是在 PaLM2 等不太稳健的模型中。

3. 证据数量

当呈现更多反记忆时,LLM 可能会倾向于接受相矛盾的信息。相反,当参数记忆与反记忆以平衡的方式呈现时,LLM 会表现出对参数记忆的明显确认偏差。

问题:“冥王星是行星吗?”

  • 证据 1(参数记忆):“冥王星被归类为矮行星。”
  • 证据2(反记忆):“冥王星被认为是太阳系的第九大行星。”
  • 附加证据(支持反记忆):一些较早的天文学文本和文章也将冥王星称为行星。

有了多条反向记忆,法学硕士可能会倾向于接受冥王星作为行星的过时分类,尤其是当反向记忆连贯且令人信服时。

因此,证据顺序对多源证据场景中的 LLM 行为的影响显而易见。结果表明,在设计将外部信息与 LLM 集成的系统时,考虑证据呈现顺序非常重要。GPT-4 等模型表现出稳健性和强烈的确认偏差,而 PaLM2 和 Llama2–7B 等其他模型则更多地受到证据顺序的影响,这可以在应用程序中用来管理信息可靠性和偏差。

5. 关于 RAG 系统的要点

  1. 更大的模型更有可能抵抗通过 RAG 系统呈现的任何虚假信息,但它们在接受来自 RAG 系统的信息时可能不够灵活。
  2. 规模较小的 LLM 很容易被错误信息所说服,但他们在接受来自外部 RAG 系统的信息方面非常灵活。
  3. 以一致、连贯的方式呈现您的 RAG 数据,以便信息被 LLM 接受。
  4. LLM 甚至会生成误导自己的错误信息。
  5. 像 GPT4 这样的 LLM 对其内部知识有强烈的确认偏差。在这种情况下,较小的模型更灵活,对内部知识的依赖性更低(当向内部记忆提供相冲突的信息时)。
  6. 对于流行实体,像 GPT 这样的 LLM 对内部知识具有非常强烈的确认偏见。
  7. LLM 对证据的呈现方式相当敏感,不同的模型偏好不同的顺序。
  8. LLM 会选择证据较多的那一方——如果提供的信息不相关,LLM 可能会被这些信息分散注意力,不太可能根据参数记忆做出回答。对于较小的模型尤其如此。
  9. 如果同时存在不相关数据和相关数据,LLM 可以在一定程度上过滤掉不相关的信息。

我觉得较大的模型就像Java语言。易于使用、易于学习,可以自动进行垃圾收集等。较小的模型就像*C,*学习起来有点困难,但更灵活。这两种语言都有很好的用例。我觉得 LLM 也一样。

类似的帖子