
❝面对已读乱回的AI,到底要如何分辨真假?
随着大模型的兴起,越来越多的人开始接触和使用大模型,绝大多数使用大模型的人应该都碰到过大模型出错的情况。作为主流的大语言模型,我们主要通过文本QA或者指令的方式来与大模型进行交互,而大模型幻觉就是大模型在回复中出现的一种比较常见的错误。
由华为和哈工大合作发表的论文综述 《A Survey on Hallucination in Large Language Models: Principles, Taxonomy, Challenges, and Open QuestionsA Survey on Hallucination in Large Language Models: Principles, Taxonomy, Challenges, and Open Questions》,很全面的讲清楚了大模型幻觉的定义和原因,及其缓解的方法。
论文地址:https://arxiv.org/abs/2311.05232
论文在开头部分介绍了大模型的相关背景知识。
相关知识
大模型的定义
LLMS指的是一系列通用模型,这些模型基本都是基于transformer网络结构,并且在大规模的文本语料库中经过了广泛的训练。例如常见的大模型:GPT3,Palm,Llama, GPT4等。通过扩展数据量和模型的容量(即参数量),LLM展现出了惊人的新的能力,比如典型的 in-context learning (ICL,上下文学习), chain-of-thought prompting(思维链提示), instruction following(遵循指令)。
大模型的训练步骤
LLM经历三个主要训练阶段:预训练(Pre-training)、监督微调(Supervised Fine-Tuning, SFT)和从人类反馈中强化学习(RLHF)
Pre-training: 该阶段主要是LLM广泛的获取知识和能力的基础。通过大量的自监督的训练,模型获得各种语言的语法,各种知识和推理能力。为进一步微调奠定基础。 SFT:通过指令和回答数据进一步的训练LLM,提高模型的能力和可控性。 RLHF:RLHF是用来增强模型与人类的偏好的一致性,即尽可能的让模型的反馈更符合人的预期。
幻觉的定义
论文将大模型的幻觉主要分为两类
1. 事实型幻觉(Factuality Hallucination)
事实型的幻觉分为两种:
事实矛盾(Factual Contradiction):即大模型的输出包含了事实信息,但是与事实是矛盾的。可以进一步分为实体错误幻觉(entity-error hallucination)和关系错误幻觉(relation-error hallucination)。
事实编造(Factual Fabrication):大模型的输出的事实是无法利用现实世界的知识来验证的。也可以进一步分为 不可验证幻觉(Unverifiability hallucination) 和 夸大幻觉(Overclaim hallucination)。
2. 忠实型幻觉(Faithfulness Hallucination)
主要分为三种情况
指令不一致(Instruction inconsistency):没有按照用户的指令执行反馈。
内容不一致 (Context inconsistency):模型没有按照上文的信息进行理解。
逻辑不一致 (Logical inconsistency) :这里多半可能涉及推理时,出现逻辑错误。
顾名思义可以理解每种幻觉的意思,论文也对其进行了举例说明:

然后论文针对幻觉主要介绍的内容如下图:

为了便于理解,这里展示中文结构图:

幻觉原因
数据部分
论文指出数据部分造成幻觉主要是由pre-training和RLHF阶段的数据导致的。
其实笔者认为,开发者在业务中应用大模型,必要时候需要进一步SFT,我们提供的业务数据也会导致模型幻觉的产生。这一点对于应用大模型的开发者来说,sft产生的幻觉也不少见。
1. 错误数据和偏差
错误或虚假的信息(Imitative Falsehood)用来训练模型,是直接导致模型学习到错误的信息,甚至产生记忆,最终导致模型有错误的认知,即会出现幻觉。
社会偏见(Societal Biases)
由于数据在社交媒体传播或者收集过程中,会带有人为主观或者社会性质的偏见,导致数据信息的偏差。从而使得模型学习这些数据也产生了认知偏差。

