- Published on
LLMs的幻觉 intro
- Authors
- Name
- Guming
定义
大型语言模型中的幻觉通常指模型生成不真实、虚构、不一致或无意义的内容。作为一个术语,幻觉已经被一定程度地泛化到模型出错的情况
在这里,将幻觉问题缩小到模型输出是虚构的,并且既没有根据提供的上下文,也没有基于世界知识的情况
存在两种类型的幻觉:
In-context hallucination
- 情境幻觉:模型输出应与context中的源内容一致
Extrinsic hallucination
- 模型输出应由预训练数据集支撑。然而,考虑到预训练数据集的规模,每次生成时检索和识别冲突的成本过高。如果我们将预训练数据语料库视为世界知识的代理,那么我们本质上是在尝试确保模型输出是符合事实且可通过外部世界知识验证的。同样重要的是,当模型不知道某个事实时,它应该明确表示
本文聚焦于外生幻觉。为了避免幻觉,LLMs 需要做到In-context符合事实,Extrinsic hallucination 在适用时承认不知道答案
为什么会有幻觉?
- Pre-training Data Issues
预训练数据语料库的规模非常庞大,因为它需要代表所有可用的书面形式的全球知识。从公共互联网上爬取的数据是最常见的选择,因此预期会存在过时、缺失或不正确的信息。由于模型可能会通过简单地最大化对数似然来错误地记忆这些信息,我们预计模型会犯错误。
Transformer Architect Issues
- 注意力机制表现不佳:在 Transformer 架构中,自注意力机制负责建模输入 token 之间的交互以及与预训练知识的交互。如果注意力机制表现不佳,模型可能无法充分关注提示的所有相关部分,从而无法提供适当的响应。这可能导致模型忘记较长对话中的细节或指令
- 分词器问题:分词器将输入文本分解为字符块(token),并将其转换为数字 ID。如果分词器将单词解释为完全不同的含义,或者某些 token 导致内部理解错误,就可能引发幻觉
- 模型自身固有特性:从根本上说,LLM 的唯一目标是根据给定序列预测下一个 token。从某种意义上说,所有 LLM 做的都是“幻觉”token。当这种“幻觉”偏离了预期答案或事实真相时,它就成为一个问题。
Fine-tuning New Knowledge
通过supervised微调和 RLHF 微调预训练的 LLM 是提高模型某些能力(如指令遵循)的常用技术。在微调阶段引入新知识很难避免
微调阶段引入新知识可能会增加模型的幻觉倾向。研究表明,LLM 学习与预训练知识不一致的新知识速度较慢,一旦这些新知识被学习,模型产生幻觉的倾向就会增加
如何检测幻觉?
Reference-based evaluations
- FActScore (Factual precision in Atomicity Score):将长篇生成内容分解为多个原子事实,并针对知识库(如维基百科)分别验证每个事实,然后计算支持事实的比例
- SAFE (Search-Augmented Factuality Evaluator):使用一个语言模型作为代理,通过多步 Google 搜索查询并推理搜索结果是否支持某个事实来评估长篇生成内容的真实性
- BERTScore:通过将生成文本和参考文本转换为密集的向量嵌入并计算其相似度来评估语义相似性
- Hallucination classifiers:例如 Vectara 的 HHEM-2.1-Open,是经过训练的编码器-解码器模型,用于在给定真实数据和 LLM 响应的情况下检测幻觉
- Answer Correctness:通过 RAGAS 框架提出,结合了事实正确性(生成答案与真实答案的事实重叠)和语义相似性(类似于 BERTScore)
Reference-free evaluations
- 基于上下文的评估(RAG-like frameworks):
- 忠实度 (Faithfulness):将答案分解为独立声明,并检查这些声明是否可以从提供的上下文中推断出来。
- 上下文利用率 (Context utilization):评估检索到的上下文中每个块与问题和答案的相关性。
- 无上下文评估:
- LLM 监督器 (LLM supervisor):由另一个更强大、更专业的 LLM 来评估输出。
- LLM 自监督器 (LLM self-supervisor):LLM 自身通过自批判或自反思机制评估自己的输出。
- 人工监督或反馈 (Human supervision or feedback):人类作为“教师”或用户报告幻觉。
- 基于采样的检测 (Sampling-Based Detection):
- SelfCheckGPT:通过比较 LLM 生成的多个样本之间的内容一致性来检测幻觉,无需外部知识库。
- 未知知识的校准 (Calibration of Unknown Knowledge):
- TruthfulQA 和 SelfAware 等基准测试评估模型在面对无法回答或未知问题时生成真实响应或拒绝回答的能力。
- 通过测量模型对输出的不确定性来评估其对未知知识的意识。
- 间接查询 (Indirect Query):特别用于检测幻觉引文,通过询问辅助细节(例如,一篇幻觉论文的作者),而不是直接询问引用是否存在,以利用模型对捏造信息达成一致的可能性较低的假设
如何减少幻觉?
响应生成后处理 (After the response):
- 检测和修正:在 LLM 输出生成后检测幻觉,并阻止不正确的信息到达用户。这通常涉及将纠错作为响应处理管道中的额外步骤,并可能使用代理模式(如“反思”)让 LLM 意识到幻觉并重新生成答案
响应生成时(上下文内)处理 (During the response (in context)):
提示工程技术 (Prompt Engineering Techniques):
- 思维链 (Chain of Thoughts, CoT):在提示中加入问题示例和明确的推理过程,引导 LLM 模仿推理过程,从而避免错误
RAG
- 通过检索与问题主题相关的外部信息(如互联网搜索结果或私人数据集),并将其作为额外上下文提供给 LLM,使其基于这些信息而不是其自身知识来回答。这大大降低了幻觉的风险
- RR (Rethinking with retrieval):通过分解 CoT 提示生成多个推理路径和预测,然后检索外部知识来支持每个解释,并选择最忠实的答案
- Self-RAG:训练 LLM 学习通过输出任务输出和间歇性特殊“反思 token”来反思自己的生成,以指导检索和批判自己的生成
Chain of Actions
- CoVe (Chain-of-Verification):模型首先生成一个初始草稿响应,然后设计非模板验证问题进行事实核查,独立回答这些问题,最后生成最终的、经过完善的输出
Fine tuning
- 归因微调
- WebGPT 和 GopherCite:结合网络搜索进行文档检索,并微调 LLM 以回答长篇问题,并提供对网页的引用,从而提高事实准确性并减少幻觉。这些方法通常包括监督微调(行为克隆或通过少样本提示生成示例)和 RLHF
- 归因微调
Pre training
- 增加预训练数据集:扩大预训练数据集或引入新知识可以直接导致更广泛的知识覆盖和更少的幻觉,尤其是在事实和近期事件方面。更好的数据处理和整理也能增强 LLM 的学习能力
LLM 是否能实现没有幻觉的应用?
“无幻觉”的 LLM 应用被认为是 LLM 领域的“圣杯”,但其可实现性在专家群体中存在不同的看法,平均而言,专家们表现出中度乐观或不确定。
乐观的观点:
- Ilya Sutskever (GPT 研究员之一):他坚信幻觉可以通过更好的对齐 (alignment) 来解决。这意味着通过精心的后期训练和反馈机制,可以训练模型使其输出与人类期望高度一致,从而消除幻觉。 技术进步和组合策略:随着 LLM 应用变得越来越复杂,结合多种幻觉预防策略(如 RAG、提示工程、多步推理、微调、自反思等)正在不断取得突破。这些策略的协同作用使人们相信,幻觉问题是可以逐步克服的。 持续的研究和资源投入:大量的资源、资金和顶尖人才正在投入到幻觉缓解方法的研究中,这为未来的解决方案带来了希望。
悲观或谨慎的观点:
- Yann LeCunn (Meta 首席人工智能科学家):他认为幻觉问题是自回归模型特有的,建议我们应该摆脱这种只预测下一个 token 的架构,转而开发能够更好地进行推理和规划的模型。 Gary Marcus (人工智能批评家):他强烈认为基于 Transformer 的 LLM 完全无法消除幻觉。他更倾向于神经符号 AI (neurosymbolic AI),这种方法结合了神经网络的感知能力和符号 AI 的逻辑推理能力,认为这可能更能解决幻觉问题。
中度乐观或不确定性:
- 大多数专家可能介于这两个极端之间。他们承认当前的 LLM 在消除幻觉方面面临着深远的挑战,但同时也看到了通过改进训练数据、模型架构、推理过程和对齐技术所带来的巨大潜力。 “无幻觉”可能是一个理想化的目标,在实践中,更现实的目标可能是将幻觉率降低到可接受的水平,并通过强大的检测和纠正机制来管理剩余的幻觉
除了减少幻觉,LLM 还需要在哪些方面进行改进以提高可靠性?
更好地理解和遵循复杂指令 (Better understanding and following complex instructions)
尽管 LLM 在指令遵循方面已经取得了显著进步,但它们仍然可能在处理多步骤、多约束或包含微妙语义的复杂指令时出错。
改进方向:更强的“指令理解”和“意图识别”能力,能够从用户提示中准确提取所有相关需求和限制。
- 更强的推理和规划能力 (Stronger reasoning and planning capabilities)
LLM 擅长模式匹配和生成连贯文本,但在需要复杂逻辑推理、多步规划或因果推断的任务上仍有局限。
改进方向:结合符号推理、规划算法或模仿人类高级认知过程的神经符号方法,使其能够“思考”并逐步解决问题,而不仅仅是预测下一个 token。
- 实时知识更新和时效性 (Real-time knowledge update and recency)
LLM 的知识受限于其预训练数据的“截止日期”,对于最新事件或快速变化的信息,它们无法提供准确信息,这导致“未来数据”幻觉。
改进方向:与可靠的、实时的信息源(如搜索引擎、数据库)深度集成,并开发能够有效吸收和更新新知识的模型架构。
- 可解释性和可信度 (Explainability and trustworthiness)
LLM 的决策过程通常是“黑箱”,用户难以理解模型为何会生成特定答案,尤其是当答案出现错误时。
改进方向:开发更透明的模型,能够提供其答案的推理路径、证据来源和置信度,从而增强用户对模型输出的信任。
- 处理不确定性和校准置信度 (Handling uncertainty and calibrating confidence)
LLM 应该能够识别何时其知识不确定或不足,并相应地表达其置信水平,而不是总是给出确定的答案。
改进方向:更好地校准模型输出的概率,使其预测的置信度与实际的正确频率相符,并在面对未知或模糊信息时明确表示“我不知道”或提供一系列可能的答案及各自的置信度。
-- 减少偏见和毒性 (Bias and toxicity reduction)
由于训练数据中固有的偏见,LLM 可能会生成有偏见、歧视性或有害的内容。
改进方向:通过更严格的数据筛选、去偏见技术、价值观对齐训练和强大的内容审核机制来减少和消除这些负面输出。
-- 多模态理解和生成 (Multimodal understanding and generation)
当前的许多 LLM 主要处理文本,但真实世界的信息是多模态的(文本、图像、音频、视频)。
改进方向:开发能够无缝理解和生成多种模态信息的通用模型,使其能够从更丰富的信息源中获取上下文,从而提高响应的准确性和相关性。
参考
[LLM hallucination 101] (https://neptune.ai/blog/llm-hallucinations)