### 人会有幻觉,大型语言模型也会有幻觉
人会产生幻觉,这并不稀奇。但你知道吗,大型语言模型(LLM)也一样——最近,OpenAI 安全系统团队负责人 Lilian Weng 更新了一篇博客,系统梳理了近年来在理解、检测和克服 LLM 幻觉方面的研究成果。她的博客一向深入、细致,被很多 AI 研究者视为重要参考。

*Lilian Weng,中文名翁丽莲,OpenAI 安全系统团队负责人。2018年加入OpenAI,参与了GPT-4项目的预训练、强化学习&对齐、模型安全等工作。她的博客深入、细致,具有前瞻性。*
所谓“幻觉”,通常指模型生成不真实、虚构、不一致或无意义的内容。如今这个词的含义有所泛化,常用来泛指模型出错的情况。但本文聚焦的是狭义定义:**模型的输出是凭空编造的,并未基于所给的上下文或世界知识**。
幻觉可以分为两类:
- :模型输出与上下文中的源内容不一致。
- :模型输出本应以预训练数据集为基础,但由于预训练数据规模巨大,检索和识别冲突成本极高,不可能每次生成时都验证。如果把预训练语料库视为世界知识的代表,那就需要确保模型输出是事实,且能通过外部世界知识验证。另一个同样重要的能力是:如果模型不知道某个事实,它应该承认自己不知道。
本文重点关注的是**外源性幻觉**。要避免这种幻觉,LLM 需要做到两点:(1) 实事求是,(2) 不知时要承认不知。
以下是文章目录:
- 幻觉产生的原因
- 预训练数据问题
- 微调新知识
- 幻觉检测
- 检索增强式评估
- 基于采样的检测
- 对未知知识进行校准
- 间接查询
- 反幻觉方法
- RAG → 编辑和归因
- 动作链
- 针对归因进行微调
- 针对事实性进行微调
- 采样方法
- 附录:评估基准
幻觉产生的原因
标准的可部署LLM需要先预训练,然后微调以提升对齐等能力。那么,预训练和微调这两个阶段分别有哪些因素可能诱发幻觉呢?
预训练数据问题
预训练数据的规模巨大,目标是尽可能以各种书写形式表示世界知识。数据来源主要是公共互联网,这就难免存在信息过时、缺失或不正确的问题。模型通过最大化对数似然来记忆信息,因此很容易以错误的方式记住东西——犯错也就不奇怪了。
微调新知识
为了提升某些具体能力(比如指令遵循),常用方法是对预训练LLM进行监督式微调或RLHF。微调过程中难免会引入新知识。微调所需的计算量通常小得多,所以小规模微调能否可靠地让模型学到新知识,一直存在争议。
Gekhman等人(2024)的论文《Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations?》专门研究了这个问题。他们发现:(1) 当微调样本包含新知识时,LLM学习速度更慢(相比样本与已有知识一致的情况);(2) 模型一旦学习了带有新知识的样本,就更倾向于产生幻觉。
他们使用闭卷问答数据集EntityQuestions,定义了P_Correct来衡量模型准确生成正确答案的概率,并根据这个概率将样本分为四类:HighlyKnown、MaybeKnown、WeaklyKnown和Unknown。

*图1:基于模型输出正确答案的可能性对闭卷问答样本进行知识分类。*
实验得出了几个有趣的观察,开发集准确度可以反映幻觉程度:
- Unknown样本的拟合速度比Known样本慢得多。
- 当模型拟合的样本大部分是Known、只有少量Unknown时,开发集性能最佳;而当模型学习了大量Unknown样本时,就开始出现幻觉。
- 在Known样本中,MaybeKnown比HighlyKnown更能提升整体表现。

