图表问答
Efficient Multi-Agent Collaboration with Tool Use for Online Planning in Complex Table Question Answering
复杂表格问答(TQA)旨在回答基于表格数据、需要复杂推理(如多步骤或多类别推理)的问题。以往的方法借助闭源大型语言模型(LLMs)或微调的开放权重 LLMs 取得了显著性能。然而,微调 LLMs 需要高质量训练数据,获取成本高,使用闭源 LLMs 存在访问难题和可重复性问题。本文中,我们提出了使用工具的多智能体协作(MACT)框架,它既无需闭源模型,也无需微调。在 MACT 中,规划智能体和使用工具的编码智能体协同回答问题。我们在四个 TQA 基准上的实验表明,MACT 在四个基准中的三个上超越了以往的 SoTA 系统,在两个基准上,即便仅使用未微调的开放权重模型,其表现也能与更庞大且更昂贵的闭源模型 GPT-4 相媲美。我们进行了大量分析,以证明 MACT 在 TQA 中的多智能体协作的有效性。
1. 表格问答的现状
表格问答(TQA,Table Question Answering)是指依据表格形式的数据来回答问题。表格问答任务的任务也越来越复杂,要解决这些复杂任务,就得执行多个推理步骤(多步骤)或者运用不同的推理策略(多类别)。
处理 TQA 中这些复杂实例的一种常见方法是规划,生成详细的逐步计划并引导推理过程。该方向有两种方法:
-
针对开源大型语言模型(LLMs)进行微调,但微调需要高质量的数据,通常难以获取
-
使用闭源的商业 LLMs,闭源商业 LLMs 成本高
为了解决以上问题,作者提出了一个结合工具使用的多智能体协作框架(MACT,Multi-Agent Collaboration with Tool)。既不依赖闭源 LLMs,也无需微调。
2. 什么是MACT?
MACT是一个为 TQA 配备了一组工具的多智能体协作框架。如下图所示,包含了四个主要模块:内存、规划智能体、编码智能体、工具集。
MACT包括五个核心阶段动作:动作生成、动作选择、工具选择/代码创建、观察计算以及内存状态更新。
2.1 动作生成(Action Generation)
作者参考了ReAct方法,鉴于之前有研究表明生成动作时,一同生成想法能带来性能的提升,所以作者采用了完整的ReAct方法:即想法、动作和观察一起生成。
把一个动作定义为两部分:意图和指令。
例如,“检索 [检索法国和德国的出口数量]”。意图是动作的目的,比如“检索”就是从输入表中提取信息。指令(用括号标记)详细说明了意图。
上表展示了框架中定义的六种意图类型及其对应的指令示例。
-
检索:执行从表中提取信息的所有操作,包括直接查询、过滤和分组。
-
计算:需要计算、计数或比较的指令则由“计算”来处理。
-
搜索:为了满足表或文本上下文中不存在的外部(事实性)知识的需求,增加了“搜索”意图。
-
读取:涵盖了表-文本问答中对上下文推理的需求,指的是从作为TQA实例提供的文本中提取信息的指令。
-
完成:规划智能体停止生成更多动作,并结束迭代执行,提供相应的指令中的最终答案。
-
询问:基于规划智能体的内部知识来检索答案.
2.2 动作选择(Action Selection)
运用选择函数从动作集合中挑选最有潜力的动作。选择函数采用了自洽性(self-consistency),从采样动作集合中输出最频繁的动作。若出现平局,则选择最先采样的那个最频繁动作。
2.3 工具选择与使用
为了满足【搜索】、【计算】、【检索】这些意图,作者引入了一组工具:Wiki百科搜索工具、计算器工具、Python代码工具。
-
Wiki百科搜索工具:维基百科搜索API,接收指令中指定的目标实体,并返回相应维基百科条目的第一段。
-
计算器工具:由Python解释器驱动,接受生成的公式,并输出答案。“计算”的指令也可以是文本描述,比如“计算表中每个国家的平均奖牌数量”。
-
Python代码工具:【检索】意图由Python代码工具完成,根据指令生成的Python代码检索表中的目标单元格,返回执行结果。
对于“读取”“询问”和“完成”,不使用工具。
3. 效果评估
对 MACT 在四个 TQA 基准上的性能与 SoTA TQA 系统进行了对比评估。
3.1 与其他TQA模型(框架)相比
如上图所示,当GPT-3.5作为底层模型时,MACT超越了所有的TQA模型(除在 WTQ 上的 Mix-SC)。表明与单代理 TQA 模型相比,代理策略是有效的。
猜测MACT与 Mix-SC 之间的性能差距源于 Mix-SC 中特定于数据的表清理和答案格式控制。相比之下,MACT 不包含任何特定于数据集的预处理或后处理步骤,从而能普遍适用于任何数据集。
MACT 在各个数据集中都优于各种开源 LLM,证明了智能体的有效性。
上表还给出了使用不同模型作为不同智能体部分的MACT的结果。
比如:MACT (Qw + CL)是指 Qwen 作为规划代理,CodeLLaMA 作为编码代理。
MACT (Qw + CL)比单独使用 Qwen 和 CodeLLaMA 获得了更高的 EM 分数,证明使用多个智能体进行规划和编码的有效性。
MACT (Qw + CL)在所有数据集中平均比 _SC(Qw + CL)高出约 6 个 EM 点,凸显了我们的协作技术相对于简单采用两个独立代理的最频繁预测的优越性。我们还发现,拥有用于代码生成的专家编码代理(MACT (Qw + Qw)与 MACT (Qw + CL))显著提高了性能。
3.2 与微调的TQA模型相比
MACT 在数据集之间的泛化能力优于微调的 TQA 系统。
上表展示了与先前微调的 TQA 模型进行了比较。通常,微调模型在用于微调的数据集上的性能相当高,但在其他数据集上测试时 EM 会大幅下降。
相比之下,MACT 不使用微调模型,因此能够应用于任何具有良好泛化性能的数据集。当使用 LlaMA-7b 作为规划代理时,MACT 展现出了与 Protrix 相当的结果,尽管它未进行微调。使用更好的规划代理会带来更好的结果。这也体现了 MACT 在骨干模型方面的稳健性。
3.3 MACT调用LLM次数对比
上表展示了MACT与其他方法调用LLM次数对比。对于 Binder 和 Dater,无论问题复杂程度如何,SC 都执行固定次数。导致每个实例的提示数量很多,因而效率低下。
相比之下,MACT 在生成方面具有灵活性,因为迭代次数取决于问题的复杂性。例如,对于 WTQ,大多数问题可以在三步内解决,使得每个实例最多总共提示 25 次。如果结合效率优化模块,这可能节省多达三分之一的迭代,每个实例的生成总数甚至更低(约 15 次),使 MACT 在效率方面与其他方法相当。MACT 的迭代性质可能导致更高的生成上限。然而,它也能处理更复杂的问题,使该方法更贴合现实生活的需求。
3.4 多智能体协作与工具使用的效果
通过三种情形展开消融研究,探究 MACT 中专业智能体和工具使用的有效性。
上表结果表明,工具和编码工具均对框架性能有所贡献。然而,它们对最终性能的贡献各异。
比如,去除搜索工具对结果几乎无影响,而进一步去除编码代理和 Python 解释器时,性能大幅下降。或许是由于工具和编码代理的使用频率所致。
发现搜索工具几乎未被使用,而编码代理在几乎每次查询中都会被调用。可能由于维基百科是 LLM 常见的预训练语料库,多数信息可能已被编码。不过,鉴于 LLM 已知会出现幻觉且编码知识可能未及时更新,搜索工具仍可能有所帮助。
消融操作对 WTQ 和 TAT 的影响大于 CRT 和 SCITAB。可能归因于数据集特征:CRT 包含众多是非问题,SCITAB 由三元分类数据集转换而来。因此,在诸如 WTQ 和 TAT 这类答案分布更丰富的数据集上,猜测正确最终答案的几率高于前者。通过评估 CRT 中除是非答案之外的实例,发现当消融工具和编码代理时,性能下降 8.23 。
3.5 错误分析
从每个数据集中随机抽取 MACT 失败的 50 个实例并进行错误分析。
-
约一半的错误源自编码代理生成的无效或错误代码。要么是未能理解指令从而生成错误代码,要么因复杂的表数据类型导致代码执行不成功。这表明表预处理的重要性。
-
第二种错误类型可归因于评估。发现约三分之一的失败源于严格的评估指标(精确匹配准确率)。这对 TAT 数据集上 MACT 的性能影响最大,因为其答案为长文本字符串。
-
其余错误情况在很大程度上可归咎于规划代理的失败。意味着规划代理未能正确分解问题。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。