赶上最新的AI论文

Meta 开发了 Toolformer,这是一种学习如何使用工具的语言模型

Meta 开发了 Toolformer,这是一种学习如何使用工具的语言模型

大型语言模型

三个要点
✔️ 大规模语言模型具有惊人的能力,只需几个例子和指令就能解决问题
✔️,而较简单的工具在计算和事实检查方面表现更好

✔️ 为了充分利用这两个方面的优势,我们提出了一种语言模型--Toolformer,它可以通过将工具调用指令转换为文本来自我学习如何使用外部工具。

Toolformer: Language Models Can Teach Themselves to Use Tools
written by Timo SchickJane Dwivedi-YuRoberto DessìRoberta RaileanuMaria LomeliLuke ZettlemoyerNicola CanceddaThomas Scialom
(Submitted on 9 Feb 2023)
Comments: Published on arxiv.

Subjects:  Computation and Language (cs.CL)

code:  

本文所使用的图片要么来自论文、介绍性幻灯片,要么是参考这些图片制作的。

介绍

语言模型在回答各种问题时,会交错地生成让人类感到舒服的句子。然而,这些模型经常被批评为说假话和计算错误。

这是否仅限于语言模型?

说假话、算错账的是人们自己。

不过,我认为可以说,人类与语言模型的不同之处在于,当事实很重要或计算不能出错时,他们不会依赖朦胧的知识或死记硬背的计算,而是使用搜索引擎或计算器来查找。

因此,如果语言模型能够使用搜索引擎和计算器等工具,而不是仅仅依靠自己的知识和能力,那么即使是语言模型也可以说是表现得更加人性化了。

在本文所述的论文中,我们提出了 Toolformer,一种通过简单的 API(可编程应用程序接口,调用其他工具的窗口)自学如何使用外部工具的方法,这样语言模型就可以像人类一样使用这些工具。本文提出的 Toolformer 是一种通过简单的应用程序接口(Application Programmable Interface,即调用其他工具的窗口)自学如何使用外部工具的方法。

所提出的方法可以自我学习调用哪些 API、何时调用、传递哪些参数以及如何将结果最好地纳入标记预测(语言模型旋转下一个单词)。只需对每个 API 进行几次演示,就能学会如何使用 API;通过 API 调用的工具包括计算器、问答系统、两个不同的搜索引擎、翻译系统、日历等。

与学习如何在各种任务中使用该工具之前相比,所提出的方法大大提高了性能。研究发现,即使使用相对较小的语言模型,该工具也能达到与较大语言模型相当的性能。

语言模型需要通过 API 学习如何使用工具

语言模型如何学习使用工具?

语言模型只能输入和输出文本。

因此,工具本身的使用也必须以文本的形式表达出来。

因此,应用程序接口调用用以下文本表示。

[应用程序接口名称(输入到应用程序接口)]->应用程序接口输出

API 调用文本的具体示例

现在,一个具体的文本示例如图 1 所示。

图 1.学习工具所需的学习数据示例。

第一个示例展示了名为问答系统 QA 的应用程序接口的使用。在标记预测"《新英格兰医学杂志》是注册商标 "之后,会调用问答系统。问答系统被问到"《新英格兰医学杂志》在哪里是注册商标?的问题。结果,问答系统给出的答案是马萨诸塞州医学会,并象征性地预测它属于马萨诸塞州医学会。

第二个示例展示了计算器 API 的使用。在标记预测 "1400 名参与者中有 400 人(换句话说)"之后,计算器被调用并输入 400/1400,计算结果为 0.29。计算后,令牌预测器显示 "29% 通过了测试"。

第三个例子来自翻译系统 MT,这是一个 API。其名称来自 "la tortuga"。在标记预测 "西班牙语 "之后,翻译系统被调用,输入 tortuga,得到翻译结果 "tortoise"。在翻译结果之后,继续进行标记预测 "这是一只乌龟"。