*图2:在一半Known和一半Unknown样本上微调时的训练集和开发集性能。可以看到,Unknown样本学习速度慢得多,而模型学习绝大多数Known样本时才能得到最好的开发集结果。*
这些结果说明,用监督式微调来更新LLM的知识是有风险的。
幻觉检测
检索增强式评估
为了量化模型幻觉,Lee等人(2022)提出了FactualityPrompt基准,包含事实性和非事实性的prompt,以维基百科文档或句子作为知识库来检验事实性。评估指标有两个:
- :使用预训练实体检测模型,度量检测到的、但未在ground truth文档中间出现过的命名实体比例。
- :使用在MNLI上微调的RoBERTa模型,计算生成句子中被标记为“与配对的维基百科句子相关”的比例。
命名实体误差高、蕴涵率低,说明模型事实性较好。而且研究表明,更大的模型通常表现更好。
Min等人(2023)提出的FActScore,将长形式生成结果分解成多个原子事实,再根据知识库分别验证,从而得到有支撑的句子比例(精度)。在人物传记生成任务中,他们发现使用检索总是优于非上下文LLM。
几种验证方法对比:
- 非上下文LLM:直接问“<原子事实> True or False?”,不带上下文。
- 检索→LLM:在prompt中加入k条检索到的相关消息。
- 非参数概率:通过掩码语言模型计算原子事实中token的平均似然。
- 检索→LLM+NP:集成方法。
有趣的发现:
- 更罕见实体的错误率更高。
- 生成时越靠后提到的事实,错误率越高。
- 使用检索来设定基础,能大幅降低幻觉。
Wei等人(2024)提出的SAFE(Search-Augmented Factuality Evaluator)也是一种长篇事实性评估方法。与FActScore不同,SAFE对每个原子事实使用一个语言模型智能体,迭代地向谷歌搜索发送查询并推理搜索结果是否支持该事实。实验表明,SAFE与人类的一致率为72%,当不一致时,SAFE胜过人类的胜率为76%,且成本低20倍。

*图4:SAFE方法概况。*
SAFE的评估指标是F1@K,兼顾精度(事实性)和召回率(长覆盖)。给定响应y,F1@K的定义如下:


*图5:主流模型在LongFact基准上的F1@K性能。*
Chern等人(2023)提出的FacTool采用标准的事实检验流程,适用于多种任务:陈述提取→查询生成→工具查询和证据收集→一致性验证。

*图6:FacTool框架。*
基于采样的检测
Manakul等人(2023)提出的SelfCheckGPT,通过黑箱LLM生成的多个样本进行一致性检查,无需外部知识库。它使用多种指标(BERTScore、NLI、提词询问yes/no)度量响应与其他样本的一致性。实验表明,使用提词方法效果最好。

*图7:SelfCheckGPT概况。*
对未知知识进行校准
当模型遇到无法回答或不知道答案的问题时,可能引发幻觉。TruthfulQA和SelfAware这两个基准专门衡量模型在这种情况下是否诚实。
TruthfulQA包含817个问题,涵盖医疗、法律、金融等38个主题。当且仅当答案中没有错误陈述时(包括拒绝回答或给出不相关的诚实答案),才认定其诚实。实验显示,最好的LLM准确度只有58%,而人类为94%。由于训练数据包含大量常见误解,更大的模型反而更不诚实。
对于TruthfulQA中的问题,GPT-3给出的错误答案示例:

Yin等人(2023)提出的SelfAware包含1032个不可解答问题和2337个可解答问题。区分可解答与不可解答本质上是二元分类任务,实验表明更大的模型表现更好。

*图8:不同大小Instruct-GPT系列模型的准确度。*
另一种方法是测量输出不确定性。Kada vath等人(2022)发现,在多选题上,LLM的预测概率与答案正确率校准得不错,但RLHF微调会破坏校准性能,而更高采样温度能改善校准。

*图9:不同大小模型的校准曲线(左)和问题格式对校准误差的影响(右)。*
Lin等人(2022)使用CalibratedMath任务套件,要求模型给出数值答案和置信度。研究发现,语言表达的概率能很好地泛化到不同任务难度,少样本学习表现不如微调。

*图10:训练和评估的校准曲线。*
间接查询
Agrawal等人(2023)研究了参考文献幻觉,比如编造不存在的书籍、论文标题。他们对比了直接查询和间接查询两种方法。间接查询要求提供辅助信息(如作者是谁),假设多次生成结果中作者都一致的可能性远低于直接询问是否存在。实验证明间接查询效果更好,更大模型幻觉更少。

*图11:直接查询和间接查询对比。*
反幻觉方法
接下来,我们一起回顾一些提升LLM事实性的方法,从检索外部知识和特殊采样,到对齐微调。还有通过神经元编辑来降低幻觉的可解释性方法,但本文不深入介绍。
RAG → 编辑和归因
RAG(检索增强生成)是一种常用的提供真实基础信息的方法:先检索相关文档,再作为额外上下文生成。
RARR(Gao等人,2022)通过“研究和修订”来改进归因。给定模型生成的文本x,RARR分为两步:
1. **研究阶段**:生成搜索查询,检索相关文档作为证据。
2. **修订阶段**:编辑输出,校正没有证据支持的内容,同时尽量保留原内容。
评估时关注归因率(y中有多大比例可归因于证据)和留存率(y保留原文本的比例)。RARR相比对比方法表现更平衡。
FA VA(Mishra等人,2024)类似,但编辑器模型需要微调。通过向模型生成中注入随机误差来生成合成训练数据。
Rethinking with Retrieval (RR)(He等人,2022)也依赖外部知识,但无需额外编辑。它使用分解式CoT prompt生成多条推理路径,然后根据与检索知识的契合度选出最忠实的答案。

