夕小瑶科技说 原创

作者 | Tscom

引言:探索语言模型中的“工具”概念

在当今的数字化时代,语言模型(Language Models, LMs)已经成为了人工智能领域的一大亮点,它们在处理文本生成任务中展现出了强大的能力。然而,尽管语言模型在理解和生成自然语言方面取得了显著的进步,它们在处理需要复杂技能的任务时往往显得力不从心。例如,在执行数学计算、复杂推理或者获取训练数据之外的实时信息等任务时,语言模型往往难以独立完成。为了解决这些问题,研究者们开始将“工具”引入到语言模型中,以增强其执行任务的能力。
但是,“工具”这一概念在不同的研究中有着不同的定义和使用方式,这就引发了一个问题:究竟什么是“工具”?它们在何处以及如何帮助语言模型?本文将探讨这一问题,并试图提供一个统一的定义,同时梳理和分析现有的工具使用场景和方法,以及它们在各种基准测试中的效率和性能提升。
此外,我们还强调了该领域的一些挑战和潜在的未来研究方向。论文通过案例分析,展示了工具如何在不同任务中帮助语言模型,例如使用计算器工具进行数学计算,或者使用API获取当前时间等。论文的目标是为研究者和实践者提供实用的指导,帮助他们了解何时以及如何使用工具,并为评估提供具体的建议。
论文标题
:

What Are Tools Anyway? A Survey from the Language Model Perspective
论文链接
:

https://arxiv.org/pdf/2403.15452.pdf

基本工具使用范式:如何在自然语言中嵌入工具调用?

1. 工具使用的基本范式介绍
在自然语言处理领域,工具(Tool)的概念被广泛应用于增强语言模型(LMs)的性能,尤其是在处理需要复杂技能的任务时。工具通常被定义为外部程序,语言模型通过生成函数调用和输入参数来使用这些工具。例如,一个计算器工具可以用来辅助数学计算,或者一个时间工具可以用来获取当前时间(下图)。
在基本的工具使用范式中,语言模型主要通过自然语言与用户交流。当用户提出一个问题,如“今天天气如何?”时,语言模型会生成文本或工具调用。如果需要获取外部工具提供的实时信息,例如天气信息,语言模型会生成工具名称和相应输入参数,构成完整的工具调用表达式。这个表达式会触发从文本生成模式到工具执行模式的转换。托管工具的服务器将执行该表达式并将执行结果返回给语言模型。
如下图,语言模型发送check_weather()调用到天气服务器,并接收到输出“晴朗”。返回的结果将替换语言模型生成的工具调用(例如,从“It is check_weather()”变为“It is sunny”),这个结果用于后续的生成步骤。
2. 推理时提示与训练时学习的方法
在推理时,许多工作通过提示(prompting)提供工具信息,期望语言模型能够从输入上下文中学习使用这些工具。这是通过提供任务说明、使用工具的查询和解决方案示例对[1],以及/或工具功能的文档来实现的[2]。
除了从测试时上下文中学习工具外,语言模型还可以在训练时通过示例学习使用这些工具。语言模型可以被简单地训练以生成使用工具的解决方案,这些示例可以由人工注释[3],或者由更大的教师语言模型合成[4],或者由测试时的语言模型自身引导[5]。

工具使用场景:在哪些情境下工具特别有用?

1. 利用现有工具提升特定应用的性能
尽管语言模型可以在没有工具的情况下学习执行许多任务并达到高准确性,但许多其他任务从工具使用中受益匪浅。如下表所示,知识访问工具可以缓解语言模型在训练期间由于数据限制和记忆利用能力限制而存储的知识有限的问题。计算活动工具,如计算器,可以增强语言模型的数值能力,而更通用的Python程序也被用来辅助推理任务。与世界互动的工具,如获取实时天气信息或位置知识的工具,对于语言模型来说是必不可少的,因为没有工具,它们根本无法感知和作用于周围的世界。非文本模态工具,如视觉或音频工具,也被引入以访问图像或歌曲,并回答关于它们的问题。此外,一些工作提出使用专门的语言模型作为工具,这些模型通常在特定技能上有所专长。
2. 工具不那么有用的场景分析
尽管在上述许多场景中工具非常有用,但也有一些场景中工具可能不那么有用。例如,在机器翻译、摘要和情感分析等任务中,工具的使用效果并不明显。这些任务不容易使用非机器学习方法执行(例如,使用计算器解决数学问题或访问数据库),并且可以仅靠强大的语言模型独立完成。一个直观的原因是,这些任务当前使用的工具大多是神经网络,与基础语言模型相比并没有明显优势。如果在这些任务上使用工具,那么工具通常会是另一个具有专业技能的神经语言模型,例如,一个专门在大量摘要数据集上训练以执行此任务的语言模型。然而,这种特殊技能的神经语言模型可能与基础的使用工具的语言模型在架构上没有显著差异,或者在参数规模或训练数据规模上较小,因此通常具有较差的语言建模能力。相比之下,能够进行解决方案规划和工具管理的基础语言模型通常更强大(例如,GPT-4),并且可以在各种任务上实现合理的性能,甚至可能超过特定用途的语言模型[6]。