2. 知识边界
尽管模型在预训练阶段使用了海量的训练数据,使LLM学习到了广泛的事实知识,但本质上还是会存在知识边界。尤其是在一些专业领域,预训练阶段的数据可能并未涉及或者涉及不多。 因此本质上,模型的知识范围受到了训练数据的限制。
另外论文中提到(1)LLM无法记住所有在预训练阶段遇到的所有知识和事实,尤其是当训练数据中的知识分布不均,对于长尾的知识(Long-tail Knowledge )更难学习或记忆。(2)训练数据本身也会有内在的边界,随着时间推移,知识也在发展更新(Up-to-date Knowledge),或者训练数据无法拿到需要版权或者无法访问的知识内容(Copyright-sensitive Knowledge)。

3. 低质量(未校准对齐)的数据
这里论文中提到了笔者在上文提到的在SFT阶段,由于SFT数据和模型本身在预训练获取的知识未对齐,不管是引入了新知识还是引入了有冲突的数据,则会对模型原有的认知产生冲击,这样模型对该部分的知识会产生模糊不定的认知。
即在监督的微调阶段(SFT)阶段,LLM通常是通过人类注释者标记的指令对训练的,有可能引入新的事实知识,该知识超出了预训练期间建立的知识边界。有其他研究表明,模型在集中于任务格式学习的特定任务指令倾向于产生更高比例的幻觉响应。此外,过于复杂和多样化的指令也会导致幻觉增加。
这里论文实际上就指出了,在我们应用大模型做特定任务的SFT时,数据质量需要有比较严格的把控,否则会影响之后模型在业务中使用的效果。同时,指定任务的prompt设计也需要言简意赅。
训练部分
不同的训练阶段是为了使模型获得某些特定的能力,不同的阶段也都可能会导致模型产生幻觉。
预训练
由于大多数大模型都是基于transformer的模型结构设计,属于自回归生成模型,在预训练阶段,模型在学习语言语法时都是以因果语言模型为目标。在这种建模方法中,模型试图预测给定上下文中的下一个单词,该上下文通常包括在当前单词之前的所有单词。这种建模方法遵循因果原则,即当前单词只受到其前面单词的影响,而不受后面单词的影响。
这些模型以单向、从左到右的方式,仅根据前面的标记词来学习预测后面的标记词。这种方法虽然有利于高效训练,但却从本质上限制了捕捉错综复杂的上下文依赖关系的能力,可能会增加出现幻觉的风险。
同时基于以上原理,当随着序列的长度增加,后文进行预测时的注意力会被分散或者稀释,导致会出现不可预测的幻觉。
另外,由于模型预测依赖于上文内容,如果上一个预测出错,那么下一个预测会出现错误的叠加,类似于雪球效应,这样也会导致幻觉的发生。
总结来说,预训练阶段是为了使模型学会自然语言语法,以及使其具有基本的知识和推理能力。而该阶段导致产生幻觉是模型本身的结构特性决定的,与模型的生成原理和训练目标紧密相关。
SFT
微调阶段是为了进一步加强模型对某些领域或者任务的认知,能够激发或者突破在预训练阶段获得的能力。
超过知识边界
所以,当sft的指令超过了模型的能力边界时,模型可能就难以突破既有的能力甚至能力会下降出错。例如在SFT中如果对微调数据过拟合(有点拔苗助长的意思),即强行让模型去拟合能力边界外的知识,这样就会扩大模型产生幻觉的风险。
模型无法拒绝
模型在SFT时,不一般不会让模型拒绝响应指令,所以当面对超出其知识边界的询问时,这些模型更有可能编造内容而不是拒绝询问。
RLHF
有研究表明LLM经过训练激活,内部会生成与真实事实相关的信念,但是这些信念有时也未能正确输出,即便通过人类反馈进行改进训练,依然可能出现与内部信念不一致的情况。
简单来说,就是模型有时也会输出错误的认知,即便LLM知道事实。这种情况被称为“谄媚”,为了迎合人类的倾向。这种谄媚也不仅仅在答案模糊的时候出现,可能涉及到一些主观立场时会出现,比如政治立场。而研究也表明,模型这种变现是人类和模型共同驱动的。
推理部分
不完美的解码策略
目前常见的解码策略都是随机抽样,这种策略能够使模型具有创造性和多样性,但也会出现低质量的文本。解码策略中的随机带来的多样性是有代价的,会使模型不可控,幻觉风险增加。
过度自信
如果模型对最近生成的文本注意力过度集中,则导致对部分生成的内容过度自信,失去了对上下文的整体理解,而在长文本生成时会放大该情况,导致模型出现遗忘,偏离原始语境,从而产生幻觉。
Softmax瓶颈
由于模型的最后输出层基本都是softmax层,计算下一个词的概率,而这种模式已经被研究证明softmax的语言模型的有效性公认会受到限制,这个称为softmax瓶颈。softmax与分布式词嵌入的结合使用,限制了输出概率分布在上下文中的表现力,从而使 LM 无法输出所需的分布。此外,当输出词嵌入空间内的期望分布出现多种模式时语言模型也难以准确的选择应有的模式输出,这样也可能导致了风险。
这里可以简单举例子理解:当一个词是多义词时,模型输出也难以准确选择词应该表达的意思,从而会导致幻觉的产生。
推理失败
除了长尾的知识面临调整之外,有效的利用知识与推理能力也紧密相连。
比如在复杂问题之间存在关联性,LLM即使拥有相关知识,但是受到推理能力的限制,也难以产生准确的结果。
另外也有研究表明对于逆转的逻辑推理,模型也可能会出现失败的情况。比如模型知道 A is B, 但缺不知道B is A。这种关系其实涉及到了逻辑关系。
幻觉检测和基准
幻觉检测
针对于上文的幻觉类型,则有对应的检测方法。
事实检测
这里分为两个步骤:
事实提取:模型输出的事实性陈述。 事实验证:验证该事实的正确性。包含外部检索,即通过收集外部知识和证据来证明事实是否正确。内部检查则是利用LLM内部广泛的知识,来验证输出是否正确。
不确定性估计
虽然许多幻觉检测方法都依赖外部知识源进行事实检查,但也有几种方法可以在零资源环境下解决这一问题,从而无需检索。这些策略背后的基本前提是,LLM 幻觉的起源本质上与模型的不确定性有关。因此,通过对模型生成的事实内容的不确定性进行估计,就可以检测出幻觉。不确定性估计方法大致可分为两种。

