在自然语言处理任务中,大型语言模型在零样本和少样本学习方面取得了令人印象深刻的结果。然而,所有模型都存在固有的局限性,往往只能通过进一步扩展来部分解决。具体来讲,模型的局限性包括无法访问最新信息、会对事实产生「信息幻觉」、低资源语言理解困难、缺乏进行精确计算的数学技能等等。
解决这些问题的一种简单方法就是给模型配备外部工具,如搜索引擎、计算器或日历。然而,现有方法通常依赖于大量的人工注释,或将工具的使用限制在特定的任务设置下,使得语言模型与外部工具的结合使用难以推广。
为了打破这种瓶颈,近期 Meta AI 提出了一种称为 Toolformer 的新方法,使得语言模型学会「使用」各种外部工具。
论文地址:https://arxiv.org/pdf/2302.04761v1.pdf
Toolformer 很快就引起了人们的高度关注,有人认为这篇论文解决了目前大型语言模型的许多问题,称赞道:「这是最近几周最重要的论文」。
有人指出 Toolformer 以自监督学习的方式,仅用极少数样本就让大型语言模型学会使用一些 API 和工具,这是非常灵活且高效的:
甚至有人认为 Toolformer 将让我们离通用人工智能(AGI)更近一步。
Toolformer 之所以能获得如此高的评价,是因为它满足了以下的实际需求:
- 大型语言模型应该在自监督的方式下学习工具的使用,而不需要大量的人工注释。这一点很关键, 人工注释的成本很高只是一方面,更重要的是人类认为有用的东西可能与模型认为有用的东西不同。
- 语言模型需要更全面地使用不受特定任务约束的工具。
这明确打破了前文所述的瓶颈。我们来具体看一下 Toolformer 的方法和实验结果。
方法
Toolformer 基于带有 in-context learning(ICL)的大型语言模型从头开始生成数据集(Schick and Schütze, 2021b; Honovich et al., 2022; Wang et al., 2022)的思路:只需给出少数几个人类使用 API 的样本,就可以让 LM 用潜在的 API 调用标注一个巨大的语言建模数据集;然后使用自监督损失函数来确定哪些 API 调用实际上有助于模型预测未来的 token;最后根据对 LM 本身有用的 API 调用进行微调。
由于 Toolformer 与所使用的数据集无关,因此可以将其用于与模型预训练完全相同的数据集,这确保了模型不会失去任何通用性和语言建模能力。
具体来说,该研究的目标是让语言模型 M 具备一种能力 —— 通过 API 调用使用各种工具。这就要求每个 API 的输入和输出都可以表征为文本序列。这允许将 API 调用无缝插入到任何给定文本中,并使用特殊的 token 来标记每个此类调用的开始和结束。
该研究将每个 API 调用表示为一个元组
,其中 a_c 是 API 的名称,i_c 是相应的输入。给定具有相应结果 r 的 API 调用 c,该研究将不包括和包括其结果的 API 调用的线性化序列分别表示为:
其中,<API>,</API > 和「→」是特殊的 token。如下图 1 所示,这种方法让 LM 学会了控制各种工具,并为自己选择在何时以及如何使用哪种工具。
给定数据集
,该研究首先将这个数据集转换成一个增加了 API 调用的数据集 C*。这分三个步骤完成,如下图 2 所示:首先,该研究利用 M 的 in-context learning 能力对大量潜在的 API 调用进行采样,然后执行这些 API 调用,再检查获得的响应是否有助于预测未来的 token,以用作筛选标准。筛选之后,该研究合并对不同工具的 API 调用,最终生成数据集 C*,并在此数据集上微调 M 本身。
实验及结果
该研究对各种不同的下游任务进行了实验,结果表明:基于 6.7B 参数预训练 GPT-J 模型的 Toolformer(学习过使用各种 API 和工具)在各种任务上明显优于更大的 GPT-3 模型和其他几个基线。
该研究在 LAMA 基准的 SQuAD、GoogleRE 和 T-REx 子集上对几种模型进行了评估,实验结果如下表 3 所示:
为了测试 Toolformer 的数学推理能力,该研究在 ASDiv、SVAMP 和 MAWPS 基准上进行了实验。实验表明,Toolformer 在大多情况下都使用了计算器工具,这明显比 OPT (66B)和 GPT-3 (175B)略胜一筹。
在问答方面,该研究在 Web Questions、Natural Questions 和 TriviaQA 三个问答数据集上进行了实验。Toolformer 明显优于大小相同的基线模型,但逊于 GPT-3 (175B)。
在跨语言任务方面,该研究将 Toolformer 和 MLQA 上所有的基线模型进行了比较,结果如下表 6 所示:
为了研究日历 API 的效用,该研究在 TEMPLAMA 和一个名为 DATESET 的新数据集上对几种模型进行了实验。Toolformer 优于所有基线,但没有使用 TEMPLAMA 日历工具。
除了验证各种下游任务的性能改进之外,该研究还希望确保 Toolformer 的语言建模性能不会因为 API 调用的微调而降低。为此,该研究在两个语言建模数据集上进行实验来评估,模型的困惑度如下表 8 所示。
对于没有任何 API 调用的语言建模来说,添加 API 调用无需花费任何成本。
最后,研究人员分析了随着语言模型规模的扩大,向外部工具寻求帮助的能力对模型性能的影响,分析结果如下图 4 所示
感兴趣的读者可以阅读论文原文,了解更多研究细节。