当前位置: 首页 > news >正文

Re75 读论文:Toolformer: Language Models Can Teach Themselves to Use Tools

诸神缄默不语-个人CSDN博文目录
诸神缄默不语的论文阅读笔记和分类

论文全名:Toolformer: Language Models Can Teach Themselves to Use Tools
论文下载地址:https://arxiv.org/abs/2302.04761

这篇文章是介绍tool learning的,大概来说就是训练模型实现这个功能:根据query判断是否需要通过调用工具(传参进API)来获取一些特定信息(比如天气、实时汇率等,还有计算器、问答系统、搜索引擎、翻译系统、日历)。结合工具返回的结果,LLM输出最终结果。
这种做法在现在LLM里用的也蛮多的了,现在应该已经可以实现在一句话里多次调用、链式调用API了?(虽然据说可能会出现死锁,所以必须要DAG捏)

在这里插入图片描述

很多细节懒得写了,大家看原文吧。

文章目录

  • 1. 思路
  • 2. Toolformer
    • 用字符串表示一个API调用
    • API
  • 3. 实验
    • 1. 数据集构建
    • 2. 主实验结果
    • 3. 模型分析
      • 1. Scaling Laws
      • 2. 解码策略
      • 3. 数据质量

1. 思路

Toolformer主要致力于解决一些LLM反而解决不了的基础问题(比如算术,比如获取最新信息(LLM缺失最新信息也使其倾向于产生幻觉,这块我的理解是这就是很直觉的因为LLM不知道所以就瞎编)),解决方案就是让LLM去调用外部工具。
现存的解决方案要么需要人工标注1,要么外部工具类型单一2 3,而Toolformer就可以实现:

  • 自监督学习使用工具,不需要大规模人工标注。
  • 工具可选范围广泛

2. Toolformer

训练过程实现方法:

  1. 用LLM自监督标注出API调用训练集(可以视为是bootstrapping方法)
    大致来说就是根据query抽样API调用位置和命令,执行命令,从返回的结果中选出不会降低接下来token的语言模型损失函数的样本中损失函数最低的样本。
    (设计评估API的损失函数这里有很多太细节的东西我就懒得写了,总之这里有一点比较tricky就是拿API召回结果当前缀……)
    最后将返回结果嵌入LLM回答中。

    以QA工具为例,抽样时采用的prompt模版(全部模版见Appendix A.2):
    在这里插入图片描述

    整体流程:
    在这里插入图片描述
  2. 微调LLM

推理过程:在出现token时调用API

用字符串表示一个API调用

一个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输入(参数)。
r r r是API返回结果,我们定义序列化的API调用(指用字符串表示的一个API调用),带不带返回结果的如下两种情况:
在这里插入图片描述
<API></API>→是特殊字符,在实际实验中用词表中存在的token[]->来替代,如Figure 1所示:
在这里插入图片描述

API

具体选了哪些API之类的,我懒得写了。总之在这里粘一下正文图表:

API及其输入输出示例:
在这里插入图片描述

3. 实验

1. 数据集构建

↓ 这个是调用API的位置和“调用API有用”的位置之间的threshold和API量,就是权重低于这个阈值才会选择调用(把这个样本放进数据集)。threshold是API-specific的。细节见原文及Appendix A。
在这里插入图片描述

2. 主实验结果

LAMA:评估标准略,总之LM是应用于left-to-right模式,以及对多token场景评估准确率用的不是完全匹配。
在这里插入图片描述

求解数学题:用模型生成的结果中的第一个数字
在这里插入图片描述

QA:(本文提及希望与搜索内容互动。啊这个思路感觉很多新模型已经实现了……)
在这里插入图片描述

跨语言QA:
在这里插入图片描述

带时间信息的数据集:
在这里插入图片描述

LM:
在这里插入图片描述

3. 模型分析

1. Scaling Laws

用GPT-2系列来分析模型具不具有scaling laws:
在这里插入图片描述

2. 解码策略

top-k里的那个k:
在这里插入图片描述

