第八章:为什么大模型会"胡说八道"?------幻觉的本质机制
目录
零基础认识大语言模型(LLM)工作原理目录 - GuZhenYin - 博客园
本章导读
我们在使用大模型的时候,可能见过下面的情况(特别是早期的大模型):
-
明明不存在的论文,被模型说得有鼻子有眼
-
编造 API 参数、函数名
-
历史事实错得很自信
-
引用不存在的链接或书籍
我们不自觉的就会有个疑问:为什么模型不能"只说它确定的事"?
通读了前面7章内容,其实我们应该就能明白:因为它的训练目标,从来不是"事实正确",而是"概率最优续写"。
8.1 归纳一句话
LLM 其实完全不知道"真相",只知道"哪种说法更像人类文本"。
也就是说:
| 人类 | 大模型 |
|---|---|
| 判断真假 | 判断概率 |
| 事实验证 | 文本延续 |
| 外部世界 | 语料分布 |
所以模型本质其实是在做**"像事实的生成" 而不是 "真实判断"**
8.2 举一个例子
输入:
text
爱因斯坦提出了____
模型会输出:
-
相对论(高概率)
-
光电效应解释(高概率)
-
质能方程(高概率)
但如果你问:
text
爱因斯坦在2024年发表了____论文
模型仍然可能"补全":
- 一篇关于量子引力的新论文 ❌(假的)
为什么呢?
因为模型在做**"这句话通常怎么写"**的补全
而不是结合上下文判断真实性后在作答(当然,最近的模型通过深度思考和游览器查询补充上下文后,已经很少出现类似问题了)
8.3 幻觉的根本原因
这里我们拆成三个层次。
① 训练目标没有"真实性约束"
模型训练目标是:P(next_token \| context)
没有任何一项是:truth constraint(真实性约束)
所以关键点就在于,概率高并不等于事实正确.
② 自然语言本身就允许"编造但合理"的表达
我们人类语言中:
-
小说
-
假设
-
推测
-
错误信息
这些编造的信息,本身也都是合法文本
模型的参数来自于大量互联网资料训练,所以很难区分,**"真实描述" 和 "合理虚构"**的差异
③ 模型没有外部验证机制(为了减少幻觉,新模型通过MCP或原生Tools已经具备了类似功能)
模型没有:
-
数据库查询
-
搜索引擎
-
实时校验
-
事实比对
所以它只能:在内部概率空间"自洽地生成"剩下的内容
8.4 一个非常重要的概念
其实我们可以这样理解:模型不是"查资料回答",而是"闭卷写作文"。
在闭卷考试里:
-
不能查资料
-
只能凭记忆和语言规律写
结果就是:写得很像,但不一定对
8.5 为什么模型会"编造得很自信"?
这是很多人困惑的点。
原因1:概率最大化机制
前面我们一直在讲,模型输出的是:最可能的 token
所以还是那句话,最可能不等于最真实
原因2:语言中"自信表达"本身是高概率模式
在大模型的训练语料中包含大量的学术论文、教科书、技术文档,这些文献资料通常都是 强断言语气.
所以模型学到了这些资料中的一个关键语气**"正确答案等于自信表达"**
原因3:缺少"不知道"的高质量表达数据
在我们现实中,如果遇到了不知道或者不清楚的事情我们正常会说:
-
我不确定
-
可能是
-
没有找到资料
但训练数据里:这种表达比例远低于"确定性表达" (因为获取的大量互联网资料,都不是提问,而是文章)
所以导致的结果就是,模型更倾向"给答案",而不是"拒答"
8.6 幻觉的三种类型
我们可以把模型的幻觉简单的分类成以下三点.
类型1:事实型幻觉
编造不存在的信息:
-
虚构论文
-
错误历史事件
-
假 API
类型2:逻辑型幻觉
推理过程看似合理,但是结论错误.(比如之前很火的,50米加油站,是开车去 还是走过去的问题.)
类型3:引用型幻觉
这是最危险的一类:
-
编造来源
-
编造链接
-
编造书籍
8.7 为什么通过 RAG 能缓解幻觉?
为了解决模型幻觉和参数很难实时更新的问题.
后面出现了RAG等相关技术,来缓解模型的幻觉输出.
但是为什么RAG能减少模型的幻觉呢?
我们先了解一下RAG到底做了些什么.
RAG 做的事:
text
用户问题
↓
检索外部知识库
↓
把资料塞进 Context
↓
LLM 生成答案
本质作用,其实就是把"闭卷考试"变成"开卷考试"
为什么会有效呢?
因为模型现在可以对照RAG资料,并且基于证据生成回复(实际上,我们可以理解RAG把模型需要的上下文补全了很多,所以预测的token也就准了许多)
但为什么不能根治?
因为RAG只能补全模型对话的上下文,但是在上下文不够清晰的情况下, 模型仍然可能产生"编造 + 资料混合"的情况
也就是说有证据时更准,但仍可能误读证据.
但是,一定要记住,RAG只能缓解幻觉,并不能完全解决幻觉.
很多人误以为:
RAG = 解决幻觉
❌ 错
正确理解:
RAG = 降低幻觉概率,不改变生成机制
8.8 为什么工具调用(Tool Use)更可靠?
比如:
-
搜索
-
SQL
-
API
-
代码执行
原因:
这些工具提供"外部真实反馈"
对比:
| 方式 | 是否有事实约束 |
|---|---|
| 纯 LLM | ❌ |
| RAG | ⚠️部分 |
| Tool + Execution | ✔ |
8.9 幻觉无法彻底消除的根本原因
我们需要明确这个核心。
因为说到底模型本质是:概率生成模型
而不是:事实数据库
只要满足以下条件,幻觉就必然存在:
-
生成式模型
-
无外部验证
-
基于概率采样
所以幻觉不是错误,是生成机制的副作用
8.10 为什么有时候幻觉"看起来很合理"?
因为模型学到的是人类语言本身的"高压缩结构"
就算错误信息也可能语法正确、逻辑通顺、表达专业
所以错误的内容它也可以"长得像真理"
8.11 总结
如果只用一句话总结的话,我们可以认为幻觉的本质是:模型在没有外部世界约束的情况下,用概率去生成"最像答案的文本",而不是"真实答案"。
本章总结
我们解决了四个核心问题:
① 为什么会幻觉?
因为目标是"像文本",而不是"真"
② 为什么会自信胡说?
因为训练数据偏向确定性表达
③ RAG 为什么有效?
因为提供了外部证据,补充完善了上下文, 能让token预测更加准确,但是不改变生成机制
④ 幻觉能不能彻底消除?
不能,只能降低概率