论文笔记--Toolformer: Language Models Can Teach Themselves to Use Tools
论文笔记--Toolformer: Language Models Can Teach Themselves to Use Tools
- 1. 文章简介
- 2. 文章概括
- 3 文章重点技术
- 3.1 Toolformer
- 3.2 APIs
- 4. 文章亮点
- 5. 原文传送门
1. 文章简介
- 标题:Toolformer: Language Models Can Teach Themselves to Use Tools
- 作者:Timo Schick, Jane Dwivedi-Yu, Roberto Dessì, Roberta Raileanu, Maria Lomeli, Luke Zettlemoyer, Nicola Cancedda, Thomas Scialom
- 日期:2023
- 期刊:arxiv preprint
2. 文章概括
文章给出了一种可以自动调用API的LLM方法“Toolformer”,该工具可以自行决定是否调用API,何时调用API以及调用什么API,从而达到通过API检索增强增加LLM回答的可靠性。
3 文章重点技术
3.1 Toolformer
给定语言模型 M M M,给定一系列可供调用的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的输入,API会返回结果 r r r,记 e ( c , r ) = < A P I > a c ( i c ) → r < / A P I > ) e(c, r) = <API> a_c(i_c) \to r</API>) e(c,r)=<API>ac(ic)→r</API>),其中 < A P I > , < / A P I > , → <API>, </API>, \to <API>,</API>,→表示特殊token,用于区分API的输入和输出。给定数据集 C = { x 1 , … , x ∣ C ∣ } \mathcal{C} = \{x^1, \dots, x^{|\mathcal{C}|}\} C={x1,…,x∣C∣},其中 x i x^i xi表示输入的文本。则Toolformer按照如下的步骤进行训练、推理:
- Sampling API Calls:首先,对每个API接口,我们设计一个对应的prompt“ P ( x ) P(x) P(x)"让模型自动改写原始输入为调用API的输入。如下图所示,对一个原始输入文本 x x x,对任意位置 i ∈ { 1 , … , n } i\in\{1, \dots, n\} i∈{1,…,n},我们基于 x 1 , … , x i − 1 , P ( x ) x_1, \dots, x_{i-1}, P(x) x1,…,xi−1,P(x)预测下一个token是 < A P I > <API> <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:i−1),如果条件概率值高于给定阈值 τ s \tau_s τs,则认为模型应该在该位置调用API,如果存在高于 k k k个位置的概率值大于 τ s \tau_s τs,则只保留top k k k个位置。最终得到需要调用API的位置集合 I = { i ∣ p i > τ s } I=\{i|p_i > \tau_s\} I={i∣pi>τs}(不超过k个)。接下来,对每个 i ∈ I i\in I i∈I,我们基于 [ P ( x ) , x 1 , … , x i − 1 , < A P I > ] [P(x), x_1, \dots, x_{i-1}, <API>] [P(x),x1,…,xi−1,<API>]调用API接口得到接下来的预测结果。

- Executing API Calls: 接下来执行上述语言模型自动生成的API调用文本 c i c_i ci,得到对应的结果 r i r_i ri。
- Filtering API Calls:令 L i ( z ) = − ∑ j = i n w j − i log p M ( x j ∣ z , x 1 : j − 1 ) L i + = L i ( e ( c i , r i ) ) L i − = min ( L i ( ϵ ) , L i ( e ( c i , ϵ ) ) ) L_i(z) = -\sum_{j=i}^n w_{j-i} \log p_M(x_j | z, x_{1:j-1})\\L_i^+ = L_i(e(c_i, r_i))\\L_i^- = \min (L_i(\epsilon), L_i(e(c_i, \epsilon))) Li(z)=−j=i∑nwj−ilogpM(xj∣z,x1:j−1)Li+=Li(e(ci,ri))Li−=min(Li(ϵ),Li(e(ci,ϵ))),其中 ϵ \epsilon ϵ表示空序列。上述 L i + L_i^+ Li+实际表示给定 x 1 , … , x j − 1 x_1, \dots, x_{j-1} x1,…,xj−1和API返回结果 r i r_i ri,模型预测得到 x j x_j xj的加权概率的负数, L i − L_i^- Li−表示不进行API访问,或者只进行API访问但是不返回结果的情况下,模型得到 x j x_j xj的最小损失。如果 L i + L_i^+ Li+比 L i − L_i^- Li−小很多,则可以认为访问API确实带来了收益。从而我们可以通过设置阈值 τ f \tau_f τf,当 L i − − L i + ≥ τ f L_i^- - L_i^+ \ge \tau_f Li−−Li+≥τf时,认为模型应该在 i i i位置访问API。
- Model Finetuning:给定文本 x x x和位置 i i i处的API访问结果 ( c i , r i ) (c_i, r_i) (ci,ri),我们可重写输入文本为 x 1 : i − 1 , e ( c i , r i ) , x i : n x_{1:i-1}, e(c_i, r_i), x_{i:n} x1:i−1,e(ci,ri),xi:n,最后基于数据集 C \mathcal{C} C生成SFT数据集 C ∗ \mathcal{C}^* C∗。在 C ∗ \mathcal{C}^* C∗上对模型进行微调,得到我们的toolformer工具。
- Inference:推理阶段,我们进行正常的解码,直至模型生成 → \to →特殊token,此时我们将 < A P I > , → <API>, \to <API>,→之间的文本输入待调用的API,得到结果 r r r,然后我们将该结果拼接到模型的解码结果中,并插入 < / A P I > </API> </API>特殊token进行标记,然后继续解码直至结束。

