LLM 中的外部幻觉 • Lilian Weng
本文是 OpenAI 安全系统团队负责人 Lilian Weng 所写,主要探讨了大型语言模型(LLMs)中的外部幻觉(Extrinsic Hallucinations),即模型生成的内容未能与提供的上下文或世界知识相一致。幻觉问题被细分为两种类型:上下文幻觉和外部幻觉。外部幻觉关注的是模型输出是否基于预训练数据集,并强调模型需要具备事实性和在不知情时能够承认不知道的能力。文章还讨论了幻觉的成因、检测方法以及改进策略。 幻觉的定义与类型: 上下文幻觉:模型输出应与上下文中的源内容一致。 外部幻觉:模型输出应基于预训练数据集,且应与外部世界知识相符合。 幻觉的成因: 预训练数据问题:预训练数据量庞大,通常来自公共互联网,可能包含过时或错误的信息。 微调新知识:在微调阶段引入新知识可能导致模型学习速度较慢,并增加幻觉的可能性。 幻觉检测方法: FactualityPrompt:通过维基百科文档作为事实基础来评估模型输出的真实性。 FActScore:将生成内容分解为多个原子事实,并分别验证其真实性。 改进策略: 检索增强生成(RAG):通过检索相关文档来为模型生成提供支持信息。 自我反思检索增强生成(Self-RAG):模型在生成内容时自我反思并检索相关文档。 验证链(CoVe):模型生成初步响应后,通过设计验证问题进行事实检查。 评估基准: 文章提到了一些用于评估模型幻觉的基准数据集,如 TruthfulQA、FactualityPrompt 和 SelfAware。 LLM 中的外部幻觉 在大语言模型 (LLM) 中,"幻觉" 通常指的是模型生成不真实、捏造、不一致或无意义的内容。这个术语被广泛用于描述模型犯错的情形。在这里,本文将"幻觉"的问题范围限定在模型输出是虚构的,并且无法通过给定的上下文或世界知识加以验证的情况。 幻觉可以分为两类: 上下文幻觉:模型输出应该与上下文中的源内容保持一致。 外部幻觉:模型输出应基于预训练数据集中的知识。然而,考虑到预训练数据集的庞大规模,每次生成时检索并识别潜在冲突的成本过高。如果我们将预训练数据集视为世界知识的代理,我们实际上是在尝试确保模型输出的内容是事实,并且能够通过外部世界知识进行验证。更重要的是,当模型不清楚某个事实时,它应当如实承认。 本文的重点在于外部幻觉。为了避免幻觉,LLM 需要做到以下两点:(1) 输出内容基于事实,(2) 在适当的情况下承认自己不知道答案。 幻觉的成因是什么? 一个标准的 LLM 通常会经历预训练和后续的微调(如对齐优化)的过程,因此我们将在这两个阶段探讨幻觉产生的原因。 预训练数据问题 预训练数据集的规模非常庞大,其目的是涵盖几乎所有书面形式的世界知识。由于大多数数据来自公开的互联网,难免存在过时、缺失或错误的信息。模型在最大化对数似然的过程中可能错误地记住这些信息,导致在生成时出现错误。 引入新知识的微调 通过监督微调 (Supervised Fine-Tuning) 和 RLHF 对预训练模型进行微调是提高模型特定能力(如指令遵从性)的常见方法。然而,在微调阶段引入新知识几乎是不可避免的。 微调通常消耗的计算资源较少,因此关于通过小规模微调来可靠地学习新知识这一点存在争议。Gekhman 等人(2024) 研究了微调 LLM 是否会促进幻觉的产生。他们发现:(1) LLM 在学习包含新知识的微调样本时比其他与模型现有知识一致的样本要慢;(2) 一旦这些新知识被模型学会,模型产生幻觉的可能性反而增加。 在一个闭卷问答数据集(如 EntityQuestions)上,我们可以通过随机少样本示例和设置不同解码温度的方式,估计模型准确生成正确答案的概率。他们根据这一概率将数据分为四类:已知 组(其中包括高度已知、可能已知和弱已知三种子类别)以及 未知 组。 图 1. 闭卷问答示例的知识分类,基于模型输出正确答案的可能性。(图片来源:Gekhman 等人 2024) 实验中,一些基于开发集准确率的有趣发现可作为幻觉的代理指标:...