大语言模型为何会产生"幻觉"?——OpenAI 新论文

197 阅读11分钟

在使用 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 AIClaude 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 年
  • 严重错误:如编造医疗知识

这种粗糙的分类方式,无法准确反映幻觉的不同危害程度。


五、总结

语言模型产生**"幻觉",并非因为模型"刻意出错",而是预训练的"天然局限"后训练的"评估偏差"**共同作用的结果。

成因分析

预训练阶段的局限:

  • 模型在处理**"无规律信息""低频信息"**时易出错
  • 生成正确内容的难度远高于判断内容是否正确
  • 单例信息最易导致幻觉

后训练阶段的偏差:

  • "非对即错"的评估机制让模型不得不选择"猜测"
  • 奖励猜测、惩罚不确定,强化了幻觉行为

解决思路

要减少幻觉,核心不是单纯**"优化模型结构",而是"调整规则"**:

  1. 明确置信度目标:让模型知道何时该回答,何时可放弃
  2. 修改主流评估基准:融入不确定性表达的奖励机制
  3. 推动行为校准:让模型的自信程度与实际能力匹配

只有这样,才能逐步提升语言模型输出的可信度,让其更好地服务于学习与工作。

原始论文:https://cdn.openai.com/pdf/d04913be-3f6f-4d2b-b283-ff432ef4aaa5/why-language-models-hallucinate.pdf