幻象检测是大语言模型的一项挑战性任务,现有研究多依赖于闭源模型(如 GPT-4)。本文提出了 HaluAgent,一种基于开源小模型的幻象检测智能体,能够自动化地选择工具检测文本、代码和数学表达式等多种幻觉类型得到细粒度检测结果,并支持中英双语检测。
论文标题:
Small Agent Can Also Rock! Empowering Small Language Models as
Hallucination Detector
论文链接:
https://aclanthology.org/2024.emnlp-main.809.pdf
开源项目:
https://github.com/RUCAIBox/HaluAgent
一、背景
随着自然语言处理技术的发展,大语言模型在各类生成自然语言文本任务上表现出色,在现实场景中被广泛应用。然而,大语言模型存在一个广为人知的问题,即大语言模型容易在生成的文本中出现“幻象”,生成看似合理但实际上错误的信息,这严重限制了模型的可信度和实用性。
为了推动大语言模型在现实应用中的可靠性,研究者提出了许多检测幻象的技术方案,包括基于模型内部知识的自我一致性检查、使用外部工具支持的验证方法等。传统的幻象检测方法大多依赖于闭源的大型语言模型(如GPT-4),这种方法不仅依赖高昂的计算成本,而且不利于技术的开放性和广泛应用。
我们观察到,大语言模型的“幻象”问题会出现在各类文本中且表现为不同的类型,例如计算错误、捏造事实等。现有的幻象检测方法尽管能在一定程度上提高检测准确性,但通常需要设计特定的工具和人工干预,难以满足多类型文本中多样幻象的自动化检测需求。因此,设计一种基于开放源语言模型的自动化幻象检测框架,具有较高的灵活性和可扩展性,以应对各种类型的幻象检测至关重要。
二、方法
为了检测通用场景下大语言模型回复中的幻象,我们设计了
HaluAgent
,这是我们提出的用于检测多种文本类型幻象的自动化智能体系统。
HaluAgent
框架的核心是一个经过精心指令化的 LLM,它能够自动化调用工具来检测更广泛的幻象类型。首先,我们定义了常见的幻象检测任务,然后设计了一个工具箱,通过支持工具扩展 LLM 的能力。为了实现逐步检测,我们设计了一个配备记忆机制的三阶段检测框架。最后,我们合成了高质量的检测轨迹数据,用于微调开源的 LLM。
2.1 任务定义
幻象是指看似合理但实际上存在错误或者没有事实依据的内容。与以往大多数主要聚焦于文本幻象检测的工作不同,我们考虑了更广泛的幻象形式,包括文本、代码以及数学表达式。因此,在本研究中,我们将幻象检测定义为以下五种任务:
-
基于知识的问答
:知识问答涉及为输入问题生成答案,我们的目标是识别答案文本中的错误信息,例如错误的历史日期、错误归因的引言或虚假的科学事实。
-
条件文本生成
:这一场景专注于输入指令中给定特定要求的任务,例如生成具有特定长度、格式的文本,或将段落翻译成特定语言。我们的目标是检测那些偏离输入要求或包含无关信息的幻象内容。
-
语义一致性
:该任务不局限于任何特定类型的文本或任务。我们将语义一致性中的幻象定义为响应中无关或自相矛盾的内容。数学问题求解:这一场景与生成一系列数学表达式以解决数学问题相关,而这些表达式可能包含计算错误,例如算术或逻辑计算失误。
-
代码生成
:目标是为输入查询生成代码片段。我们将幻象定义为那些语法不正确、未能按预期执行、或包含逻辑缺陷和缺失依赖的代码片段。
需要注意的是,在真实场景中,LLM 的响应可能包含上述多种幻象类型的混合内容,而我们的目标是开发一种通用且灵活的幻象检测智能体,能够处理更广泛的幻象类型且不依赖强大的闭源LLM。
2.2 幻象检测工具箱
由于检测含有多种幻象类型的文本具有挑战性,我们设计了一套综合工具箱,以增强开源小 LLM 的幻象检测能力。根据上述讨论的幻象类型,我们引入了五种外部工具以及两种内部系统工具:
-
搜索引擎
:用于从网络中检索支持证据以识别事实错误的内容,定义为 web_search。我们使用 Google 可编程搜索引擎 API 实现该工具。考虑到检索文档与输出文本的相关性,我们仅使用前 5 篇文档作为幻象检测的最相关检索结果。
-
计算器
:用于验证模型响应中数学计算的准确性,主要针对数学相关的幻象,定义为 calculator。我们通过科学计算库 SymPy 实现计算器工具。
-
代码解释器
:可用于通过在编程环境中执行代码片段来验证代码的正确性,定义为 code_interpreter,以确保代码在语法上正确并按预期运行。
-
条件验证器
:目标是检测条件文本生成任务中的幻象,评估文本是否与给定条件一致。例如,我们使用单词计数器 word_counter 在生成文本长度受限的情况下计算单词数量。
-
语义检查器
:主要处理无关响应和自相矛盾等幻象类型,定义为 match。我们用 match 来检查语义的一致性和相关性,主要用于处理语义匹配场景。、
-
系统工具
:用于支持幻象检测的基本操作,包括文本分割(split_text)和返回检测结果(get_answer)。
需要注意的是,该工具箱并不限于现有工具,所有工具均以统一的方式定义,可以轻松地根据任务场景进行扩展。
2.3 HaluAgent 框架
受以往复杂推理研究的启发,我们将幻象检测过程视为一个智能体任务。具体而言,HaluAgent 包括三个阶段:句子分割、工具选择与验证,以及反思,并配备了记忆机制。我们在下图中展示了 HaluAgent 的整体架构。以下是 HaluAgent 框架的工作流程和组成部分:
-
句子分割
:由于 LLM 的响应通常是事实、观点和多种文本类型的组合,我们首先将响应分割成若干独立的检测单元。具体而言,我们利用系统工具 split_text 来执行句子分割。这一工具要求智能体将输入文本分割为一组句子,并补全句子中可能缺失的语义信息,例如代词和省略的内容。句子分割可以降低幻象检测任务的复杂性,并使 HaluAgent 能够针对每个句子量身定制检测策略,从而通过减少无关内容的干扰来确保更准确和细粒度的检测结果。
-
工具选择与验证
:接下来,HaluAgent 根据句子内容的类型(例如,事实陈述使用 web_search,数学表达式使用 calculator)从工具箱中选择适当工具,对每个句子分别进行验证。HaluAgent 将每个句子的检测结果存储为一个三元组,即 (句子, 幻象标签, 支持证据)。如果句子被识别为包含幻象,其标签为“1”,否则为“0”。这些有用信息基于记忆机制存储,允许 HaluAgent 在检测过程中参考历史结果并对文本真实性保持一致理解。
-
反思
:在逐句检查所有内容后,HaluAgent 会获得初步的检测结果。然而,由于每个工具的能力有限以及其输出可能存在错误,这些检测结果可能并不完全准确。为了解决这一问题,HaluAgent 通过从“局部”和“全局”视角进行最终反思,进一步检查之前的检测结果是否正确。在局部层面,HaluAgent 将每个句子与相应的证据进行匹配,以确保幻象检测的局部正确性。但不同的句子之间可能存在相互影响。因此,在全局层面,HaluAgent 会基于其他句子的上下文判断当前句子是否错误。例如,如果前一句的计算结果错误,那么任何基于该结果的后续推导即使单独检查正确,也应被视为错误。任何检测错误都会被纠正,存储在记忆中的检测结果(即幻象标签和支持证据)会相应更新。
完成反思后,HaluAgent 会调用系统工具 get_answer 来输出最终检测结果。如果检测到任何幻象,HaluAgent 会输出具体句子及检测工具提供的支持证据。
2.4 双语智能体微调
以往的研究主要依赖闭源的大型语言模型(例如 GPT-4)来检测幻象。为了使小型语言模型也能作为有效的幻象检测工具,我们希望对小型语言模型(例如 Baichuan2-Chat 7B)进行监督微调。基于智能体模型的强大能力,我们利用 GPT-4 遵循HaluAgent框架合成高质量的中英双语幻象检测轨迹数据。
2.5 轨迹生成
数据来源
为了获取涵盖多种幻象类型的高质量轨迹数据,我们选择并构建了五个数据集:HaluEval 和 WebQA 用于基于知识的问答,Ape210K 用于数学问题求解,HumanEval 用于代码生成,WordCnt 用于条件文本生成。其中,HaluEval 和 HumanEval 是英文数据集,WebQA、Ape210K 和 WordCnt 是中文数据集,这使得 HaluAgent 具备双语检测能力。在实验中,我们利用 GPT-4 合成了 WordCnt 数据集,该数据集专注于生成具有特定长度的文本。此外,我们通过 ChatGPT 和人工标注获取了 WebQA 和 Ape210K 的幻象标签。
轨迹格式
基于上述数据集,我们利用 GPT-4 执行HaluAgent框架的检测流程,并生成符合 ReAct 格式的轨迹数据。我们首先将检测指令和待检测文本作为输入提供给 GPT-4。在每一步中,智能体会接收一个 观察(observation),然后生成其计划和思路(thought),并通过行动(action)调用相应工具。工具的结果会被作为下一步的新观察内容。通过迭代这一过程,我们可以获得完整的检测轨迹,包括输入指令、待检测文本、中间步骤(即observation, thought, action)以及最终检测结果。
为了确保轨迹数据的准确性,我们剔除了那些包含错误工具调用、格式错误以及检测结果与真实幻象标签不一致的样本。最终,我们生成了 2,017 条高质量轨迹用于监督微调。
轨迹微调
基于上述格式化的双语轨迹数据,我们对 Baichuan2-Chat 7B 和 13B 进行监督微调,这些模型比以往研究中使用的模型(如 GPT-4)小得多。形式化地,每个样本的幻象检测轨迹可以表示为 <
,
,
,
,
,
, ...,
,
,
,
>,其中
、
和
分别表示第 i 步的观察、思路和行动。具体来说,
表示初始观察,由输入指令和待检测文本组成,而
表示最终检测结果。在每一步中,基于历史轨迹
= <
,
,
, ...,
>,智能体目标是生成思路
和行动
。因此,在轨迹微调过程中,我们仅对
和
计算交叉熵损失,同时屏蔽
:
三、实验
3.1 实验设置
我们在域内和域外数据集上对 HaluAgent 进行了评估。域内数据集包括 HaluEval-QA、WebQA、Ape210K、HumanEval 和 WordCnt。对于域外数据集,我们使用了中文数据集 HalluQA 和英文数据集 HaluEval 2.0,这些数据集涵盖了知识、数学和科学文本等多种幻象检测场景。我们利用包含标注声明级幻象标签的 FacTool 数据集,评估 HaluAgent 的细粒度检测能力。我们将 HaluAgent 与以下基线进行对比:
-
闭源模型:GPT-4 prompt(简单任务描述提示)和 GPT-4 pipeline(遵循HaluAgent的检测流程);
-
开源模型:Baichuan2-Chat(7B 和 13B),即 HaluAgent 的基座模型。
3.2 回复级检测
下表展示了域内和域外数据集上的评估结果。首先,闭源模型(如 GPT-4)和开源模型(如 Baichuan2-Chat)在基于内部知识的幻象检测性能上存在显著差距。其次,通过引入工具和精细化检测框架,可以显著提高 LLM 的幻象检测性能。最后,通过轨迹微调,小型开源模型也可以作为有效的幻象检测智能体,缩小与闭源模型之间的性能差距。如下表所示,HaluAgent 在域内和域外数据集上的检测性能有显著提升。
3.3 句子级检测
下表显示了句子级检测结果。相比 Baichuan2-Chat,HaluAgent 在句子级检测任务中的 F1 分数显著更高,尤其是在工具可以精确判断检测结果的任务中。例如,在数学数据集中,HaluAgent 13B 的准确率达到 87.50%,在科学文献综述数据集上的 F1 分数为 95.42%,接近 GPT-4 pipeline 的表现。这种改进得益于 HaluAgent 的精细化框架设计及其对检测结果的存储和反思能力。
3.4 可扩展性研究
为验证 HaluAgent 框架的可扩展性,我们为微调后的模型引入了新的工具,如翻译器和日历工具,用于处理与翻译和日期计算相关的文本。我们为模型提供了工具使用说明和两个示例,以指导其使用新工具。实验结果如图所示,HaluAgent 对翻译器的使用率超过 95%,对日历工具的使用率达到 100%。通过适当工具的辅助,HaluAgent 在日期计算和翻译任务中的幻象检测成功率分别达到 100% 和 90% 以上,这表明 HaluAgent 能够通过指令和示例有效使用新工具完成检测任务,而无需额外微调。
3.5 Case Study
为了定性展示 HaluAgent 的有效性,我们对比了基于 GPT-4 的简单提示方法、结合搜索工具的检测方法和 HaluAgent 框架的性能。在涉及常识知识和数学计算的平均速度计算任务中,GPT-4 使用简单提示时未能检测到计算错误。结合搜索工具的方法只能验证平均速度公式的正确性,但无法检查每一步计算的准确性。相比之下,HaluAgent 能够自动化规划并为文本的不同部分选择合适的工具(如搜索引擎和计算器),实现了对复杂文本中混合幻象的准确检测。
四、总结
在本研究中,我们提出了一种自动化智能体框架 HaluAgent,能够对中英双语文本进行幻象检测。我们的方法首先构建了一个多功能工具箱,以扩展 LLM 的幻象检测能力。接着,我们设计了一个精细化的三阶段检测框架,结合记忆机制,包括句子分割、工具选择与验证以及反思。随后,我们利用现有数据集,通过 GPT-4 执行 HaluAgent 框架中的检测过程,合成了检测轨迹数据。
最后,我们在合成轨迹数据上微调了 Baichuan2-Chat 7B 和 13B。HaluAgent 模型在领域内和领域外数据集上均实现了显著的性能提升,其表现与未使用工具增强的 GPT-4 相当,甚至在某些情况下更优。由于其高度灵活性和适应性,HaluAgent 能够在现实场景中为用户与 LLM 的交互提供有效的幻象检测服务。