第四个示例使用维基百科搜索 WikiSearch API。它以"《布朗法案》是加利福尼亚州的一项法律 "为关键词调用 WikiSearch。搜索 "布朗法案 "的结果是:"《拉尔夫-M-布朗法案》是加利福尼亚州议会颁布的一项法律,它保障公众出席和参与地方立法机构会议的权利。搜索结果是一个象征性的预测:"我们需要一个像市议会这样的立法机构,举行向公众开放的会议"。

因此,如果您记得在文本中插入[应用程序接口名称(应用程序接口的输入)]→应用程序接口的输出,您就可以在正确的时间调用各种工具,并在下一次预测中反映出来。

创建包含 API 调用文本的数据集

我们在前面已经解释过,要让语言模型学习 API 调用,必须将 API 调用表示为文本。换句话说,语言模型要学习 API 调用,就必须创建一个数据集,在其中适时插入 API 调用文本。因此,所提出的方法建议使用语言模型的上下文学习和概率预测来创建该数据集。

使用问答系统的示例 API 调用创建数据集的流程

数据集创建流程如图 2 所示。首先,假设有一组句子。这些句子被分成两部分。我们将创建 API 调用的文本,并将其插入这两部分句子之间。我们首先从语言模型中采样 API 调用,并执行 API 调用。然后,我们筛选出适当的 API 调用。筛选出的 API 调用文本将插入原始句子中。现在,数据集已准备就绪。

图 2:拟议方法的流程(问答系统应用程序接口示例)。

原文中的具体例子

具体来说,假设有这样一个句子 "匹兹堡以钢铁之城而闻名"。将这句话拆分成 "匹兹堡以此闻名 "和 "与钢铁之城"。

示例应用程序接口调用的具体示例

在此期间,作为问答系统 API 调用的输入,将插入 "匹兹堡又被称为什么?和 "匹兹堡位于哪个国家?"采样如下。具体来说,语言模型会得到以下提示。

您的任务是在文本中添加一个问答系统 API 调用。问题应作为文本的补充;可通过编写"[QA(问题)]"来调用 API,其中 "问题是您想问的问题"。 API 调用示例如下。输入:..., 输出:..."

因此,定义角色的 "角色提示 "和举例说明的 "fuchot 提示 "可以让语言模型为 API 调用生成输入。

执行 API 调用的具体示例

当实际输入问答系统的 API 调用时,得到的输出结果分别是 "钢铁之城 "和 "美国"。

筛选 API 调用和授予最佳 API 调用的具体示例

为了筛选 API 调用,将 "已添加 API 调用及其结果 "与 "未添加 "进行了比较。

例如,API 的输入及其输出 "What is Pittsburgh also known as?City of Steel "前缀为 "Pittsburgh is known as",将其输入语言模型,并计算标记预测 "City of Steel and "的概率。在这里,原句子在某种意义上被认为是正确的,因此,通过给 API 的输入及其输出添加前缀,可以确定 "与钢铁之城 "这一标记出现的概率越高,预测的正确率就越高。

因此,如果与 "无前缀 "相比,这种概率得到了适当提高,那么调用 API 就有了意义。这里的问题是 "匹兹堡又被称为什么?钢铁之城 "和 "匹兹堡位于哪个国家?美利坚合众国",与前言 "匹兹堡又被称为什么?钢铁之城",因为前缀 "钢铁之城 "增加了预测 "与钢铁之城 "和 "匹兹堡又被称为什么?钢铁之城 "的 API 输入/输出被判定为最佳 "API 调用及其结果"。

因此,可以通过研究对哪些 API 进行了哪些输入,以及在将输入/输出结果插入文本时,这种概率在哪些地方增加最多,来选择最合适的 API 调用。将最合适的 API 调用添加到数据集中,并将句子插入到原始句子中,这样就完成了一个包含 API 调用文本的数据集。

训练创建的数据集(微调语言模型)

创建的数据集用于微调语言模型。该论文仅将微调简要描述为 "使用标准语言模型的目标函数进行微调"。看来,使用某种用于语言模型微调的方法来训练数据集就足够了,无需在此赘述。

论文还强调,除了利用常规数据集进行微调的好处外,还可以学习何时以及如何使用这些工具。相信这是在说,无论如何做都没有坏处。