LLM内部状态:LLM 的内部状态可以作为其不确定性的信息指标,通常通过标记概率或熵等指标来体现。
(1)有研究通过考虑关键概念中的最小标记概率,确定了模型对这些概念的不确定性。不确定性的基本原理是,低概率是模型不确定性的强指示,较高概率的标记对概念的影响较小。
(2)有研究采用了一种基于自我评估的不确定性估计方法:语言模型能够熟练地从其生成的解释中重构原始概念,表明其对该概念的熟练程度。通过最初提示模型为给定概念生成解释,然后使用约束解码让模型根据其生成的解释重建原始概念,响应序列中的概率分数可以作为该概念的熟悉度评分。
(3)研究也通过对抗攻击的视角解释了幻觉现象。利用基于梯度的标记替换,设计提示以诱发幻觉。研究观察到从原始提示生成的第一个标记通常表现出低熵,而与对抗攻击生成的标记相比则更为明显。基于这一观察,他们提出设定熵阈值来定义这种幻觉攻击。
LLM行为:当系统只能通过 API 调用访问时,可能无法访问输出的token级的概率分布。鉴于这种限制,一些研究已将重点转移到通过自然语言提示或通过检查其行为表现来探测模型的不确定性。
(1)通过对同一提示从LLM采样多个响应,评估事实陈述之间的一致性来检测幻觉。然而,这些方法主要依赖于直接查询,即明确要求模型提供信息或验证。(即通过模型直接回答同一问题,来观察答案是否一致来检查幻觉)
(2)有研究受到调查访谈的启发,提倡使用间接查询。与直接查询不同,这些间接查询通常提出开放式问题,以引出特定信息。通过使用这些间接查询,可以更好地评估多个模型生成之间的一致性。
(3)除了从单个LLM的多次生成中评估不确定性外,还可以通过引入额外的LLM来采用多agent视角。研究者受到法律交叉审问实践的启发,提出了LMvLM方法。这一策略利用一个考官LLM对一个被考官LLM进行提问,旨在揭示多轮互动中表现出的一致性问题。
忠实性幻觉检测

