0%

大模型幻觉深度解析:为什么会一本正经胡说八道

背景

如果你问大模型:”明朝第一位皇帝是谁?”它会自信地回答:”朱元璋。”

但如果你问:”朱元璋的第三任妻子叫什么名字?”它可能回答:”马皇后。”——等等,马皇后是朱元璋的正妻,不是第三任妻子。模型编了一个看似合理、实则错误的答案。

这就是大模型的幻觉(Hallucination):一本正经地胡说八道。

面试时如果只回答”因为它是个概率模型”,会被追问:概率模型怎么了?概率模型就一定会编东西吗?

今天我们从五个层面拆解这个问题,每一层都能让你的理解更有深度。


第一层:训练目标 ≠ 说真话

这是最根本的一层。大模型的训练目标,从一开始就不是”说真话”,而是”预测下一个最可能的 token”。

听起来差不多?差别很大。

训练信号的本质

模型在训练过程中,从未接受过这样的监督信号:

1
2
这句话是事实 ✓
这句话是编的 ✗

它只知道:在这段文本里,前面出现了这些词,下一个词最可能是什么?

1
2
3
4
输入: "明朝开国皇帝是"
训练目标: 预测下一个词是 "朱"(概率最高)
然后是 "元"(基于"朱"之后)
然后是 "璋"(基于"朱元"之后)

模型学的是语言的统计规律,不是世界的真实知识

流畅 ≠ 正确

从训练目标来看,模型追求的是流畅连贯,不是事实正确。

大多数情况下,流畅连贯的文本恰好也是真实的。所以大部分场景下,模型看起来在说真话。

但一旦”说得通”和”说得对”发生冲突:

1
2
3
4
问题: "林黛玉倒拔鲁智深的故事发生在哪一回?"
模型可能回答: "发生在《红楼梦》第X回..."

编造了一个看似合理、实则完全不存在的故事

为什么?因为”林黛玉倒拔鲁智深”本身是个荒谬的问题,但模型会硬着头皮让它”说得通”——生成一个符合语言规律的回答,而不是指出这个问题本身是错的。


第二层:不知道自己不知道什么

人类面对不确定的问题,会有”自知之明”:

1
2
问: "量子力学中薛定谔方程的第三种推导方式是什么?"
人: "我不确定,这个我不太懂。"

但大模型没有这个能力。

训练时的”强制回答”约束

模型训练时被要求必须生成一段通顺的回答,而不是可以选择”我不知道”。

训练数据里很少有这种模式:

1
2
问题: XXX(超出知识范围)
回答: 我不知道 / 这个问题我无法回答

即使有,比例也极低。模型学到的是:有问题 → 必有回答

硬着头皮编

所以,哪怕模型对问题毫无头绪,也会生成一段看似合理的内容:

1
2
3
4
问: "《三体》中章北海的第四个孩子叫什么?"
模型: "章北海的第四个孩子叫章XX..."

语气自信,实则章北海根本没有四个孩子

越是不确定的问题,模型越可能编造——因为它没有”我不确定”这个选项。


第三层:知识是”压缩”的,不是”精确存储”的

大模型不是把所有知识像数据库一样一字不差存下来。

知识的存储方式

模型把海量文本压缩成参数里的统计模式。这个过程类似于:

方式 特点
数据库存储 精确、可检索、一字不差
模型参数存储 模糊、统计性、细节易混淆

就像人记东西,只会记个大概,细节会模糊、会混淆。

压缩带来的问题

模型学到的是模糊的关联、大概的规律,而不是精确的事实

1
2
3
4
5
6
7
模型可能学到的:
- 朱元璋 → 明朝 → 开国皇帝 → 南京 → 马皇后(模糊关联)
- 朱元璋 → 某年某月某日登基(大概规律)

模型不太可能学到的:
- 朱元璋的第三任妻子具体叫什么名字
- 某个具体事件发生的精确日期

一旦需要精准细节(具体日期、数据、人名),就容易张冠李戴、脑补编造


第四层:训练数据本身有”坑”

模型的知识全部来自训练数据。但互联网数据本身充满问题。

数据质量问题

问题类型 例子
错误信息 谣言、虚假新闻
偏见信息 带倾向性的观点
过时信息 2023年的新闻,2026年问就不对了
随意编造 网友随口胡说的内容

这些都是模型的”教材”。模型分不清对错,只会把学到的”错误规律”当真话说。

垃圾进,垃圾出

1
2
3
4
5
6
训练数据中有: "诸葛亮发明了原子弹"(某个网友编的段子)
模型可能学到: 诸葛亮 → 发明 → 原弹(统计关联)
问: "诸葛亮发明了什么?"
答: "诸葛亮发明了原子弹..."

模型把段子当事实了

这不是模型”蠢”,而是训练数据本身就有问题


第五层:生成时的”概率采样”容易跑偏

大模型生成答案,不是逻辑推理,而是按概率”猜”下一个词。

一步步”猜”的问题

每一步都选”最可能的词”,但一步错,步步错

1
2
3
4
5
第1步: 选对了 → 上下文正常
第2步: 选对了 → 继续正常
第3步: 选了个"次优"选项 → 小偏差
第4步: 基于小偏差继续 → 偏差放大
第5步: ... → 大错误

小偏差会累积成大错误,尤其是遇到模糊、冷门、矛盾的问题时。

概率分布越乱,越容易跑偏

1
2
3
常见问题: 概率分布集中 → 选对的概率高
冷门问题: 概率分布分散 → 选错的概率增加
模糊问题: 多个候选概率接近 → 容易选到错误的那个

五层原因的叠加效应

幻觉不是单一原因造成的,而是五层叠加

1
2
3
4
5
6
7
8
9
10
11
12
第1层: 训练目标追求流畅而非正确
↓ 基础设定偏离
第2层: 没有自知之明,不知道边界
↓ 硬着头皮回答
第3层: 知识压缩存储,细节模糊
↓ 精确信息易错
第4层: 训练数据本身有错
↓ 学到错误内容
第5层: 概率采样容易跑偏
↓ 小错累积成大错

最终输出: 一本正经胡说八道

如何缓解幻觉?

了解了原因,才能针对性地解决。

用户层面的技巧

技巧 作用
追问细节 让模型暴露不确定的地方
要求引用来源 逼迫模型承认”不知道来源”
设置温度参数为 0 减少随机性,让模型更保守
明确告知”如果不知道就说不知道” 给模型一个”放弃”的选项

技术层面的方案

方案 原理
RAG(检索增强生成) 先检索真实资料,再基于资料回答
知识图谱 grounding 把回答锚定到可验证的知识节点
多模型交叉验证 让多个模型回答同一问题,对比差异
置信度输出 让模型输出对答案的置信程度
事实核查模块 对模型的回答做二次验证

这些方案各有优劣,但核心思路都是:引入外部真实信息,弥补模型内部的缺陷


总结

大模型”一本正经胡说八道”,不是它故意骗你,也不是它笨,而是底层设计、训练目标、知识存储、数据质量、生成机制五层原因叠加的必然结果

用一个公式概括:

1
幻觉 = 训练目标偏差 + 无自知之明 + 知识压缩 + 数据污染 + 概率跑偏

理解了这一点,你就会明白:大模型是一个流畅的语言生成器,不是精准的事实数据库

用模型时,把它当作一个能快速整理思路、启发想法的助手,而不是权威的知识来源。关键事实,还是要自己核实。


参考资源