AI 幻觉(Hallucination)指大语言模型生成看似合理、实则错误的内容——虚构事实、张冠李戴、自信地给出错误答案。例如:问「某位学者的博士论文标题是什么」,模型可能自信地给出三个不同答案,却全部错误;问「他的生日是哪天」,同样可能编造三个日期,无一正确。要理解幻觉从何而来,需要从模型与文本交互的底层机制入手。本文从 Token、BPE、Context Window、压缩算法等环节,梳理幻觉的来源与成因。(关于 Token、Context Window 等基础概念,可参考 LLM 与 AI 应用核心概念科普。)


一、Token 与 LLM 的通信原理

1.1 文本如何进入模型

人类输入的是自然语言,模型内部处理的是数字。Token 是二者之间的桥梁:文本先被切分成 Token 序列,再映射为向量(Embedding),才能参与计算。

用户输入:「今天天气很好」
    ↓ Tokenizer(如 BPE)
Token 序列:[今, 天, 天, 气, 很, 好]
    ↓ Embedding 层
向量序列:[[0.1, -0.3, ...], [0.2, 0.5, ...], ...]
    ↓ 注意力 + 前向传播
下一个 Token 的概率分布
    ↓ 采样 / 贪心
输出 Token → 解码为文本

1.2 核心流程简述

  1. Tokenization:将文本拆成 Token(词、子词或字符级)
  2. Embedding:每个 Token 映射为高维向量,携带语义信息(例如「猫」和「狗」的向量较接近,「猫」和「汽车」较远)
  3. 注意力机制:模型根据上下文为每个位置分配权重,决定「关注」哪些 Token(例如生成「苹果」时,若上下文是「乔布斯创办了___」,会更多关注「乔布斯」「创办」)
  4. 前向传播:通过多层 Transformer,得到每个位置对下一个 Token 的预测分布
  5. 解码:按概率采样或取最大概率 Token,再映射回文本输出

1.3 与幻觉的关系

模型没有「真假」概念,只学习「在给定上下文下,下一个 Token 最可能是什么」。当训练数据中某类模式稀少或矛盾时,模型会倾向于生成统计上合理、但事实错误的续写。

例子:问「张三的生日是几月几日?」。训练集中张三的生日可能只出现过一两次,模型无法可靠学习;但它学过「人名 + 生日」的句式模式,于是可能根据「张三」联想到常见名字、职业等,输出「3 月 15 日」——语法流畅、格式正确,却与事实不符。这就是典型的「统计合理、事实错误」。


二、BPE 算法:Token 从何而来

2.1 什么是 BPE

BPE(Byte Pair Encoding,字节对编码) 是一种子词级分词算法,被 GPT、BERT、Claude 等主流模型广泛采用。其核心思想是:反复合并语料中出现频率最高的相邻符号对,用更大的词表换取更短的序列。

2.2 训练流程(简化)

  1. 初始化:将语料中每个词拆成字符(或字节),词尾加一个词尾标记(常用 </w>_ 表示,用于区分词边界)
  2. 迭代合并:统计所有相邻符号对的出现频率,合并最高频的一对,生成新 subword,加入词表
  3. 重复:直到词表达到预设大小(通常几万到十几万)

2.3 简单例子

假设语料中有 lowlowernewestwidest。初始化时,每个词拆成单字符并加词尾标记:

初始拆分(每字符为独立符号)
low l + o + w + 词尾
lower l + o + w + e + r + 词尾
newest n + e + w + e + s + t + 词尾
widest w + i + d + e + s + t + 词尾

接着迭代合并:(e,s) 出现最频繁 → 合并为 es(es,t) → 合并为 est;依此类推。

最终 low 可能保持为 lownewest 变成 new + estlowest 变成 low + est。词形变化(如 lovedloving)会共享子词,减少词表大小。

