LLM 应用如何避免幻觉问题
系统介绍生产环境中防止 LLM 错误输出的技巧,含 RAG、提示工程等实用方案。是程序员用 LLM 的核心痛点。
系统介绍生产环境中防止 LLM 错误输出的技巧,含 RAG、提示工程等实用方案。是程序员用 LLM 的核心痛点。
Do Androids dream of electric sheep?
我不知道,但我确实知道 GPT-4、LLaMA 或 BARD 这样的大语言模型经常会产生幻觉。
ChatGPT 和 GPT-4 的推出展示了大语言模型(LLM)的强大能力——无论是作为个人助手还是聊天机器人,都能够以令人惊叹的方式回答用户问题。随着风险投资继续涌入生成式 AI 领域,数百家初创公司应运而生,LLM 的幻觉问题(或编造答案)仍然是一个重大隐患。
来自人工智能研究中心(CAiRE)的一篇研究论文将 LLM 的幻觉定义为"生成的内容无意义或与提供的源内容不忠实"。用这个简单而全面的定义,我们来看几个例子。
当问"谁拥有硅谷银行?"时,GPT-4 的回答是:
GPT-4:"硅谷银行(SVB)不由单个个人或实体拥有。它是 SVB 金融集团的子公司,该集团是一家上市公司(纳斯达克代码:SIVB)。SVB 金融集团的所有权分散在拥有其股票的个人和机构股东手中。作为一家上市公司,其所有权会随着股票在股市上的买卖而频繁变化。"
显然,GPT-4 不知道 SVB 倒闭的最近事件,因为它的训练数据集不包含任何 2021 年 9 月之后的信息。因此,GPT-4 的回答是错误的,但却以足够的自信度表述,可能会让读者相信它是真实的。
让我们再试一个例子。
2023 年 4 月 12 日,Databricks 宣布了他们的"Dolly 2.0"——一个 12B 参数的语言模型,它基于人工生成的指令遵循数据集进行微调,并且完全开源。
当我问 GPT-3.5"Databricks Dolly 对开源社区是否有价值?"时,回答开头是:
GPT 3.5:Databricks Dolly 是由 Databricks 开发的工具,设计用来帮助用户将数据从一个平台迁移到另一个平台,特别是从本地数据中心迁移到 AWS 或 Azure 等基于云的平台。虽然 Databricks Dolly 不是开源工具,但它仍然可以以多种方式为开源社区提供价值。
除了"Databricks Dolly 是由 Databricks 开发的工具"这一句外,其他所有内容都完全错误。Dolly 不是数据迁移工具,它也是开源的,与我们看到的回答相反。
虽然这些是使用 OpenAI GPT 的幻觉例子,但值得注意的是,这种现象也适用于许多其他类似的 LLM,如 Bard 或 LLaMA。
那么幻觉为什么会发生呢?为了解释这一点,让我先更详细地描述 LLM 在内部的工作方式,然后为幻觉发生的原因提供一些直观理解。
为了理解幻觉的原因,让我们首先回顾一下 LLM 的工作原理,重点关注自回归 LLM(如 GPT-3 或 GPT-4)。
从基本层面来说,LLM 将任何文本表示为一个令牌序列。这些令牌可以是词、子词或甚至字符。无论特定 LLM 使用什么分词策略,自回归 LLM 都被训练以准确预测序列中的下一个令牌。
在数学上——给定一个令牌序列 T₁, T₂, …, Tₙ,LLM 学习下一个令牌 T 以前面令牌为条件的概率分布:
例如,考虑以下令牌序列(在这种情况下,我们假设令牌是词):
显然,在令牌"went"之后有许多下一个令牌的选项,例如"home"或"eating"都是有效选项,以及许多其他选项。实际上,LLM 学习了所有可能下一个令牌集合上的概率分布:
这个概率分布为每个令牌分配一个概率,LLM 在选择下一个令牌时从这个分布中采样。
例如,令牌"home"最有可能被 LLM 选择(概率为 0.12),其次是"eating"(概率为 0.08),然后是"hiking"等等。令牌"mouse"很不可能跟在前面的令牌之后,因此被赋予非常低的概率(0.00001)。
选择下一个令牌后(假设选择了令牌"eating"),它被附加到现有的词序列中,这个过程重复进行,直到生成一个完整的句子或回答。
所以,核心要点是:大语言模型本质上是大型神经网络,被训练来预测下一个令牌的可能性,以所有前面的令牌为条件。
当语言模型的预测与我们的期望、经验或先前知识相矛盾,或者当我们发现对该回答(预测令牌序列)的反事实证据时,这就是我们发现幻觉的时候。
幻觉的主要原因之一是:LLM 的知识由其训练数据集定义。当 LLM 在没有回答问题所需知识的数据集上进行训练时,它可能会产生幻觉回答。但这不是唯一的原因。幻觉还因以下因素而变得更加复杂:
LLM 没有很好的方式来检查其回答的事实准确性。它只是输出一个回答,而这个回答可能完全错误但听起来非常有说服力。
用来训练 LLM 的训练数据集可能包含虚构内容,以及主观内容,如观点和信念。
LLM 通常不被优化为在缺乏足够信息时说"我不知道"。因此,当 LLM 没有答案时,它会生成最可能的回答。但要注意,"最可能"不一定意味着"真实",当这种错位发生时,幻觉就是最终结果。
回到上面关于硅谷银行的例子,该模型对导致 SVB 倒闭的最近事件没有了解,并且(相当有信心地,并使用其有限的信息)给出了一个不准确的回答。
有趣的是,所谓的"提示工程"有时被用来尝试"影响"LLM,使其相信它在模拟具有特定视角的某个"角色",这会影响它回答问题的方式。
例如,流行的做法是要求 GPT 解释概念,就像解释给一个 5 岁的孩子一样(即"ELI5"),本质上你"唤起"GPT 成为一个(耐心的)家长或老师的角色,以便向小孩子解释复杂的概念:
提示:用我能理解的方式解释大爆炸是什么(explain like I'm 5 years old)?
GPT-4:"大爆炸是我们给宇宙在很久很久以前是如何开始的这个过程起的名字。那就像一个巨大的爆炸,创造了我们今天在天空中看到的一切。想象一个气球,一开始非常小,然后有人吹它,它越来越大,直到变得非常大。大爆炸就像那样,除了那不是一个气球,而是整个宇宙变得越来越大。"
当你使用提示工程让 LLM 模拟某个角色时,它可能产生的幻觉类型可能会改变。例如,如果它模拟一个对外交政策有强烈意见的政治人物,那么它更有可能在回答查询时包含这些观点。
那么,我们能否解决幻觉问题,还是注定要在 LLM 中永久嵌入这些问题呢?
最初的幻觉预防工作集中在收集关于常见查询的人工反馈,并将其作为后处理步骤集成到语言模型中。
例如,OpenAI 使用了基于 InstructGPT 方法的人工反馈强化学习(RLHF),而 Stanford Alpaca 和 Databricks Dolly 2.0 使用了自指令监督微调方法。这些方法作为减少幻觉的有力工具,通过使其更符合人工审查者的期望,效果相当不错,这有助于防止 LLM 回答他们不知道的主题的问题。
Vectara 的方法通过使用我们称之为接地生成(Grounded Generation)的方法,在解决幻觉问题上更进一步。
借助接地生成(GG)(一种检索增强生成形式),LLM 不仅基于 LLM 训练数据集中捕获的知识为用户查询提供答案,还可以通过搜索额外数据源中的知识进行增强:
例如,在我们之前的查询"谁拥有硅谷银行"中,我们可以通过提供来自《纽约时报》、《华尔街日报》或《旧金山纪事报》等新来源的更新信息来为 LLM 提供额外知识。
通过适当地指导 LLM 整合这些额外来源,它将提供更好的结果。让我们看一个例子,看看这是如何工作的。以下是对 GPT-4 的两个独立查询:
查询 1:"谁拥有硅谷银行?"
GPT-4:"硅谷银行(SVB)是 SVB 金融集团的子公司,该集团是纳斯达克证券交易所上市的公司,股票代码为 SIVB。作为一家上市公司,SVB 金融集团的所有权分散在拥有其股票的个人和机构股东手中。最大的股东可能包括共同基金、养老基金和其他投资公司,以及个人投资者。具体的股东及其所有权份额会随着股票的买卖而随时间变化。"
查询 2:"谁拥有硅谷银行?请使用以下信息提供最准确的答案:2023 年 3 月 12 日,财政部长珍妮特·耶伦、美联储主席杰罗姆·鲍威尔和美国联邦存款保险公司主席马丁·格鲁恩伯格发表联合声明,声明 SVB 的所有存款者将获得完全保护,从下周一(3 月 13 日)开始可以获得投保和非投保存款。美国联邦存款保险公司随后建立了一家桥接银行继任人硅谷桥接银行公司,该公司迅速接管了正在进行的业务。2023 年 3 月 27 日,第一公民银行与信托公司(第一公民 BancShares 的子公司)接管了硅谷桥接银行的所有客户存款和贷款,并从美国联邦存款保险公司获得了硅谷桥接银行,并开始运营所有 SVB 分支机构。"
GPT-4:"根据提供的信息,截至 2023 年 3 月 27 日,硅谷银行的存款和贷款被第一公民银行与信托公司(第一公民 BancShares 的子公司)接管。这表明第一公民银行与信托公司实际上拥有并运营前硅谷银行分支机构,使第一公民 BancShares 成为最终母公司。"
如你所见,接地生成提供了更准确的答案,因为 LLM 能够利用提供的额外信息。
LLM 在其训练数据集对所提问题的信息有限、过时或相互矛盾时产生幻觉。
Vectara 的接地生成通过使用外部来源增强 LLM 可用的信息,几乎可以完全消除幻觉,使回答能够基于最新和最相关的信息。
这样做的结果是用户对来自对话式企业解决方案的回答产生更多信任,实现了 LLM 技术在大量用例中的安全和加速部署。这使开发者能够专注于对其业务最关键和最有价值的应用。