
新的 "ToolQA "数据集:评估大型语言模型使用外部工具解决问题的能力。
三个要点
✔️ 开发了一个新的数据集 ToolQA,以评估大规模语言模型使用外部工具的有效性。
✔️ 大规模语言模型在 ToolQA 中的困难问题上表现有限,并显示出错误趋势。
✔️ 通过让大规模语言模型学习如何使用外部工具,有望进一步提高使用外部工具的能力。
ToolQA: A Dataset for LLM Question Answering with External Tools
written by Yuchen Zhuang, Yue Yu, Kuan Wang, Haotian Sun, Chao Zhang
(Submitted on 23 Jun 2023)
Comments: Published on arxiv.
Subjects: Computation and Language (cs.CL); Artificial Intelligence (cs.AI)
code:
本文所使用的图片要么来自论文、介绍性幻灯片,要么是参考这些图片制作的。
概述。
大规模语言模型在各种自然语言处理任务中表现出了很高的性能,其多功能性使其在包括 ChatGPT 在内的各个领域得到了实际应用。然而,也存在一些问题。一个是 "假象"。这是指大规模语言模型会产生并不存在的信息。另一个问题是数字推理能力较弱。据说它们不擅长使用数值解决复杂问题。
目前,这些问题正通过使用外部工具来增强大规模语言模型的能力来解决。例如,Wolfram 插件可用于增强数字推理能力。其他与事实核查数据库相连的外部工具可用于参考正确信息,减少错觉。
但是,在使用外部工具时,无法确定大规模语言模型是利用经过训练的内部数据还是利用外部工具提供的外部数据来解决问题。例如,无法评估外部工具的使用是否恰当。
因此,在本文中,我们引入了一个新的数据集 ToolQA,以评估大规模语言模型利用外部工具的程度:在 ToolQA 中,所有问题都被设计为只能通过使用适当的工具和获取外部数据来回答。这就最大限度地降低了大规模语言模型使用训练有素的内部数据回答问题的可能性,并允许对使用外部工具的能力进行评估。
什么是 ToolQA?
ToolQA "是一个数据集,旨在评估大规模语言模型使用外部工具回答问题的能力。该数据集由八个主题组成,每个主题由问题、答案、外部数据和工具组成。参考数据表示为文本语料库、表格数据库和可查询的图形。为了获取参考数据,有 13 种工具可用于文本检索、数据库操作、代码解释和数学计算等。工具质量保证中包含的问题是那些仅靠大规模语言模型内部知识无法回答,而需要使用工具获取参考数据的问题。下表列出了 ToolQA 的统计数据。下表列出了 ToolQA 的统计数据。
如下图所示,ToolQA 问答对的创建分为三个步骤。首先,在下图(a)参考数据收集中,大规模语言模型收集未经训练的参考数据。其次,在图(b)中,由人工指导生成问题,需要使用参考数据的问题由大规模语言模型和人工指导生成。最后,在下图(c)中,程序化答案生成将自动生成下图(b)中创建的问题的正确答案。
(a) 外部数据收集:参考数据收集。
这与上述(a)项有关。该数据集的目的是评估大规模语言模型利用外部工具的能力。因此,需要确保大规模语言模型使用外部工具。换句话说,我们需要确保大规模语言模型不能仅使用其训练过的内部数据来回答问题。因此,我们为收集外部数据制定了三个标准。
- 在大规模语言模型中,外部数据不会与内部数据重叠。
- 外部数据应包括与上下文相关的事实,以生成仅靠大规模语言模型内部数据无法回答的问题。
- 大规模语言模型应能从外部数据中获取所有必要信息,并正确回答问题。
然后从六个方面收集外部数据。
- 时间:为了创建涉及时间序列的问题,我们使用了包含最新信息的数据集,如 "航班 "和 "咖啡"。例如,我们使用大型语言模型不具备的最新信息作为内部数据,如最新航班时刻表或咖啡价格。
- 空间:用于创建有关地理和位置信息的问题,特别是 "Yelp(餐厅评级信息)"和 "Airbnb(住宿信息)"等数据集。这样就可以创建具有空间背景的问题,如特定地点的信息及其与该地点的相关性。
- 数学:"GSM8K"数据集用于创建数学问题。这些问题是 ChatGPT 自身的数学能力无法回答的。
- 科学:"SciREX"数据集用于生成有关科学概念和数据的问题。其中包含的科学领域信息往往是 ChatGPT 捏造的。
- 个人:要创建有关个人信息和日程安排的问题,需要使用由 ChatGPT 生成的包含虚拟姓名和事件的 "议程 "数据集。这样就可以在保护个人隐私的同时创建有关个人信息的问题。
- 社会关系:为了创建有关社会关系的问题,我们选择了 "DBLP "数据集中的最新数据来创建显示作者与文章之间关系的图表。这样,我们就可以根据大规模语言模型无法理解的社会关系创建问题。
此外,还有 13 种大规模语言模型工具可用于从这些外部数据中获取信息,如下表所示。
处理文本信息的 "文本工具 "工具包括 "Agenda Retriever "和 "SciREX Retreiver "文本搜索工具。Agenda Retriever 从 Agenda 数据集中搜索个人数据,而 SciREX Retreiver 则从 SciREX 中搜索与科学相关的数据。
处理数据库信息的 "数据库工具 "工具包括 "数据库加载器"、"数据过滤器 "和 "获取值"。数据库加载器从本地表格数据库加载数据。数据过滤器工具根据列名、关系和值(如 "Date=2022-10-15")过滤数据库。获取值 "工具可返回数据库中特定列的所有值。
数学工具是一种处理数学能力的工具,它提供 WolframAlpha 计算器。这是一款能将输入字符串视为数学公式并进行计算的工具。它可以进行各种计算,如简单的四则运算、计算平均值和最大值。
图形工具是处理图形信息的工具,包括图形加载器、邻接检查器、节点检查器和边缘检查器。图形加载器是从本地文件加载图形的工具。Neighbour Checker 列出了图形中查询节点的所有相邻节点。节点检查器和边检查器分别返回查询节点和边的详细属性信息。
代码工具是处理代码信息的工具,包括 Python 解释器和 SQL 解释器。这些工具分别解释和执行 Python 代码和 SQL 查询。这些工具还能从其他工具(如文本工具和数据库工具)接收数据,并将接收到的数据转换成适当的格式(如 SQL 查询或 Python 代码)。转换后的数据将被下一个流程(或其他工具)用来提取所需信息或执行更复杂的操作。这样,"Python 解释器 "和 "SQL 解释器 "就成了各种工具与大规模语言模型之间交换信息的桥梁。这样,大规模语言模型就能将各种工具结合起来,处理信息并生成最终答案。
最后,"完成 "可作为 "系统工具 "使用。它可以获取其他工具生成的输出结果并进行分析。例如,它分析文本搜索工具获得的信息、数据库的结果以及 Python 和 SQL 执行代码的结果,并利用这些信息形成最终答案。重要的是要理解所获得的结果,并以最合适的形式将结果呈现给用户。这可确保用户查询的最终答案清晰易懂。
(b) 人导问题生成。
这指的是下图中的 (b)。生成问题有两种可能的方法:一种是让专家就外部数据生成问题,另一种是让大规模语言模型就外部数据生成问题。仅仅依靠专家可以生成高质量的问题,但这种方法需要大量人力、时间,而且难以扩展。仅仅依靠大规模语言模型更容易扩展,但可能会产生低质量的问题,例如无法回答的问题。此外,大规模语言模型生成的问题可能包括仅使用大规模语言模型内部数据就能回答的问题。因此,本文提出了一种方法,即准备一个问题模板,然后由人工引导大规模语言模型生成问题。
首先,ChatGPT 会被提示 "根据给定信息,请生成一些问题模板并提出相应的答案"。并让它从外部数据中生成候选问题模板。接下来,人工会验证并选择大规模语言模型内部数据无法回答,但外部数据可以回答的问题模板。下图显示了外部数据 "航班 "的问题模板。
下图还显示了外部数据 "Yelp "的问题模板。
手动选择问题模板后,系统会从外部数据中抽取数值,并自动嵌入到问题模板中,从而生成特定的问题。例如,"从{起始地}飞往{目的地}的{日期}航班取消了吗?从外部数据 "航班 "中抽取 "LAX"、"MDW "和 "01/09/22 "值并嵌入模板,然后生成问题 "01/09/22 从 LAX 飞往 MDW 的航班取消了吗?等问题。问题还根据难度分为简单问题和困难问题。下图显示了外部数据 "Airbnb "的简单问题示例。
下图显示了参考数据 "Airbnb "的疑难问题示例。
(c) 程序化答案生成。
这就是下图中的 (c)。这里生成了(b)中问题的答案。
生成答案有两个要素:"操作符 "和 "工具链"。运算符 "是程序中执行特定操作的部分,例如从数据库中检索信息。而 "工具链 "是程序的一部分,它将多个不同的 "运算符 "组合在一起,生成最终答案。例如,您可以先从问题中检索必要的信息(日期、地名等),然后根据这些信息使用 "工具链 "执行一系列 "运算符",从而获得最终答案。下图显示了一个示例。该示例代码提出的问题是:"在{飞行日期}从{起飞地}起飞的航班中,延误的航班占多大比例?从而回答问题。
试验
ToolQA 通过四种方式评估成绩:一是使用 ChatGPT,将问题输入 ChatGPT,并将回答作为最终答案;二是使用 ChatGPT 与思维链(CoT);三是使用 ChatGPT 与思维链(CoT)。第二种是第三种是使用 Chameleon。这是一种使用大规模语言模型作为控制器的多工具问题解决方法。这是一种最新方法,在推理和 QA(问题解答)任务中表现出很高的性能;当 Chameleon 与 ToolQA 一起使用时,工具就是本文提供的工具。大规模语言模型在推理和工具使用之间交替进行,以提高解决问题的性能,这是在 ReAct 中使用 gpt-3.5-turbo 和 text-davinci-003 实现的。下表显示了每种方法在简单问题上的结果。
下表显示了每种方法对疑难问题的处理结果。
使用 ChatGPT 和 CoT 的用户在两个任务中的成功率都很低(小于 10%),无论是简单问题还是困难问题;使用 Chameleon 的用户成功率稍高,简单问题和困难问题的成功率分别为 10.6% 和 1.9%。ReAct 的成功率最高。
对简单问题和困难问题的结果进行比较也表明,所有方法在困难问题上的表现都明显较差。在简单问题上表现最好的方法的平均成功率(Average)为 43.1%,而在困难问题上,这一数字下降到了 8.2%。此外,对 ReAct 的两个版本进行比较后发现,ReAct (GPT-3) 在简单问题上的表现优于 ReAct (GPT-3.5),而在困难问题上则相反。
实验结果分析
这里对 ReAct(GPT-3.5)进行了分析,它在工具质量评估中的难题上表现最出色。至于最常见的错误,是指工具或程序弄错了参数,而参数是工具或程序正常运行的必要条件。如下图所示,参数错误在简单问题中占 44.56%(168/377),在困难问题中占 48.23%(210/436)。
易题和难题之间的参数错误模式也存在差异。在简单题目中,错误往往发生在与数据库相关的工具(LoadDB、FilterDB 和 GetValue)中。在简单问题中,错误数量为 120,而在困难问题中为 95。另一方面,在与代码相关的工具(SQL、Python)中,难题的错误数大约是易题的 10 倍。这可能是由于难题的解题逻辑更为复杂,无法仅从上下文完全推断。因此,大规模语言模型可能更依赖于对代码和编程概念的理解来解决这些难题。相反,对于简单问题,大规模语言模型可能会遵循上下文提供的模式,并倾向于结合不同的数据库操作来得出解决方案。
研究还发现,大规模语言模型很难找到合适的外部数据。例如,如下图所示,当需要包含时间信息的数据(如 "航班"、"咖啡"、"Airbnb "和 "Yelp")时,另一个数据 "议程 "经常被错误地引用(下图中 "议程 "一栏的颜色较浅)。
大规模语言模型还容易对与科学领域相关的数据(如 "SciREX "和 "DBLP")感到困惑,因为它们无法正确确定这些数据中的哪一个(上图中 scirex 列的颜色较浅)。大规模语言模型也很难正确确定应该使用哪些数据来回答问题,这也是造成错误的原因之一。
此外,使用外部工具增强的大规模语言模型通常会在其输入的提示中包含对每种工具的描述和使用案例,但随着工具数量的增加,问题的复杂性也随之增加,要包含所有工具组合的使用案例变得更加困难。因此,有时需要进行大规模的语言建模,以便找到人类输入的示例中未包含的工具之间的关系等。在本文中,这被称为 "创新"。然而,要找到这些未经人工输入的规则,也很有可能产生幻觉。下图说明了这一现象,大规模语言模型参考 "咖啡 "数据来回答一个难题。
在上文图(a)中的难题中,ReAct (GPT-3) 严格遵循上下文中显示的操作,结果失败了。相反,当数据库操作屡次失败时,ReAct(GPT-3.5)会根据工具的相关性将 SQL 解释器确定为数据库操作的替代方案。然而,当出现这种 "创新 "时,"幻觉 "的风险也很高。如上图(b)所示,在回答 "咖啡 "数据中的另一个难题时,ReAct(GPT-3.5)似乎出现了工具执行结果(黄色区域)中不存在的幻觉。
对 ReAct(GPT-3.5)模型中遇到的所有错误进行了审查,下图概括了易错题和难题中的错误分类。
摘要
本文提出了一个数据集 ToolQA,用于评估大规模语言模型使用外部工具的能力。它还针对 ToolQA 评估了标准大规模语言模型和使用外部工具扩展的大规模语言模型的性能。结果表明,即使是在 ToolQA 中对困难问题表现最好的基线也只能取得有限的性能。他们还发现,目前使用外部工具扩展的大规模语言模型往往会犯错误,如调用不正确的工具和使用不正确的数据源。研究小组希望通过外部工具使用数据集对大规模语言模型进行微调,从而提高大规模语言模型利用外部工具的能力,并将开展进一步的研究。
与本文相关的类别