2.4 与幻觉的间接联系

  • OOV 与歧义:罕见词会被拆成多个子词,模型可能从部分子词推断出错误含义。例如「氟西汀」若被拆成 + 西 + ,模型可能从「西」联想到方位、从「汀」联想到地名,误判为地理相关,而非药物。
  • 语言差异:同一句「今天天气很好」,英文约 4–5 个 Token,中文可能 6–8 个。长文档中,中文消耗的 Token 更多,模型对每个 Token 的注意力更分散,中间信息更容易被稀释。
  • 边界模糊:BPE 可能把「北京大学」拆成 北京 + 大学,而「南京大学」拆成 南京 + 大学。若模型在续写时错误地把「北京」和「大学」的组合理解成「北京的大学」而非专名,可能产生张冠李戴。

三、Context Window:上下文窗口与「中间丢失」

3.1 什么是 Context Window

Context Window(上下文窗口)是模型单次能处理的最大 Token 数。所有输入(系统提示、用户消息、历史对话、模型回复)都塞进这个窗口,超出部分会被截断或丢弃。

例子:128K Token 约等于 10 万英文单词,或一本 300 页左右的书。若你塞进一本 500 页的合同,后半部分会被截断;若对话轮次太多,最早的消息也会被「挤出」窗口,模型就「忘掉」了。

3.2 Lost in the Middle

当上下文很长时,模型会出现 Lost in the Middle 现象:位于中间的信息往往被忽略或利用不足

  • 表现:U 形性能曲线——开头和结尾的信息更容易被利用,中间部分「丢失」
  • 原因:自回归生成、注意力机制、训练时的信息检索偏好共同作用
  • 后果:若关键事实(如「合同金额为 100 万」)位于长文档中间,模型可能「看不到」或权重过低,从而基于错误上下文生成幻觉

例子:一份 50 页的合同中,付款条款在第 25 页。你问「本合同金额是多少?」。模型对开头(目录、甲方乙方)和结尾(签字页)印象更深,中间第 25 页的「100 万」可能被忽略,于是根据训练数据中的常见金额「猜」一个数字,如「500 万」——产生幻觉。

3.3 对幻觉的影响

  • 长文档问答、多轮对话中,若关键信息在中间,模型可能忽略它而「猜」答案
  • 检索增强(RAG)时,若相关片段被排在中间,模型可能更依赖自身记忆而非检索结果,增加幻觉风险

例子:RAG 检索到 5 段相关文档,按相关性排序后,最相关的一段排在第 3 位。模型可能对第 1、2 段(开头)和第 4、5 段(结尾)赋予更高权重,而把真正含答案的第 3 段「夹在中间」弱化,最终基于错误片段生成答案。


四、Context 压缩算法详解

为扩展有效上下文、降低计算成本,研究者提出了多种压缩策略,将长输入压缩成更短的表示,再喂给模型。可以类比为:把一本 500 页的书「浓缩」成几十页摘要,让模型在有限窗口内「读完」。

4.1 语义压缩(Semantic Compression)

基于信息论中的源编码理论,用预训练模型减少长输入的语义冗余,在保留关键信息的前提下缩短序列。可扩展上下文 6–8 倍,且无需微调主模型。例如:重复出现的「根据上述分析」「综上所述」等过渡句可被合并或删减,只保留实质结论。

4.2 选择性压缩注意力(SCA)

通过贪心算法保留 KV 缓存中最具区分性的向量,删除冗余向量。无需训练即可扩展上下文,甚至超越专门微调的长上下文模型。可以理解为:在「谁说了什么」的记录里,只保留最能区分不同发言者的关键句,去掉重复、套话。

4.3 嵌入式记忆压缩

将长文本压缩为嵌入向量形式的「记忆」,再与当前输入拼接。模型在预训练阶段学习如何从压缩表示中恢复和利用信息。类似于把整本书的内容「压」成一个高维向量,回答时再从这个向量里「提取」相关信息。

