AAAI 2024:大模型如何掌握复杂工具?看孔子框架的教学之道

如今,大型语言模型(LLM)发展飞速,在文本和图像生成方面表现都很出色,但在我们的实际生活中,要理解和正确使用各种工具方面尚存在困难。人们期望这些模型在解决实际问题时能够灵活运用和理解各种工具,例如在规划路线、智能家居等生活场景中,模型可能需要准确选择和使用各种工具。

为了应对 LLM 在实际应用场景中使用各种复杂工具时面临的挑战,作者提出了孔子(Confucius)框架,通过当一个出色的“老师”,使 LLM 在贴近我们生活的应用场景中更加智能。通过多阶段学习、迭代自指导和反思反馈(ISIF)等策略,该框架使 LLM 能够更好地掌握各种工具。

图片

▲图1 现有基于微调的工具学习方法与Confucius 的比较

论文题目:
Confucius: Iterative Tool Learning from Introspection Feedback by Easy-to-Difficult Curriculum

论文链接:
https://arxiv.org/abs/2308.14034


工具学习(Tool Learning)

图片

▲表1 相关工作的比较

工具学习可以让 LLM 与各种工具进行有效交互以完成复杂任务。通过将 LLM 与 API 相结合,可以大大扩展其功能,使 LLM 成为用户与广泛的应用生态系统之间的高效桥梁。目前主流的方法可以分成以下2大类:

  • 无微调(tuning-free)的工具学习:利用 LLM 天生具备的上下文学习能力的方法。在这种方法中,输入工具的演示,来提示 LLM 使用各种工具。然而,该方法存在两个主要缺点:

    1. 数据安全问题:由于数据安全原因,不是所有应用都能将工具和用户数据传输给 LLM 服务提供商。这限制了在这些应用中使用专有 LLM 的可能性。

    2. 输入长度限制:由于输入长度的限制,提示无法容纳大量工具,因此导致对大量工具的应用存在一定的限制。

  • 基于微调(tuning-base)的工具学习:是一种直接在工具使用数据集上微调语言模型参数的方法,通常通过提示专有 LLM 使用特定工具来构建(如搜索、计算和翻译)。这些方法大多首先使用自指导技术从专有 LLM 中收集工具使用数据,然后微调一个开源模型。其优势在于它们可以轻松部署在自托管环境中。然而,在构建的数据集上微调语言模型通常会引入泛化问题

孔子(Confucius)框架

Confucius 包含两个主要阶段:

  1. 为了解决训练 LLM 使用复杂工具的挑战,首先提出一个多阶段学习方法,通过一个从易到难的课程,教授 LLM 使用各种工具。

  2. 提出了一种迭代的内省与更新(ISIF)技术,动态更新数据集,为模型的训练提供更有针对新的样本,以提高模型使用复杂工具的能力。

图片

▲图2  整体架构包括多阶段学习和迭代自指导和内省反馈

多阶段学习

这是一种分阶段进行模型训练的方法,旨在逐步提高模型对复杂任务的学习能力。该方法通常包含多个训练阶段,每个阶段都侧重于不同的任务或难度水平,使模型能够逐渐适应和提高性能。如图 2 所示,一般包括以下几个阶段:

  • 热身训练阶段(Warm-Up Training):在这个阶段,模型接触到一些基本的任务或信息,以建立起对基础知识的了解。这有助于模型建立起基础,为后续学习提供一个良好的起点。

  • 同类别训练阶段(In-Category Training):模型在这个阶段接触到与任务相关的更多信息,学习如何在同一类别的任务中进行选择和应用,这有助于模型更好地理解任务的内在特征和模式。

  • 跨类别训练阶段(Cross-Category Training):模型在这个阶段进一步面对更广泛的任务和场景,以在不同类别的任务中进行训练,可以提高模型的泛化能力,使其能够应对更多样化和复杂的情境。

多阶段学习的优势:它能够使模型逐步适应任务的复杂性,避免一开始就让模型直接面对过于困难的情况。这种分阶段的学习过程能够更好地引导模型学到有用的特征和知识,提高模型在真实场景中的性能。

迭代式内省与更新

