OpenAI华人科学家翁荔最新Blog,提出LLM外在幻觉(extrinsic hallucination)。
本文详细讨论了大模型产生幻觉的原因、幻觉检测方法以及减少幻觉的策略。
摘要
OpenAI 的华人科学家翁荔在其最新的 Blog 中,提出了大型语言模型(LLM)的 “外在幻觉” 问题。她将 LLM 的幻觉问题具体化为模型输出内容是虚构的,并且不基于所提供的上下文或世界知识。
幻觉分为上下文内幻觉和外在幻觉:
- 上下文内幻觉:模型的输出应该和上下文里的内容一致,但有时输出和上下文内容不一致,这就叫上下文内幻觉。
- 外在幻觉:模型的输出应该基于之前预训练的数据集,然而,由于数据集很大,每次生成内容时去检索和识别冲突的成本很高。如果把预训练的数据集看作是世界知识的象征,那么我们要确保模型的输出是准确的,并且可以通过外部世界的知识来验证。还有,当模型不知道某个事实时,它应该明确表示不知道。否则,就是外在幻觉。
产生幻觉的原因
大模型产生幻觉的原因:包括预训练数据集问题和微调新知识的问题。
使用监督微调(SFT)来更新 LLM 知识存在风险,可能会导致模型产生幻觉。监督微调(SFT)和人类反馈强化学习(RLHF)来微调预训练LLM(base model)是提高模型某些能力(例如指令跟随)的常用技术。但微调阶段难免引入新知识。而微调,对小规模的微调模型是否能可靠地学习新知识还有待商榷。这里意思是7B这样的小模型能否通过SFT注入知识是不确定的。
证据
Gekhman等人在今年的一项研究中讨论了一个问题:用新知识进行LLM微调是否会促使幻觉现象的发生。
他们发现:LLM学习带有新知识的样本,要比学习与模型预先存在的知识样本,学得更慢;一旦学习了这些带有新知识的样本,模型产生幻觉的倾向就会增加。

实验中的一些有趣观察,其中验证集(dev set)的准确率被视为幻觉的象征性指标:
- Unknown拟合速度明显比Known慢得多;
- 当LLM拟合了大多数Known训练示例,但只拟合了少数Unknown示例时,可以获得最佳表现;
- 当大多数Unknown示例被学习后,模型开始产生幻觉。

