大模型幻觉成因
概述
**幻觉(Hallucination)**是指大语言模型生成看似流畅自然,但实际上不符合事实或与源信息矛盾的内容。幻觉是当前大模型面临的核心挑战之一,严重影响模型在需要事实准确性场景中的可靠性。
幻觉定义与分类
基本定义
当模型生成的文本不遵循原文(Faithfulness)或者不符合事实(Factualness),我们就认为模型出现了幻觉问题:
- Faithfulness(忠实性):生成内容是否与输入源信息一致
- Factualness(事实性):生成内容是否符合客观世界知识
按来源分类
| 类型 | 说明 | 场景 |
|---|
| Intrinsic Hallucination(内在幻觉) | 生成内容与输入信息矛盾 | 摘要生成:摘要与原文信息冲突 |
| Extrinsic Hallucination(外在幻觉) | 无中生有,输入中没有的额外信息,难以验证 | 开放域对话:模型编造不存在的事实 |
在大模型开放对话场景中,我们更关注事实性幻觉,因为数据源可以是整个世界知识,模型生成不符合事实的内容就是幻觉。
按内容分类
- 事实性幻觉:生成的事实信息错误,如"珠穆朗玛峰海拔8000米"(正确是8848米)
- 忠实性幻觉:生成内容与给定源文档不一致,常见于摘要、翻译、问答
幻觉产生原因分析
幻觉产生是多方面因素共同作用的结果,可以从数据、模型、解码三个层面分析:
一、数据层面原因
1. 训练数据质量问题
大模型训练数据大多来自互联网,包含大量:
- 虚假信息:互联网上本身就存在很多错误、矛盾的表述
- 噪声数据:低质量、重复、偏见内容
- 未经审核:大部分数据没有人工校验
模型在预训练阶段就会学到这些错误知识,生成时自然容易产生幻觉。
2. 数据重复问题
训练数据中存在大量重复内容,会导致模型对某些高频短语产生偏好,更容易编造不存在的组合。
3. 知识冲突问题
训练数据中同一实体存在多种矛盾描述,模型可能学到错误的知识。
4. 时效性问题
训练数据截止某个时间点,之后发生的事件模型不知道,容易编造。
二、模型层面原因
1. 模型架构本质
大语言模型本质是学习文本序列的统计规律,基于上文预测下一个token,并不真正"理解"内容,也不进行事实核查。只要概率上合理,就可能生成连贯但错误的内容。
2. 暴露偏差(Exposure Bias)
- 训练阶段:模型基于真实上文预测下一个token
- 推理阶段:模型基于自己之前生成的内容预测下一个token
- 如果前面生成了一个错误token,错误会不断放大,后续更可能产生连锁幻觉
这个问题在生成长文本时尤其明显。
3. 解码策略影响
- 为了增加输出多样性,常用top-k采样、top-p(核采样)、温度缩放等方法
- 这些方法引入随机性,让模型不总是选择概率最大的输出,增加了幻觉概率
- 研究表明,不确定性越高的采样算法,越容易引发更严重的幻觉
4. 参数知识偏向
模型过度依赖预训练阶段学到的参数化知识,忽略当前上下文提供的新知识,导致输出与实际情况不符。
5. 预训练目标缺陷
下一个token预测目标只要求流畅连贯,不要求事实正确性,模型没有动力去保证事实准确。
三、任务层面原因
1. 源目标差异
在摘要、data-to-text生成等任务中,如果训练数据存在源文本和目标描述不一致,模型容易学到偏离源信息的生成模式。
2. 长文本依赖
处理长文档、长对话历史时,模型容易丢失早期信息,导致后续生成矛盾内容。
哪些场景更容易产生幻觉?
根据经验,LLM在以下场景更容易产生幻觉:
- 数值处理:涉及日期、数量、统计数据时,容易混淆编造
- 长文本处理:长文档摘要、多轮对话,容易出现前后矛盾
- 逻辑推理:复杂推理问题,模型逻辑链条断裂容易出错
- 上下文与内置知识冲突:当上下文给出新知识与模型预训练知识矛盾时,模型容易错误使用内置知识
- 错误前提问题:问题本身基于错误假设(如"为什么氦的原子序数是1?"),模型往往不会指出错误,反而顺着错误编造解释
幻觉一定有害吗?
不一定,取决于应用场景:
- 有害场景:医疗建议、法律问答、新闻生成、事实查询,幻觉可能导致严重后果
- 可接受场景:创意写作、电影剧情生成、广告文案,幻觉可能带来意想不到的创意
对幻觉的容忍度取决于具体应用。
面试常见问题
-
什么是大模型幻觉?有哪些类型?
- 幻觉指模型生成流畅但不符合事实或与源信息矛盾的内容
- 分为内在幻觉(与输入矛盾)和外在幻觉(无中生有)
- 也可分为事实性幻觉(不符合世界知识)和忠实性幻觉(偏离源文档)
-
大模型为什么会产生幻觉?
- 数据层面:训练数据包含错误、噪声、重复、虚假信息
- 模型层面:LLM本质学习统计规律,不理解事实;暴露偏差;解码引入随机性;预训练目标不要求事实准确
- 任务层面:源目标不一致、长文本依赖缺失等
-
内在幻觉和外在幻觉有什么区别?
- 内在幻觉:生成内容和输入源信息矛盾,比如摘要和原文不一致
- 外在幻觉:生成了输入没有的信息,真假需要外部验证,无法从输入判断
-
什么是暴露偏差?它和幻觉有什么关系?
- 训练时模型基于真实上文预测下一个token,推理时基于自己生成的上文预测
- 训练和推理不匹配,如果前面生成一个错误token,后续错误会放大,产生更多幻觉
-
为什么采样解码会增加幻觉?
- 采样引入随机性,不总是选择概率最大的输出
- 为了多样性牺牲了一定的确定性,更容易生成低概率错误内容
-
LLM什么时候最容易产生幻觉?
- 处理数值信息、长文本、复杂逻辑推理时
- 上下文与模型内置知识冲突时
- 问题基于错误前提时