为了对复杂工具进行更有针对性的训练,这个阶段通过动态构建数据集,根据模型内省的反馈,迭代地定制工具使用的训练数据。如图 2 所示,该阶段包括两个子阶段:实例生成(Instance Generation)和内省与更新(Updates with Introspective Feedback)。

  1. 实例生成: 首先建立一个工具存储库,包含了 110 个常用的工具和使用实例。这些实例是手动构建的,每个包括一个具体的提问和一个按照思维链格式构建的答案,至少涉及四个工具,以促使数据集的复杂性。接着,从工具存储库中随机选择 5 至 7 个工具,构成工具集 。然后,使用这些工具的演示作为提示,通过 ChatGPT 生成各种提问,并通过组合推理回答这些提问。由于复杂工具需要更多的训练数据,预先创建的数据集与训练过程中经过优化后的 LLM 不同步,因此需要生成更多有针对性的样本来不断更新数据集。

图片

▲表1 与其他工具使用数据集的比较

  1. 更新与内省反馈: 由于通过自指导生成的实例可能没有受到任何有针对性的训练指导,因此需要构建一个提示来指导实例生成。给定一个包含  个 token 的提问 ,首先检索一个工具集 ,然后将  提供给 LLM 生成回复。通过计算生成的回复  相对于  和  的生成概率,可以得到回复的生成困惑度 。困惑度表示生成的不确定性程度,因此具有更高困惑度的样本需要在后续训练中进行更多的训练。在内省反馈更新阶段,通过过滤具有高困惑度的实例,得到一个被筛选的实例集 。然后,这些被筛选的实例用于自指导提示,生成更多类似的工具使用实例进行进一步的训练。这个过程是迭代的,每个时期都使用更新后的数据集对模型进行训练,以动态改善工具使用的性能。

实验

总体性能

如表 2 的实验表明,Confucius 在已见和未见工具集上均取得显著优异的表现,相较于其他 Baseline 表现更为出色。在已见测试集中,Confucius 在工具选择方面实现了显著的改进,比 ChatGPT 的绝对改善为 4.99。这表明 Confucius 在正确选择工具方面具有潜在的强大性能。

图片

▲表2 整体实验结果比较

在组合推理方面,Confucius 在已见和未见工具集上相较于微调 baseline 有显著提升,同时超越了 ChatGPT。这表明 Confucius 在处理复杂任务时受益于链式思维的工具使用实例,为其性能提供了有效支持。

在未见工具集中,Confucius 胜过了 ChatGPT 等无微调方法,这证明 Confucius 具备有效的泛化工具使用能力。相较之下,其他微调 baseline 在从已见工具集推广到未见工具集时表现出性能下降,而 Confucius 的性能下降相对较小,这要归功于其迭代训练策略 ISIF,为 LLM 提供了更强大的工具使用技能。

此外,工具检索器的效果也得到了验证,实验结果显示该工具检索器能够有效地找到与真实情况相匹配的适当工具。人工评估结果也进一步印证了 Confucius 相对于其他方法的卓越性。

人工评估

人工评估的结果如表 3 所示。在两个方面,即可执行性和流畅性,Confucius始终优于 SOTA 工作。此外,与 ChatGPT 相比,本文的框架取得了可比甚至更好的结果,进一步验证了其有效性。两个评估指标的平均 Kappa 统计分别为 0.762 和 0.732,说明评估者之间存在一致性。

图片

▲表3 在可见和不可见测试集上的人工评估

多阶段训练的分析

在表 2 中,作者还进行了消融实验。可以看到所有的变体模型性能都下降了,这证实了作者在 Confucius 中提出的多阶段训练方法的有效性。相较于其他两个变体模型,去除跨类别训练的模型在工具选择得分方面的性能降低最为显著。这一现象表明,构建一个类似于实际场景的候选工具集以提高LLM的工具选择能力是非常必要的。

ISIF 的分析

为了进行公平比较,作者采用了一种与 ISIF 不同的方法,即根据高困惑度实例的内省反馈,随机抽取了一些实例用作自指导的提示,以生成新实例。然后,更新后的数据集用于训练 LLaMA,该模型与 Confucius 使用相同的基本模型。图 3 展示了在不同大小的初始数据集上训练的模型的性能。可以看到,本文提出的 ISIF 在每个数据集大小上的性能始终优于随机更新数据集的方法,这验证了根据内省反馈动态更新数据集的有效性。

图片

▲图3 Confucius 与变体模型的比较

不同基础模型的泛化

作者为了进一步探索提出的 Confucius 的鲁棒性,使用 Confucius 对其他两个开源LLM(LLaMA2-7B 和 Vicuna-7B)进行调优。正如表 2 所示,与相应的无微调版本相比,使用 Confucius 训练的两个模型在工具选择得分上都取得了较大的优势,这证明了该框架的泛化性。