如何处理复杂的工具使用?

1. 复杂工具选择与使用
在处理复杂的工具使用情况时,首先需要对可用的工具进行选择。这可能涉及到一个隐式或显式的工具选择模块。如果任务已经指定了工具,则无需进行选择。如果有少量(例如5-10个)的工具可用,可以将这些工具的元数据和用例与用户查询一起作为输入上下文提供,让语言模型(LM)通过标准生成过程直接从上下文中选择工具。如果工具箱的大小进一步增长(例如到数百个),将所有工具纳入模型输入变得不可行。因此,通常会加入额外的检索步骤:检索模型会列出最相关的工具,并将它们的元数据提供给解决方案生成的LM。
2. 程序化上下文中的工具
在程序化任务中,工具可以被视为基本函数的组合。这些任务可能专注于特定类型的工具,例如编程语言(PL)的内置函数,预设计的包中的外部库,或者是为特定任务设计的、在训练时未见过的实用函数(下图从左到右)。例如,对于特定领域的语义解析,系统可能会使用特定领域逻辑形式(DSL)手动设计的代码,如SQL查询。而对于通用代码生成,系统可能会使用第三方库或专家设计的实用函数作为工具。
3. 当没有现成工具时如何创造工具
当面临没有预先设计工具的任务时,一些研究探索了使用LM来创建工具。例如,可以通过组合经常一起使用的DSL动作来创建快捷工具,或者利用LM的程序知识来构建、验证并使用Python工具。在更复杂或现实的使用场景中,研究者可能会利用LM来自动创建并重复使用工具,以提高效率(下图)。

如何评价工具的使用效果?

1. 评估工具使用的测试床
工具的使用可以在重新利用现有数据集或新创建的基准测试中进行评估。这些数据集可能需要推理,或者可能需要工具来扩展模态性,例如处理图像或音频。评估工具增强系统时,通常遵循各个数据集的标准评估流程。
在现实世界中,我们可以利用更多的工具来执行多功能任务,特别是由人类开发人员创建的、遍布网络的API工具。因此,最近的许多研究都汇集了来自各种网络资源的应用程序接口工具,并创建了使用这些应用程序接口的基准(如下表,§4.1指的就是上文表格中的场景符号,‘✗∗’是指:尽管HuggingGPT使用的工具是可执行的,但由于托管和推理的成本,它不会对执行输出进行评估)。
2. 目前使用的评价指标
目前,评价工具使用效果的常见指标包括任务完成度、工具选择准确性和工具可重用性。任务完成度衡量了使用工具解决任务的有效性。工具选择准确性有助于区分错误的工具选择和不准确的工具使用错误。工具可重用性评估了工具在多个示例中的通用功能性。
3. 缺失但重要的评价方面
评估工具使用时,还应考虑工具集成的效率、工具本身的质量、不稳定工具的可靠性、可重复测试和安全使用等方面。例如,除了性能提升外,还应报告计算开销,以便更公平地比较不同方法。此外,对于涉及神经模型或随机组件的工具,它们的输出质量可能不稳定,因此需要注意这种不确定性,并尽可能减少这种不稳定性,以确保更可预测的输出。

权衡使用工具的利与弊