3.2 APIs
我们选择了多种API对语言模型进行加强:
- 针对问答类型的文本,文章采用问答大模型Atlas作为API进行加强
- 针对数学计算,文章采用一个简单的python工具作为API进行加强
- 针对维基百科搜索,文章采用BM25作为API进行加强
- 针对多语言,文章采用fast-text进行语言检测,然后通过NLLB作为API统一翻译成英文进行加强
- 针对日期类问题,文章直接返回系统当前日期作为API进行加强
4. 文章亮点
文章提出了Toolformer工具,可通过对数据集进行采样、过滤生成SFT数据集,从而对LM进行微调,得到一个通过访问不同API来对LM能力进行加强对工具。实验表明,文章提出的Toolformer在多个API相关的下游任务上有明显提升,且ppl结果表示模型在自然语言生成任务上的能力并没有降级。
5. 原文传送门
Toolformer: Language Models Can Teach Themselves to Use Tools
相关文章:
论文笔记--Toolformer: Language Models Can Teach Themselves to Use Tools
论文笔记--Toolformer: Language Models Can Teach Themselves to Use Tools 1. 文章简介2. 文章概括3 文章重点技术3.1 Toolformer3.2 APIs 4. 文章亮点5. 原文传送门 1. 文章简介 标题:Toolformer: Language Models Can Teach Themselves to Use Tools作者&#…...
stm32实现0.96oled图片显示,菜单功能
stm32实现0.96oled图片显示,菜单功能 功能展示简介代码介绍oled.coled.holedfont.h(字库文件)main函数 代码思路讲解 本期内容,我们将学习0.96寸oled的进阶使用,展示图片,实现菜单切换等功能,关…...
sqlite外键约束 保证数据一致性
1. 外键约束 在SQLite中,可以通过使用外键(Foreign Key)约束和CASCADE选项来实现通过外键删除相关信息。 CASCADE选项是指在主键表中删除记录时,相应的外键表中的相关记录也将被自动删除。 -- 创建主键表 CREATE TABLE Persons…...
Vue轻松入门,附带学习笔记和相关案例
目录 案例 一Vue基础 什么是Vue? 补充:mvvm框架 mvvm的组成 详解 Vue的使用方法 1.直接下载并引入 2.通过 CDN 使用 Vue 3.通过npm安装 4.使用Vue CLI创建项目 二插值表达式 什么是插值表达式? 插值表达式的缺点 解决方法 …...
【青蛙跳台阶问题 —— (三种算法)】
青蛙跳台阶问题 —— (三种算法) 一.题目介绍1.1.题目1.2.图示 二.解题思路三.题解及其相关算法3.1.递归分治法3.2.动态规划算法(Dynamic Programming)3.3.斐波那契数列法 四.注意细节 一.题目介绍 1.1.题目 一只青蛙一次可以跳上1级台阶&am…...
联想yoga AMD处理器 转接头无法电量外接显示器
第一次买AMD的处理器,当时就是为了yogaAMD这款的接口要比英特尔的接口多,没想到AMD处理器真的问题多。经常蓝屏不说,偶尔还点不亮外接显示器。遇到这种问题,不是什么驱动问题,可能你按照网上各种方法打开设备管理器→显…...
OSG粒子系统与阴影 - 阴影shadow(7)
OSG阴影 在虚拟现实仿真中,为了真实地模拟自然效果,阴影效果是不可缺少的,它对一个场景的真实性是非常重要的。在游戏或仿真中,一个高效的阴影往往能够提供非常强悍的视觉真实感。 osgShadow库 在OSG中专门定义了一个名字空间osg…...
vue3项目中使用富文本编辑器
前言 适配 Vue3 的富文本插件不多,我看了很多插件官网,也有很多写的非常棒的,有UI非常优雅让人耳目一新的,也有功能非常全面的。 如: Quill,简单易用,功能全面。editorjs,UI极其优…...
Java EE 进程线程
JavaEE 进程&线程 文章目录 JavaEE 进程&线程1. 进程1.1 概念1.2 进程管理1.3 PCB (Process Control Block) 2. 线程2.1 概念2.1 线程与进程的区别2.3 创建线程 1. 进程 1.1 概念 什么是进程? 进程是操作系统对一个正在执行的程序的一种抽象 我们可以打开…...
GPT写SQL的模版
表:profit_loss_sum_m_snapshot 计算字段:成本cost_whole求和,收入income_whole求和,收入求和-成本求和,成本目标cost_target求和,收入求和-成本目标求和 条件:日期statis_date在2023-11-01&…...
蓝桥杯官网练习题(平均)
问题描述 有一个长度为 n 的数组( n 是 10 的倍数),每个数 ai 都是区间 [0,9] 中的整数。小明发现数组里每种数出现的次数不太平均,而更改第 i 个数的代价为 bi,他想更改若干个数的值使得这 10 种数出现的次数相等…...
【无标题】动手学深度学习_现代神经网络_未完
这里写目录标题 深度学习之前的网络 AlexNetAlexNet得到了竞赛冠军AlexNet架构Alex net更多细节数据增强 VGGNiN知识补充flop暂退法 drop_out 深度学习之前的网络 1、核方法 机器学习 SVM现在还是很广泛的使用,因为对调参的需求不那么大,对调参不太敏感…...
Java王者荣耀
GameFrame 图片 package 王者荣耀;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.ArrayList;import javax.soun…...
【理解ARM架构】操作寄存器实现UART | 段的概念 | IDE背后的命令
🐱作者:一只大喵咪1201 🐱专栏:《理解ARM架构》 🔥格言:你只管努力,剩下的交给时间! 目录 🍠操作寄存器实现UART🍟UART原理🍟编程 🍠…...
python 左值查找 右值查找
左值查找 在一组数据中查找出 数字x 在这组数据中第一次出现的索引并输出,没有找到则输出-1查找方式:二分查找 数据前提:一组数据要有序一组数据: arr [2, 3, 3, 3, 5, 7, 9, 11, 13, 15, 17]测试: 示例1ÿ…...
机器学习之自监督学习(四)MoCo系列翻译与总结(二)
MoCo中相关工作的对比分析 去噪自动编码器(Denoising Autoencoder)是一种用于学习数据表示的神经网络模型。它的主要目标是通过去除输入数据中的噪声,学习到输入数据的有用表示,从而提高模型对干净数据的鲁棒性。下面是对去噪自动…...
元宇宙企业3d数字展厅轻松低本搭建更全面、多元、趣味化的展览
对所有企业来说,拥有一个3D线上展厅是互联网营销必不可少的部分,但是3D线上展厅定制周期长费用高,让很多企业公司望而却步,web3d开发公司制作的3D线上企业展厅制作平台备导览地图、语音解说、交互热点、全景漫游、自主行走、链接跳…...
华为OD机试真题-开源项目热榜-2023年OD统一考试(C卷)
题目描述: 某个开源社区希望将最近热度比较高的开源项目出一个榜单,推荐给社区里面的开发者。对于每个开源项目,开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。 数据库里面统计了每个开源项目关注、收藏、fork、issue、MR的数量,开源项目的热…...
深入探索Maven:优雅构建Java项目的新方式(一)
Maven高级 1,分模块开发1.1 分模块开发设计1.2 分模块开发实现 2,依赖管理2.1 依赖传递与冲突问题2.2 可选依赖和排除依赖方案一:可选依赖方案二:排除依赖 3,聚合和继承3.1 聚合步骤1:创建一个空的maven项目步骤2:将项目的打包方式改为pom步骤…...
Shopee如何入驻?如何防封?
Shopee作为东南亚领航电商平台,面向东南亚蓝海市场,近年来随着东南亚市场蒸蒸日上,虾皮也吸引了大批量的跨境商家入驻。那么接下来就给想要入驻的虾皮小白一个详细的安全入驻教程。 一、商家如何入驻 虾皮与LAZADA最大的区别就是商家即卖家&…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