总结

本文提出了一种名为孔子(Confucius)的工具学习框架,通过采用多阶段学习方法和迭代式内省与更新数据集(ISIF)策略,成功地提升了 LLM 在实际应用场景中掌握复杂工具的能力,从而有效改善了工具使用的效果。具体来说,作者通过从易到难的课程,即热身、同类和跨类别阶段,对 LLM 进行了微调。由于某些工具在不同场景中的使用方式不同,需要更多的训练来充分理解使用方式,因此引入了 ISIF,根据模型内省迭代更新工具使用训练数据集。

实验结果表明,孔子工具学习框架在实现 LLM 对多种工具的更智能学习方面取得了显著成果。这一框架不仅提高了模型在各项实验指标上的性能,而且通过多阶段学习和迭代自指导的结合,使得 LLM 更具适应性和灵活性,能够更好地应对实际应用场景中的各种挑战。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/278922.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux(ubuntu)下git / github/gitee使用

先附上git命令 linuxchenxiao:~$ cd Templates/ 先进入一个目录,也可mkdir新建一个目录:用于接下来初始化为git可以管理的仓库 这个目录就是所说的工作目录,指当前正在进行开发的项目的本地目录。 linuxchenxiao:~/Templates$ git init 已…

大数据技术发展史

今天我们常说的大数据技术,其实起源于Google在2004年前后发表的三篇论文,也就是我们经常听到的“三驾马车”,分别是分布式文件系统GFS、大数据分布式计算框架MapReduce和NoSQL数据库系统BigTable。 你知道,搜索引擎主要就做两件事…

js for和forEach 跳出循环 替代方案

