Toolformer Language Models Can Teach Themselves to Use Tools 阅读理解

Toolformer: Language Models Can Teach Themselves to Use Tools 阅读理解

原文链接:点此下载或在线查看原文

本文展示了LMs可以通过简单的api教会自己使用外部工具。介绍了Toolformer,一个经过训练的模型,用于决定调用哪些api、何时调用、传递哪些参数以及如何最好地将结果合并到未来的序列预测。它以自我监督的方式完成,只需对每个API进行少量演示。整合一系列包括计算器、问答系统、搜索引擎、翻译系统和日历等工具。Toolformer在各种下游任务中实现了大幅改进的zero-shot性能,与更大的模型竞争而不牺牲其核心语言建模能力。

1 介绍

大型语言模型在各种自然语言处理任务上取得了令人印象深刻的few-shot结果,并展示了一些涌现能力。然而,所有这些模型都有一些固有的限制,这些限制最多只能通过进一步扩展来部分解决。这些限制包括无法获取最近事件的最新信息和相关的幻觉倾向,理解低资源语言的困难,缺乏进行精确计算的数学技能以及对时间进程的不了解。

克服当今语言模型的这些限制的一个简单方法是赋予它们使用外部工具(如搜索引擎、计算器或日历)的能力。然而,现有的方法要么依赖于大量的人工注释或将工具的使用限制为仅针对特定任务的设置,阻碍了LMs更广泛地采用工具使用。0因此,本文提出了Toolformer,以一种新颖的方式学习使用工具的模型,它满足以下需求:

•工具的使用应该以一种自我监督的方式学习,而不需要大量的人工注释。这很关键,不仅是因为与此类注释相关的成本,还因为人类认为有用的内容可能与模型认为有用的内容不同

LM不应该失去它的通用性,应该能够自己决定何时以及如何使用哪个工具。与现有的方法相比,这种方法可以更全面地使用工具,而不局限于特定的任务。

实现这些目标的方法是基于最近的想法,即使用具有上下文学习的大型LMs 生成整个数据集:**只要给出一些关于如何使用API的人工编写示例,让LM用潜在的API调用注释一个巨大的语言建模数据集。然后,我们使用自监督损失来确定哪些API调用实际上有助于模型预测未来序列。最后,根据它认为有用的API调用对LM本身进行调优。**如图所示,通过这种方法,LM可以学会控制各种工具,并自己选择何时以及如何使用哪种工具。

在这里插入图片描述

由于方法与所使用的数据集无关,因此可以将其应用于最初用于预训练模型的完全相同的数据集。这确保了模型不会失去其通用性和语言建模能力。在各种不同的下游任务上进行实验结果表明,在学习使用工具后,基于预训练的GPT-J模型的Toolformer具有6.7B参数,实现了更强的zero-shot结果,明显优于更大的GPT-3模型和其他几个基线任务上。

2 方法

目标是使语言模型 M M M具备通过API调用不同工具的能力。要求每个 API 的输入和输出都可以表示为文本序列。这允许将API调用无缝地插入到任何给定的文本中,使用特殊的token来标记每个这样的调用的开始和结束。

​ 将每个API调用表示为一个元组 c = ( a c , i c ) c = (a_c, i_c) c=(ac,ic),其中 a c a_c ac是API的名称, i c i_c ic是相应的输入。给定一个API调用 c c c和相应的结果 r r r,将API调用的线性化序列分别表示为不包含和包含其结果:

e ( c ) = < A P I > a c ( i c ) < / A P I > e(c) = <API> a_c(i_c) </API> e(c)=<API>ac(ic)</API>

e ( c , r ) = < A P I > a c ( i c ) → r < / A P I > e(c, r) = <API> a_c(i_c) → r </API> e(c,r)=<API>ac(ic)r</API>

其中“ < A P I > <API> <API>”、“ < / A P I > </API> </API>”和“ → → ”是特殊的token。(在实践中,分别使用标记序列“[”、“]”和“->”来表示“”、“”和“→”。这使得此方法可以在不修改现有LM词汇表的情况下工作。出于可读性的考虑,在本节中仍然将它们称为“ < A P I > <API> <API>”、“ < / A P I > </API> </API>”和“ → → ”。)

