查看全课大纲(第 67 / 69 节)
- 1.NLP 的研究领域、应用与学习路径
- 2.自然语言的基本术语
- 3.信息论基础:信息熵与交叉熵
- 4.语言的进化与语义变迁
- 5.主观概率、客观概率与条件概率
- 6.贝叶斯原理与推理
- 7.随机变量:二项式、期望方差与联合概率
- 8.常见概率分布
- 9.辛普森悖论与贝叶斯解题实例
- 10.语言模型:语言概率与词袋模型
- 11.n-gram 语言模型(二元 / 三元 / N-Gram)
- 12.语言模型评价:交叉熵、困惑度与插值
- 13.朴素贝叶斯文本分类:垃圾邮件
- 14.拼写检查
- 15.中文分词:构词法、最大匹配、最优路径与 Jieba
- 16.词表示问题与语义相似度
- 17.TF-IDF 权重处理
- 18.One-Hot 表达与词表示的局限
- 19.Word2Vec 核心思想
- 20.Word2Vec 训练过程
- 21.Skip-gram 模型详解
- 22.词性标注任务与标注方法(规则 + N-Gram)
- 23.EM 算法与混合模型
- 24.高斯混合模型 GMM
- 25.从混合模型到隐马尔可夫模型
- 26.隐马尔可夫模型(HMM)推导与维特比解码
- 27.线性链条件随机场 CRF
- 28.贝叶斯网络与图模型
- 29.隐马尔可夫链与 HMM 推导
- 30.PLSA 主题模型
- 31.LSI 与 SVD 向量表达
- 32.LDA 与狄利克雷分布
- 33.主题模型实验复现(困惑度 / 分类 / 相似度 / 延展)
- 34.上下文无关文法(CFG)与句法分析
- 35.概率上下文无关文法 PCFG
- 36.统计机器翻译:词对齐与翻译模型
- 37.统计机器翻译中的对齐模型与参数估计
- 38.从统计机器翻译到神经机器翻译
- 39.神经元与反向传播速览(指向深度学习课)
- 40.CNN 原理及其在 NLP 中的应用
- 41.循环神经网络的基本原理与 Elman / Jordan 网络
- 42.LSTM:长短期记忆网络的核心思想与分步实现
- 43.Encoder-Decoder 框架
- 44.Seq2Seq 与早期注意力机制
- 45.注意力机制的背景与动机
- 46.注意力模型实现原理与匹配函数
- 47.记忆网络:组成与计算
- 48.注意力机制的应用与历史延展
- 49.Transformer 结构:Encoder-Decoder 栈与 Self-Attention
- 50.Multi-Head Attention、FFNN 与位置编码
- 51.层归一化、损失函数与 Universal Transformer 延展
- 52.预训练范式:从 ELMo 到 BERT
- 53.BERT 与掩码语言模型
- 54.BERT 下游任务微调与 GLUE 口径
- 55.GPT 与自回归语言建模
- 56.GPT-1 到 GPT-4 的演进
- 57.指令微调与 RLHF
- 58.分词器:BPE、WordPiece 与中文词表
- 59.上下文窗口与长文本处理
- 60.能力边界、成本与适用场景
- 61.文本分类实战:从朴素贝叶斯到逻辑回归
- 62.命名实体识别实战
- 63.文本生成与摘要实战
- 64.语义检索与向量库实战
- 65.RAG 知识库问答
- 66.NLP 评估指标:BLEU / ROUGE / BERTScore 与人工评估
- 67.幻觉与事实性问题
- 68.文本与知识结合(知识图谱压缩)
- 69.跨媒体信息检索与未来展望
幻觉与事实性问题
小象实战讲义 · 自然语言处理
在自然语言生成任务中,我们常常会遇到一个棘手的问题:模型生成的文本听起来流畅合理,但内容却与事实不符或凭空捏造。这种现象被称为“幻觉”。随着大语言模型的广泛应用,理解和治理幻觉已成为构建可靠 NLP 系统的关键。本节将系统梳理幻觉的定义、成因、评估方法与缓解策略,帮助你建立清晰的治理思路,避免在后续的 RAG 或对话系统开发中“打空拳”。
💡 核心导读
- 定义辨析:区分“忠实度”(与给定来源一致)与“事实性”(与世界事实一致),这是评估和治理幻觉的基石。
- 成因剖析:从训练目标、数据缺口、解码策略到对齐目标,理解幻觉产生的多层次机制。
- 评估方法:学习从人工归因标注到自动化评估(如 NLI、问答、信息抽取)的多种路径,并理解其局限性。
- 治理策略:掌握从数据清洗、检索增强、推理约束到产品层兜底的分层治理框架,明确“让错误可被发现”的目标。
- LLM 时代新形态:认识大模型特有的幻觉模式,如过度自信、长尾事实补全和链式放大。
一、核心概念辨析:忠实度与事实性
在讨论幻觉时,首先必须厘清两个核心但常被混淆的概念:忠实度(Faithfulness) 和 事实性(Factuality)。混淆它们会导致评估口径混乱,治理方案失效。
- 忠实度(Faithfulness):衡量生成文本是否与给定的输入或来源保持一致。例如,在摘要任务中,如果模型生成的摘要包含了原文中从未提及的信息,无论该信息客观上是否正确,都构成不忠实。忠实度的核心是“有据可查”。
- 事实性(Factuality):衡量生成文本是否与客观世界的事实保持一致。例如,在开放域对话中,模型声称“珠穆朗玛峰高程 8848.86 米”,这符合世界事实,事实性好。如果模型说“珠穆朗玛峰高 10000 米”,则事实性差。
两者可能分离,形成四种组合:
- 忠实且事实:输出与来源一致,且来源本身正确。
- 忠实但不事实:输出与来源一致,但来源本身错误。
- 不忠实但事实:输出与来源不一致,但内容本身正确。
- 不忠实且不事实:输出与来源不一致,且内容错误。
在摘要、问答、RAG 等有明确来源的任务中,我们主要关注忠实度。而在开放域生成中,则主要关注事实性。评估口径不同,对应的治理方法也截然不同。
Maynez 等人在 2020 年的研究中(On Faithfulness and Factuality in Abstractive Summarization, ACL 2020, arXiv:2005.00661)针对摘要任务提出了一个更细致的幻觉分类:
- 内在幻觉(Intrinsic Hallucination):生成内容与来源信息直接矛盾。
- 外在幻觉(Extrinsic Hallucination):生成内容添加了来源中无法验证的信息(这些信息可能是对的,也可能是错的)。
这个二分法为评估摘要的忠实度提供了具体框架。当我们将其迁移到 RAG 问答场景时,需要将“来源”重新定义为检索到的相关文档片段。
二、幻觉的成因:为什么模型会“胡说八道”?
幻觉并非单一原因造成,而是多层次因素共同作用的结果。理解这些机制是有效治理的前提。
训练目标不匹配:标准的最大似然训练(Maximum Likelihood Training)目标是让模型预测“像人写的下一个词”,它奖励的是流畅性和语言模式的相似性,而非“有据可查”或“事实正确”。当流畅性与准确性发生冲突时,模型倾向于选择更流畅、更符合训练数据分布的续写,从而可能产生幻觉。
数据侧缺口:模型的知识完全来源于训练数据。对于长尾事实、小众实体或训练截止后的新事件,数据分布非常稀疏甚至缺失。模型无法“知道”这些信息,只能基于相似的上下文模式进行“合理猜测”或补全,这种补全往往是幻觉的来源。
解码侧随机性:在文本生成阶段,采样(Sampling)策略(如高温采样、核采样)会引入随机性,增加输出的多样性,但也放大了模型在知识不确定区域的“瞎猜”倾向。虽然贪心解码(Greedy Decoding)能降低随机性,但它无法解决模型内部知识本身缺失或错误的问题。
对齐目标错位(关键):以人类反馈强化学习(RLHF)为代表的对齐技术,其优化目标是让模型输出更符合“人类偏好”。然而,人类的偏好通常包含“流畅”、“有用”、“自信”、“无害”等多个维度,“事实为真”只是其中一个子集,且并非总是最高优先级。因此,RLHF 能显著提升模型的有用性和安全性,但不能将其视为幻觉的根治方案(这与「指令微调与 RLHF」一节的口径一致)。
三、如何评估幻觉:超越“人工看看”
有效的治理始于准确的评估。我们需要系统化的方法,而非仅凭感觉。
归因式人工标注(Attribution-based Human Evaluation):这是评估忠实度的黄金标准。如 Maynez 等人(§5.2)的做法,将生成文本分解为句子或片段,由标注员逐项判定其与来源的关系:“由来源支持(Supported)”、“与来源矛盾(Contradicted)”、“来源外(Not Mentioned)”。这种方法精确但成本高昂。
自动化评估路线:Ji 等人在 2023 年的综述(Survey of Hallucination in Natural Language Generation, ACM Computing Surveys, arXiv:2202.03629, §4)中系统分类了自动评估方法:
- 基于信息抽取与事实核查:从生成文本中抽取实体、关系等结构化事实(三元组),然后在知识库(如 Wikidata)中进行核查。
- 基于自然语言推理/蕴含(NLI):将来源文本作为前提(Premise),生成文本作为假设(Hypothesis),使用预训练的 NLI 模型(如 RoBERTa)判断两者是蕴含、矛盾还是中立关系。
- 基于问答(QA):针对生成文本中的关键主张,自动构造问题,然后在来源文本中检索答案,检查答案是否支持该主张。
- 基于模型自评/裁判:使用另一个(通常更强的)语言模型作为“裁判”,评估生成文本的忠实度或事实性。这种方法成本低,但裁判模型自身也可能存在幻觉,存在偏见传递的风险。
评估的硬约束与粒度:
- 必须有“来源”:忠实度评估的前提是存在可对照的来源文本。没有来源的开放式生成,只能评估事实性,而这通常需要依赖外部知识库或人工抽样,难以做到自动全覆盖。
- 报告粒度:幻觉可能发生在实体、短语、句子等不同层面。仅报告一个总体分数(如“幻觉率 15%”)信息量有限,需要同时说明评估的粒度(如“实体级幻觉率 8%”、“句子级幻觉率 20%”),才能更准确地定位问题。
四、如何治理幻觉:分层防御体系
治理幻觉没有“银弹”,需要一个从数据到产品的分层防御体系。
数据与训练层:
- 数据清洗:过滤训练数据中低质量、自相矛盾或事实错误的语料。
- 引入复制机制:在摘要等任务中,设计模型架构时加入指针网络(Pointer Network)或复制(Copy)机制,鼓励模型直接从输入来源中复制词汇,减少无中生有。
检索增强(RAG)层:
- 提供外部证据:通过检索将相关的外部知识拼接到模型输入上下文中,让模型“有据可依”。这是当前降低幻觉最有效的手段之一。
- RAG 的局限性:RAG 能显著降低但不能消除幻觉。检索可能失败(返回不相关文档)、证据可能过时、模型可能忽略或误解检索到的片段。此外,RAG 还会衍生出新形态的幻觉:编造引用(Citation Fabrication),即模型生成一个看似合理的断言,并附上一个实际上并不支持该断言的引用。
推理与生成约束层:
- 强制引用溯源:要求模型为输出中的关键断言生成引用,指向输入来源的具体位置。
- 分步推理:采用“先抽取证据,后生成答案”的思维链(Chain-of-Thought)或程序化流程。
- 自检与反思:让模型生成后,对自己输出的关键部分进行事实性核查(Self-Check)。
- 工具调用:对于高度确定性的信息(如精确数字、日期、汇率、代码),强制模型调用外部工具(计算器、数据库、API)来获取结果,而非依赖内部参数生成。
后处理过滤层:
- 规则校验:对输出中的关键字段(金额、日期、人名、产品编号)使用正则表达式或查找表进行格式和有效性校验。
- 无出处拦截:对于被判定为“无来源支持”且属于关键事实的断言,在最终输出前进行拦截,或将其标记为“未核实信息”。
产品与交互层(兜底):
- 明确使用边界:在产品说明中清晰界定“模型输出需人工确认”的应用场景(如医疗、法律、金融建议)。
- 提供可追溯性:在界面中提供可点击的原始出处链接,让用户能自行验证。
- 展示不确定性:用“模型认为”、“根据检索到的资料”等措辞,或提供置信度分数,而非以绝对确定的语气呈现信息。
- 核心目标:治理的最终目标不是(也几乎不可能)保证不出错,而是让错误变得可被发现、可被追溯、可被纠正。
五、大语言模型时代的幻觉新形态
随着 LLM 能力的跃升,幻觉也呈现出一些新特点(Ji et al., §13):
- 长尾事实与时效性幻觉:对于训练数据中极少出现或训练截止后发生的事件,模型会基于其强大的语言生成能力,编造出“听起来极其合理”的补全,极具迷惑性。
- 过度自信的表述:LLM 通常以非常确定、专业的口吻进行输出,错误和正确的表述在语言风格上没有区别,用户难以从措辞本身判断可靠性。
- 多跳推理中的链式放大:在需要多步推理的任务中,如果第一步的前提假设是幻觉,后续每一步基于错误前提的“合理推导”会形成一个逻辑自洽但整体错误的链条,最终答案看起来依然严谨。
- 警示:因此,“读起来很顺”绝不能作为判断生成内容质量的信号。这也是我们在「NLP 评估指标」等章节反复强调“要建立可验证、可量化的评估口径”的原因。
六、与相邻章节的边界
- 评估指标:BLEU、ROUGE、BERTScore 等自动化指标的具体机制在「NLP 评估指标」一节已详细讲解,本节仅将其作为评估生成质量的“代理指标”引用,不重讲公式。
- 检索与 RAG:关于向量数据库构建、检索召回、结果重排、上下文拼接等 RAG 核心技术,将在「语义检索与向量库实战」和「RAG 知识库问答」两节深入展开,本节只强调其“能降不能消”的核心结论。
- 模型选型与成本:不同模型在幻觉表现、成本、适用场景上的差异,将在「能力边界、成本与适用场景」一节系统分析,本节不展开讨论。
📝 动手练一练
- 概念辨析:请判断以下场景主要涉及“忠实度”问题还是“事实性”问题? a) 一个新闻摘要模型根据一篇关于“某公司发布新产品A”的报道,生成了摘要“该公司同时宣布将停产旧产品B”,而原文并未提及产品B。 b) 一个开放域对话模型在回答“太阳系最大的行星是?”时,回答“木星”,这是正确的。 c) 一个基于用户手册的问答机器人,在回答“设备保修期多久?”时,手册写明是“2年”,但机器人回答“3年”。
👉 点击查看参考答案
a) 忠实度问题。摘要内容(将停产产品B)是原文中未提及的信息,属于“外在幻觉”,违反了与给定来源的一致性。 b) 事实性问题。对话没有给定来源,评估的是输出内容“木星是太阳系最大行星”是否符合客观世界事实。此处事实性正确。 c) 忠实度问题。有明确的来源(用户手册),但模型的回答(3年)与来源内容(2年)直接矛盾,属于“内在幻觉”。
- 评估方法思考:假设你正在开发一个基于技术文档的 RAG 问答系统,需要自动化评估模型答案的忠实度。考虑到技术文档中常包含代码片段、参数表格和步骤描述,你认为上述提到的四种自动化评估路线(信息抽取、NLI、QA、模型自评)中,哪种或哪几种组合可能更适用?为什么?
👉 点击查看参考答案
对于技术文档 RAG 场景:
- 基于 NLI 的方法可能是一个较好的基线。可以将检索到的文档片段作为前提,模型生成的答案作为假设,判断蕴含关系。但 NLI 模型在训练时可能未充分覆盖技术领域(如代码、参数)的细微矛盾,效果可能打折扣。
- 基于 QA 的方法可能更精准。可以针对答案中的每个关键主张(例如“函数
foo的默认参数是bar”)自动生成问题(“foo的默认参数是什么?”),然后在检索片段中寻找答案进行比对。这种方法更贴近问答任务本身。 - 基于信息抽取的方法在处理结构化信息(如参数名-值对)时可能有用,但需要针对技术领域定制实体和关系抽取模型,成本较高。
- 模型自评成本最低,可以快速部署,但需警惕裁判模型对技术细节的理解不足。
推荐组合:初期可采用 QA + 模型自评 相结合的方式。用 QA 方法对关键事实点进行精确核查,同时用模型自评进行快速、大范围的初步筛选。对于重要场景,仍需辅以人工抽样检查。
本章小结
本节我们深入探讨了自然语言生成中的核心挑战——幻觉与事实性问题。关键在于首先厘清忠实度(与来源一致)和事实性(与世界一致)的区别,这是所有评估和治理工作的起点。我们分析了幻觉源于训练目标、数据、解码和对齐等多重机制的失配。在评估方面,我们学习了从人工归因标注到多种自动化方法(NLI、QA等)的路径,并认识到其依赖“来源”和评估“粒度”的约束。治理幻觉需要构建分层的防御体系:从数据清洗、检索增强(RAG)、推理约束,到后处理过滤和最终的产品层兜底,目标是使错误可被发现和追溯,而非追求不可能实现的“零幻觉”。在大模型时代,幻觉以更隐蔽、更自信的形式出现,提醒我们绝不能将“流畅性”等同于“正确性”。
📋 行动清单
- 明确评估口径:在开始你的下一个 NLP 项目(如摘要、RAG)前,先明确你要解决的是“忠实度”问题还是“事实性”问题,并据此设计评估方案。
- 设计分层治理:为你的系统至少规划两个层面的幻觉缓解措施(例如:数据/训练层 + 推理/产品层),避免依赖单一方法。
- 实践归因评估:手动对你熟悉的模型(或公开 demo)生成的一段文本进行“归因式”分析,逐句判断其是否有可靠来源支持,体会评估的难点。
延伸阅读
- Maynez, J., Narayan, S., Bohnet, B., & McDonald, R. (2020). On Faithfulness and Factuality in Abstractive Summarization. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics (ACL), pp. 1906–1919. arXiv:2005.00661.
- Ji, Z., Lee, N., Frieske, R., Yu, T., Su, D., Xu, Y., Ishii, E., Bang, Y. J., Madotto, A., & Fung, P. (2023). Survey of Hallucination in Natural Language Generation. ACM Computing Surveys, 55(12), Article 248, pp. 1–38. arXiv:2202.03629.
—— 小象教研组