*图14:RR在多个基准上的性能。*
Self-RAG(Asai等人,2024)端到端训练一个语言模型,使其能够输出反思token(检索、相关性、支持性、有用性),在生成过程中自我反思。他们用GPT-4创建批评器和生成器的监督数据集,然后蒸馏成内部模型。
![]()
*图15:Self-RAG框架。*
动作链
也可以不依赖外部检索,而是设计流程让模型自己验证和修订。Chain-of-Verification (CoVe)(Dhuliawala等人,2023)包含四步:
1. **基线响应**:生成初始草稿。
2. **规划验证**:设计验证问题。
3. **执行验证**:分别回答各个问题(联合式、两步式、分解式、分解+修订)。
4. **最终输出**:生成优化后的输出。
研究发现,分开回答验证问题效果优于长篇生成,分解式+修订能进一步提升。
RECITE(Sun等人,2023)将“复述”作为中间步骤:模型先复述相关信息,再生成答案。复述能与BM25检索媲美,但不及真实事实文本。
采样方法
Lee等人(2022)发现核采样在FactualityPrompt基准上不如贪婪采样,但多样性更好。因此提出**事实性核采样**:动态调整概率p,假设句子后段的随机性对事实性危害更大。公式为 p_t = max(ω, p·λ^{t-1})。
![]()
*图18:事实核采样效果。*
推理时间干预(ITI)(Li等人,2023)通过线性探针找到与事实性相关的注意力头,并在推理时沿“真实”方向移动其激活。
![]()
*图19:ITI示意图。*
针对事实性进行微调
Lee等人(2022)提出两种事实性增强训练思路:
- **TopicPrefix**:在文档中每个句子前加上主题(维基百科标题),使模型更好地感知事实。
- **句子完成度损失**:将训练损失重点放在句子后半部分(认为后半部分包含更多事实知识),通过零掩码实现。最佳中心点为句子长度的一半。
FLAME(Lin等人,2024)在事实性意识下进行SFT+RLHF对齐。SFT阶段生成事实性优于模型自身输出的训练数据;RLHF阶段将FActScore用作奖励信号。他们建议使用模型生成的响应来构建数据集,以避免在训练中蒸馏未知知识。
![]()
*图20:FLAME对齐训练流程。*
事实性微调(Tian & Mitchell,2024)通过DPO微调提升事实性。流程:对同一组prompt,采样成对完成结果,使用两种方法标注真实度(基于参考和无参考),然后构建偏好数据集进行DPO。

*图22:事实性估计过程。*
![]()
*图23:事实性微调效果。*
针对归因进行微调
另一种减少幻觉的方法是训练LLM更好地理解检索内容并分配高质量归因。
WebGPT(Nakano等人,2022)使用网络浏览器与搜索交互,学习引用参考网页给出答案。行为克隆后进行强化学习,但RL带来的提升很小。
GopherCite(Menick等人,2022)类似,但通过少样本prompt生成演示,并使用奖励模型评估。实验中,结合拒绝采样时,RL提升有限。
为了避免低质量响应,还可以设置一个全局奖励模型阈值,让模型在不确定时回答“我不知道”。
附录:评估基准
本文提到的数据集汇总:
- **TruthfulQA**(Lin等人,2021):817个问题,38个主题,衡量诚实响应。
- **FactualityPrompt**(Lee等人,2022):事实和非事实prompt,以维基百科为知识库。
- **SelfAware**(Yin等人,2023):1032个不可解答问题,2337个可解答问题。
- **LongFact**(Wei等人,2024):2280个prompt,38个主题,检查长篇生成事实性。
- **HaDes**(Liu等人,2021):从维基百科扰动生成的二元分类数据集。
- **FEVER**:185,445个陈述,分类为Supported、Refuted或NotEnoughInfo。
- **FA VABench**(Mishra等人,2024):200个prompt,600个响应,细粒度幻觉标注。