使用微调语言模型进行推理

在使用微调语言模型进行推理时,让语言模型像往常一样预测标记,直到生成->。一旦生成"->",就中断标记生成,从文本中识别出相应的 API 调用,并实际执行 API 调用工具。插入 "执行结果 "和"]"以恢复标记预测。

工具成型器评估结果

拟议方法的工具成形器评估结果如图 3 所示。

图 3.Toolformer 评估结果

评估基于三个问题:LAMA、Math Benchmarks 和 QA Benchmarks。这里的 LAMA 是一项完成短句的任务,其中包含缺失的事实(日期和地点);Math Benchmarks 是一道数学题;QA Benchmarks 是一道考察问题答案准确性的题目;QA Benchmarks 是一道考察问题答案准确性的题目。

本研究中的比较对象包括:Toolformer(提出的方法)、Toolfomer(已禁用)(在数据集上进行了微调,其基础模型与提出的方法相同,但没有 API 调用文本)以及 GPT3(有多个版本,模型参数数各不相同)和 GPT-2(有多个版本,模型参数数各不相同)。(GPT3(有多个版本,模型参数数各不相同)和 GPT-2(有多个版本,模型参数数各不相同),它们的参数大小小于 GPT3。

图 3 中的横轴为模型参数数,显示了 Toolformer、Toolformer(禁用)模型参数数的差异。具体来说,分别为 124M、355M、775M、1.6B 和 6.7B(B 以十亿为单位,M 以百万为单位)。顺便提一下,GPT-3 是 175B。纵轴是语言模型的性能,越大越好。

GPT-3 与 Toolformer 的比较

在 LAMA 中,当模型参数数为 6.7B 时,Toolformer 的性能优于 GPT3;在 Math Benchmarks 中,当模型参数数超过 1.6B 时,Toolformer 的性能优于 GPT-3。这表明,详细的事实检查和计算并不是大型语言模型的强项,而只需通过工具进行补偿就能提高性能。

另一方面,Toolfomer 在质量保证基准方面不如 GPT-3。本文认为,这是由于本研究中作为工具使用的搜索引擎性能较低,经常无法针对给定的问题提供适当的搜索结果。

研究还认为,这是因为在使用搜索引擎时,有必要与搜索引擎进行互动,但在本案中却没有这样做。换句话说,人们在使用搜索引擎时,通常会根据搜索引擎的搜索结果改变搜索条件,如果搜索结果的首页没有合适的信息,就会依次查看第二页和第三页。如果能够实现这种互动,我们认为 GPT-3 的性能可以与 GPT-3 相媲美。

工具成型器 vs 工具成型器(禁用)

在 LAMA、Math Benchmarks 和 QA Benchmarks 中,Toolfomer 的表现始终与 Toolformer(禁用)相当或更好。这可以认为表明,向数据集提供 API 调用文本没有副作用,通过 API 调用使用外部工具的效果也不错。当模型参数数为 124M 时也没有性能差异。模型参数数量过少表明首先无法使用工具,或者无法理解工具的执行结果。

结论

在这种情况下,通过利用语言模型本身的上下文学习和概率预测,并对语言模型进行微调,使其能够通过 API 调用来利用工具,就可以创建一个包含 API 调用文本的数据集。由于语言模型能够利用该工具,因此能够达到与大型语言模型相同或更好的性能。

一些结果表明,即使使用了工具,其性能也不如大规模语言模型,但在这种情况下工具的使用很简单,本文认为仍有更好地使用工具的余地。

此外,这次提出的 "如果任何东西都可以变成文本,那么语言模型就可以被学习 "的观点也非常有力,表明语言模型仍有很大的潜力。

我们非常期待今后通过语言建模进一步开展工具使用方面的研究

  • メルマガ登録(ver
  • ライター
  • エンジニア_大募集!!

如果您对文章内容有任何改进建议等,请通过 "联系我们 "表格与爱学网编辑部联系。
如果您能通过咨询表与我们联系,我们将非常感激。

联系我们