1 简介中的插图Figure 1显示了插入文本序列的线性化API调用的一些示例。

给定一个数据集 C = { x 1 , … , x ∣ C ∣ } C =\{x^1,…, x^{|C|}\} C={x1xC}的纯文本,首先把这个数据集转换成一个扩充API调用的数据集 C ∗ C^* C。分三步完成,如图所示:首先利用 M M M的上下文学习能力对大量潜在的API调用进行采样。然后执行这些API调用,最后检查获得的响应是否有助于预测未来的token;这被用作过滤标准。过滤后,合并不同工具的API调用,从而得到增强的数据集 C ∗ C^* C,在此数据集上微调 M M M本身。下面将详细描述每个步骤。

在这里插入图片描述

API 调用 抽样 对于每个API,编写一个(能够促使LM注释带有API调用的示例 x = x 1 , … , x n x = x_1,…,x_n x=x1,,xn)的提示 P ( x ) P (x) P(x)。下图展示了用于问答工具的此类提示的示例;所有使用的提示都在附录A.2中。设 p M ( z n + 1 ∣ z 1 , … , z n ) p_M(z_{n+1} | z_1,…,z_n) pM(zn+1z1,,zn) M M M赋给标记 z n + 1 z_{n+1} zn+1作为序列 z 1 , … , z n z_1,…,z_n z1,,zn的延续的概率。首先,对于每个 i ∈ { 1 , … , n } i∈\{1,…,n\} i{1,,n},通过计算 M M M指定在位置 i i i上进行API调用的可能性 p i = p M ( < A P I > ∣ P ( x ) , x 1 : i − 1 ) p_i = p_M( <API>| P (x),x_{1:i−1}) pi=pM(<API>P(x),x1:i1) ,对 k k k个进行API调用的候选进行采样。给定采样阈值 τ s τ_s τs,保留位置 I = { I ∣ p i > τ s } I = \{I | p_i > τ_s\} I={Ipi>τs};如果有超过 k k k个这样的位置,则只保留 T o p   k Top\space k Top k个。

在这里插入图片描述

对于每个位置 i ∈ I i\in I iI,通过从 M M M中以 [ P ( x ) , x 1 , . . . , x i − 1 , < A P I > ] [P(x),x_1,...,x_{i-1},<API>] [P(x),x1,...,xi1,<API>]作为前缀,以 < / A P I > </API> </API>作为后缀的序列进行的采样,我们获得了至多 m m m个API调用 c i 1 , . . . , c i m c^1_i,...,c^m_i ci1,...,cim

执行API调用 下一步执行 M M M生成的所有API调用去获得相应的结果。如何做到这一点则完全取决于API本身——例如,它可能涉及调用另一个神经网络,执行Python脚本或使用检索系统在大型语料库中执行搜索。每个API的调用 c i c_i ci的响应是单个文本序列 r i r_i ri

过滤API调用 i i i为API调用 c i c_i ci在序列 x = x 1 , … , x n x = x_1,…,x_n x=x1,,xn中的位置。设 r i r_i ri为API的响应。进一步,给定一个权重序列 ( w i ∣ i ∈ N ) (w_i | i∈N) (wiiN),若模型前缀为 z z z,则令 L i ( z ) = − ∑ j = i n w j − i ⋅ log ⁡ p M ( x j ∣ z , x 1 : j − 1 ) L_i(z) = -\sum^n_{j=i} w_{j−i}·\log p_M(x_j | z, x_{1:j−1}) Li(z)=j=inwjilogpM(xjz,x1:j1) M M M在标记 x i , … , x n x_i,…,x_n xi,,xn上的加权交叉熵损失,。

比较这种损失的两个不同实例:

L i + = L i ( e ( c i , r i ) ) L^+_i = L_i(e(c_i, r_i)) Li+=Li(e(ci,ri))