论文通过实证研究,使用下表中各种方法在其实验数据集上的性能增益和学习成本,发现更高效的方法(即,以较少的计算实现更大的增益)以及从工具中获益更多的任务。
1. 任务受益最大化与方法效率分析
在语言模型(LM)的应用中,工具的使用旨在提升模型完成特定任务的能力。工具可以是外部程序,例如API或特定功能的代码段,它们能够为LM提供额外的信息或执行复杂的计算。然而,工具的使用并非没有代价。首先,需要考虑的是任务受益最大化问题。例如,使用计算器工具可以显著提高LM处理数学问题的能力,因为LM本身并不擅长符号计算。但是,对于语言任务,如机器翻译,使用另一个专门的LM作为工具可能并不会带来显著的性能提升,因为基础LM已经能够以合理的性能完成这些任务。
其次,方法效率分析也是必不可少的。在选择使用工具时,我们需要分析工具带来的性能提升是否值得额外的计算成本。如下图,ToolFormer方法在处理数学问题时表现出了最高的效率,以较少的计算成本实现了显著的性能提升。然而,对于多语言任务,尽管使用了相似数量的计算资源,性能却略有下降。这表明,对于某些任务,LM本身已经足够强大,使用工具可能不会带来额外的好处。
2. 工具制造的方法效率分析
在工具制造场景中(如下图所示),三种方法(Creator、CRAFT、TROVE)在相同的MATH和TabMWP数据集上进行了实验,因此可以在成本和性能两个维度上进行公平比较。总体来说,TROVE似乎是最有效的方法,相比之下,CREATOR和CRAFT的效率较低。
3. 训练时间与推理时间成本的权衡
在使用工具时,我们还需要权衡训练时间和推理时间的成本。对于许多实践者来说,推理可能需要多次运行,而训练通常只需要进行一次。因此,如果用户对推理时间效率有更高的要求,那么在训练阶段引入工具的方法可能更为合适。例如,API-Bank和ToolAlpaca提出的训练方法在推理时不需要额外的计算成本,因为它们在推理时使用与基线相同的提示。相比之下,ToolFormer在推理时需要额外的上下文示例,从而增加了计算成本。

总结与展望:对语言模型工具使用的总结和未来研究方向

本文通过对工具使用进行了定义和系统总结,提供了关于工具使用的实证分析,指导了在何种任务上以及如何使用工具。我们认为工具可以大大扩展和促进LM的能力,并希望我们的工作能够激发更多关于LM工具使用的讨论和研究发展。
在未来的研究中,我们鼓励研究者提出具有自然用例和可执行工具的基准测试,使用我们在第6节提出的综合评估指标,并探索更具挑战性和现实性的工具使用和制作技术场景。此外,对于工具集成的效率、工具的质量、不稳定工具的可靠性以及可重复测试等方面的评估也是未来研究的重要方向。最后,安全使用工具是系统选择使用工具时的一个重要考虑因素,用户更倾向于使用那些易于理解和验证的工具。
通过本文的研究,我们希望为语言模型的工具使用提供更清晰的理解,并为未来的研究提供方向,以便更好地利用工具来提升语言模型在各种任务中的表现。

参考资料

 [1]Tanmay Gupta and Aniruddha Kembhavi. Visual programming: Compositional visualreasoning without training. arXiv preprint arXiv:2211.11559,2022.

 [2]Cheng-Yu Hsieh, Si-An Chen, Chun-Liang Li, et al. Tool documentation enables zero-shot tool usage with large language models. arXiv preprint arXiv:2308.00675,2023.

 [3]Minghao Li, Yingxiu Zhao, Bowen Yu, et al. Api-bank: A comprehensive benchmark for tool-augmented LLMs. In Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing, 2023.

 [4]Qiaoyu Tang, Ziliang Deng, Hongyu Lin, et al. Toolalpaca: Generalized tool learning for language models with 3000 simulated cases. arXiv preprint arXiv:2306.05301, 2023.

 [5]Timo Schick, Jane Dwivedi-Yu, et al. Toolformer: Language models can teach themselves to use tools. arXiv preprint arXiv:2302.04761, 2023.

 [6]Nathaniel Robinson, Perez Ogayo, David R. Mortensen, and Graham Neubig. ChatGPT MT: Competitive for high- (but not low-) resource languages. In Philipp Koehn, Barry Haddow, Tom Kocmi, and Christof Monz (eds.), Proceedings of the Eighth Conference on Machine Translation, pp. 392–418, Singapore, December 2023. Association for Computational Linguistics. doi: 10.18653/v1/2023.wmt-1.40.
继续阅读
阅读原文