面试官:大模型中的幻觉本质原因是什么?如何通过训练或推理手段抑制?
面试官:你觉得大模型的幻觉(Hallucination)是怎么产生的?能不能从原理上讲讲?那我们又该如何去抑制?别小看这问题,几乎所有大模型都被幻觉困扰——从 ChatGPT 到多模态模型,没有一个能逃得了。
面试官:你觉得大模型的幻觉(Hallucination)是怎么产生的?能不能从原理上讲讲?那我们又该如何去抑制?
别小看这问题,几乎所有大模型都被幻觉困扰——从 ChatGPT 到多模态模型,没有一个能逃得了。
所有相关源码示例、流程图、模型配置与知识库构建技巧,我也将持续更新在Github:AIHub,欢迎关注收藏!
一、什么是幻觉?
在大模型语境下,“幻觉”指的是模型生成的内容虽然语言上连贯、逻辑通顺,但与事实不符。
比如:
- 模型编造不存在的论文;
- 模型凭空虚构数据、代码;
- 模型回答问题时“自信地胡说八道”。
本质上,这是一种模型生成偏离真实语义空间的现象。
二、幻觉的本质
要理解幻觉,得先回到最本质的事实:
大模型不是知识系统,而是条件概率生成器。
在自回归框架下,语言模型的目标是: P ( x 1 , x 2 , . . . , x T ) = ∏ t = 1 T P ( x t ∣ x < t ) P(x_1, x_2, ..., x_T) = \prod_{t=1}^{T} P(x_t | x_{<t}) P(x1,x2,...,xT)=t=1∏TP(xt∣x<t)
也就是说,模型只学到了下一个词的概率分布,它并不真正知道事实是否真实。
所以,当语境不充分、分布外样本出现、或概率混乱时,模型就可能选择一个语义上合理但事实错误的词。
这,就是幻觉的起点。
三、从三层视角看幻觉产生的机制
语言层面:训练目标与真实性错位
语言模型的目标函数是最大化似然(MLE): max θ ∑ t log P θ ( x t ∣ x < t ) \max_\theta \sum_{t} \log P_\theta(x_t | x_{<t}) θmaxt∑logPθ(xt∣x<t)
问题是:
- 它学习的是表达概率,不是事实正确性;
- 高似然的句子往往是听起来合理的句子;
- 所以模型会优先输出语法连贯的内容,而非真实内容。
语言模型追求的是流畅性,不是真实性。
语义层面:知识表示的不精确性
大模型的知识是通过分布式向量表示(embedding)隐式存储的。

当知识关联不清或相似概念混叠时,就会产生伪联想。
比如:
“爱因斯坦提出了相对论”
“牛顿提出了万有引力”
模型可能学到“物理学家 + 提出 + 理论”这种统计模板,于是当你问“爱迪生提出了什么理论?”时,它就很可能编一个。
这类幻觉是表示空间混叠的结果。
推理层面:采样与解码过程的偏差
生成时,大模型并不是每次都取最高概率词,而是根据策略采样:
- Greedy Search:容易陷入局部模式;
- Top-k / Top-p Sampling:可能选到“语言上合理但事实不对”的词;
- Temperature 过高:输出随机性增加,幻觉概率上升。
也就是说,即使模型本身概率分布没问题,推理策略也可能人为放大幻觉。
四、从训练角度如何抑制幻觉?
抑制幻觉的核心思想是让模型不只学习‘语言的合理性’,而要学习‘事实的正确性’。
常见训练层面的解决思路
1. 增强知识监督(Knowledge Grounding)
在预训练或微调阶段引入外部知识库(如 Wikipedia、Wikidata、检索模块),让模型的生成有事实支撑。

典型做法:
- Retrieval-Augmented Generation (RAG)模型先检索知识 → 再根据检索内容生成;
- Atlas, REALM, RETRO 等架构;
- 多模态 Grounding:让语言与视觉、表格等信息绑定。
知识监督可以有效降低事实性幻觉,但是检索质量决定上限。
2. 指令对齐(Instruction Tuning + RLHF)
RLHF(Reinforcement Learning from Human Feedback)本质上就是让模型学会“人认为对的回答方式”。
流程:
- 用人类反馈训练奖励模型;
- 用 PPO 等算法让语言模型生成更“符合人意”的内容;
- 奖励模型会惩罚“自信胡说”的输出。

这一步其实相当于事实性与风格性的软约束融合。但 RLHF 并不能消灭幻觉,只是让它更不容易说错。
3. 对比学习(Contrastive Fine-tuning)
通过成对样本(正确 vs 虚构)进行优化,让模型学会区分真伪。

例如:
Input: 爱因斯坦提出了什么理论?
Good: 相对论。
Bad: 量子力学。
模型通过对比学习优化隐空间,使“正确输出”靠近上下文向量。
4. 知识编辑与持续学习
当模型学错事实时,可以通过:
- Fine-tune 局部层;
- 低秩适配(LoRA)局部更新;
- 参数编辑(ROME, MEMIT)直接修改内部权重。

这种方式类似“纠错记忆”,让模型在不遗忘旧知识的前提下修正特定幻觉源。
五、从推理角度如何抑制幻觉?
训练能减少,推理才能控制。
几种工程上常用的推理层面技巧如下
1. 检索增强推理(RAG, RETRO)
在推理阶段动态检索外部信息:模型不凭空生成,而是参考事实再生成。
相当于让模型边查资料边回答,而不是瞎编。
2. Self-consistency / 多样性采样验证
让模型多次独立生成答案,然后对结果求一致性:
问:太阳系中最大的行星是什么?
→ 第1次:木星
→ 第2次:木星
→ 第3次:土星
如果答案不一致,则触发“再生成或检索”。
这利用了大模型自身的统计稳定性来自我校验。
3. Chain-of-Thought + Faithful Reasoning
在推理时让模型显式地写出推理链条(CoT),把“直接生成结论”改成“先推理,再总结”。

这有两个好处:
- 推理路径透明,可检测逻辑错误;
- 减少跳步式幻觉。
进一步的改进是 Faithful CoT:引导模型在每一步推理中引用真实依据(如 RAG + CoT)。
4. 校验型解码(Verifier / Critic Model)
训练一个小模型或模块专门判断输出的真实性,类似于主模型负责写,副模型负责挑错。
代表方案有G-Eval(LLM-based Evaluation)和CriticGPT / VerifierGPT。
5. 降低采样温度 / 调整 top-p
推理时如果温度(temperature)太高,模型更容易“探索”,幻觉概率随之上升。
在知识问答或事实任务中,通常:
temperature = 0.2 ~ 0.4
top_p = 0.8
能有效减少幻觉。
总结一下,大模型的幻觉不是撒谎,而是它在不确定下仍然要生成“最像真的”答案。
它的根本原因是:
- 语言建模目标与事实目标不一致;
- 向量空间知识混叠;
- 推理采样带来随机偏差。
解决的核心思想则是让模型有依据地说话,从概率生成走向事实对齐(faithful generation)。
关于深度学习和大模型相关的知识和前沿技术更新,请关注公众号 coting!
📚推荐阅读
面试官:为什么 Adam 在部分任务上会比 SGD 收敛更快,但泛化性更差?如何改进?
更多推荐

所有评论(0)