基于事实的指标
最直观的方法之一是测量生成内容和源内容之间关键事实的重叠程度。考虑到事实的不同表现形式,忠诚可以基于n-gram、实体和关系三元组来衡量。不同的衡量方式有各自的特点。
基于分类的指标
除了计算事实重合度外,评估模型生成忠实度的另一种直接方法是利用在相关任务(如自然语言推理(NLI)和事实检查)的数据或者特定于任务的幻觉和忠实内容数据上训练的分类器。
基于问答的指标
与基于分类器的度量方法不同,基于问答的度量方法 最近因其捕捉模型生成和来源之间信息重叠的能力增强而备受关注。.这些指标的操作方式是,首先从 LLM 输出的信息单元中选择目标答案,然后由问题生成模块生成问题。这些问题随后用于根据用户上下文生成源答案。最后,通过比较源答案和目标答案之间的匹配分数,计算 LLM 答案的忠实度。
基于不确定性的指标
与用于检测事实性幻觉的基于不确定性的方法相似,不确定性估计在忠实性评估中的应用也得到了广泛探索,其典型特征是通过熵和对数概率来评估。
基于LLM的评判
最近,LLMs 卓越的指令遵守能力凸显了其自动评估的潜力。利用这种能力,研究人员已经开始尝试新的范式来评估模型生成内容的忠实性。通过为LLM提供具体的评估指南,并同时输入模型生成的内容和源内容,能够有效地评估真实性。最终的评价输出可以是对忠实度的二元判断,也可以是表示忠实程度的 k点Likert量表。在提示选择方面,评价提示可以是直接提示、思维链提示COT、使用上下文学习或允许模型生成附带解释的评价结果。
幻觉基准
文中将幻觉基准分为两个主要领域:幻觉评估基准和幻觉检测基准
幻觉评估基准:主要评估目前前言LLM产生的幻觉程度。旨在量化 LLM 产生幻觉的倾向,特别强调事实不准确和与给定语境不一致的情况。当前幻觉评估基准的主要重点针对长尾的知识和具有挑战性容易引起捏造虚假情况的问题。
幻觉检测基准:专门设计用于评估现有幻觉检测方法的性能。对于幻觉检测基准,大多数先前的研究主要集中于特定于任务的幻觉,比如数据生成文本,机器翻译。随着任务变得复杂,基准的制定也随之变得复杂。

幻觉缓解
通过数据减少幻觉
与数据相关的幻觉通常是错误信息、偏见和知识差距的副产品,而这些信息、偏见和知识差距从根本上说都源于训练前的数据。通过数据减少幻觉主要有三部分:
(1) 数据过滤,旨在选择高质量的数据,避免引入错误信息和偏见。除了严格控制数据源外,删除重复数据也是一项重要程序。重复情况也分为两种:完全重复和近似重复。
(2)模型编辑:越来越受到研究人员的关注,其目的是通过纳入更多知识来纠正模型行为。目前的模型编辑技术可分为两类:定位-编辑 和 元学习。
定位-编辑方法包括两个阶段,首先定位模型参数中的 “错误 ”部分,然后对其进行更新以改变模型的行为。
元学习方法通过训练外部超网络来预测原始模型的权重更新。然而,元学习方法往往需要额外的训练和内存成本。
(3)检索增强生成 RAG
通常情况下,检索增强生成(RAG)遵循 “检索-阅读-再检索 ”的流程,首先由检索器从外部来源检索相关知识,然后由生成器根据用户查询和检索到的文档生成最终响应。
这一方法在目前比较常见和流行。能够在网络中获取大量新的知识,来填补LLM先天的知识缺陷,除了减少模型幻觉,还能大大扩大模型的知识领域。
RAG分为三种:一次检索,迭代检索,事后检索

