引言
- 大语言模型在zero-shot和few-shot情况下,在很多下游任务中取得了很好的结果。
- 大模型存在的限制:无法获取最新的信息、无法进行精确的数学计算、无法理解时间的推移等。这些限制可以通过扩大模型规模一定程度上解决,但是效果并不好。
- 一个简单的方式用于处理这些限制就是让大语言模型能够调用外部工具。
- 现有的通过调用外部工具的方式需要大量的人类标注,或只能针对特定的任务使用工具。
- Toolformer对使用工具的能力的学习是通过自监督的方式进行的,因此不需要大量的标注;同时,该模型并没有丢失掉其本身的语言模型能力;它能够自行决定什么时候和如何使用一个外部工具。
- 数据集并非人工标注,而是通过对于每个API给出几个使用样例,使用上下文学习法让一个语言模型自动对一个大语言模型原始数据集中可能调用API的地方进行标注。
- 通过一个自监督的损失函数判定这些API调用是否真的能帮助模型预测下一个词元。最后对模型进行微调。
- 进行了一系列的下游任务实验,作者们发现基于GPT-J的Toolformer模型的效果显著超过了大得多的GPT-3模型和其他几个基线模型。
方法
- 对于每一个API调用的输入和输出,都是文本序列的形式,这样就使得API调用可以无缝插入到文本中。
- 以两个特殊的字符表示每一次API调用的开始和结束。
- 对于原始的数据集,将这个数据集转换为包含了API调用的数据集:首先,通过上下文学习获得的模型得到包含API的数据集;接着,通过API调用工具并判断得到的结果对预测后续的词元是否有帮助(被用作一种过滤方式);最后,将调用不同API的数据集合并成一个完整的数据集,并基于该数据集对模型进行微调。
限制
- 模型不能连续地调用一系列工具。例如一个工具的输出需要作为另一个工具的输入。
- 模型不能以一种交互的方式运作。例如,无法通过浏览搜索引擎的所有结果来提升其性能。
- 模型对输入内容敏感,无法确定何时需要调用外部工具的API。这是由于大语言模型对Prompt敏感导致的。
- 模型在决定是否调用API时,没有考虑到工具是否可靠和调用过程所发生的计算消耗。
结论
- 本文介绍了Toolformer,该模型通过自监督的方式进行训练,学习如何使用不同的外部工具API。
- Toolformer是通过微调其他模型获得的,微调所用的数据集中的样本是一系列通过过滤得到的能够帮助模型预测下一个词元的API调用。
- Toolformer显著提升了在zero-shot情况下GPT-J模型的性能,使得其可以在一系列下游任务中比其他大得多的GPT模型的表现更好。