面试官:你觉得大模型的幻觉(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=1TP(xtx<t)

也就是说,模型只学到了下一个词的概率分布,它并不真正知道事实是否真实。

所以,当语境不充分、分布外样本出现、或概率混乱时,模型就可能选择一个语义上合理但事实错误的词。

这,就是幻觉的起点。

三、从三层视角看幻觉产生的机制

语言层面:训练目标与真实性错位

语言模型的目标函数是最大化似然(MLE): max ⁡ θ ∑ t log ⁡ P θ ( x t ∣ x < t ) \max_\theta \sum_{t} \log P_\theta(x_t | x_{<t}) θmaxtlogPθ(xtx<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)本质上就是让模型学会“人认为对的回答方式”。

流程:

  1. 用人类反馈训练奖励模型;
  2. 用 PPO 等算法让语言模型生成更“符合人意”的内容;
  3. 奖励模型会惩罚“自信胡说”的输出。

这一步其实相当于事实性与风格性的软约束融合。但 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

📚推荐阅读

面试官:Transformer如何优化到线性级?

面试官:模型的量化了解吗?解释一下非对称量化与对称量化

面试官:模型剪枝了解吗?解释一下结构化剪枝与非结构化剪枝

面试官:为什么 Adam 在部分任务上会比 SGD 收敛更快,但泛化性更差?如何改进?

面试官:BatchNorm、LayerNorm、GroupNorm、InstanceNorm 有什么本质区别?

面试官:深层网络梯度消失的根本原因是什么?除了 ResNet,还有哪些架构能有效缓解?

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