输入“/”快速插入内容

【前沿探索】揭示LLM中外部幻觉的本质,探讨其产生机制与有效应对策略,实现模型输出的真实性

2024年8月4日修改
⏰ 发表时间:2024-08-04
作者:大雨
写在前面
这是翻译自 Lilian Weng 关于外部幻觉的文章
Lilian Weng 2018 年加入 OpenAI 团队
提出了 Agent = 大模型+记忆+主动规划+工具使用
原文 2 万字,参考了 24 篇文章
文章介绍了近年来关于幻觉的各种研究成果
幻觉的定义有逐步泛化的情况
在文章中限定了幻觉的定义,只针对外部幻觉
文章介绍了幻觉多个方面
幻觉产生的原因
幻觉的检测
抑制幻觉的方法
在大型语言模型 (LLM) 中,幻觉通常指的是模型生成不忠实、捏造、不一致或无意义的内容。作为术语,“幻觉”的含义已经扩展到模型犯错的情况。本文将重点讨论模型输出是捏造的,并且 没有根据 (grounded) 提供的上下文或世界知识的情况,我们称之为外部幻觉。
幻觉主要分为两种类型:
1.
上下文内幻觉:模型输出应该与上下文中的源内容一致。
2.
外部幻觉:模型输出应该 基于 (grounded) 预训练数据集,也就是说,输出内容应该与预训练数据中的知识相符。然而,由于预训练数据集的规模非常庞大,每次生成都去检索和识别冲突的成本太高。如果我们将预训练数据语料库视为世界知识的代表,我们实际上是在努力确保模型输出是事实的,并且可以通过外部世界知识进行验证。同样重要的是,当模型不知道某个事实时,它应该明确表示出来。
本文重点关注外部幻觉。为了避免幻觉,LLM 需要 (1) 输出符合事实的内容,并且 (2) 在适用时承认不知道答案。
什么导致幻觉 ?
一个标准的可部署 LLM 通常会经历预训练和微调两个阶段,前者是为了让模型学习语言的规律,后者是为了让模型更好地适应特定任务或提升性能。让我们分别看看这两个阶段可能导致幻觉的原因。
预训练数据问题
预训练数据语料库的规模通常非常庞大,因为它需要尽可能地涵盖所有可用的书面形式的世界知识。从公共互联网爬取的数据是最常见的选择,因此其中 inevitably 包含一些过时、缺失或不正确的信息。由于模型可能会错误地记住这些信息,我们预计模型会犯错。
微调新知识
通过监督微调和 RLHF (基于人类反馈的强化学习) 微调预训练的 LLM 是一种改进模型某些能力(例如遵循指令)的常用技术。在微调阶段引入新知识是不可避免的。
由于微调通常消耗的计算资源少得多,因此模型是否可以通过小规模的微调可靠地学习新知识仍然存在争议。 Gekhman et al. 2024 研究了在关于新知识的微调 LLM 是否会加剧幻觉的问题。他们发现:(1) LLM 学习包含新知识的微调示例的速度比学习包含与模型已有知识一致的知识的示例要慢;(2) 一旦模型最终学习了包含新知识的示例,它们就会增加模型产生幻觉的可能性。
给定一个闭卷问答数据集(例如 EntityQuestions ),D=(q, a),让我们将
定义为模型 M 在被提供随机的少样本示例并使用解码温度 T 的情况下,能够准确生成问题 q 的正确答案 a 的概率估计。他们根据
的不同条件将示例分为 4 个类别:包含 3 个子组( HighlyKnownMaybeKnownWeaklyKnown )的 Known 组和 Unknown 组。
图 1: 基于模型输出正确答案的可能性对闭卷问答示例进行知识分类。(图片来源: Gekhman et al. 2024 )
在将开发集准确率作为幻觉指标的实验中,有一些有趣的观察结果:
1.
Unknown 示例的拟合速度明显慢于 Known
2.
当 LLM 拟合大多数 Known 训练示例但仅拟合少数 Unknown 示例时,可以获得最佳的开发性能。当模型学习了大部分 Unknown 示例时,它就开始产生幻觉。
3.
Known 示例中, MaybeKnown 案例比 HighlyKnown 案例更重要,因为它可以带来更好的整体性能。