导语
Toolformer这篇论文尝试让LLM也可以使用工具,调用各种API来完成相应的任务。
- 会议:Arxiv 2023
- 链接:arxiv.org/abs/2302.04…
1 简介
大型语言模型(LLM)在zero-shot和few-shot任务上表现出印象深刻的结果,展示了涌现能力。然而,这些模型存在固有限制,包括无法获取最新信息、幻觉事实倾向、低资源语言理解困难、缺乏精确计算数学技能和对时间进程的不了解。为了克服这些限制,本文提出了一种新的方法,即Toolformer。Toolformer是一个以自我监督的方式学习使用外部工具的模型,满足以下要求:
- 不依赖大量人工注释,以便与人类认为有用的东西可能不同。
- 不失去一般性,能够自主决定何时以及如何使用哪个工具,从而更全面地使用不绑定到特定任务的工具。
Toolformer基于最近的上下文学习和数据生成的想法。使用人类编写的关于如何使用API的例子来为大型语言模型生成一个巨大的语言建模数据集,并使用自我监督的损失来确定哪些API调用对模型预测未来token有帮助。最后,通过对模型进行微调,以学习如何使用工具。
由于本文的方法与数据集无关,因此可以应用于预训练模型使用的相同数据集,确保模型不会失去通用性和语言建模能力。在不同的下游任务上进行实验,证明经过学习使用工具后,Toolformer模型可以在zero-shot任务上获得更强的结果,明显优于更大的模型和其他任务的Baseline。
2 方法
本文介绍如何通过API调用,将不同工具嵌入语言模型M中。要求API的输入和输出都能表示为文本序列,并用特殊的token标记每个API调用的开始和结束。每个API调用被表示为元组c = (a_c, i_c),其中a_c是API名称,i_c是相应输入。API调用的线性序列分为包含结果和不包含结果的两种情况。
其中””, “”和”→”是特殊的token。一些调用示例子如图1所示。(注:在实践中,使用token “[“,”]“和” -> “分别表示””, “”和”→”,在不修改现有LM词汇表的情况下工作。出于可读性的考虑,在本节中,仍然将它们称为””, “”和”→”。)
给定一个数据集C = {x1,…, x|C|}的纯文本,首先将该数据集转换为使用API调用进行扩充的数据集C∗。这分三个步骤完成,如图2所示:1)利用M的上下文学习能力对大量潜在的API调用进行采样。2)执行这些API调用,最后检查获得的响应是否有助于预测未来的令牌;这被用作过滤条件。3)过滤之后,合并不同工具的API调用,从而在这个数据集上生成增强的数据集C∗和finetun M本身。
图3显示了一个问题回答(QA)工具的提示示例。设$p_M(z_{n +1}| z_1,…, z_n)是M赋给记号z_{n +1}作为序列z_1,…, z_n的下一个token的概率。在过滤API调用时。 通过给定一个权值序列(wi | i∈N),令
是M在模型以z为前缀符号x1,……,xn的加权交叉熵损失。
比较了这一损失的两个不同实例:其中,ε表示空序列。前者是所有xi的加权损失,后者是(i)完全不调用API和(ii)进行API调用但不提供响应所获得的损失的最小值。直观地说,如果向M提供此调用的输入和输出,使模型更容易预测未来的token,那么API调用对M是有帮助的。给定一个过滤阈值τf,因此只保留对其有帮助的API调用。
在推理阶段执行常规解码,直到M生成“→”令牌,这表明它接下来期望API调用的响应。此时,中断解码过程,调用适当的API以获得响应,并在插入响应和令牌之后继续解码过程。
3 工具
作者展示了几种可以使用的工具调用,如下表所示:
这些工具施加的唯一限制是(i)它们的输入和输出都可以表示为文本序列,(ii)可以获得它们预期用途的一些演示。具体来说,使用以下五个工具:问答系统,维基百科搜索引擎,计算器,日历,和机器翻译系统。
4 实验
本文主要比较以下模型:
- GPT-J:没有任何微调的普通GPT-J模型
- GPT-J + CC: GPT-J在C上微调过。
- Toolformer:GPT-J在C∗上微调过。
- Toolformer(Disable):与Toolformer模型相同,但在解码过程中禁用API调用。
在各种下游任务上评估所有模型。实验结果如下表:
可以看到,通过令大模型使用工具API,模型的性能得到了飞速提升。
5 分析
作者研究了引入的修改后的解码策略的效果,在这里,不使用Greedy Search,而是Top-K生成。表9显示了不同k值在LAMA的T-REx子集和WebQS上的性能。同时,定性地分析了使用该方法为不同的API生成的一些API调用。表10显示了一些来自CCNet的带有API调用的文本示例,以及相应的L-i – L+i得分(用作过滤标准),以及模型所做的API调用在给定上下文中是否直观有用。。
6 相关工作
略
7 局限性
Toolformer在自监督学习中使用各种工具的方法存在局限性。其中一个限制是无法将多个工具串联使用(即,将一个工具的输出作为另一个工具的输入)。这是因为每个工具的API调用是独立生成的,因此在微调数据集中没有串联使用工具的例子。目前的方法也不允许模型以交互方式使用工具,尤其是对于搜索引擎这样的工具,它们可能返回数百个不同的结果,让模型能够浏览这些结果或以类似Nakano等人(2021)的方式重新定义搜索查询对某些应用至关重要。此外,作者发现使用Toolformer训练的模型在决定是否调用API时,对输入的确切措辞非常敏感。这也许不足为奇,因为已知LM对给定的提示在零样本和少样本设置中非常敏感。根据工具的不同,Toolformer也可能非常低效;例如,处理超过一百万个文档仅产生几千个对计算器API有用的调用示例。解决这个问题的一个可能方法是迭代应用Toolformer。最后,Toolformer在决定是否进行API调用时,目前并未考虑到因进行API调用而产生的工具依赖的计算成本。
8 总结
本文介绍了Toolformer,这是一种语言模型,它通过简单的API调用,以自监督的方式学习如何使用不同的工具,如搜索引擎、计算器和翻译系统。这是通过对大量采样的API调用进行调优来实现的,这些API调用是根据它们是否减少了对未来令牌的困惑进行过滤的。Toolformer大大提高了6.7B参数GPT-J模型的零射击性能,使其在一系列不同的下游任务中甚至优于更大的GPT-3模型。