3. 数据质量

检验API返回结果的有效性:
在这里插入图片描述


  1. (2022 ACL) Internet-Augmented Dialogue Generation
    (2022 谷歌) Re69:读论文 LaMDA: Language Models for Dialog Applications ↩︎

  2. PAL: Program-aided Language Models ↩︎

  3. TALM: Tool Augmented Language Models
    Internet-augmented language models through few-shot prompting for open-domain question answering ↩︎

相关文章:

Re75 读论文:Toolformer: Language Models Can Teach Themselves to Use Tools

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文全名&#xff1a;Toolformer: Language Models Can Teach Themselves to Use Tools 论文下载地址&#xff1a;https://arxiv.org/abs/2302.04761 这篇文章是介绍tool learning的&#xff0c;大概来说就是…...

Android App系统签名

1.在AndroidManifest中添加 android:sharedUserId"android.uid.system" 2.获取系统签名 把以下所有文件放入同一个文件夹命名为sign 在Android系统源码中的\build\target\product\security目录下找到platform.x509.pem 和 platform.pk8两个文件&#xff1b; 在out/…...

Shiro认证(Authentication)

Shiro简介&#xff1a;特性和架构 Apache Shiro是一个功能强大且易于使用的Java安全&#xff08;权限&#xff09;框架&#xff0c;提供了认证、授权、会话管理、加密、与Web集成、缓存等功能。Shiro不仅可以在JavaSE环境中使用&#xff0c;也可以在JavaEE环境中使用。 特性 …...

Qt和c++面试集合

目录 Qt面试 什么是信号&#xff08;Signal&#xff09;和槽&#xff08;Slot&#xff09;&#xff1f; 什么是Meta-Object系统&#xff1f; 什么是Qt的MVC模式&#xff1f; 1. QT中connect函数的第五个参数是什么&#xff1f;有什么作用&#xff1f; 3. 在QT中&#xff…...

Spark 3.3.x版本中的动态分区裁剪(DPP,Dynamic Partition Pruning)的实现及应用剖析

文章目录 Dynamic Partition Pruning&#xff08;DPP&#xff09;的作用DPP生效的一些要点DPP生效的简单SQL示例DPP生效SQL的解析示例Deduplicate Correlated SubqueryRewrite Predicates as JoinRewrite Join With Dynamic SubqueryRewrite Dynamic Subquery as Dynamic Expre…...

Android 各国语言value文件夹命名规则

中文 values-zh英语values-en 阿拉伯语 values-ar 保加利亚语 values-bg加泰罗尼亚语values-ca 捷克语 values-cs 丹麦语 values-da 德语 values-de 希腊语 values-el 西班牙语 values-es 芬兰语 values-fi 法语 values-fr 希伯来语 values-iw 印地语 values-hi 克罗里亚语 …...

深入理解Redis锁与Backoff重试机制在Go中的实现

文章目录 流程图Redis锁的深入实现Backoff重试策略的深入探讨结合Redis锁与Backoff策略的高级应用具体实现结论 在构建分布式系统时&#xff0c;确保数据的一致性和操作的原子性是至关重要的。Redis锁作为一种高效且广泛使用的分布式锁机制&#xff0c;能够帮助我们在多进程或分…...

uniapp-小程序开发0-1笔记大全

uniapp官网&#xff1a; https://uniapp.dcloud.net.cn/tutorial/syntax-js.html uniapp插件市场&#xff1a; https://ext.dcloud.net.cn/ uviewui类库&#xff1a; https://www.uviewui.com/ 柱状、扇形、仪表盘库&#xff1a; https://www.ucharts.cn/v2/#/ CSS样式&…...

Go语言数据库操作深入讲解

go操作MySQL 使用第三方开源的mysql库: github.com/go-sql-driver/mysql (mysql驱动)github.com/jmoiron/sqlx (基于mysql驱动的封装) 命令行输入 &#xff1a; go get github.com/go-sql-driver/mysqlgo get github.com/jmoiron/sqlx Insert操作 登录后复制 // 连接Mysql data…...