4.4 压缩与幻觉的关系

  • 信息损失:压缩必然丢弃部分信息,若关键事实被压缩掉,模型可能基于不完整信息生成幻觉
  • 压缩偏差:压缩算法可能偏好某些类型的信息(如开头、结尾),与 Lost in the Middle 叠加,加剧中间部分的信息丢失

例子:将一篇 1 万字的报告压缩成 2000 字的摘要。若「本季度亏损 500 万」这句关键事实在原文中间,且压缩算法优先保留开头(背景)和结尾(结论),这句话可能被略去。模型基于压缩后的摘要回答「本季度盈利情况如何?」时,可能根据「结论」部分的模糊表述,错误推断为盈利,产生幻觉。


五、AI 幻觉的原因总结

综合上述机制,可将幻觉的主要来源归纳如下。

5.1 训练与评估的激励错位

OpenAI 的研究指出:标准评估体系鼓励猜测而非承认不确定性

  • 类比:选择题考试中,猜错和空着都得零分,但猜有 1/365 概率对,空着必然零分
  • 结果:在数千道题中,猜测型模型的准确率往往高于谨慎型模型
  • 因此:开发者倾向于训练「敢猜」的模型,而非「不确定时诚实说不知道」的模型

例子:在 SimpleQA 类评估中,某模型弃权率 52%(不确定时说「不知道」),准确率 22%,错误率 26%;另一模型弃权率仅 1%,准确率 24%,但错误率高达 75%。后者在「准确率」指标上略胜,却产生了大量幻觉——因为猜得多,对得多,错得也多。

5.2 下一词预测的统计必然性

语言模型通过预测下一个 Token 的概率分布来生成文本,没有「真/假」标签,只有「流畅/不流畅」的统计模式。

  • 拼写、括号等有固定规则,模型可学;生日、人名这类任意低频事实本质上是随机的,无法仅凭模式预测
  • 当缺乏准确信息时,模型会倾向于生成统计上合理、但事实错误的续写
  • 论文证明:生成误差率 ≥ 2 × 分类错误率,即幻觉在预训练目标下具有统计必然性

例子:若训练数据是数百万张猫狗照片,按「猫/狗」标注,模型能可靠分类。但若改为按「宠物生日」标注,生日本质上随机,再强的模型也无法避免错误。预训练中的事实性知识同理:拼写、语法有规律可学,而「某人生日」「某论文标题」这类任意事实,模型只能靠统计猜,猜错即幻觉。

5.3 知识压缩与表示缺陷

LLM 将知识以概率分布形式压缩在参数中,压缩过程可能产生:

  • 虚假相关性学习:训练中「苹果公司」和「市值」常一起出现,模型可能过度关联,问「苹果的市值」时混淆成水果公司
  • 信息过度泛化:学过「某总统于 X 年就职」,可能泛化成「所有总统都在偶数年就职」,导致错误推断
  • 知识边界模糊:模型知道「巴黎是法国首都」,但「巴黎在 2024 年的人口」这类边界知识可能模糊,容易编造
  • 上下文依赖的知识激活不完整:问「当前在任的 X 国总统是谁?」时,若「当前」对应的年份未正确激活,可能回答已卸任的人

5.4 上下文与位置因素

  • Lost in the Middle:长上下文中,中间信息易被忽略
  • Context 压缩:压缩算法可能丢弃关键事实
  • Token 与 BPE:分词边界、语言差异影响模型对信息的理解与利用

5.5 小结

来源 简要说明
评估激励 准确率导向鼓励猜测,惩罚「不知道」
下一词预测 无「真假」标签,统计模式导致无法避免的生成误差
知识压缩 参数化表示中的虚假相关、泛化、边界模糊
上下文位置 Lost in the Middle、压缩导致信息丢失
分词与 Token BPE 边界、语言差异影响语义理解

六、延伸阅读

理解幻觉的本质,有助于我们更理性地使用 AI:在关键场景中保持验证习惯,对模型输出保持审慎,而非盲目信任。