第3章:大模型幻觉——它为什么胡说八道?如何让它老实?

第3章:大模型幻觉——它为什么胡说八道?如何让它老实?

系列导读:从本章开始,我们从「原理认知」转向「工程控制」。理解幻觉的成因,是构建可靠 AI 系统的第一步。

一、什么是幻觉?

当你问 GPT-4:「鲁迅和周树人是什么关系?」

它可能回答:「鲁迅和周树人是两位不同的现代作家。」——这是不折不扣的【事实性幻觉】。

幻觉的精确定义是:模型生成了听起来合理、语法正确、但实际上不符合事实的内容。

它不是 bug,是 LLM 概率生成机制的【固有特性】。

要理解幻觉,先得承认一个事实:LLM 不是数据库,它是概率续写器。你给它一个问题,它做的不是「查询正确答案」,而是「猜测下一个最可能发生的内容」。这个区分是解决幻觉问题的认知基础。

二、幻觉的三大根源

第一层:训练数据

互联网语料本身就有错误、矛盾、过时信息。模型把它们全部「学进去」当作事实。比如:

  • 某个错误知识在网上流传甚广 → 模型学得深
  • 互相矛盾的信息并存(比如不同国家对同一历史事件的描述不同)→ 模型学到两种说法轮流出现
  • 训练截止日期之后的事件 → 模型一无所知,面对这类问题只能靠概率推断

训练数据的问题还包括「重复偏见」——如果某个错误信息出现了很多次(比如某个谣言被广泛传播),模型会认为它更可信。这是训练机制本身的副作用:语料出现频率高 → 权重被放大。

第二层:生成机制(最本质)

LLM 的工作方式是:给定前面的文本,按概率分布选下一个词。

问题在于:概率最高 ≠ 事实正确。

你问「鲁迅是谁的笔名」→ 正确答案「周树人」在概率分布中排名第一,模型答对。 你问一个模型从未见过的问题 → 概率分布中排名第一的,可能是一个【编造出来的、看起来最合理的答案】。

模型的训练目标是「生成看起来最连贯、最像人话的文本」,不是「输出真实信息」。当它不知道怎么答的时候,它会「编造一个最合理的答案」,因为这是它的本职工作。

把 Temperature 调到0也不能消除幻觉——概率最高的那条路径本身可能就是错的。Temperature 控制的是随机性,不是「知不知道」。模型不知道的时候,即使不随机,也会沿着最像真的那条路径走到一个错误答案。

第三层:对齐训练(Alignment)

这是最容易被忽略的一层。SFT(监督微调)和 RLHF(基于人类反馈的强化学习)有一个隐藏的副作用:训练数据中的偏好是「自信地给出答案」比「诚实地说我不知道」得分更高。

标注者通常更喜欢完整、自信的答案,而不是简短、不确定的回答。模型被这个奖励信号训练成了【不会拒绝回答】的角色。即使它不知道答案,也会尝试输出一大段说服力强但不保证正确的话,而不是说「抱歉,我不确定」。

三、幻觉的三类形态

类型 描述 例子
事实性幻觉 编造不存在的事实 「张爱玲获得过诺贝尔文学奖」
推理性幻觉 逻辑链条断裂或自相矛盾 「A>B,B>C,所以C>A」
上下文不一致 违背用户给出的明确条件 用户说「主角名叫李明」,模型后面说「张明的经历」

事实性幻觉最容易被发现——只要跟真实数据一对就知道。推理性幻觉更隐蔽,因为模型可能每一步看起来都有道理,但整体链条是断裂的。上下文不一致是在长对话里最恼人的——模型忘了你前面说过什么。

四、如何缓解幻觉?三层组合拳

训练层(治本)

  • 拒答能力训练:在 SFT 数据里专门加入「不知道就说不知道」的样本,让模型学会在必要时拒绝回答
  • 校准(Calibration):让模型学会输出概率分数,表示对答案的信心度。用户可以根据置信度决定是否采信
  • 幻觉检测预训练:用外部知识库自动标注训练数据中的错误内容,在预训练阶段过滤低质来源

推理层(治标)

  • 分步推理(CoT):让模型先分析再结论,错误推理更容易暴露
  • 低 Temperature + Top-P 采样:减少随机偏差,让输出更稳定
  • Self-Consistency:对同一问题采样多次,投票取众数。错误答案不一定能稳定重复
  • 约束解码:限制输出只能在特定词汇表内(如只能输出数字 1/2/3),防止创造性胡编

系统层(工程首选)

  • RAG(检索增强生成):让模型「看着资料答」而不是「凭记忆答」——这是工业界最主流的解法
  • 答案后处理核查:用外部工具(如搜索引擎、数据库查询)验证关键事实
  • 强制带引用来源:要求模型在回答时标注信息来源,既方便追溯也方便人工核验
  • 知识蒸馏 + 事实编辑:在已有大模型基础上,用少量事实数据做局部参数修正

五、致命认知误区

误区1:「幻觉是数据问题,数据干净了就行了」 → 不完全是。即使训练数据100%正确,模型在没见过的问题上仍会依赖概率推断。LLM 的概率生成机制本身就是幻觉的土壤。

误区2:「用 RAG 就能消除幻觉」 → RAG 只是把幻觉风险从「编造知识」转移到「编造引用」和「断章取义」。如果检索回来的内容本身就错了,或者模型把引用张冠李戴了,结果还是幻觉。RAG 降低幻觉率,但不是灵丹妙药。

误区3:「越大越好的模型越不会幻觉」 → 规模增大确实能减少常识性幻觉(见过更多),但在小众知识领域幻觉反而可能更严重。大模型更「自信」,它对自己的错误回答也更有把握,更不容易说「我不知道」。

六、工程启示:如何跟一个会撒谎的系统打交道?

核心原则:系统级别的不信任校验机制。

  1. 关键信息强制引用来源——回答必须带出处,出处可人工核验
  2. 置信度透出——让用户知道模型对答案的不确定性,高置信采信、低置信核实
  3. 关键领域人机配合——医疗、法律、金融等场景,模型只提供初步信息,最终判断由人类做
  4. 设计可验证的交互——不是让模型直接给结论,而是让它推荐检索关键词,由用户确认后再查

一句话总结:幻觉不可消灭,只能工程化收敛到「可接受风险」。

七、本章小结

  • 幻觉是 LLM 概率生成机制的固有副产品,不是 bug
  • 根源分三层:训练数据污染、生成机制缺陷(概率最优≠事实)、对齐奖励鼓励「自信回答」
  • 三类幻觉:事实性、推理性、上下文不一致
  • 缓解需训练层+推理层+系统层三层组合拳,缺一不可
  • 最低成本的工程方案:RAG + 强制引用来源 + 置信度透出

思考题

  1. 如果模型知道自己不知道某件事,它应该怎么做最优?是「编造一个最接近的答案」还是「直接说不知道」?这取决于什么场景?
  2. 为什么 LLM 在数学问题上也可能幻觉?代码领域幻觉和事实幻觉有什么不同?