最近 OpenAI 团队好像找到了大模型有时瞎回答的原因?
随着 ChatGPT、Claude、GPT‑4o、各类大语言模型(LLMs)越来越普及,一个问题也越来越被人提起:这些模型为什么有时候看起来很有逻辑地回答问题,但答案却完全错了?业界常用一个词叫 “幻觉”(hallucination)来描述这个现象。最近 OpenAI 团队新发表了论文和文章,尝试系统剖析这个问题,本篇就来全方位总结给你看。
关于你不知道的Cursor是一个系列,更多 Cursor 使用技巧也可关注公众号 AI近距离
系列历史文章
- 1. 如何使用Cursor同时开发多项目?
- 2. 你用 Cursor 写公司的代码安全吗?
- 3全网最全 Cursor 配置指南:从入门到高效工作流!建议收藏
- 4.你不知道的Cursor系列:使用 Cursor 不会这个超牛 MCP 还没用过吧!
- 5.你不知道的Cursor系列:再也不用死记硬背 Linux/Git等 命令,终端 Cmd+K 来帮你!
什么是“幻觉”?
“幻觉”在大语言模型里指的是:
模型生成那种听起来合理/可信/流畅,但实际上是错误的、虚构的或无法验证的陈述。
举例子来说:
- 某次问一个学者的博士论文题目,模型给出三个不同的名字,但每一个都是假的。
- 问某人的生日,得到三个日期,也都不对。
这些就是真正的幻觉:听起来有 plausibility,但都是错的。
为什么会有幻觉?OpenAI 最新的发现与分析
OpenAI 最近发表的论文 “Why Language Models Hallucinate” 总结了几个关键原因。
一、训练与评估中的激励问题(Reward structure)
- 当前很多训练 /微调 /评估机制是 奖励猜测 而不是承认“不知道 /不确定”。
- 这导致模型在不确定时更倾向于给一个听起来靠谱的答案,而不是说“不确定”。
二、统计/数据稀疏性(Statistical causes / data issues)
- 一些冷门事实在训练数据里出现频率极低,模型很难准确记住。
- 语言模型的训练目标是预测“最可能的下一个词”,而不是验证真伪。只要概率高,即使错了也会生成。
三、现代评估标准(Evaluation standards)
- 很多 benchmark 奖励的是“回答问题”,而不是“诚实说不知道”。
- 因此模型逐渐被训练成更偏好“有答案”,而不是“正确答案”。
四、模型校准(Calibration)与自信(Confidence)
- 模型在不确定的时候往往 过度自信。
- 即使没有足够证据,它也会给出非常坚定的语气和结论。
那什么不能说是原因/误解要澄清的地方
在理解这些原因的时候,也有一些容易被混淆或者引起误解的地方,澄清这些对避免误读很重要:
- 幻觉≠故意撒谎/有意识的错误:模型没有意图或意识,只是按照概率生成内容。
- 幻觉并不是架构本身(比如 Transformer)唯一的原因:训练数据、评估机制、概率预测任务、标注与反馈机制等多方面共同作用的结果。
- 幻觉率不会完全消失:稀疏事实、训练集没有覆盖到的内容、用户问的问题非常新/非常具体/非常不常见,都是幻觉容易出现的地方。
给普通开发者的实用建议:如何在日常使用中减少幻觉?
理解了幻觉出现的机制之后,作为日常用大模型来开发、写代码的工程师,其实也可以采取一些手段来降低被幻觉误导的风险。
1. 增加全局规则(Guardrails)
在提示词或系统设置中明确告诉模型:
- “如果答案不确定,请直接说不确定,不要编造。”
- 或者在 Cursor 的全局规则里写清楚:不确定时拒答。
2. 注意模型的训练截止时间
- 模型的知识有截止点,新技术、新 API 它可能不知道。
- 对最新文档,可以在 Cursor 中用 Context MCP 把项目代码、README 或外部文档传给模型,让它结合上下文回答。
- 这样避免了模型凭空猜测。
3. 优先检索+生成(RAG 思路)
- 对事实要求高的场景,可以让模型基于检索结果回答。
- 在 Cursor 中嵌入文档数据库,让模型“先查再答”,幻觉率会更低。
4. 多模型交叉验证
- 对重要问题,可以让两个不同模型回答并对比。
- 如果结果一致,可信度更高;差异很大,则说明问题可能有风险,需要人工确认。
5. 明确提示词要求
- 提示模型在答案后附带引用来源。
- 或者要求它在不确定时输出“未知”。
- 这样回答更透明,也更容易验证。
有什么可能的解决方向或缓解方法?(研究层面)
OpenAI 在文章里也提到了一些方向,结合业界讨论,可以总结为:
| 方法 | 核心思路 | 优点 | 挑战或限制 |
|---|---|---|---|
| 改变评估 / Benchmark 的设计 | 不再简单奖励猜测,而是对“知道自己不知道 /不确定”的行为给予正向奖励。把不确定性的表达纳入评估标准。 | 鼓励模型在不确定时拒答/表达警告,从而减少 confidently 错的回答 | 用户体验可能受影响;如何衡量“适度拒答” vs “逃避回答” |
| 更好地校准模型的置信度 | 在训练中加入不确定性估计,让模型知道什么时候不知道。 | 用户能识别答案可信程度;增强可靠性 | 实现复杂;用户可能忽视置信度提示 |
| 提升训练数据质量与覆盖 | 增加稀疏事实、冷门事实、真实世界细节的训练 / 验证。 | 在这些事实方面幻觉率可能下降;知识广度增强 | 数据收集成本高,更新难度大 |
| 使用辅助机制(RAG, 外部知识库) | 在回答时检索外部资料/数据库/知识库。 | 提高事实性;可查错/减少编造 | 检索系统不稳定;外部数据不总可靠 |
| 透明性 & 用户提示 | 回答中加入“不确定”标注/提供来源。 | 提高用户警觉;减少盲目信任 | 用户可能忽略提示;部分用户不喜欢“不确定”的回答 |
为什么这个研究重要?对我们有什么启示
- 用户层面:知道模型为什么会“瞎说话”,在使用时要带有怀疑,不盲目相信,尤其是冷门事实、新知识、来源不明的信息。
- 工程/产品层面:要把“幻觉率”纳入产品指标,不只看覆盖率和回答率,还要考虑误报/错误的代价,以及用户的风险体验。
- 学术/研究层面:这篇论文指出训练与评估标准本身就是一环。未来改进不只是架构升级,还包括评估机制和训练目标的改变,使模型更注重真实、可验证和不确定性的表达。
关于你不知道的Cursor是一个系列,更多 Cursor 使用技巧也可关注公众号 AI近距离
系列历史文章
- 1. 如何使用Cursor同时开发多项目?
- 2. 你用 Cursor 写公司的代码安全吗?
- 3全网最全 Cursor 配置指南:从入门到高效工作流!建议收藏
- 4.你不知道的Cursor系列:使用 Cursor 不会这个超牛 MCP 还没用过吧!
- 5.你不知道的Cursor系列:再也不用死记硬背 Linux/Git等 命令,终端 Cmd+K 来帮你!
小结
- 大语言模型的幻觉,核心是训练和评估机制导致模型更倾向于“给出一个答案”而不是说“不知道”。
- 数据稀疏、训练截止时间、评估标准等都加剧了幻觉现象。
- 普通开发者可以通过 Guardrails、Context MCP、检索增强、多模型验证、引用要求 等手段来降低幻觉风险。
- 研究层面,未来的改进方向在于评估设计、数据覆盖、校准置信度和透明性机制。
写代码时别忘了:模型会帮你,但不等于替你做决定。带着批判思维去用,你就能发挥它最大的价值。