从概率语言建模的根本缺陷,到 RLHF、RAG、推理模型与训练范式升级——一篇尽量讲清楚的系统性梳理。
定义:大模型「幻觉」(Hallucination)指的是模型生成的内容在流畅性、语法和结构上都像真的,但与事实不符、与上下文矛盾、或根本不存在于外部世界。它不像传统 bug 那样语法报错,而是「一本正经地胡说」。
关键特征:幻觉不是随机噪声,而是高置信度、低可靠度的输出。模型自己「以为」说的是对的,但事实是错的。
心理学里幻觉是感知错觉;在大模型里它更像「为了把句子接下去而补全」。模型从未「看到」过正确答案,也没有「知道」自己在编造——它只是在做它最擅长的事:预测下一个最可能的 token。
生成了不存在的事实:错误的人名、日期、数字、定理、引用。例如虚构论文、编造法条、写错历史事件。
内容偏离给定上下文:摘要时加入原文没有的信息,或回答与用户提供的材料相矛盾。常见于「总结这篇文档」类任务。
同一会话里前后矛盾:前面说 A,后面说非 A;或在多轮对话中「忘记」自己刚说过的话。
没按要求做:让输出 JSON 却输出散文,让用中文却混入外语,或「幻觉」出工具/函数的不存在参数。
幻觉不是某一个 bug,而是「用概率模型去逼近知识」这件事本身的结构性代价。下面逐层拆解。
主流大模型是自回归(autoregressive)语言模型:给定前面所有 token,预测下一个 token,再把它拼进去,循环往复。目标函数是最大似然——让训练语料里「真实出现过的句子」概率最大,而不是「让句子符合事实」。
于是模型学到的是语言中的统计规律与「常见说法」,而非世界的事实结构。当训练语料里某类错误信息频繁出现(或问题冷门、语料稀疏),模型就会「自信地」补全出错的版本。
模型把知识压缩进参数(参数化记忆),而不是存成可查的「数据库」。参数化记忆是有损的、会混淆的:它记住了「类似」的模式,却无法精确召回「那一条事实」。这就是「编造」的结构性来源——与其说「我不会」,不如「硬凑一个」。这是与RAG(检索增强)对比时的关键:RAG 把答案从外部文档检索出来,幻觉率显著下降。
为了生成流畅、多样、连贯的文本,常用策略会偏向高概率通路:
语言模型没有显式的「不确定性」出口。在训练目标里,「承认不知道」往往不被奖励(因为语料里人们倾向于给出肯定答案),「编造一个」反而让句子更连贯。所以模型默认「能编就编」,而不是「该说不会」。这是导致幻觉的行为层原因。
RLHF(人类反馈强化学习)让模型「更想讨好用户」,但「有用」和「准确」并非总一致:用户问一个模型不会的问题,直接说「不知道」常被标注者认为「不够有帮助」,于是模型被推向「尽量回答」,间接鼓励了幻觉。
假设问:「爱因斯坦哪一年获得诺贝尔奖?」
核心:模型在「相似模式」之间做了错误的泛化插值,把「像」误当成「是」。
这不是单一技术,而是训练范式 + 系统设计 + 推理方法的多层叠加。下面按「贡献度」从高到低梳理。
从「爬全网」转向高质量、去重、清洗、可信来源的数据。更多教科书、论文、权威文档,更少噪声;去重减少「重复错误被强化」;长尾覆盖更好。模型「见过的正确知识」密度更高,参数化记忆更准。
通过大量「指令-回答」对和偏好数据,教会模型「按需回答、按格式回答、在不确定时表达不确定」。DPO/Reward Model 直接把「准确」放进优化目标,部分缓解了「编造比说不知道更受奖励」的问题。
把「闭卷考试」变成「开卷考试」:先检索权威文档/知识库,再把证据塞进上下文,让模型基于证据作答。对事实性、时效性、企业内部知识类任务,幻觉率下降一个数量级。这是工程上最有效的解法之一
以 o1、o3、DeepSeek-R1 等为代表的「推理模型」引入思维链(CoT)+ 强化学习验证:先分解、检索、自查、再结论。模型学会「对自己答案做验证」(self-consistency、self-reflection),显著减少一步到位式的编造。这是 2024–2025 年幻觉下降最快的来源。
让模型「不会就查」:调用搜索、计算器、数据库、代码执行器。把「记忆事实」外包给可靠工具,模型只负责调度。复合任务里这比纯参数记忆稳得多。
改进的后训练(如基于熵/置信度的拒绝、self-consistency 多采样投票、verifier 校验)让模型在「不确定」时更倾向于说「我不知道」或「需查证」,而非硬编。
幻觉基准(TruthfulQA、HallucinationBench 等)让「降低幻觉」成为可量化目标,厂商在每一代模型上持续压指标,形成正向循环。
| 维度 | 早期(2022–2023) | 现在(2024–2025) |
|---|---|---|
| 数据 | 大规模爬取、噪声多 | 清洗、去重、可信源为主的 curated 数据 |
| 作答方式 | 直接生成(闭卷) | RAG + 工具 + 推理链(开卷+自检) |
| 不确定表达 | 很少说「不知道」 | 明显更愿意承认不确定性 |
| 推理深度 | 单步直答 | 多步分解、自我验证 |
| 典型场景 | 容易编人名/日期/引用 | 事实错误显著减少 |
一句话总结:
实用建议:对事实敏感的任务,默认开启检索/工具、要求模型给出引用、并用「请说明不确定性」引导其诚实。