搜维尔科技:SenseGlove Nova 2触觉反馈手套开箱测评

SenseGlove Nova 2触觉反馈手套开箱测评 搜维尔科技&#xff1a;SenseGlove Nova 2触觉反馈手套开箱测评...

步步精科技诚邀您参加2024慕尼黑华南电子展

尊敬的客户&#xff1a; 我们诚挚地邀请您参加即将于2024年10月14日至10月16日在深圳国际会展中心 &#xff08;宝安新馆&#xff09;举办的慕尼黑华南电子展(electronica South China)。本届将聚焦人工智能、数据中心、新型储能、无线通信、硬件安全、新能源汽车、第三代半导…...

OPC UA与PostgreSQL如何实现无缝连接?

随着工业4.0的推进&#xff0c;数据交换和集成在智能制造中扮演着越来越重要的角色。OPC UA能够实现设备与设备、设备与系统之间的高效数据交换。而PostgreSQL则是一种强大的开源关系型数据库管理系统&#xff0c;广泛应用于数据存储和管理。如何将OPC UA与PostgreSQL结合起来&…...

C语言[斐波那契数列2]

本篇文章讲述前一篇文章的细节&#xff0c;方便大家进行代码的运算。 本次代码题为: 输出斐波那契数列的前20位数&#xff0c;每行4位数。 详细解释: 在 main 函数中&#xff0c;首先定义了循环变量 i 和用于存储斐波那契数列项的三个长整型变量 f1 、 f2 和 temp 。其…...

八、Linux之实用指令

1、指定运行级别 1.1 基本介绍 运行级别说明 0 &#xff1a;关机 1 &#xff1a;单用户【找回丢失密码】 2&#xff1a;多用户状态没有网络服务&#xff08;用的非常少&#xff09; 3&#xff1a;多用户状态有网络服务&#xff08;用的最多&#xff09; 4&#xff1a;系统未使…...

2024_E_100_连续字母长度

连续字母长度 题目描述 给定一个字符串&#xff0c;只包含大写字母&#xff0c;求在包含同一字母的子串中&#xff0c;长度第 k 长的子串的长度&#xff0c;相同字母只取最长的那个子串。 输入描述 第一行有一个子串(1<长度<100)&#xff0c;只包含大写字母。 第二行为…...

清空redo导致oracle故障恢复---惜分飞

客户由于空间不足,使用> redo命令清空了oracle的redo文件 数据库挂掉之后,启动报错 Fri Oct 04 10:32:57 2024 alter database open Beginning crash recovery of 1 threads parallel recovery started with 31 processes Started redo scan Errors in file /home/oracle…...

VAE(与GAN)

VAE 1. VAE 模型概述 变分自编码器&#xff08;Variational Autoencoder, VAE&#xff09;是一种生成模型&#xff0c;主要用于学习数据的潜在表示并生成新样本。它由两个主要部分组成&#xff1a;编码器和解码器。 编码器&#xff1a;将输入数据映射到潜在空间&#xff0c;…...

【高等数学】多元微分学(二)

隐函数的偏导数 二元方程的隐函数 F ( x , y ) 0 F(x,y)0 F(x,y)0 推出隐函数形式 y y ( x ) yy(x) yy(x). 欲求 d y d x \frac{d y}{d x} dxdy​ 需要对 F 0 F0 F0 两边同时对 x x x 求全导 0 d d x F ( x , y ( x ) ) ∂ F ∂ x d x d x ∂ F ∂ y d y d x ∂ F…...

.NET 中的 Web服务(Web Services)和WCF(Windows Communication Foundation)

一、引言 在当今数字化时代&#xff0c;不同的软件系统和应用程序之间需要进行高效、可靠的通信与数据交换。.NET 框架中的 Web 服务和 WCF&#xff08;Windows Communication Foundation&#xff09;为此提供了强大的技术支持。它们在构建分布式应用程序、实现跨平台通信以及…...