减少训练产生的幻觉
减轻预训练产生的幻觉
这一块目前的研究主要是从两方面去展开,一个是基于模型结构去进行优化,减少因为模型结构导致在预训练阶段产生的幻觉。另一块是基于训练的方式,减少因为训练数据的划分使信息、知识的关联性下降,导致模型学习到的知识产生了失真。
减轻知识对齐产生的幻觉
这里的对齐指的是预训练之后的SFT,RLHF阶段。主要也是避免SFT阶段的训练数据与预训练阶段的数据有冲突,或者RLHF阶段,模型为了偏向迎合人类的答案导致回复出现问题。
减少推理产生的幻觉
事实增强解码
主要是想通过优先考虑llm生成的信息的事实性来提高其输出的可靠性。这一系列方法侧重于将模型输出与已建立的现实世界事实紧密地结合起来,从而将传播虚假或误导性信息的风险降至最低。
忠诚增强解码
忠诚增强解码优先考虑与提供的上下文对齐,并强调生成内容的一致性。论文将现有的工作归纳为两类,包括上下文一致性和逻辑一致性。
另外,论文专门针对RAG的幻觉进行了讲述。
检索增强生成中的幻觉
检索失败
检索过程是RAG框架中至关重要的初始步骤,其任务是检索最相关的信息以获取信息寻求查询。因此,检索阶段的失败会对RAG下游产生严重的影响,从而导致幻觉。这些故障通常源于三个主要部分:用户查询的制定,检索源的可靠性和范围以及检索器的有效性。
用户query
用户查询在指导 RAG 系统检索过程中发挥着重要作用。这些查询的具体性和清晰度对检索结果的有效性有着至关重要的影响。在本节中,我们将从三个方面讨论可能导致幻觉的因素:盲目检索、对模糊查询的误解以及准确检索复杂查询所面临的挑战。下表列出了一些例子,以便更好地理解。

检索数据源
检索来源的可靠性和范围是决定 RAG 系统有效性的关键因素。有效的检索不仅取决于用户查询的清晰度,还取决于检索信息来源的质量和全面性。如果这些来源包含与事实不符或过时的信息,检索失败的风险就会大大增加,并可能导致生成不正确或误导性的信息。
检索器
当用户的查询是明确的,检索源是可靠的,检索过程的有效性关键取决于检索器的性能。在这种情况下,不恰当的分块chunking和词嵌入embeding做法会严重影响检索器的效率。
生成瓶颈
上下文感知
上下文感知涉及理解并有效利用检索到的上下文信息。影响LLM保持上下文意识能力的关键因素,可以将其归类为三个主要部分:(1)在上下文中存在嘈杂检索,(2)上下文冲突,以及(3)不充分利用上下文信息。
上下文对齐
上下文一致确保 LLM 的产出忠实地与相关上下文保持一致。上下文对齐的主要组成部分包括:
(1) 来源归属和 (2) 忠实解码
未来研究
随着对LLM中幻觉的研究领域的不断发展,论文未来的重点转向了下一个研究领域。探讨前瞻性的研究领域,特别是视觉语言模型中的幻觉现象和在LLMs中划分和理解知识边界的挑战。
总结
在这份全面的调查报告中,论文对大型语言模型中的幻觉进行了深入研究,深入探讨了幻觉产生的复杂原因、开创性的检测方法和相关基准,以及有效的缓解策略。尽管已经取得了长足的进步,但大型语言模型中的幻觉问题仍然是一个令人关注的持续性问题,需要持续研究。