这些来自Gekhman等人的研究结果,指出了使用监督微调来更新LLM知识的风险。
幻觉检测
- 检索增强评估:使用FactualityPrompt基准数据集和FActScore等方法。
- 基于采样的检测:如SelfCheckGPT方法,通过样本一致性检查识别错误。
- 校准未知知识:如TruthfulQA和SelfAware基准测试,衡量模型在未知情况下生成真实回应的能力。
评估幻觉的数据集
-
FactualityPrompt的评估:
- FactualityPrompt是一个基准数据集,它包含事实性和非事实性的提示,使用维基百科文档或句子作为事实性的基础知识库。
- 评估模型生成文本的事实性时,考虑两种指标:幻觉命名实体(NE)错误率和蕴含比率(Entailment ratios)。NE错误率是检测到的但未在ground truth文档中出现过的命名实体的比例;蕴含比率是生成句子中由蕴涵模型标记为与配对的维基百科句子相关的比例。
-
FActScore的评估:
- FActScore是一种评估方法,它将长文本生成分解为多个原子事实,并根据维基百科等知识库单独验证每个事实。
- 测量每个模型生成的知识来源支持的句子的比率(精度),FActScore是一组提示中模型生成的平均精度。
- FActScore的安装和使用可以通过Python包
factscore
进行,需要先创建Python环境并安装必要的依赖,然后下载数据和使用命令行工具来运行FActScore。
-
评估流程:
- 对于FactualityPrompt,首先需要准备模型续写的文本和配对的维基百科文本,然后使用实体检测模型和NLI模型来计算上述两个指标。
- 对于FActScore,需要将长文本分解为原子事实,然后使用维基百科等知识库来验证每个事实的准确性,并计算精度。
-
实验和分析:
- 进行实验时,可以基于人物传记生成任务来测试不同的事实性验证方式,比如检索增强方法,并选择最佳估计器。
- 分析实验结果,注意观察模型在生成稀有实体或晚提及事实时的错误率,以及使用检索来减少幻觉现象的效果。
通过上述步骤,可以有效地使用FactualityPrompt和FActScore来评估和量化语言模型在生成文本时的幻觉现象。
提升事实性的技术
- 检索增强评估:利用外部知识库来增强模型生成的事实性。
- SAFE:一种评估长篇事实性的方法,通过搜索和推理来确定信息的真实性。
事实核查的标准化流程
- FacTool:遵循标准的事实核查流程,包括声明提取、查询生成、工具查询与证据收集、一致性验证。
自我检查与模型校准
- SelfCheckGPT:一种自我检查方法,通过一致性检查来识别模型生成的错误。
- TruthfulQA和SelfAware:评估模型在面对无法回答的问题时的真实回应能力,以及模型对未知知识的认知程度。
实验与观察
- 研究发现,模型在生成稀有实体时错误率较高,使用检索可以显著减少幻觉现象。
- 模型输出的不确定性校准是重要的,它帮助我们了解模型在面对不确定问题时的置信度。
减少幻觉
为了减少幻觉,有如下方法,如从外部知识库检索、特殊的采样方法、对齐微调等。还有RAG、Chain-of-Verification(CoVe)、RECITE、FLAME 等具体的技术框架和方法,以及针对事实性和归因的微调策略。这些方法旨在提高模型生成的事实正确性并减少幻觉。
- 检索增强:使用RAG(检索增强生成)等方法。
- 特殊采样方法:如核采样和Inference-Time Intervention(ITI)。
- 对齐微调:如FLAME方法,关注事实性的SFT+RLHF对齐训练。
检索增强(Retrieval-Augmented Generation, RAG)
这种方法通过结合检索到的相关文档作为上下文信息,增强模型的生成能力。RAG首先检索与输入提示相关的文档或信息片段,然后将这些信息作为上下文输入到语言模型中,以期望生成更加准确和相关的输出。
例如,RARR(Retrofit Attribution using Research and Revision)框架就是基于RAG思想,通过研究和修订两个阶段来提高输出的真实性。在研究阶段,模型查找相关文档作为证据;在修订阶段,编辑输出以纠正不受证据支持的内容。
特殊采样方法
研究表明,核采样可能不如贪婪采样有效,而Inference-Time Intervention(ITI)通过探测激活来区分真实与虚假输出。
- 核采样(Top-P Sampling):这是一种概率采样技术,与传统的贪婪采样相比,它允许一定概率的随机性,以增加生成结果的多样性。Lee等人提出的基于假设的事实核采样算法,调整句子中每个词被采样的概率,以提高句子后半部分的事实性。
- Inference-Time Intervention(ITI):这种方法在模型推理时进行干预,通过探测模型每层的激活来区分真实与虚假的输出。Li等人的研究表明,某些注意力头与事实性更相关,通过调整这些头的激活,可以提高输出的真实性。
对齐微调(Alignment Fine-tuning)
FLAME:这是一种结合了监督微调(Supervised Fine-tuning, SFT)和强化学习(Reinforcement Learning from Human Feedback, RLHF)的方法。在SFT阶段,目标是生成比模型自身生成更具事实性的训练数据;在RLHF阶段,使用事实性作为奖励信号来进一步优化模型。
微调过程中,FLAME特别关注事实性,通过生成更准确的训练数据和使用事实性作为奖励信号,提高模型输出的真实性和可靠性。
Self-RAG
Self-RAG通过端到端训练,使语言模型学会反思自身的生成,使用反思标记来评估和检索。
- 端到端训练:Self-RAG通过端到端的方式训练语言模型,使其能够在整个生成过程中自我反思和调整。
- 反思标记:引入四种反思标记(Retrieve, IsRel, IsSup, IsUse),这些标记帮助模型在生成过程中进行自我评估和检索决策。
- 间歇性特殊反思:模型不仅生成输出,还学会在生成过程中进行间歇性的自我反思,这种自我监督机制有助于提高生成内容的真实性和可靠性。
- 生成与评估相结合:Self-RAG在生成过程中同时进行评估,这种结合生成与评估的方法有助于实时监控和改进生成内容。
Chain-of-Verification(CoVe)
CoVe基于动作链进行规划和执行验证,包括基线响应、规划验证、执行验证和最终输出,旨在减少幻觉。
- 动作链规划:CoVe通过设计一个基于动作链的验证过程,包括基线响应、规划验证、执行验证和最终输出,形成一个完整的验证和修订流程。
- 非模板化的验证问题:CoVe能够基于原始生成设计非模板化的验证问题,这种灵活性有助于更准确地核查事实。
- 多种执行验证设置:提供了多种执行验证的变体,如联合、两步法、分解和分解+修订,以适应不同的验证需求和避免重复幻觉。
- 精炼的输出生成:在最终输出步骤中,CoVe能够根据验证结果生成精炼的输出,确保内容的一致性和准确性。
- 减少幻觉的策略:CoVe的设计考虑到了减少幻觉的策略,如通过分解验证问题来避免长篇验证链生成可能带来的重复幻觉。