Linux小知识2 系统的启动

我们在上文中介绍了文件系统&#xff0c;提到了Linux的文件系统存在一个块的概念&#xff0c;其中有一个特殊的块&#xff1a;引导块。这和我们这里要讲的系统启动有关。 BIOS 基本输入输出系统&#xff0c;基本上是一个操作系统最早实现也是最早运行的第一个程序。是一个比较…...

Oracle-19g数据库的安装

简介 Oracle是一家全球领先的数据库和云解决方案提供商。他们提供了一套完整的技术和产品&#xff0c;包括数据库管理系统、企业级应用程序、人工智能和机器学习工具等。Oracle的数据库管理系统是业界最受欢迎和广泛使用的数据库之一&#xff0c;它可以管理和存储大量结构化和…...

Dubbo快速入门(二):第一个Dubbo程序(附源码)

文章目录 一、生产者工程0.目录结构1.依赖2.配置文件3.启动类4.生产者服务 二、消费者工程0.目录结构1.依赖2.配置文件3.启动类4.服务接口5.controller接口 三、测试代码 本博客配套源码&#xff1a;gitlab仓库 首先&#xff0c;在服务器上部署zookeeper并运行&#xff0c;可以…...

不同数据类型转换与转义的对比差异

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 在C和C语言中&#xff0c;类型转换与转义是有点像的&#xff0c;有时可能被误解&#xff0c;这块需要仔细辨别。 类型转换形如&#xff0c;把不同字节数或相同字节数的类型值进行转换&#xff0c;强调的是数值转换过去&…...

Kylin系统安装VMwareTools工具

如下图所示&#xff0c;安装好Kylin系统之后&#xff0c;还未安装VMwareTools工具&#xff0c;导致系统画面无法填充虚拟机 正常安装了VMwareTools工具后的系统画面 所以&#xff0c;接下来我们介绍一下如何在Kylin系统下安装VMwareTools工具 首先&#xff0c;点击VMware工具栏…...

uni-app 拍照图片添加水印

获取图片信息 uni.chooseImage({count: 6, //默认9sizeType: ["original", "compressed"], //可以指定是原图还是压缩图&#xff0c;默认二者都有sourceType: ["camera"], //从相册选择success: async function (result: any) {if (!props.isMar…...

Docker-registry私有镜像仓库的安装

Docker-registry私有镜像仓库的安装 我在这里的镜像仓库搭建在ip为192.168.3.23的虚机中。 安装docker-registry 1.拉取镜像 # docker pull registry 2.查看镜像 # docker images REPOSITORY TAG IMAGE ID CREATE…...

在vue3中实现祖组件给后代组件传参,可以跨域几层。

使用provide和inject就可以 下面是祖组件代码&#xff1a; //这是祖组件// 引入provide import { provide } from "vue";//定义数据 const projectId ref("");// 给后代组件传参 provide("projectId", projectId); 下面是后代组件代码&#…...

【优选算法】——双指针(上篇)!

&#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a;C刷题算法总结&#x1f516;克心守己&#xff0c;律己则安 目录 前言&#xff1a;双指针 1. 移动零&#xff08;easy&#xff09; 2. 复写零&#xff08;easy&#xff09; 3…...

【C语言】数据输出格式控制

数据的输出格式修饰 常用两种&#xff1a; 整型中&#xff0c;输出数据左对齐、右对齐、占m位、不足m位前补0。浮点型中&#xff0c;默认通过四舍五入保留小数点后6位&#xff0c;通过参数设置保留小数点后n位。 #include <stdio.h> #define PI 3.14159 /* 功能&#x…...

Qt-界面优化选择器的用法(70)

目录 描述 使用 类型选择器 ID 选择器 并集选择器 子控件选择器 伪控制器 描述 QSS 的选择器⽀持以下⼏种 选择器⽰例说明全局选择器*选择所有的 widget.类型选择器 (type selector)QPushButton选择所有的 QPushButton 和其⼦类的控件.类选择器 (class selector).QPus…...