L i − = m i n ( L i ( ε ) , L i ( e ( c i , ε ) ) L^−_i = min (L_i(ε), L_i(e(c_i, ε)) Li=min(Li(ε)Li(e(ciε))

其中 ε ε ε表示空序列。前者是在API调用及其结果作为前缀给M(我们提供 e ( c i , r i ) e(c_i, r_i) e(ci,ri)作为前缀,而不是将其插入位置i,因为 M M M尚未在包含API调用的任何示例上进行微调,因此将其插入 x x x的中间会中断流程,并且与预训练语料库中的模式不一致,从而造成困惑。)的情况下,所有标记 x i , . . . , x n x_i,...,x_n xi,...,xn的加权损失;后者是以下两种情况的损失的最小值:(i)不进行API调用和(ii)进行API调用但不提供响应。直观地说,与根本不接收API调用或只接收其输入相比,如果同时提供该调用的输入和输出,使模型更容易预测未来的token,那么API调用对 M M M是有帮助的。给定一个滤波阈值 τ f τ_f τf,只保留使方程 L i − − L i + ≥ τ f L^ -_ i - L^+_i≥τ_f LiLi+τf成立的API调用,即,与不进行任何API调用或没有从中获得结果相比,添加API调用及其结果至少减少了τf的损失。

模型微调 在对所有API的调用进行采样和过滤之后,最终合并保留的API调用,并将它们与原始输入交织在一起。也就是说,对于输入文本 x = x 1 , … , x n x = x_1,…, x_n x=x1xn与在位置 i i i相应的API调用和结果 ( c i , r i ) (c_i, r_i) (ci,ri),构造新的序列 x ∗ = x 1 : i − 1 , e ( c i , r i ) , x i : n x^*=x_{1:i−1},e(c_i, r_i), x_{i:n} x=x1:i1,e(ci,ri)xi:n​; 以类似的方式处理具有多个API调用的文本。对所有 x ∈ C x∈C xC这样做,结果是新数据集 C ∗ C^* C增加了API调用。使用这个新的数据集来微调 M M M,使用标准的语言建模目标。关键的是,除了插入的API调用之外,增强数据集 C ∗ C^* C包含与原始数据集 C C C完全相同的文本。因此,在 C ∗ C^* C上调优 M M M使其暴露于与在 C C C上微调相同的内容。

此外,由于API调用被插入到帮助 M M M预测未来标记的位置和输入,因此对 C ∗ C^* C进行微调使语言模型能够完全基于自己的反馈来决定何时以及如何使用哪个工具。

结论

在使用该方法进行调优后使用 M M M生成文本时,执行常规解码,直到M产生“→”token,表明它下一步期望API调用的响应。此时,我们中断解码过程,调用适当的API来获取响应,并在插入响应和token之后继续解码过程。

3 工具

​ 本文探索不同的工具来解决常规LMs的不同缺点。对这些工具施加的唯一约束是:(i)它们的输入和输出都可以表示为文本序列,以及(ii)可以获得它们预期用途的一些演示。具体探讨了以下五种工具:问答系统、维基百科搜索引擎、计算器、日历和机器翻译系统。下表显示了与这些工具相关联的api的潜在调用和返回字符串的一些示例。下面简要讨论所有工具;详情见附录A。

在这里插入图片描述

问答系统 第一个工具是基于另一个LM的问答系统,它可以回答简单的事实问题。即Atlas,一个对自然问题进行微调的检索增强LM。

计算器 第二种工具是计算器,它可以执行简单的数字计算;只支持四种基本的算术运算,结果总是四舍五入到小数点后两位。

维基百科搜索 第三个工具是一个搜索引擎,给定一个搜索词,它会从维基百科中返回简短的文本片段。与问答系统相比,这种搜索使模型能够获得关于主题的更全面的信息,但需要它自己提取相关部分知识。搜索引擎使用BM25检索系统来索引从KILT转存的维基百科。

机器翻译系统 第四个工具是基于LM的机器翻译系统,它可以将任何语言的短语翻译成英语。更具体地说,是600M参数NLLB作为多语言机器翻译模型,该模型适用于200种语言(包括低资源语言)。使用fastText分类器自动检测源语言,而目标语言始终设置为英语。

日历 最后一个工具是日历API,查询时,它返回当前日期而不需要任何输入。这为模型所需的一定时间意识的预测提供了时间背景。

4 实验

为了调查该方法是否使模型能够在没有任何进一步监督的情况下使用工具,并自行决定何时以及如何调用哪个可用工具,而选择了不同的下游任务,假设至少有一个考虑的工具是有用的,并在zero-shot设置中评估性能(4.2节)。除此之外,本文确保该方法不会损害模型的核心语言建模能力;通过查看两个语言建模数据集的困惑可以验证这一点(4.3节)。最后研究了学习使用工具的能力如何受到模型大小的影响(4.4节)。

4.1 实验装置

数据集生成 在所有的实验中使用CCNet的一个子集作为语言建模数据集 C C C使用GPT-J 作为我们的语言模型 M M M。为了减少用API调用注释 C C C的计算成本,定义了一些API的启发性方法,以获得 C C C的一个子集,其中API调用比平均文本更有可能有用。例如,只考虑包含至少三个数字的计算器工具文本。使用的启发式细节都在附录A中。为了从 C C C中获得 C ∗ C^* C,我们执行第2节中描述的所有步骤,并额外过滤掉在过滤步骤中消除了所有API调用的所有示例.(虽然这种过滤改变了训练样例的分布,但假设剩余的样例与原始分布足够接近,因此M的语言建模能力不受影响。这一假设在第4.3节中得到了实证验证。) 对于加权函数则使用

w t = w ~ t ∑ s ∈ N   w ~ s w i t h   w ~ t = m a x ( 0 , 1 − 0.2 ⋅ t ) w_t =\frac{\widetilde w_t}{\sum _{s∈N} ~ \widetilde w_s} \textstyle {with \space} \widetilde w_t = max(0,1−0.2·t) wt=sN w sw twith w t=max(0,10.2t)来确保API调用发生在API提供的信息对模型实际有帮助的地方附近。为每个工具分别选择阈值 τ s τ_s τs τ f τ_f τf,以确保样本数量足够大;具体请参见附录A。下表显示了通过API调用增强的最终数据集的相关统计信息。

在这里插入图片描述

模型微调 使用批大小为 128 128 128,学习率为 1 ⋅ 1 0 − 5 1·10^{−5} 1105,在训练的前10%进行线性预热,对 C ∗ C^* C上的 M M M进行微调。微调程序详情载于附录B。

基准模型 在本节的其余部分中,我们主要比较以下模型:

GPT-J:无任何微调的常规GPT-J模型。

GPT-J + CC: GPT-J在 C C C上进行了微调,CCNet子集没有任何API调用。

Toolformer:GPT-J在 C ∗ C^ * C上进行了微调,CCNet子集增强了API调用。

Toolformer(已禁用):与Toolformer相同的模型,但在解码期间禁用API调用。(可以通过手动将 < A P I > <API> <API>token的概率设置为0来实现)

对于大多数任务,还比较了OPT (66B) 和GPT-3(175B) (使用原始的davinci 变体,它没有对任何指令进行微调。),这两个模型分别比其他基线模型大10倍和25倍。

4.2 下游任务

在各种下游任务上评估所有模型。在所有情况下,都考虑一个zero-shot设置,即模型被指示用自然语言解决每个任务,但不提供任何上下文示例。这与之前关于工具使用的研究(例如,Gao等人),其中为模型提供了特定于数据集的示例,说明如何使用工具来解决具体任务。之所以选择更具挑战性的zero-shot设置,是因为想看到Toolformer是否能准确地在用户没有事先指定应该使用哪种工具来解决特定问题的情况下工作

使用标准贪婪解码,但对Toolformer做了一个修改:不仅仅当 < A P I > <API> <API>是最可能的标记时,而是只要它是 k k k个最可能的tokens之一时,就让模型启动一个API调用。对于 k = 1 k = 1 k=1,对应于常规贪婪解码;相反,使用 k = 10 k = 10 k=10来增加模型的配置,以利用它可以访问的api。同时,每个输入最多只有一个API调用,以确保它不会出现不断调用API而不产生任何实际输出,不会陷入循环。这些修改的效果将在第5节中探讨。

4.2.1 LAMA

在LAMA基准的SQuAD、GoogleRE和T-REx子集上评估了模型。对于每个子集,任务是用缺失的事实(例如,日期或地点)完成一个简短的陈述。由于LAMA最初设计用于评估masked语言模型,因此我们过滤掉 掩码token不是最终token的示例,以便剩余的示例可以以从左到右的方式处理。为了考虑不同的标记风格 和 由于没有告知模型 需要单个单词 而增加的复杂性,使用了比精确匹配稍微宽松的评估标准,并简单地检查正确的单词是否在模型预测的前五个单词中。由于LAMA是基于直接从维基百科获得的语句,必须阻止Toolformer使用维基百科搜索API,以避免给它带来不公平的优势。各模型的结果见下表。所有不使用工具的GPT-J型号都达到了类似的性能。至关重要的是,Toolformer明显优于这些基线模型,在最佳基线的基础上分别提高了11.7、5.2和18.6分。它也明显优于OPT (66B)和GPT-3 (175B),尽管这两种型号都要大得多。这是因为模型在几乎所有情况下(98.1%)都独立决定向问答工具询问所需的信息;只有在极少数例子中,它使用不同的工具(0.7%)或根本不使用工具(1.2%)。

4.2.2数学数据集

在ASDiv、SVAMP 和MAWPS基准上测试模型的数学推理能力。再次考虑到这样一个事实,即通过使用更宽松的评估标准在zero-shot设置中测试所有模型:由于所需的输出总是一个数字,则只检查模型预测的第一个数字。(一个例外是,如果模型的预测包含一个方程(例如,“正确答案是5+3=8”),在这种情况下,本文认为“=”符号之后的第一个数字是它的预测。)

下表显示了所有基准测试的结果。虽然GPT-J和GPT-J + CC的性能大致相同,但即使在禁用API调用时,Toolformer也能获得更强的结果。我们推测,这是因为该模型在许多API调用示例及其结果上进行了微调,从而提高了其自身的数学能力。尽管如此,允许该模型调用API可以使所有任务的性能提高一倍以上,并且明显优于更大的OPT和GPT-3模型。这是因为在所有基准测试中,对于97.9%的示例,模型决定向计算器工具寻求帮助。

在这里插入图片描述

4.2.3 问答系统

观察Web Questions 、Natural Questions 和TriviaQA ,这是Brown等人考虑的三个问答数据集。为了评估性能,检查模型预测的前20个单词是否包含正确答案,而不是要求精确匹配。对于 Toolformer,我们禁用问答工具,因为这会使解决任务变得不起眼,特别是考虑到底层 QA 系统是在自然问题上进行微调的。

结果如下表所示。==Toolformer再一次明显优于所有其他基于GPT-J的模型,这次主要依赖于维基百科搜索API(99.3%)来查找相关信息。然而,Toolformer仍然落后于更大的GPT-3 (175B)型号。这可能是由于该方法设置的搜索引擎的简单性(在许多情况下,它返回的结果显然不是一个很好的匹配给定的查询)和Toolformer无法与它交互的事实,==例如,如果结果没有帮助,通过重新制定查询或浏览多个顶级结果。我们相信增加这个功能是未来工作的一个令人兴奋的方向。

在这里插入图片描述

4.2.5 时间数据集

为了研究日历API的效用,评估TEMPLAMA 和被称为DATESET的新数据集上的所有模型。TEMPLAMA是一个由维基数据构建的数据集,它包含关于随时间变化的事实的完形查询(例如,“克里斯蒂亚诺·罗纳尔多为___效力”)以及2010年至2020年之间的正确答案。附录D中描述的DATESET也是通过一系列模板生成的,但是使用随机日期/持续时间的组合来填充(例如,“30天前是星期几?”)。关键是,知道当前日期是回答这些问题的必要条件。对于这两个任务,使用与原始LAMA数据集相同的评估方法。

在这里插入图片描述

上表所示的结果表明,Toolformer在TEMPLAMA和DATESET上的表现都优于所有基线模型。然而,仔细检查发现TEMPLAMA的改进不能归功于日历工具,它只用于所有示例的0.2%,而主要归功于维基百科搜索和问答工具,这是Toolformer调用最多的。这是有道理的,因为TEMPLAMA中的命名实体通常是如此具体和罕见,甚至知道确切的日期也没有什么帮助。这个数据集的最佳操作过程——首先查询日历API以获得当前日期,然后用这个日期查询问答系统——不仅被限制每个示例最多使用一个API调用所禁止,而且由于其训练数据中的所有API调用都是独立采样的,因此很难使Toolformer学习。

另一方面,对于DATESET, Toolformer与其他模型相比的显著改进可以完全归功于日历工具,它在所有示例中使用了54.8%的日历工具。

4.3语言建模

除了验证在各种下游任务上改进的性能外,还要确保Toolformer的语言建模性能不会因为API调用的调优而降低。为此,在两个语言建模数据集上评估Toolformer模型:WikiText 和CCNet中随机选择的10,000个子集,这些子集在训练期间未使用。各模型的困惑度如下表所示。正如人们所期望的那样,在CCNet上的微调导致在不同的CCNet子集上的性能略有提高,但它在WikiText上的性能略有下降。

在这里插入图片描述

大概是因为原来GPT-J的预训练数据更类似于WikiText,而不是我们随机选择的CCNet子集。然而,最重要的是,当推理时禁用API调用时,与在 C C C上训练相比,在 C ∗ C ^* C上训练(我们用API调用注释的数据集)不会导致困惑的增加。(我们不评估API调用启用Toolformer的困惑,因为计算在 x 1 , . . . , x t − 1 x_1,...,x_{t-1} x1,...,xt1条件下token x t x_t xt的概率 p M ( x t ∣ x 1 , … , x t − 1 ) p_M (x_t | x_1,…,x_{t-1}) pM(xtx1,,xt1)可能需要边缘化模型在位置 t t t上所有潜在的API调用,这很棘手

4.4 缩放规则

研究当改变LM的大小时,请求外部工具帮助的能力如何影响性能。为此,不仅将方法应用于GPT-J,还将其应用于GPT-2家族中的四个较小的模型,分别具有124M, 355M, 775M和1.6B参数。只使用三种工具的一个子集:问答系统、计算器和维基百科搜索引擎。除此之外,遵循4.1节中描述的实验设置。

在这里插入图片描述

上图显示了利用所提供的工具的能力仅在大约775M个参数中出现:较小的模型在使用和不使用工具的情况下都实现了类似的性能。Wikipedia搜索引擎是一个例外,它主要用于QA基准测试;假设这是因为API比较容易使用。虽然随着模型规模的增长,它们在不调用API的情况下解决任务的能力会变得更好,但它们充分利用所提供API的能力也会随之提高。因此,即使对于最大的模型,在有API调用和没有API调用的预测之间仍然存在很大的差距。

5 分析

解码策略 研究在4.2节中介绍的修改后解码策略的效果,与总是生成最有可能的token相反,本模型生成 k k k个最可能的 < A P I > <API> <API>token

在这里插入图片描述

上表显示了不同 k k k值在LAMA的T-REx子集和WebQS上的性能。正如预期的那样,增加 k k k会导致模型执行API调用更多的示例——从 k = 1 k = 1 k=1时的40.3%和8.5%(即常规贪婪解码)到 k = 10 k = 10 k=10时的98.1%和100%。虽然对于T-REx来说,贪婪解码的性能已经有了明显的提高,**但在WebQS上,当我们稍微增加 k k k时,我们的模型才开始进行大量的API调用。**有趣的是,对于 k = 1 k = 1 k=1,模型在某种程度上进行了校准:它决定调用API,因为如果不进行API调用,它会执行得特别糟糕。这可以从以下事实中看出:在决定不进行API调用(44.3和19.9)的示例中,如果根本不进行API调用(34.9和18.9),则性能高于平均性能。然而,对于较高的k值,这种校准会丢失。

数据质量 定性分析用本文方法为不同的API生成的一些API调用。下表显示了CCNet中增加了API调用的一些文本示例,以及作为过滤标准的相应分数 L i − − L i + L^−_i−L^+_i LiLi+,以及模型进行的API调用在给定上下文中是否直观有用。

在这里插入图片描述

可以看到, L i − − L i + L^−_i−L^+_i LiLi+的高值通常对应于有用的API调用,而低值对应于不提供任何对预测未来token有用的信息的API调用。也有一些例外,例如:第四个例子中的对“Fast train success”的API调用没有给出任何相关信息却仍然减少了困惑。然而,未过滤的API调用中的一些噪声实际上可能是有用的,因为它迫使在 C ∗ C^ * C上进行微调的模型不总是盲目地遵循它所做的每个调用的结果。

6 相关工作

预训练语言模型 预训练过程中,有多种方法可以用某种形式的额外文本信息来增强语言模型,包括各种形式的元数据、HTML标签、维基百科标记或从信息检索系统获得的相关文本。所有的这些方法总是会提供额外的信息,无论是否有帮助。相反,Toolformer自己学习明确地请求正确的信息。

工具的使用 有几种方法旨在使LMs具备使用外部工具(如搜索引擎)的能力,网页浏览器,计算器,翻译系统和Python解释器。这些模型学习使用工具的方式**大致可以分为两种方法:要么依赖于大量的人类监督,或者他们通过提示语言模型在针对特定任务量身定制的几次设置中工作,其中先验地知道需要使用哪些工具。**相比之下,Toolformer的自我监督特性使它能够学习如何以及何时使用工具,而不需要特定的提示来显示如何使用工具的特定任务示例。也许与我们的工作最密切相关的是TALM ,这种方法使用类似的自我监督目标来教模型使用计算器和搜索引擎,但只在模型为下游任务进行微调的设置中进行探索。

自举技术 使用自我训练和自举技术来改进模型的想法已经在各种情况下进行了研究,包括词义消歧,关系提取,解析,序列生成,少量文本分类和检索到推理。与这些方法类似,在应用基于困惑度的过滤步骤后,Toolformer根据自己的预测进行训练。

7 局限性

虽然本文的方法使LMs能够以一种自我监督的方式学习如何使用各种工具,但目前该方法所能达到的效果有一些明显的限制。一个限制是Toolformer不能在一个链中使用工具(即,使用一个工具的输出作为另一个工具的输入)这是因为每个工具的API调用都是独立生成的;因此,在调优数据集中没有链式工具使用的例子。==目前的方法也不允许LM以交互的方式使用工具——特别是对于搜索引擎这样的工具,它可能会返回数百个不同的结果,使LM能够浏览这些结果或以类似Nakano等人(2021)的精神来改进其搜索查询,这对某些应用程序至关重要。==除此之外,我们发现使用Toolformer训练的模型在决定是否调用API时通常对其输入的确切措辞敏感;这也许并不令人惊讶,因为已知LMs对zero-shot和 few-shot设置中提供的提示非常敏感。根据工具的不同,我们的方法样本效率也很低;例如,处理超过一百万个文档只会产生几千个对计算器API的有用调用示例。这个问题的一个潜在解决方案可能是迭代地应用我们的方法,类似于相关的自举方法。最后,在决定是否进行API调用时,Toolformer目前没有考虑进行API调用所产生的依赖于工具的计算成本。

8 结论

Toolformer语言模型,它通过简单的API调用,以自我监督的方式学习如何使用不同的工具,如搜索引擎、计算器和翻译系统,通过对大量采样的API调用进行调优来实现。这些API调用是根据它们是否减少了对未来tokens的困惑度进行过滤的。Toolformer大大提高了6.7B参数GPT-J模型的zero-shot性能,使其在一系列不同的下游任务中甚至优于更大的GPT-3模型。

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清辉依次减

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值