深度分析模型为何生成错误信息及其根源,提供程序员在生产环境中的检测和修正技巧,高度实用。
一个 AI 助手随口承诺了一项根本不存在的退款政策,导致公司需要为这一凭空捏造的承诺承担责任。加拿大航空聊天机器人的这起事件,就是“AI 幻觉”的典型案例:AI 可能会生成看似自信、实则完全虚构的回答。这类错误——从事实不准确、偏见到推理失败——统称为“幻觉”。
简单来说,大语言模型(LLM)的工作方式类似于高级“自动补全”工具:它们根据训练数据中的模式,通过预测序列中的下一个词来生成内容。这个过程就像在并不理解主题的情况下“填空”。由于 LLM 缺乏能够检查自身输出的真正推理能力,因此它们只能依赖词语的概率模式,而非真正的理解。
在 kapa.ai,我们曾与 Docker、CircleCI、Reddit 和 Monday.com 等 100 多个技术团队合作,将 LLM 应用于生产环境。因此,我们希望分享在管理幻觉方面积累的经验,而第一步就是从技术层面深入了解幻觉究竟是什么。
随着人工智能(AI)模型逐渐成为信息检索和决策过程的核心,人们对这些技术的信任至关重要。AI 聊天机器人曾生成过多条广为人知的误导性陈述,从而引发信任和声誉问题:
错误信息:Google 的 Bard 曾在一段宣传视频中错误地声称,James Webb Space Telescope 拍摄了第一张系外行星图像。而实际上,这张图像是由 European Southern Observatory 的 Very Large Telescope 拍摄的。
错误信息:Google 的 Bard 曾在一段宣传视频中错误地声称,James Webb Space Telescope 拍摄了第一张系外行星图像。而实际上,这张图像是由 European Southern Observatory 的 Very Large Telescope 拍摄的。
伦理问题:Microsoft 的 AI 聊天机器人生成了不恰当的回复,例如声称自己拥有情感,并将某些动机归因于自身。这让用户感到不适,也引发了有关 AI 行为的伦理问题。
伦理问题:Microsoft 的 AI 聊天机器人生成了不恰当的回复,例如声称自己拥有情感,并将某些动机归因于自身。这让用户感到不适,也引发了有关 AI 行为的伦理问题。
法律影响:一名律师使用 ChatGPT 进行法律研究时,提交了捏造的引文和引用内容,最终遭到罚款,不仅面临声誉受损的风险,还浪费了司法资源。
法律影响:一名律师使用 ChatGPT 进行法律研究时,提交了捏造的引文和引用内容,最终遭到罚款,不仅面临声誉受损的风险,还浪费了司法资源。
这些案例凸显了 AI 幻觉可能给组织带来的声誉和信任问题。
LLM 幻觉源于三项核心技术挑战:(A)模型架构的局限性;(B)概率生成机制的根本约束;(C)训练数据的缺口。
查看完整推文以获取更详细的见解
理论局限:LLM 内基于 Transformer 的注意力机制使模型能够关注输入中的相关部分。在 Transformer 模型中,固定的注意力窗口限制了模型能够保留的输入上下文长度;当序列过长时,较早的内容就会被“丢弃”。这种限制经常导致连贯性下降,并增加较长输出中出现幻觉或无关内容的可能性。
理论局限:LLM 内基于 Transformer 的注意力机制使模型能够关注输入中的相关部分。在 Transformer 模型中,固定的注意力窗口限制了模型能够保留的输入上下文长度;当序列过长时,较早的内容就会被“丢弃”。这种限制经常导致连贯性下降,并增加较长输出中出现幻觉或无关内容的可能性。
顺序生成 token:LLM 每次生成一个 token。每个 token 仅依赖于此前生成的 token,而且无法修改先前的输出。这种设计限制了实时纠错能力,导致最初的小错误不断扩大,最终形成语气自信但内容错误的完整回答。
顺序生成 token:LLM 每次生成一个 token。每个 token 仅依赖于此前生成的 token,而且无法修改先前的输出。这种设计限制了实时纠错能力,导致最初的小错误不断扩大,最终形成语气自信但内容错误的完整回答。
生成式模型的局限:生成式 AI 模型生成的回答虽然看似合理,却并不真正理解相关主题。例如,某家超市的 AI 膳食规划工具推荐了一份氯气配方(氯气有毒),并称其为“解渴提神的完美无酒精饮品”。这表明,即使假设 AI 使用的训练数据本身有效,它仍可能因为无法理解上下文而生成不安全的输出。
生成式模型的局限:生成式 AI 模型生成的回答虽然看似合理,却并不真正理解相关主题。例如,某家超市的 AI 膳食规划工具推荐了一份氯气配方(氯气有毒),并称其为“解渴提神的完美无酒精饮品”。这表明,即使假设 AI 使用的训练数据本身有效,它仍可能因为无法理解上下文而生成不安全的输出。
处理不明确的输入:面对含义模糊或表述不清的提示词时,LLM 会尝试“填补空白”,从而生成带有猜测性质、有时甚至完全错误的回答。
处理不明确的输入:面对含义模糊或表述不清的提示词时,LLM 会尝试“填补空白”,从而生成带有猜测性质、有时甚至完全错误的回答。
暴露偏差:在训练期间,模型以人工标注者提供的“真实标准”数据为基础预测后续词语。然而,在推理阶段,模型必须依赖自己此前生成的合成数据。这就形成了一个反馈循环:生成过程早期出现的微小错误会随着时间推移不断放大,并经常导致系统逐渐偏离连贯性和准确性。
暴露偏差:在训练期间,模型以人工标注者提供的“真实标准”数据为基础预测后续词语。然而,在推理阶段,模型必须依赖自己此前生成的合成数据。这就形成了一个反馈循环:生成过程早期出现的微小错误会随着时间推移不断放大,并经常导致系统逐渐偏离连贯性和准确性。
训练数据覆盖缺口:尽管模型使用了海量数据集进行训练,却往往无法覆盖出现频率较低或较为小众的信息。因此,当针对这些方面测试模型时,其回答不可避免地会包含幻觉。某些模式在训练数据中代表性不足,或者模型对常见信息发生过拟合,都会影响其泛化能力,对超出适用范围的输入尤其如此。
训练数据覆盖缺口:尽管模型使用了海量数据集进行训练,却往往无法覆盖出现频率较低或较为小众的信息。因此,当针对这些方面测试模型时,其回答不可避免地会包含幻觉。某些模式在训练数据中代表性不足,或者模型对常见信息发生过拟合,都会影响其泛化能力,对超出适用范围的输入尤其如此。
尽管 LLM 的幻觉问题不可避免,但可以通过三层防御策略显著减少幻觉:(A)用于优化查询和上下文的输入层控制;(B)用于改进模型架构和训练的设计层实现;(C)用于验证和过滤回答的输出层校验。
每一层都是一个关键检查点,三者协同工作,共同提高 AI 输出的可靠性和准确性。下面从高层次介绍各层所采用的技术:
设计并部署在查询到达模型之前对其进行处理的层。这些层会评估查询的歧义程度、相关性和复杂度,确保查询经过优化和完善,从而提升模型的表现。
查询处理:评估查询是否包含足够的上下文,或者是否需要进一步澄清。例如,可以通过丢弃无关噪声来完善查询,使其更具相关性。突出查询的复杂程度,以触发模型采取不同的行为,例如使用更简单的模型进行简化,或者在不确定性很高时生成澄清问题。
查询处理:评估查询是否包含足够的上下文,或是否需要澄清。通过丢弃不相关的噪音等方式优化查询,使其更加相关。强调查询的复杂性以触发各种模型行为,例如使用更简单的模型进行简化,或在高度不确定时生成澄清问题。
上下文大小优化:减少输入的大小,以便在不失质量的情况下有效地将更多上下文输入到模型中:使用自信息过滤来保留关键上下文。
上下文大小优化:减少输入的大小,以便在不失质量的情况下有效地将更多上下文输入到模型中:使用自信息过滤来保留关键上下文。
上下文注入:这种技术涉及在用户主要查询前重新定义和"注入"上下文模板或结构化提示,以帮助模型更好地理解查询。因此,通过特定的角色标签、内容分隔符和转向标记来组织提示,可以帮助上下文注入使模型更好地理解复杂提示,并获得更接近用户期望的响应,而不是不支持的或推测性的输出。
上下文注入:这种技术涉及在用户主要查询前重新定义和"注入"上下文模板或结构化提示,以帮助模型更好地理解查询。因此,通过特定的角色标签、内容分隔符和转向标记来组织提示,可以帮助上下文注入使模型更好地理解复杂提示,并获得更接近用户期望的响应,而不是不支持的或推测性的输出。
减少幻觉的一种方法可能是"按苹果的方式",简单地告诉模型"不要产生幻觉"。
设计层专注于通过架构改进和更好的训练方法来强化模型处理和生成信息的方式。这些策略在模型核心层面工作,以产生更可靠的输出。
思维链提示:思维链(CoT)提示模型以顺序、逻辑的方式"思考",而不是立即提供最终答案,模拟推理过程,并改进输出的准确性和连贯性。CoT 方法鼓励模型(尤其是那些参数数量通常在 1000 亿或更多的模型)产生逐步答案,反映类似人类的思维过程。较小的模型无法处理和利用 CoT 所依赖的多步依赖,因此相比标准提示方法产生的准确性较低。OpenAI 研究人员最近的一条推文强调了向 o1 模型转变如何通过产生更统一的信息密度来改进 CoT,类似于模型的"内部独白"而不是模仿预训练数据。
思维链提示:思维链(CoT)提示模型以顺序、逻辑的方式"思考",而不是立即提供最终答案,模拟推理过程,并改进输出的准确性和连贯性。CoT 方法鼓励模型(尤其是那些参数数量通常在 1000 亿或更多的模型)产生逐步答案,反映类似人类的思维过程。较小的模型无法处理和利用 CoT 所依赖的多步依赖,因此相比标准提示方法产生的准确性较低。OpenAI 研究人员最近的一条推文强调了向 o1 模型转变如何通过产生更统一的信息密度来改进 CoT,类似于模型的"内部独白"而不是模仿预训练数据。
检索增强生成(RAG):RAG 是 LLM 的扩展,配备了检索机制,可从外部数据库中获取相关、及时的信息,从而减少幻觉并将输出锚定在事实上下文中。研究人员描述了 RAG 的三个范式:
最简单的 RAG 形式是朴素 RAG,其中排名最高的文档直接输入到 LLM。
最简单的 RAG 形式是朴素 RAG,其中排名最高的文档直接输入到 LLM。
高级 RAG 在此基础上进行了扩展,引入了额外的预处理和后处理步骤,包括查询扩展、子查询生成、验证链和文档重新排名,以进一步提高检索块的相关性。我们在另一篇文章中介绍了推荐的高级 RAG 技术。
高级 RAG 在此基础上进行了扩展,引入了额外的预处理和后处理步骤,包括查询扩展、子查询生成、验证链和文档重新排名,以进一步提高检索块的相关性。我们在另一篇文章中介绍了推荐的高级 RAG 技术。
模块化 RAG 将传统的 RAG 系统转变为一个灵活的、可重新配置的框架,如同乐高积木一样,具有自适应检索和预测模块,仅在面对不确定性时有选择地检索新数据。这样的进一步配置使得支持多步复杂推理的迭代查询更加容易。配合内存池等功能,RAG 可以存储有关对话上下文的知识,以确保对话应用的连贯性。RAG 可以通过分层索引和元数据标记等可定制组件进一步优化,以提高检索的精度。知识图谱等分层结构能够表示实体之间的关系,更好地与查询意图对齐。通过 Small2Big 分块或句子级检索等技术可进一步优化相关性。
模块化 RAG 将传统的 RAG 系统转变为一个灵活的、可重新配置的框架,如同乐高积木一样,具有自适应检索和预测模块,仅在面对不确定性时有选择地检索新数据。这样的进一步配置使得支持多步复杂推理的迭代查询更加容易。配合内存池等功能,RAG 可以存储有关对话上下文的知识,以确保对话应用的连贯性。RAG 可以通过分层索引和元数据标记等可定制组件进一步优化,以提高检索的精度。知识图谱等分层结构能够表示实体之间的关系,更好地与查询意图对齐。通过 Small2Big 分块或句子级检索等技术可进一步优化相关性。
RAG 三范式对比(Gao et al. 2024)
微调:适用于有足够的特定任务训练数据和标准化任务的场景。在特定领域或任务相关的数据上调整模型,以提高其在通用预训练数据不精确的专业领域中的准确性。微调不会完全覆盖原始的预训练权重,而是对其进行更新。这允许模型在不失去基础知识的情况下吸收新信息。这种平衡帮助模型保持一般背景知识,并防止丧失基本的现有理解。
微调:非常适合拥有充足的任务专用训练数据且任务标准化程度较高的场景。使用特定领域或特定任务的数据对模型进行定制,可以提高模型在这些专业领域中的准确性,因为通用预训练数据在这些领域往往不够精确。微调不会完全覆盖最初的预训练权重,而是对其进行更新。这样,模型便能在不丢失基础知识的情况下吸收新信息。这种平衡有助于模型保留通用语境,并避免丧失原有的重要认知。
输入层和设计层旨在防止幻觉产生,而输出层则通过过滤和验证生成内容,充当最后一道防线。这些验证方法可以确保最终用户只接收到准确且相关的信息:
基于规则的过滤:使用基于规则的系统或算法过滤错误或无关的回答。基于规则的系统会将模型输出中的回答与经过验证、极少可能引发幻觉的数据库进行核对。
基于规则的过滤:使用基于规则的系统或算法过滤错误或无关的回答。基于规则的系统会将模型输出中的回答与经过验证、极少可能引发幻觉的数据库进行核对。
输出重排序:根据相关性和事实一致性对多个输出进行排序,确保只有最准确的回答才会呈现给用户。
输出重排序:根据相关性和事实一致性对多个输出进行排序,确保只有最准确的回答才会呈现给用户。
事实核查与验证:使用 Search-Augmented Factuality Evaluator(SAFE)或 OpenAI 开发的 WebGPT 等先进的事实核查框架,将长篇回答拆解为独立的事实陈述。随后,通过在线搜索将每条陈述与最新信息源进行交叉核对。这个过程使框架能够判断每项主张是否得到 Web 上现有最新信息的支持。
事实核查与验证:使用 Search-Augmented Factuality Evaluator(SAFE)或 OpenAI 开发的 WebGPT 等先进的事实核查框架,将长篇回答拆解为独立的事实陈述。随后,通过在线搜索将每条陈述与最新信息源进行交叉核对。这个过程使框架能够判断每项主张是否得到 Web 上现有最新信息的支持。
增强上下文感知:鼓励模型在缺少充分上下文或把握时不要生成答案,有助于避免产生推测性或错误的内容。
增强上下文感知:鼓励模型在缺少充分上下文或把握时不要生成答案,有助于避免产生推测性或错误的内容。
目前,提高 AI 可靠性的研究主要集中在创新这些缓解技术、更深入地理解 LLM 的内部工作机制,或者探索新的 AI 模型架构,使其能够“理解”用于训练它们的数据:
编码的真相:近期研究表明,LLM 编码的真实性信息比此前认为的更多,而且这些信息会集中在某些特定 token 中,从而提高错误检测能力。然而,这种编码方式十分复杂且依赖特定数据集,因此限制了其泛化能力。值得注意的是,即使模型生成了错误答案,其内部也可能已经编码了正确答案,这为制定有针对性的缓解策略指明了方向。
编码的真相:近期研究表明,LLM 编码的真实性信息比此前认为的更多,而且这些信息会集中在某些特定 token 中,从而提高错误检测能力。然而,这种编码方式十分复杂且依赖特定数据集,因此限制了其泛化能力。值得注意的是,即使模型生成了错误答案,其内部也可能已经编码了正确答案,这为制定有针对性的缓解策略指明了方向。
检测方法:另一项近期研究重点介绍了基于熵的 LLM 幻觉检测方法。该方法通过评估语义层面的不确定性来识别幻觉。它能够很好地泛化到各种任务和新数据集,使用户能够预判何时需要更谨慎地对待 LLM 的输出。
检测方法:另一项近期研究重点介绍了基于熵的 LLM 幻觉检测方法。该方法通过评估语义层面的不确定性来识别幻觉。它能够很好地泛化到各种任务和新数据集,使用户能够预判何时需要更谨慎地对待 LLM 的输出。
自我改进:借助自我评估和自我更新模块,LLM 可以在表征层面提高回答的一致性,尤其是采用自洽性和自我精炼等方法时。这类方法有望缓解幻觉,并提高不同推理任务中的内部连贯性。
自我改进:借助自我评估和自我更新模块,LLM 可以在表征层面提高回答的一致性,尤其是采用自洽性和自我精炼等方法时。这类方法有望缓解幻觉,并提高不同推理任务中的内部连贯性。
LLM 中的幻觉源于神经网络的局限性和概率模型架构。虽然幻觉无法彻底消除,但理解其成因能够为有效缓解幻觉奠定基础。选择性上下文过滤、检索增强生成、思维链提示和任务专用建模等技术,可以显著降低幻觉风险,增强 LLM 输出的可靠性与可信度。随着该领域不断发展,这些策略很可能会在构建准确且具备上下文感知能力的 AI 系统时发挥核心作用,推动 LLM 在不同领域中的实际应用。
无论你选择构建开源解决方案,还是采用 kapa.ai 之类的托管工具,缓解 AI 幻觉的原则和策略都始终一致。在 kapa,我们直接应对其中的许多挑战,以确保输出更加可靠、准确。如果你有兴趣了解