1 for循环跳出 for(let i0;i<10;i){if(i5){break;}console.log(i) }在函数中也可以return跳出循环 function fn(){for(let i0;i<10;i){if(i5){return;}console.log(i)} } fn()for ... of效果同上 2 forEach循环跳出 break会报错 [1,2,3,4,5,6,7,8,9,10].forEach(i>…

基于虚拟机ubuntu的linux和shell脚本的学习,以及SSH远程登陆实战

简介 特点 是一款操作系统,跟windows,macos一样,有下面的特点 简单和高效,一切皆文件,所有配置都通过修改文件解决,不需要繁琐的权限和设置 权限高,把所有细节都交给用户,可完全自定义 安全,所有程序只有自己执行才会启动 分类 1、debian系主要有Debian&#xff0c;Ubun…

出海合规云安全,AWS Landing Zone解决方案建立安全着陆区

在出海的大环境中&#xff0c;企业数字化转型的趋势之一就是上云。然而&#xff0c;上云也带来了新的挑战&#xff0c;特别是对企业的 IT 建设和管理提出了更高的要求。为了构建一个安全合规的云上信息系统环境&#xff0c;满足企业中不同用户的快速增长、资源访问可控、成本可…

Selenium在vue框架下求生存

vue框架下面&#xff0c;没有id、没有name&#xff0c;vue帮开发做了很多脏活累活&#xff0c;却委屈了写页面自动化测试的人&#xff08;当然&#xff0c;也给爬信息的也带来了一定的难处&#xff09;。这里只能靠总结&#xff0c;用一些歪门邪道&#xff1a; 一、跟开发商量…

三台CentOS7.6虚拟机搭建Hadoop完全分布式集群(二)

这个是笔者大学时期的大数据课程使用三台CentOS7.6虚拟机搭建完全分布式集群的案例&#xff0c;已成功搭建完全分布式集群&#xff0c;并测试跑实例。 6.安装JDK 以下操作现在master上操作&#xff0c;然后远程复制到slave01、slave02即可。 6.1 将压缩包发送到master节点机…

【连接池】-从源码到适配(下),使用dynamic-datasource导致连接池没生效(升级版本)

写在前面 书接上文&#xff0c;连接池没生效&#xff0c;启用了一个什么默认的连接池。具体是什么&#xff0c;一起来看看源码吧。 目录 写在前面一、问题描述二、本地调试三、升级dynamic-datasource四、新的问题&#xff08;一&#xff09;数据源初始化问题&#xff08;二&am…

【nodejs】前后端身份认证

前后端身份认证 一、web开发模式 服务器渲染&#xff0c;前后端分离。 不同开发模式下的身份认证&#xff1a; 服务端渲染推荐使用Session认证机制前后端分离推荐使用JWT认证机制 二、session认证机制 1.HTTP协议的无状态性 了解HTTP协议的无状态性是进一步学习Session认…

Vue2+element-ui 实现select选择器结合Tree树形控件实现下拉树效果

效果&#xff1a; DOM部分 &#xff1a; // 设置el-option隐藏的下拉选项&#xff0c;选项显示的是汉字label&#xff0c;值是value // 如果不设置一个下拉选项&#xff0c;下面的树形组件将无法正常使用 <el-form-item label"报警区域" prop"monitorId"…

Spring Boot 基于Redisson实现注解式分布式锁

依赖版本 JDK 17 Spring Boot 3.2.0 Redisson 3.25.0 源码地址&#xff1a;Gitee 导入依赖 <properties><redisson.version>3.25.0</redisson.version> </properties><dependencies><dependency><groupId>org.projectlombok</…

Linux 安装Jupyter notebook 并开启远程访问

文章目录 安装Python安装pip安装Jupyter启动Jupyter Notebook1. 生成配置文件2. 创建密码3. 修改jupyter notebook的配置文件4. 启动jupyter notebook5. 远程访问jupyter notebook 安装Python 确保你的系统上已经安装了Python。大多数Linux发行版都预装了Python。你可以在终端…

QT/C++ 远程数据采集上位机+服务器

一、项目介绍&#xff1a; 远程数据采集与传输 课题要求:编写个基于TCP的网络数据获取与传输的应用程序; 该程序具备以下功能: 1)本地端程序够通过串口与下位机(单片机)进行通信&#xff0c;实现数据采集任务 2)本地端程序能将所获取下位机数据进行保存(如csv文本格式等); 3…

[ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择

文章目录 一、前言二、Amazon SNS 服务&#xff08;Amazon Simple Notification Service&#xff09;三、Amazon SQS 服务&#xff08;Amazon Simple Queue Service&#xff09;四、SNS 与 SQS 的区别&#xff08;本文重点&#xff09;4.1 基于推送和轮询区别4.2 消费者数量对应…

【教学类-43-04】20231229 N宫格数独4.0(n=2,4,6,8) (ChatGPT AI对话大师生成 回溯算法)

作品展示&#xff1a; 背景需求&#xff1a; 幼儿表示自己适合做5宫格 第一次AI生成九宫格数独python代码 【教学类-43-03】20231229 N宫格数独3.0&#xff08;n1、2、3、4、6、8、9&#xff09; &#xff08;ChatGPT AI对话大师生成&#xff09;-CSDN博客文章浏览阅读162次&…

Python武器库开发-武器库篇之上传本地仓库到Git(三十八)

武器库篇之上传本地仓库到Git(三十八) 当我们在Git中创建远程仓库和进行了SSH key免密登陆之后&#xff0c;我们点击 Your respositories 可以查看我们所创建的远程仓库&#xff0c;如图所示&#xff1a; 如果我们需要将本地的仓库上传到Git&#xff0c;首先我们需要建立一个本…

nodeJS搭建免费代理IP池爬取贴吧图片实战

之前用python写过爬虫&#xff0c;这次想试试nodeJS爬虫爬取贴吧图片&#xff0c;话不多说代码如下&#xff0c;爬取制定吧的前十页所有帖子里的图片 爬取贴吧图片脚本 你得提前创建一个images文件夹 const axios require("axios"); const cheerio require("…

Spark应用程序的结构与驱动程序

Apache Spark是一个强大的分布式计算框架&#xff0c;用于处理大规模数据。了解Spark应用程序的结构和驱动程序是构建高效应用的关键。本文将深入探讨Spark应用程序的组成部分&#xff0c;以及如何编写一个Spark驱动程序来处理数据和执行计算。 Spark应用程序的结构 Spark应用…

vue3项目使用pako库解压后端返回zip数据

文章目录 前言一、pako 介绍一些特点和功能&#xff1a;简单示例 二、vue3 实战示例1.安装后引入库安装:引用用自定义hooks 抽取共用逻辑部署小插曲 前言 外部接口返回一个图片数据是经过zip压缩的&#xff0c;前端需要把这个数据处理成可以显示的图片。大概思路&#xff1a;z…

LTPI协议的理解——2、LTPI实现的底层架构

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 LTPI协议的理解——2、LTPI实现的底层架构 前言一、体系结构三、实现细节四、物理接口信号传输方法总结 前言 前面讲了LTPI的定义和大概结构&#xff0c;接下来继续理解LTPI…