摘要 :大型语言模型(LLMs)在解决各种自然语言处理任务方面取得了显著进展,这归功于其突显的推理能力。然而,LLMs本身存在固有的局限性,例如无法访问最新信息(存储在网络或任务特定的知识库中)、无法使用外部工具,以及无法进行精确的数学和逻辑推理。在本文中,我们提出了变色龙(Chameleon),一个通过增加即插即用模块来增强LLMs进行组合推理的AI系统。变色龙通过组合各种工具(例如LLMs、现成的视觉模型、网络搜索引擎、Python函数和基于启发式的方法)来合成程序,以完成复杂的推理任务。变色龙的核心是一个基于LLM的计划器,它组装了一系列工具以生成最终的响应。我们展示了变色龙在两个多模态知识密集型推理任务上的有效性:ScienceQA和TabMWP。由GPT4驱动的变色龙在ScienceQA上实现了86.54%的总体准确率,比目前发表的最佳少样本结果提高了11.37%。在TabMWP上,由GPT4驱动的变色龙将准确率提高了17.0%,将最新水平提升至98.78%。我们的分析还表明,与由ChatGPT驱动的计划器相比,由GPT4驱动的计划器通过推断指令中的潜在约束,表现出更一致和合理的工具选择。
1、引言
近年来,大型语言模型(LLMs)在各种自然语言处理任务中取得了显著进展,代表性的例子包括 GPT3 [4]、PaLM [8]、LLaMA [64]、ChatGPT [41] 和最近开发的 GPT4 [42]。LLMs展示了新兴的能力,如上下文学习和链式思维推理 [56]。这些模型能够以零样本方式解决各种任务 [25],或在少量示例的帮助下完成任务 [57],并且在规划和决策方面展示了与人类类似的潜力 [17, 16]。尽管具有这些能力,LLMs面临固有的局限,比如无法访问最新信息 [26],执行精确的数学推理 [44, 35] 或利用专门的模型 [49]。因此,增强当前的LLMs,使其具备自动组合外部工具来解决现实世界任务的能力,对解决这些缺点至关重要。
图1:我们在ScienceQA [32]上使用GPT4进行变色龙方法的示例,这是一个科学领域的多模态问答基准。变色龙通过合成程序来组合各种工具并依次执行它们以获得最终答案,从而适应不同的查询。
(注释:
1. 问题1:
查询:给定一个包含棒球运动员打击动作的图像,问题是“这个推力的方向是什么?”选项是:(A) 远离棒球棒 (B) 朝向棒球棒。
工具组合:使用图像描述生成工具(Image Captioner)生成图像描述,然后使用知识检索工具(Knowledge Retrieval)查找相关信息,再使用解决方案生成工具(Solution Generator)分析答案。
答案生成:最终答案生成器(Answer Generator)得出答案。
2. 问题2:
查询:给定一个环保广告的图像,问题是“这则广告中主要使用的劝说手段是什么?”选项是:(A) 情感 (B) 人格 (C) 理性。
工具组合:使用文本检测工具(Text Detector)提取广告中的文本,然后使用知识检索工具查找相关信息,再使用解决方案生成工具分析答案。
详细解释:
名词提示:提供了广告中提到的环保纸盘的详细背景信息。
句子提示:描述了广告中使用的劝说手段。
多模态提示:结合文本和图像推理,提供了广告的全面分析。
答案生成:最终答案生成器得出答案“ethos(人格)”。
3. 问题3:
查询:给定一张动物的图像,问题是“哪种动物的皮肤适应在寒冷环境中生存?”选项是:(A) 欧亚猞猁 (B) 荆棘龙蜥。
工具组合:使用图像描述生成工具生成图像描述,然后使用查询生成器(Query Generator)构建查询,接着通过Bing搜索引擎查找相关信息,再使用解决方案生成工具分析答案。
答案生成:最终答案生成器得出答案。
总结: 通过变色龙方法,系统能够适应不同类型的查询,合成和组合各种工具并依次执行它们,以生成最终的答案。变色龙方法展示了其在多模态知识密集型推理任务中的有效性,并且能够生成详细、合理且一致的答案。)
考虑图1中例子②的问题:“这则广告中使用了哪种主要的说服手法?”。为了回答这个问题,需要进行以下步骤:1)推断出广告图像中包含文本内容并调用文本解码器理解语义;2)检索有关说服手法及其区别的背景知识;3)基于输入查询和前几步骤的中间结果生成解决方案;以及4)最终以特定于任务的格式给出答案。
另一方面,当回答“哪种动物的皮肤适应在寒冷地方生存(③)”时,可能需要调用诸如图像标题生成器解析图像信息和网络搜索引擎检索领域知识以理解科学术语。然而,目前的工具增强型LLMs在处理这些跨多种场景的现实世界查询时仍面临挑战。大多数现有方法要么局限于少量工具 [39, 6, 55, 18, 43, 49],要么依赖于特定领域的工具 [40, 60, 13, 59, 52],因此难以推广到新领域的查询(详见第2节和A.1节进一步讨论)。在本文中,我们研究如何使LLMs能够合成程序,以捕捉组合异构工具的逻辑。
为了解决现有工作的挑战,我们引入了Chameleon,一个即插即用的组合推理框架,利用LLMs合成程序并组合各种工具,以应对广泛的任务需求。与现有的工具增强型LLMs [49, 40, 60, 13, 59, 52] 不同,Chameleon使用更丰富的工具集,包括LLMs、现成的视觉模型、网络搜索引擎、Python函数和基于启发式的模块。此外,Chameleon利用LLMs的上下文学习能力,以及将LLM作为自然语言规划器的特性,无需任何训练或精心策划的规则。根据工具描述和使用示例,规划器推断出一个由一系列工具组成的程序,以便执行以生成用户查询的最终响应。与生成特定领域语言的程序不同 [40, 52, 13],Chameleon生成类似自然语言的(NL)程序(例如,[文本检测器,知识检索,解决方案生成器,答案生成器] 用于图1中的第二个查询)。NL程序易于理解和由编程经验有限的用户调试,并且容易扩展到新模块。在每个模块的执行过程中,模块处理查询和缓存的上下文,返回由模块自身确定的结果,并更新后续执行的查询和上下文。通过将模块组合成顺序程序,后续模块可以利用先前缓存的上下文和更新的查询。
我们展示了Chameleon在两个任务上的适应性和效果:ScienceQA [32] 和TabMWP [33]。ScienceQA是一个跨多种上下文格式和各种科学主题的多模式问题回答基准,而TabMWP则涉及各种表格上下文的数学基准。这两个基准作为评估Chameleon跨不同类型和领域协调各种工具能力的良好测试平台。值得注意的是,Chameleon结合GPT4在ScienceQA上达到了86.54%的准确率,显著优于最佳已发表的少样本模型达11.37%。在TabMWP上,使用GPT4作为基础LLM,Chameleon相比链式思维(CoT)提示的GPT4 [57] 提升了7.97%,相比最佳已发表模型 [6] 提升了17.0%,将技术水平提升至98.78%。进一步研究表明,使用GPT4作为规划器能够展示更一致和理性的工具选择,并能根据指令推断出潜在约束,相较于其他LLMs如ChatGPT。
我们的贡献如下:(1) 我们开发了一个即插即用的组合推理框架Chameleon,有效地组合外部工具以解决LLMs的固有限制,并应对广泛的推理任务。(2) 利用LLM作为自然语言规划器生成程序,Chameleon成功地整合了包括LLMs、现成的视觉模型、网络搜索引擎、Python函数和基于规则的模块等多种工具,构建了一个多功能且适应性强的人工智能系统,能够回答现实世界的查询。(3) 我们展示了Chameleon在两个具有挑战性的基准测试中的有效性,显著超越现有技术水平。
2、相关工作
组合推理
神经模块化和组合方法已被探索用于自动执行所需的子任务分解,增强各种推理任务的可解释性和适应性。早期的工作[2, 3]认为复杂的推理任务本质上是组合的,并提出了神经模块网络(NMN)以将其分解为子任务。然而,这些方法依赖于脆弱的现成解析器,并受到模块配置的限制。一些后来的工作[19, 15, 14, 21]通过端到端方式预测特定实例的网络布局,利用强化学习[58]和弱监督学习,进一步推进了这一领域。在视觉推理中,提出了包含程序生成器和执行引擎的模型,以结合深度表示学习和符号程序执行[19, 61]。在数学推理领域,开发了一种可解释的求解器,将定理知识作为条件规则逐步进行符号推理[31]。我们的工作从神经模块网络中汲取灵感,但提供了几个显著的优势。首先,Chameleon 不需要昂贵的特定任务程序监督来进行模型训练,而是生成由模块组成的顺序程序,这些程序易于推广到各种领域和任务,允许以即插即用的方式扩展新模块。其次,Chameleon 不需要任何训练,而是利用大语言模型(LLMs)的上下文学习能力,通过自然语言指令和示例生成程序。
工具增强型语言模型
近年来,大型语言模型(LLMs)[48, 8, 9, 53, 4, 41, 42]的发展取得了巨大进展,并刺激了提示学习[57, 33, 22]和指令学习[53, 64, 46, 11]的研究。尽管LLMs表现出色,但它们存在固有的局限性,如无法访问最新信息[26]、利用外部工具[49]或进行精确的数学推理[44, 35]。最近的基准测试,如ScienceQA和TabMWP[32, 33, 7, 54, 51, 30],已出现用于评估LLMs处理复杂推理挑战的能力,特别是强调使用外部工具的能力。同时,利用外部工具和模块化方法增强LLMs的兴趣不断增长。这些增强型LLMs可以通过网络搜索引擎访问实时信息[40],并利用外部资源的领域特定知识[62]。有些工作利用Python解释器生成复杂程序,以更有效地执行逻辑推理任务[55, 10, 6, 39, 18, 43, 36]。例如,Toolformer[49]构建了工具使用增强的数据,以训练语言模型选择五种工具。在视觉工具领域,提出了各种方法来增强大型语言模型处理视觉任务的能力[60, 59, 52, 13, 50],这些方法结合了Hugging Face模型[50]、Azure模型[60]、视觉基础模型[59]。我们在表1中将Chameleon与其他工具增强型语言模型进行了比较。许多这些方法要么受限于少量工具,要么局限于特定任务工具,这减少了它们在各种技能维度上的能力,并阻碍了它们对新任务的普适性。最近的一些工作依赖大量监督[49, 26],并专注于生成命令[40]和程序[52, 13]以推断工具的选择。然而,这种方法需要为特定任务和特定工具精心设计提示,既不灵活也不适应性强。相比之下,Chameleon通过自然语言指令指导LLMs,简单描述每个模块的角色并提供一些调用示例,消除了学习组合不同工具时对额外训练或工具特定提示的需求。更重要的是,Chameleon在工具类型和来源、更新底层LLMs、添加新工具和适应新任务方面为用户提供了灵活性。我们的工作与AutoGPT[47]的精神一致,AutoGPT是一种具备人工通用智能(AGI)雄心的自主GPT-4代理,旨在结合众多工具以实现用户定义的目标。虽然AutoGPT仍在开发中,但我们的工作是第一个具体实现这一理念并在广泛研究的基准测试中验证其有效性的。
表1:对使用工具增强大型语言模型的工作的比较。我们报告了工具的数量和工具类型,包括OpenAI ( ), Hugging Face ( ), Github ( ), Web搜索 ( ), 和代码 ()。我们比较了每种方法所具备的技能,例如图像理解、浏览器搜索、知识检索、数学推理和表格理解。有些模型可以组合各种工具,提出一个计划器来推断执行相关工具,或者本质上可以扩展到新工具。标签“-”表示文献中的不确定信息。
3、通用框架:Chameleon
为了应对当前大型语言模型(LLMs)在利用多种工具方面的局限性,我们提出了Chameleon,一个新颖的即插即用组合推理框架,综合多种工具的组合以适应广泛的问题。Chameleon由一个模块库和一个基于LLM的规划器组成,其目的是将原始问题分解为可以由特定任务工具有效解决的子任务。与现有的工具增强型LLM方法[49, 13, 59, 50]不同,我们的模块库具有多种工具类型,如表2所示,使得Chameleon能够展示多种推理能力,包括图像理解、知识检索、网络搜索、复杂数学推理和表格理解。Chameleon并不生成特定领域的程序[40, 13, 52],而是采用基于LLM的规划器创建类似自然语言的程序,遵循自然语言指令,这种方法更少出错,易于扩展到新模块,且对用户友好。
表1:我们模块库中的不同工具
我们将规划器形式化如下:给定输入查询x、模块库M和约束G,基于自然语言的规划器P选择一组模块,这些模块可以按顺序执行,通过生成类似自然语言格式的程序来回答查询。模块库M由一组预构建模块组成:{M},每个模块对应于不同类型的工具(见表2)。G是计划生成的约束,例如模块的并发关系和顺序。在我们的工作中,规划器P是一个通过少样本设置生成模块名称序列的LLM。规划器以自然语言进行提示,包含规划任务指令I、模块库M的描述及相应的约束G,以及一些示例D。从P生成的T长度计划可以表示为p = M, ..., M,其中M表示生成计划中的第t个元素,且M∈ M。形式上,给定输入查询(问题陈述)x,计划p生成如下:
p←P(x; I, M, G, D)
根据生成的计划,各步骤对应的模块按顺序执行。该计划是一个自然语言程序,每个模块通过字符串匹配简单绑定。在时间步骤t评估模块M时,执行的输出y计算如下:
其中x是当前模块M的输入, c是缓存的信息(例如,图像语义、检索到的知识、生成的程序),这些信息来自模块的执行历史。
接下来,通过以下方式分别更新下一个模块M的输入x和缓存c:
x←update_input(x; y)
c←update_cache(c; y)
update_input和update_cache函数是为每个M手动设计的。具体来说,update_input应用于输入查询中的元素,包括问题、表格上下文和图像。这些元素在模块执行后会更新。update_cache对应新信息的生成,如输入图像的描述或从外部资源检索到的知识。最后,由最后一个模块M生成对查询的响应r:
r = y←M(x; c)
图2:我们在TabMWP [33]上使用GPT4进行变色龙方法的两个示例,这是一个具有表格上下文的数学推理基准。变色龙展示了在适应需要各种推理能力的不同查询时的灵活性和效率。
(注释:
1. 示例1:
查询:Wanda去野营旅行并记录了她每天徒步的里程数,问题是“这些数字的中位数是多少?”
表格数据:显示了她每天徒步的里程数。
周日:10
周一:9
周二:10
周三:5
周四:9
工具组合:
知识检索:检索相关知识,解释中位数的定义和计算方法。
程序生成器:生成计算中位数的Python代码。
程序验证器:验证生成的代码。
程序执行器:执行代码计算中位数。
答案生成器:生成最终答案。
答案:中位数为9。
2. 示例2:
查询:根据以下时间表,公交车从火车站出发的时间是什么时候?
表格数据:显示了各个地点的到达和出发时间。
体育场:到达 10:20 A.M.,出发 10:25 A.M.
公园:到达 10:35 A.M.,出发 10:45 A.M.
酒店:到达 11:10 A.M.,出发 11:15 A.M.
机场:到达 12:05 P.M.,出发 12:10 P.M.
火车站:到达 12:25 P.M.,出发 12:35 P.M.
公交车站:到达 1:10 P.M.,出发 1:10 P.M.
选项:
(A) 12:35 P.M.
(B) 1:10 P.M.
(C) 1:10 P.M. (D) 10:45 A.M.
工具组合:
行查找:在时间表中找到火车站的相关行。
解决方案生成器:生成步骤解释以找到答案。
答案生成器:生成最终答案。
答案:公交车从火车站出发的时间是12:35 P.M.
总结: 通过变色龙方法,系统能够灵活地适应具有不同上下文和要求的查询,合成和组合各种工具以生成最终的答案。变色龙方法在具有表格数据的数学推理任务中展示了其强大的推理能力和效率,能够提供详细的步骤解释和正确的答案。)
4、Chameleon的应用
我们展示了Chameleon在两个具有挑战性的任务上的应用:ScienceQA [32](第4.2节)和TabMWP [33](第4.3节),使用第4.1节中介绍的模块库。更多实验细节见附录A.2。
4.1 模块库
为了适应各种推理能力和多样化的查询,我们的系统利用了丰富的外部工具模块库。这里提供了该库的高级概述,详细实现见具体实验。完整的模块库M如表2所示。每个库中的工具定义如下:
表2:我们模块库中的不同工具
- 知识检索工具 :此模块检索解决复杂问题所需的额外背景知识。它对科学和数学等专门领域特别有益,提供任务的上下文。例如,如果查询涉及税表,此模块可以生成关于税务程序的知识,提供有价值的背景信息。
- Bing搜索 :类似“知识检索”,但“Bing搜索”模块旨在提供广泛的任务相关知识。当需要来自多个来源的广泛或最新信息时,它表现更好。使用搜索引擎API,此模块根据输入查询返回相关搜索结果,随后模块解析并使用这些结果从多种来源获取丰富的上下文信息,增强问题解决的效果。
- 查询生成器 :由于原始问题通常缺乏检索任务相关信息的定制查询,此模块根据问题创建搜索引擎查询,然后由“Bing搜索”模块使用。通常,在使用“Bing搜索”之前,使用“查询生成器”模块是一个好策略。结合搜索引擎工具,生成更有针对性的查询通常有助于提高检索信息的召回率和精确度。
- 图像说明生成器 :旨在为图像生成说明,此模块为查询提供重要的补充上下文。它在语义理解图像时特别有价值,如识别场景中的物体和互动。使用预训练模型,它将视觉数据转化为语言,促进对图像内容的有效理解和推理。
- 文本检测器 :此模块旨在识别给定图像中的文本。当问题需要从包含图表、表格、地图或其他视觉元素的图像中提取文本信息时,通常使用“文本检测器”。通过有效检测各种格式的文本,此模块有助于分析和理解基于图像的内容。
- 行查找 :当查询涉及表格上下文时,此模块非常关键,因为通常需要定位相关的单元格。大型表格可能会分散系统注意力,因此“行查找”通过保留与查询相关的行简化表格。如果所有行都相关,则返回原始表格。
- 列查找 :类似“行查找”模块,“列查找”通过关注相关列解决涉及表格上下文的问题。它通过保留相关列简化表格,如果所有列都相关,则返回原始表格。
- 表格语言化 :将结构化表格转换为文本可能会增强下游模块对表格信息的理解,如开放域问答[37]所示,这使得此模块成为我们系统的重要部分。它将表格翻译为易于理解的描述,特别适用于“程序生成器”和“解决方案生成器”等模块,尤其对茎叶图或函数表等小型、特定领域的表格有用。
- 程序生成器 :程序辅助方法被证明可以增强LLMs的逻辑和数学推理能力[55, 10, 6, 39, 18, 43]。“程序生成器”生成Python程序以有效解决查询,这对于需要复杂计算或复杂逻辑操作(如“if-else”语句)的查询特别有益。
- 程序验证器 :最近的研究强调了验证以减少幻觉的重要性[45, 38]。因此,“程序验证器”确保由“程序生成器”生成的程序的有效性和无错误性。它检查语法和逻辑错误以及潜在的执行问题,增强解决方案的可靠性和准确性。
- 程序执行器 :此模块执行由“程序生成器”生成的程序并产生结果,桥接程序生成和最终解决方案推导之间的差距。
- 解决方案生成器 :此模块利用所有缓存的信息生成输入查询的详细解决方案。采用连锁思维提示方法[57],确保连贯和结构良好的响应。如果规划器能够独立解决查询,尤其是对于较简单的问题,可以直接使用此模块而不是其他功能模块。
- 答案生成器 :此任务特定模块使用基于规则的方法从“程序执行器”或“解决方案生成器”的结果中提取和规范化答案。与提供详细多步解决方案的“解决方案生成器”不同,“答案生成器”作为流水线中的最终模块,提供简明的任务特定答案。
4.2 科学问题解答
科学问题解答(ScienceQA [32])是一个多模式问题解答的多样化基准,涵盖一系列科学主题和背景。如图1所示,这些问题的解答需要各种工具和技能,如图像说明生成、文本检测、知识检索、在线资源搜索和多线索视觉推理。在生成使用工具的程序时,我们将搜索空间限制为相关的库子集(见附录中的表6)。如果程序的最后两个元素不是“解决方案生成器”和“答案生成器”,则该程序被视为无效,并默认为这两个元素的序列,遵循连锁思维提示基线[57]。请参见附录中的表8以了解构建的自然语言规划器提示。基于LLM的模块(如“知识检索”、“查询生成器”和“解决方案生成器”的提示见附录中的表10、11和12)。
4.3 表格数学推理
TabMWP [33] 是一个涉及各种表格上下文的数学推理任务,如日程表、价格表、税表、图表和函数关系(见图2)。它要求AI系统理解各种表格格式并进行精确的数值或符号计算。与ScienceQA类似,我们将程序搜索空间限制为两种工具类型:1)帮助LLM更好地理解表格信息的工具(如“行查找”、“列查找”和“表格语言化”)和2)执行准确符号计算的工具(如“程序生成器”、“程序验证器”和“程序执行器”),如表6所列。生成的程序必须符合一定的约束条件,例如包括“答案生成器”,并且将“程序生成器”置于“程序验证器”和“程序执行器”之前。不符合要求的程序默认为“程序生成器”、“程序验证器”、“程序执行器”和“答案生成器”的序列,符合带有验证的程序思维提示基线[6]。
5、实验
我们评估了Chameleon在两个复杂推理任务ScienceQA [32]和TabMWP [33]上的有效性和适应性。实验细节见附录A.2。
5.1 实验结果
。表3展示了现有基线和我们的方法Chameleon的结果,关键结果在图3(a)中突出显示。使用ChatGPT [41]作为基础LLM,Chameleon达到了79.93%的准确率,比连锁思维提示(CoT)[57]提示的ChatGPT高出1.62%。值得注意的是,Chameleon是CoT的广义形式,其中生成的程序是“解决方案生成器”和“答案生成器”的序列。Chameleon受益于额外的工具使用,如“知识检索”、“Bing搜索”、“图像说明生成器”和“文本检测器”。基于GPT-4 [42]时,我们的模型达到了86.54%的准确率,比GPT-4 CoT [32]高出2.55%,比GPT-3 CoT高出11.37%,在少样本设置中创造了新的最先进水平。
表3:ScienceQA [32] 测试集上的问答准确率(%)。我们报告了为此任务调优的参数数量和整体准确率,以及不同问题类型的准确率,包括自然科学、社会科学和语言科学、文本、图像和无上下文问题,以及1-6年级和7-12年级的问题。每部分和总体的最高分数分别用蓝色和红色突出显示,我们最佳模型的结果用粗体标出。
。表4展示了关键模型的结果,见图3(b)。同样,Chameleon在微调和少样本模型上都显示了显著的改进。值得注意的是,CoT和程序思维(PoT)[6]可以看作是Chameleon的特例。除了“解决方案生成器”和“答案生成器”,CoT不使用任何工具,而PoT仅依赖于符号编程工具,如“程序生成器”和“程序执行器”。Chameleon(ChatGPT)比ChatGPT CoT和ChatGPT PoT分别高出11.25%和3.79%,强调了我们丰富工具集的优势。使用GPT-4,Chameleon又获得了5.50%的提升,达到了98.78%的准确率。值得注意的是,Chameleon(GPT-4)超过了Codex PoT-SC [6],即最好的已发布模型,高出17.0%,并超过了人类表现8.56%。
图3:主要基线和Chameleon的结果。虚线表示人类表现。
表4:TabMWP [33] 测试集上的问答准确率(%)。我们报告了为此任务调优的参数数量和整体准确率,以及不同问题类型的准确率,包括自由文本问题、多选问题、整数答案、小数答案、抽取式答案、布尔答案、其他文本答案、1-6年级和7-8年级的问题。*表示结果的一个子集。
5.2 定性分析
工具使用规划 。图4和图5分别展示了Chameleon在ScienceQA和TabMWP中调用关键工具的比例。令人感兴趣的是,ChatGPT和GPT-4表现出不同的规划行为。一般而言,ChatGPT对使用或不使用某些工具有强烈的偏见,深受上下文示例的影响。例如,ChatGPT在72%的查询中调用“知识检索”,但在ScienceQA中仅在3%的情况下调用“Bing搜索”;在TabMWP中,ChatGPT严重依赖“行查找”(47%),但很少调用“列查找”(4%)。然而,GPT-4在工具选择上表现得更加客观和理性。例如,在回答ScienceQA的科学问题时,GPT-4更频繁地调用“知识检索”(81%对72%),并比ChatGPT更多地调用“Bing搜索”(11%对3%)。令人印象深刻的是,GPT-4通过观察工具使用描述,一致地同时调用“查询生成器”和“Bing搜索”,而ChatGPT缺乏这种推理能力。
图5:Chameleon在TabMWP上生成的程序中调用的工具。
禁用模块的消融研究 。我们研究了禁用生成程序中的关键模块时Chameleon的准确率下降情况(见表5),使用ChatGPT作为基础LLM和500个测试样例。结果表明,“知识检索”在两项任务中都起到了重要作用。特定领域的工具,如ScienceQA的搜索引擎和视觉模型,以及TabMWP的程序工具,也被证明是重要的。
模块转换。 我们在图7和图8中分别展示了Chameleon(GPT-4)在ScienceQA和TabMWP上生成程序的模块转换图。这些图中的转换概率是从测试集上观察到的工具转换中计算出来的。这些图表明,GPT-4规划器能够在少样本设置中很好地决定如何排序工具。例如,在ScienceQA中,Chameleon通常决定依赖“知识检索”或“Bing搜索”,但很少同时使用。在TabMWP中,我们观察到两种主要模式:要么通过解决方案生成器模块,要么通过程序生成器、验证器和执行器。
图7:Chameleon(GPT-4)在ScienceQA上生成的程序中模块之间的转换。START是起始符号,END是终止符号,其他为非终止符号。
图8:Chameleon(GPT-4)在TabMWP上生成的程序中模块之间的转换。START是起始符号,END是终止符号,其他为非终止符号。
5.3 案例研究
ScienceQA的可视化示例 。图1中展示了Chameleon(GPT-4)在ScienceQA上的示例。Chameleon(GPT-4)能够通过生成组合各种工具的程序并按顺序执行它们,以适应不同的输入查询,从而获得准确的响应。例如,要回答第一个问题(①)“推动的方向是什么?”,系统调用图像说明生成器模型从图像中提取语义信息,并使用知识检索模型收集背景知识以进行多模式推理。在第二个示例(②)中,自然语言规划器推断需要文本检测工具来理解广告的背景。第三个查询(③;更多细节见附录中的图9)“哪种动物的皮肤适应在寒冷地区生存?”涉及与动物生存相关的科学术语。规划器决定调用Bing搜索引擎以访问特定领域的知识,受益于众多在线资源。
TabMWP的可视化示例。 图2中的示例展示了Chameleon在处理各种查询方面的适应性和多功能性。第一个示例(①)涉及税表上的数学推理。Chameleon(1)调用知识检索模型以回忆有助于理解该特定领域表格的基本知识,(2)以更易读的自然语言格式描述表格,(3)最终依赖程序辅助工具进行精确计算。在第二个示例(②)中,系统生成的Python代码与知识检索模型提供的背景知识紧密一致。第三个示例(③)需要系统在给定输入查询的情况下定位大表格中的单元格。Chameleon调用行查找模型以帮助准确定位相关行,并通过LLM模型生成语言解决方案,而不是依赖于程序工具。
失败案例和局限性 。Chameleon(GPT-4)的失败示例在附录中的表19至24中展示。不准确的响应可能源于当前模块的局限性或由规划器生成的次优程序。此外,模块库可能缺乏能够解决特定能力的工具。未来的方向可能包括升级模块和规划器,或扩展模块库以支持更广泛的能力。更多局限性和更广泛的影响分别在附录的B和C节中讨论。
5.4 错误分析
为了检查基础大型语言模型的错误来源,并了解我们的模型如何从不同方面减少错误,我们进行了错误分析,如图6所示。我们从ScienceQA的ChatGPT基线中选取了50个错误示例作为评估集。我们统计了错误示例的数量,并分析了ChatGPT、我们的Chameleon(ChatGPT)方法和Chameleon(GPT-4)各自的错误类型类别。结果显示,与ChatGPT相比,我们的Chameleon方法可以大幅减少错误数量。我们的模型具备图像说明和知识检索工具,因此ChatGPT在图像理解类别中犯的错误由32个减少到Chameleon(ChatGPT)的10个和Chameleon(GPT-4)的19个;而ChatGPT在知识理解类别中犯的错误由37个减少到Chameleon(ChatGPT)的6个和Chameleon(GPT-4)的3个。受益于工具的顺序执行,解决方案生成导致的错误也显著减少。此外,我们发现GPT-4的任务规划远远优于ChatGPT。
图6:ScienceQA中不同类别的错误示例数量。图像:图像说明生成,知识:知识理解,解决方案:解决方案生成。
6、结论
总之,我们介绍了一种新颖的即插即用组合推理框架Chameleon,它通过以即插即用的方式增强当前大型语言模型的外部工具,解决了它们的局限性。我们的方法使用多样化的工具集,并在两个具有挑战性的基准ScienceQA和TabMWP上展示了令人印象深刻的适应性和有效性。通过在准确性上显著超过现有的最先进模型,Chameleon展示了其在处理各个领域的实际查询方面的潜力。
补充材料
Chameleon:即插即用组合推理的大型语言模型
# 附录
## A.1 当前的工具增强型LLM
为了解决LLM的局限性,一个活跃的研究方向是通过访问外部工具和资源来增强语言模型,并探索外部工具和即插即用模块化方法的集成。例如,借助网络搜索引擎和外部知识资源,LLM能够访问实时信息并利用领域特定的知识[40]。为了增强数学推理能力,最近的研究使用LLM[5]生成复杂程序以利用强大的计算资源,并更有效地执行逻辑推理任务[55, 10, 6, 39, 18, 43]。另一类近期的工作,如ViperGPT[52]、Visual ChatGPT[59]、VisProg[13]和HuggingGPT[50],结合了一系列基础计算机视觉模型,使LLM具备执行视觉推理任务的能力。
## A.2 实验细节
**模块搜索空间**。ScienceQA和TabMWP的模块库子集如表6所示。
规划器实现。在构建基于LLM的规划器时,我们选择了gpt-3.5-turbo引擎用于ChatGPT,选择了gpt-4引擎用于GPT-4。生成程序的最大长度设置为128,温度设置为0以实现最确定性的生成。ScienceQA和TabMWP的规划器提示分别如表8和表9所示。
ScienceQA的模块实现。默认情况下,基于LLM的模型使用四个上下文示例作为演示,温度设置为0,允许的最大完成令牌数为512。其他具体实现细节如下:
- 知识检索:提示由3个演示示例组成,模板见表10。
- 查询生成器:提示模板见表11。最大完成令牌数设置为64。
- 解决方案生成器:提示由2个演示示例组成,模板见表12。
- 图像说明生成器:我们使用图像说明生成模型生成输入图像的文本描述。生成的说明最大长度设置为16,beam数为4,最大输出令牌数为512。
- 文本检测器:此模块基于GitHub模型提取图像中的文本内容及其坐标。
- Bing搜索:此模块调用Bing搜索API并返回文本查询的前三个响应。
- 答案生成器:此模块从“解决方案生成器”提供的结果中提取答案片段,并从给定选项中选择最相似的选项。
TabMWP的模块实现。与ScienceQA类似,基于LLM的模块默认使用四个上下文示例作为演示,温度设置为0,允许的最大完成令牌数为512。其他实现细节如下:
- 知识检索:提示由5个演示示例组成,模板见表13。
- 行查找:当有超过三行和18个表格单元时启用,以加速推理。提示由7个演示示例组成,模板见表14。最大完成令牌数设置为256。
- 列查找:同样,此模块在有两个或更多列和18个或更多表格单元时启用。提示由6个演示示例组成,模板见表15。最大完成令牌数设置为256。
- 表格语言化:提示由7个演示示例组成,模板见表16。
- 程序生成器:提示模板见表17。最大完成令牌数设置为256。
- 解决方案生成器:提示由16个演示示例组成,模板见表18。
- 答案生成器:用于将答案标准化为两位小数精度的问题,或为多选题选择最相似的选项。
update_input 和 update_cache 的实现。update_input由特定工具的执行触发,如‘Row_Lookup’,其修改或替换输入中的元素以反映更新的状态。工具如‘Image_Captioner’、‘Text_Detector’、‘Knowledge_Retrieval’、‘Web_Search’和‘Program_Generation’生成新元素。update_cache将这些新元素存储在缓存中,使其可以被后续工具执行时访问。
## A.3 实验结果
**生成程序统计**。Chameleon利用基于LLM的自然语言规划器生成程序,即使用模块(工具)的序列。我们报告了Chameleon生成的唯一程序数量和相应工具序列的平均长度统计数据,如表7所示。在ScienceQA和TabMWP上,使用GPT-4作为基础LLM生成的独特程序更少,即程序更一致,即使在规划模型中给定完全相同的提示时也是如此。我们的结果与[42]中的发现一致,该研究发现GPT-4在理解长上下文、对齐人类指令和执行高级推理方面比其他LLM(如ChatGPT)更具优势。
## B 限制
虽然Chameleon在利用大型语言模型(LLM)进行即插即用组合推理方面代表了一个重要的进步,但仍有一些领域可以进一步优化。一个这样的领域是扩展其适应性,以涵盖更多样的任务和领域,而不仅限于所展示的基准。负责合成程序和确定工具顺序的基于LLM的规划器引入了一种创新的方法,但它也提出了一些关于优化工具选择和顺序过程的有趣研究问题。在当前系统设计中,基于LLM的规划器的质量可能会影响整体性能。此外,Chameleon在生成程序时是一步完成的,而没有在程序处理模块时加入重新规划机制。此外,我们假设模块列表及其描述能够适应LLM的上下文窗口,但这并不总是适用。随着任务复杂性增加和模块库扩展,可能会出现计算需求激增或由于上下文限制而导致的限制,这表明未来可能需要进行优化。然而,这些潜在的改进领域并不会削弱本文的核心成就,而是为未来的工作和研究提供了宝贵的方向。
## C 更广泛的影响
本文所展示的Chameleon在社会上具有显著的正面潜力。通过为大型语言模型(LLM)提供即插即用的组合推理模块,Chameleon可以为复杂的多模式任务提供更准确的响应,使其成为各种应用(包括但不限于教育、金融和决策支持系统)中可能有价值的框架。此外,系统在不需要任何训练的情况下合成程序的能力,可以使非专家能够在不同领域中利用AI技术,从而实现AI技术的普及。随着大型语言模型和工具集成的研究不断推进,我们预计我们的框架将为进一步的创新奠定基础,推动更具普适性和效率的复杂推理任务解决方案的追求。
尽管Chameleon可能带来负面的社会影响,如如果其利用的数据源和外部工具未被精心策划,可能导致误信息和隐私问题,我们相信这些风险是可以通过仔细管理和最小化的。还有一个风险是,过度依赖Chameleon的自主性可能会削弱批判性思维能力或工作职能。为了有效缓解这些问题,必须仔细策划数据源和外部工具,并强烈致力于用户数据保护。此外,应将Chameleon的自主性视为增强人类能力的手段,而不是替代。因此,制定强有力的道德准则、透明机制和保障措施至关重要,体现了我们对社会责任性AI部署的承诺。
表8:为ScienceQA任务构建的规划器模型提示。提示包括描述规划器模型角色的说明、将问题映射到模块序列的上下文示例以及测试示例。
## 规划器模型说明
您需要作为策略模型,给定一个问题和一组模块,确定可以顺序执行以解决问题的模块序列。模块定义如下:
- Query_Generator :此模块为给定的问题生成搜索引擎查询。通常,当问题涉及领域特定知识时,我们会考虑使用“Query_Generator”。
- Bing_Search :此模块在网上搜索与问题相关的信息。通常,当问题涉及领域特定知识时,我们会考虑使用“Bing_Search”。
- Image_Captioner :此模块为给定的图像生成说明。通常,当问题涉及图像的语义理解,且元数据中的“has_image”字段为真时,我们会考虑使用“Image_Captioner”。
- Text_Detector :此模块检测给定图像中的文本。通常,当问题涉及展开图像中的文本(如图表、表格、地图等)时,且元数据中的“has_image”字段为真时,我们会考虑使用“Text_Detector”。
- Knowledge_Retrieval :此模块检索作为提示的背景知识以解决给定问题。通常,当背景知识有助于指导解决方案时,我们会考虑使用“Knowledge_Retrieval”。
- Solution_Generator :此模块基于提供的信息生成问题的详细解决方案。通常,“Solution_Generator”会整合来自“Query_Generator”、“Bing_Search”、“Image_Captioner”、“Text_Detector”和“Knowledge_Retrieval”的信息。
- Answer_Generator :此模块从解决方案或执行结果中提取最终答案的简短形式。此模块通常是预测流水线中的最后一个模块。
以下是将问题映射到模块的一些示例。
问题 :比较每个样本中粒子的平均动能。哪个样本的温度更高?
上下文 :下图显示了两个相同封闭、刚性容器中的纯气体样本。每个彩色球代表一个气体粒子。两个样本的粒子数量相同。
选项 : (A) 都不是;样本的温度相同 (B) 样本A (C) 样本B
元数据 :‘pid’: 19, ‘has_image’: True, ‘grade’: 8, ‘subject’: ‘自然科学’, ‘topic’: ‘物理’, ‘category’: ‘粒子运动和能量’, ‘skill’: ‘识别粒子运动如何影响温度和压力’
模块 :["Text_Detector", "Knowledge_Retrieval", "Solution_Generator", "Answer_Generator"])
表9:为TabMWP任务构建的规划器模型提示。类似地,提示包括说明、上下文示例和测试示例。
(翻译:
规划器模型说明
给定一个问题和一组模块,确定可以顺序执行以解决问题的模块序列。
模块定义如下:
- Program_Generator :此模块生成可以解决给定问题的Python程序。它接收问题和可能的上下文,生成一个可以由“Program_Executor”模块执行的程序。通常,当问题和上下文涉及复杂计算(如多个数字的算术运算)或复杂逻辑操作(如“if-else”语句)时,我们会考虑使用“Program_Generator”。
- Program_Verifier :此模块验证“Program_Generator”生成的程序是否有效且无错误。它检查语法错误、逻辑错误和程序执行过程中可能出现的其他潜在问题。
- Program_Executor :此模块执行“Program_Generator”生成的程序,并生成可以由其他模块(如“Question_Answering”)进一步处理的输出。
- Row_Lookup :此模块返回仅保留与问题相关行的简化表格。它接收问题和表格,并返回简化后的表格。如果所有行都相关或行数少于或等于三行,则返回原始表格。通常,当表格涉及超过三行且问题只需要少量行来回答时,我们会考虑使用“Row_Lookup”。
- Column_Lookup :此模块返回仅保留与问题相关列的简化表格。它接收问题和表格,并返回简化后的表格。如果所有列都相关或列数只有两列,则返回原始表格。通常,当表格涉及超过两列且问题只需要少量列来回答时,我们会考虑使用“Column_Lookup”。
- Table_Verbalizer :此模块将表格转换为易于下游模块(如“Program_Generator”、“Solution_Generator”、“Question_Answering”)理解的描述。通常,当表格涉及少量行和列且是特定领域的(如茎叶图、函数表等)时,我们会考虑使用“Table_Verbalizer”。
- Knowledge_Retrieval :此模块为给定的问题和表格检索特定领域的知识。通常,当问题和表格涉及特定领域的知识(如茎叶图、函数表、税务表等)时,我们会考虑使用“Knowledge_Retrieval”。
- Solution_Generator :此模块基于提供的信息生成问题的详细解决方案。通常,当问题和表格涉及简单计算(如单个数字的算术运算)时,我们会使用“Solution_Generator”。
- Answer_Generator :此模块从解决方案或执行结果中提取最终答案的简短形式。此模块通常在“Solution_Generator”或“Program_Executor”模块之后使用。
以下是将问题映射到模块的一些示例。
| designer watch | $8,141 |
| designer coat | $6,391 |
问题:设计师手表比设计师大衣贵多少?(单位:$)
表10:为ScienceQA任务构建的“知识检索”模块提示。
### 说明
阅读以下问题,并生成背景知识作为上下文信息,以帮助回答问题。
### 上下文示例
问题 :这三个物体有什么共同的属性?
选项 :(A) 硬 (B) 软 (C) 黄
元数据 :‘pid’: 43, ‘has_image’: True, ‘grade’: 4, ‘subject’: ‘自然科学’, ‘topic’: ‘物理’, ‘category’: ‘材料’, ‘skill’: ‘比较物体的属性’
图像中检测到的文本 :['手帕', '拖鞋', '休闲套装']
知识 :
- 这个问题是关于比较三个物体的属性:手帕、拖鞋和休闲套装。
- 这些物体与物理学主题和比较物体属性的技能相关。
- 物体的属性可以包括物理特征,如颜色、质地、形状、大小、重量和材料。)
Lu P, Peng B, Cheng H, et al. Chameleon: Plug-and-play compositionalreasoning with large language models[J]. Advances in Neural InformationProcessing Systems, 2024, 36.
1University of California, Los Angeles
2Microsoft Research, Redmond
AIRoobt ,作者:AIRoobt
原文链接:
本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://jmbhsh.com/wanjumoxing/33457.html