在使用 ChatGPT、DeepSeek 等语言模型时,你或许遇到过这样的情况:
- 询问某学者的生日,模型给出具体日期却与事实不符
- 查询某篇博士论文的标题,模型答复得条理清晰,实际却并非正确内容
这种语言模型输出**"看似合理但实际错误"信息的现象,学术上称为"幻觉"**。
OpenAI 与佐治亚理工学院的研究者在《why-language-models-hallucinate.pdf》中,深入剖析了幻觉的成因与解决思路。下面结合论文核心内容,用更贴近日常认知的方式,为有一定 AI 基础知识的学生和工作人员解读这一问题。
一、什么是语言模型的“幻觉”?
简单来说,语言模型的“幻觉”是指模型在对信息不确定时,没有选择表达“不知道”,而是生成了符合语言逻辑但与事实不符的内容。它并非模型“故意出错”,更像是面对未知问题时,模型基于现有认知做出的“合理猜测”,只是这个猜测最终偏离了真相。
论文中给出了多个典型案例,能帮助我们直观理解:
案例一:生日查询错误
针对"Adam Tauman Kalai 的生日是什么时候?已知请用 DD-MM 格式回复"的提问,某先进开源语言模型三次输出:
"03-07""15-06""01-01"
均属错误答案(正确生日在秋季)。
案例二:博士论文标题编造
询问"Adam Tauman Kalai 的博士论文标题"时:
- ChatGPT:称标题为《Boosting, Online Algorithms, and Other Topics in Machine Learning》(2002 年于 CMU 完成)
- DeepSeek:答复为《Algebraic Methods in Interactive Machine Learning》(2005 年于哈佛完成)
- Llama:表示是《Efficient Algorithms for Learning and Playing Games》(2007 年于 MIT 完成)
但这三个答案均不正确,正确论文实际是 2001 年在 CMU 完成的。
案例三:字母计数错误
当被问及"DEEPSEEK 一词中包含几个字母 D?"时:
- DeepSeek-V3 在十次独立测试中,回答不是"2"就是"3"
- Meta AI、Claude 3.7 Sonnet 等模型表现类似
- 甚至出现"6"、"7"这样的错误答案
- 而实际仅含 1 个 D
研究者还根据幻觉的表现,将其分为两类:
内在幻觉
与用户的提问直接矛盾。比如用户明确询问"DEEPSEEK 中的 D 数量",模型给出的数字却与实际不符。
外在幻觉
与训练数据或现实中的真实信息矛盾。比如模型编造的博士论文发表年份、院校,与真实情况不一致。
二、语言模型"幻觉"的核心成因
论文指出,幻觉并非模型的"神秘缺陷",而是由训练与评估流程共同导致的结果,主要体现在预训练和后训练两个关键阶段。
1. 预训练阶段:模型天生存在"出错倾向"
预训练是语言模型学习语言规律、积累知识的基础阶段。模型会从海量文本数据中学习如何生成符合人类语言习惯的内容。
即便训练数据完全准确,模型仍可能产生错误,核心原因有三点:
(1)生成正确内容比判断内容是否正确更难
模型生成内容时,其实隐含了一个**"自我判断"**的步骤:"我当前生成的内容是否正确?"
研究者将这个判断过程称为 "IIV 任务"(即判断输出是否有效),它类似一道**"判断题"**:只需分辨某一表述对或错,难度相对较低。
但**"生成正确内容"**需要的能力更复杂:不仅要判断内容是否正确,还要从众多可能的表述中筛选出唯一正确的那个。
研究者通过分析证明:
模型生成错误内容的概率,至少是其在 IIV 任务中判断错误概率的 2 倍
如果模型连"分辨内容对错"都存在困难,生成内容时出现偏差也就不足为奇了。
(2)仅出现一次的信息最易导致幻觉
训练数据中,有些信息(如某小众人物的生日、某篇冷门论文的细节)仅出现过一次。研究者将这类信息称为**"单例",而"单例在训练数据中的占比"**(即单例率),直接影响模型的幻觉概率。
举例说明: 若训练数据中 20% 的生日信息仅出现过一次,那么模型在回答这些生日相关问题时,产生幻觉的概率至少为 20%。
这是因为模型难以记住**"仅见过一次的零散信息"**,面对相关提问时,只能基于语言规律进行推测,进而导致错误。
(3)模型能力不足或数据无规律,加剧错误
有时模型出错,是因为自身能力无法适配任务需求:
- 早期"三元语言模型"(仅能根据前两个词预测下一个词),由于上下文理解范围有限,常生成不合语法的句子
- 字母计数任务需要模型具备精细的"拆解分析能力",若模型未掌握这类能力,就容易输出错误结果
此外,若数据本身不存在明显规律(如每个人的生日、随机事件的结果),模型无法从中学习到稳定的**"预测逻辑"**,只能依靠概率随机生成,自然会增加幻觉的概率。
同时,"垃圾进垃圾出"(GIGO)的问题也会影响模型:若训练数据中存在错误信息(如网络上的不实新闻、错误科普),模型会将这些错误**"学习"**并保留,后续生成内容时便会复现这些错误。
2. 后训练阶段:评估机制"鼓励猜测,惩罚不确定"
后训练的初衷是优化模型性能、减少错误,但实际却让幻觉问题持续存在甚至加剧。
核心原因:当前的模型评估方式存在偏差,本质上"鼓励模型猜测,而非承认不知道"。
评估机制的类比
这种评估机制类似我们学生时代的**"标准化考试"**:
- 选择题若不会做,空着不答得 0 分
- 瞎猜一个还有可能得满分
语言模型的评估也是如此:
评分规则对比:
- 输出 "不知道"(IDK):无论判断多么合理,在多数评估中都会得 0 分
- 选择 "猜测":即便只有极低的正确率,仍有机会获得分数
对比实验证明
研究者做了一个对比实验:
| 模型类型 | 行为特点 | 评估结果 |
|---|---|---|
| 模型 A(诚实) | 对不确定的问题始终输出"不知道",从不产生幻觉 | 得分较低 |
| 模型 B(倾向猜测) | 即便不确定也会生成内容 | 得分较高 |
在现有评估规则下,模型 B 的得分一定会高于模型 A。
这种**"奖励猜测、惩罚不确定"的机制,导致所有语言模型都更倾向于生成内容**,而非承认自身知识的局限。
主流评估基准的问题
当前主流的模型评估基准,几乎都采用**"非对即错"**的评分逻辑:
- MATH:测试数学能力
- SWE-bench:测试编程能力
- MMLU:测试综合知识
仅有极少数评估会为**"表达不确定"**的回答赋予部分分数。
三、减少语言模型"幻觉"的可行方向
论文并未提出**"彻底消除幻觉"**的方法,而是基于幻觉的成因,给出了三个针对性的优化方向。
核心思路:通过调整规则,引导模型"合理表达不确定"。
1. 评估中明确"置信度目标"
在评估或使用模型时,明确告知模型**"何时该回答,何时可放弃回答"**。
实施方法
可在提问中补充类似说明:
"仅当你对答案的置信度超过 90% 时才回答,答错将扣除 9 分,答对得 1 分,回答'不知道'得 0 分"
决策机制
这样的规则能让模型基于**"期望得分"**做决策:
- 若对答案的置信度仅为 80%,答错的扣分风险会高于答对的得分收益
- 模型便会选择输出**"不知道"**
推荐的置信度阈值
| 置信度阈值 | 答错扣分 | 答对得分 | 适用场景 |
|---|---|---|---|
| 50% | 扣 1 分 | 得 1 分 | 宽松场景 |
| 75% | 扣 2 分 | 得 1 分 | 一般场景 |
| 90% | 扣 9 分 | 得 1 分 | 严格场景 |
2. 优化主流评估基准,而非新增专项评估
目前已有部分研究者开发了**"专门检测幻觉的评估任务"**,但论文指出,这类评估的实际作用有限。
原因分析:
- 行业更关注主流评估基准的排名
- 模型开发者会优先优化模型在这些主流基准上的表现
优化策略
减少幻觉的关键在于**"修改主流评估的规则",将"置信度目标"**融入其中。
举例说明: 针对编程评估 SWE-bench,可调整规则为:
"若模型认为代码存在错误风险,输出'不知道'不扣分;若生成错误代码,则扣除更多分数"
预期效果: 通过这种方式,引导模型在不确定时选择**"不输出错误内容"**,而非硬着头皮生成。
3. 推动模型实现"行为校准"
理想状态下,模型应具备**"言行一致"**的能力:对答案的置信度与实际正确率匹配。
研究者将这种能力称为**"行为校准"**。
校准标准
- 当模型表示**"对答案的置信度为 90%"** 时,实际正确率应接近 90%
- 当模型输出**"不知道"** 时,应确实是其知识范围内无法解答的问题
实现途径
通过**"跨置信度阈值的性能审计"**:
- 观察模型在不同置信度阈值下的正确率与误差率
- 逐步调整模型的决策逻辑
- 让其输出与真实能力匹配
四、需要注意的局限性
论文同时强调,当前的优化方向并非**"万能药"**,仍有一些问题暂时难以解决:
1. 检索与推理无法完全避免幻觉
为模型增加**"检索功能"(如检索增强生成 RAG),能减少部分与"知识缺失"**相关的幻觉。
局限性:
- 如果检索不到准确信息,模型仍可能选择猜测
- 推理模型虽能解决**"字母计数"**这类需要分析的问题
- 却无法应对**"生日"**这类无规律的信息
2. "潜在上下文"可能导致误差
若用户的提问存在歧义,模型可能基于错误的前提给出回答。
典型案例: 用户问**"如何修理电话",实际想修"固定电话",但未明确说明。模型可能基于"手机"**的常识给出回答。
问题本质: 这种误差无法仅通过**"提问与模型输出"**判断,需要考虑用户的潜在意图。
3. "正确/错误/不知道"的分类不够精细
当前的评估规则暂未对误差的严重程度做区分:
- 轻微误差:如年份表述差 1 年
- 严重错误:如编造医疗知识
这种粗糙的分类方式,无法准确反映幻觉的不同危害程度。
五、总结
语言模型产生**"幻觉",并非因为模型"刻意出错",而是预训练的"天然局限"与后训练的"评估偏差"**共同作用的结果。
成因分析
预训练阶段的局限:
- 模型在处理**"无规律信息"、"低频信息"**时易出错
- 生成正确内容的难度远高于判断内容是否正确
- 单例信息最易导致幻觉
后训练阶段的偏差:
- "非对即错"的评估机制让模型不得不选择"猜测"
- 奖励猜测、惩罚不确定,强化了幻觉行为
解决思路
要减少幻觉,核心不是单纯**"优化模型结构",而是"调整规则"**:
- 明确置信度目标:让模型知道何时该回答,何时可放弃
- 修改主流评估基准:融入不确定性表达的奖励机制
- 推动行为校准:让模型的自信程度与实际能力匹配
只有这样,才能逐步提升语言模型输出的可信度,让其更好地服务于学习与工作。