LLM之Agent(五)| AgentTuning:清华大学与智谱AI提出AgentTuning提高大语言模型Agent能力

​论文地址:https://arxiv.org/pdf/2310.12823.pdf

Github地址:https://github.com/THUDM/AgentTuning

       在ChatGPT带来了大模型的蓬勃发展,开源LLM层出不穷,虽然这些开源的LLM在各自任务中表现出色,但是在真实环境下作为AI Agent仍与商业模型的效果存在较大差距,比如ChatGPT和GPT-4等。Agent把LLM当做核心控制器来完成任务规划、记忆和工具使用等功能,这既需要细粒度的Prompt方法,又需要强大的LLMs来获得满意的性能。

       现有针对LLM代理能力的研究主要关注设计提示或构建框架来完成某一特定代理任务,而没有从根本上提升LLM自身的通用Agent能力。许多相关工作专注于提升LLM在特定方面的能力,这通常以牺牲其通用能力为代价,也降低了其泛化能力。针对上述问题,清华大学与智谱AI提出了AgentTuning方法。

       AgentTuning是一种简单而通用的方法,既可以增强LLM的Agent能力,有可以同时保持其通用LLM能力。AgentTuning具体方法是首先构造一个包含高质量交互轨迹的轻量级指令调优数据集AgentInstruction,然后采用混合指令微调策略将AgentInstruction与来自通用领域的开源指令相结合。AgentTuning对Llama 2系列模型进行指令微调产生AgentLM。

一、AgentTuning方法介绍

       对于一个代理任务,LLM代理的交互轨迹可以记录为对话历史(u1,a1,…,un,an)。考虑到现有的对话模型通常包括两个角色,用户和模型,ui表示来自用户的输入,ai表示来自的响应模型每个轨迹都有一个最终奖励r∈[0,1],反映了任务的完成状态。

、构造AgentInstruction数据集

        大语言模型的指令数据已经广泛应用于预训练好的LLM来获得更好的指令跟随能力,比如FLAN、InstructGPT模型。然而,收集Agent任务的指令要困难得多,因为它涉及Agent在复杂环境中的交互轨迹。AgentInstruction数据集构建有三个主要阶段:指令构建、轨迹交互和轨迹过滤。整个过程使用GPT-3.5(GPT-3.5-turbo-0613)和GPT4(GPT-4-0613)实现完全自动化,使该方法能够轻松扩展到新的Agent任务。

2.1 指令构建

       作者使用六个现实世界场景相对容易收集指令的Agent任务来构建AgentConstruct数据集,包括AlfWorld、WebShop、Mind2Web、知识图、操作系统、数据库。具体请参考如下表所示:

任务派生

       对于常见的Agent任务,可以直接从相似的数据集构造指令。对于数据库任务,我们需要从BIRD(是一个仅用于SELECT的数据库基准)中构建指令。我们运行了两种类型的任务派生。首先,作者使用问题和每个BIRD子任务中的参考SQL语句来构建轨迹。然后,我们使用参考SQL语句查询数据库来获取对应的输出,并将其作为Agent的答案。最后,让GPT-4结合上述信息的情况下补充Agent的想法。通过这种方式,可以直接从BIRD数据集中生成正确的轨迹。

       然而,由于该合成过程决定了交互的轮数固定为2,然后作者又提出了另一种方法,不是直接生成轨迹,而是通过构建指令来提高多样性。作者把BIRD的问题作为Prompt向GPT-4请求,并收集其与数据库的交互轨迹。收集到轨迹后,执行参考SQL语句并将结果与来自GPT-4的结果进行比较,过滤掉错误的答案,只收集正确的轨迹。

Self-Instruct

       对于操作系统任务来说,由于难以在终端执行OS命令来获得指令,因此作者采用了Self-Instruct方法构建任务。首先通过Prompt给GPT-4提出一些与操作系统相关的任务,以及任务说明、参考解决方案和评估脚本。然后,把任务作为Prompt给另一个GPT-4(求解器)并收集其轨迹。在任务完成之后,运行参考解决方案,并与使用评估脚本GPT-4(求解器)生成的结果进行比较。最后收集两者相同的轨迹数据。对于DB任务,由于BIRD只包含SELECT数据,我们需要使用Self-Instruct发光法来构造其他数据库操作类型(比如INSERT、UPDATE和DELETE)。

测试数据污染风险分析

       值得注意的是,如果GPT-4输出的指令与测试集中的指令相同,或者如果测试任务是从派生的同一数据集构建的,那么这两种方法可能存在测试数据污染的风险。作者对其做了污染分析。

       作者采用了基于token的污染分析方法。具体是对训练数据和测试样本进行分词,然后匹配10-gram,最多允许4个不匹配。如果10-gram在训练数据和测试数据都包括,那么这个10-gram被认为是污染了。作者将评估样本的污染率定义为该样本的token污染率。如果评估样本的污染率大于80%,我们将其定义为“dirty”,如果其污染率低于20%,则为“clean”。具体如下表所示:

2.2 交互轨迹生成

        在构建了初始指令后,作者使用GPT-4(GPT-4-0613)作为轨迹交互的代理。对于Mind2Web任务,由于大量的指令和预算限制,作者部分使用ChatGPT(gpt-3.5-turbo-0613)进行相互作用。

       由于代理任务对输出格式的严格要求,作者采用了1-shot评估方法。对于每项任务,针对训练数据集都生成一个完整的交互过程。

交互过程

       交互过程有两个主要部分:首先,给模型一个任务描述和一个成功的1-shot实例,然后,开始实际的交互。给模型提供当前的指令和必要的信息。模型会基于这些信息和先前的反馈会形成一个想法和一个动作。然后环境提供反馈,包括可能的更改或新信息。此循环会持续到模型达到其目标或达到其令牌限制。如果模型连续三次重复相同的输出,认为这是一次反复的失败。如果模型的输出格式错误,我们使用BLEU度量进行比较所有可能的动作选择,并选择最接近的匹配项作为该步骤的模型动作。

CoT比率

      思维链推理方法可以显著增强LLM逐步推理的推理能力。作者采用ReAct作为推理框架,会输出CoT每个步骤的解释(简称thought),直到完成最终的动作。因此,所收集的交互轨迹伴随着详细的轨迹细节,使模型能够学习引导行动的推理过程。对于不使用thought而使用任务推导生成的轨迹,作者使用GPT-4来补充thought,以与ReAct Prompting保持一致。

2.3 交互轨迹过滤

       为了确保数据质量,需要严格过滤其相互作用轨迹。由于每个互动轨迹都会得到一个奖励r,可以基于奖励r自动选择高质量的轨迹。根据最终奖励r=1可以过滤除Mind2Web外的所有任务的轨迹。然而,由于Mind2Web任务相对较难,我们使用r≥2/3确保可以获得足够数量的轨迹。在表2中,我们展示了7B模型在过滤与不过滤轨迹上进行微调的效果对比。

经过上述步骤过滤之后,最终AgentInstruction数据集得到1866条数据。

、指令微调

3.1 通用领域指令

       最近的研究表明,使用多样化的用户Prompt训练模型可以提高模型的性能。作者从ShareGPT数据集(https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered)选择了57096个GPT-3.5会话和3670个GPT-4会话。从GPT-4回复的高质量数据中按照采样率为1:4抽取GPT-4和GPT-3.5的样本。

3.2 混合训练

       从下表5可以看出,Agent任务数据和通用数据混合训练才能在agent任务和通用领域都表现良好,因此混合训练主要优化如下loss:

PS:通过调整不同的η,发现η = 0.2时held-out任务的效果是最好的。

3.3 训练设置

       作者选择开源Llama 2(Llama-2-{7,13,70}b-chat)作为基础模型。参考Vicuna,作者将所有数据标准化为多轮聊天机器人风格的格式,这样可以很方便地混合不同来源的数据。作者使用Megatron-LM微调Llama 2 7B、13B和70B的模型,并且在微调过程中,只计算模型输出的损失。

  • 学习率:7B和13B模型的学习率为5e-5,70B模型为1e-5;
  • 批次大小:设置了批次大小为64;
  • 序列长度:序列长度为4096;
  • 优化器:我们使用AdamW优化器,其中余弦学习调度器具有2%的预热步骤。

     为了训练高效,作者使用了tensor并行和pipeline并行。训练详细超参数见下表6所示:

、效果评估

4.1 评估设置

Held-in/out任务:评估的任务如下表3所示:

通用任务:为了全面评估模型的总体能力,作者选择了常用的4个任务,分别是反映了模型的知识能力(MMLU),数学能力(GSM8K),编码能力(Humaneval)和人类偏好(MT Bench)。

baseline:从下图1可以看出,基于api的商业模型明显超过了开源模型在代理任务中的表现。因此,作者选择了GPT-3.5(GPT-3.5-turbo-0613)以及GPT-4(GPT-4-0613)作为Agent。因其卓越的指令跟随能力,选择评估开源的Llama 2聊天版本(Llama-2-{7,13,70}b-chat)。参考AgentBench,作者也截断了超过模型长度限制的对话历史,并且使用贪婪解码。对于WebArena,我们采用核采样,p=0.9进行探索。

总体分数计算:任务难度的差异可能导致直接计算平均分有失公允,因此对每个任务的得分进行归一化,并将其缩放到1的平均值以实现平衡基准评估。任务权重如下表3所示:

4.2 实验主要结论

        从表4可以看出,AgentLM展示了Llama 2系列不同大小模型在held-in任务和held-out任务中都有显著改进,同时保持通用任务的性能。held-in任务的改进比held-out任务更明显,但是held-out任务的提升仍然达到至170%。这证明了AgentLM模型作为一般代理的潜力。在若干任务中,AgentLM的13B和70B版本甚至超过了GPT-4。

       对于大多数held-in任务,Llama 2的性能几乎为零,这表明Llama 2完全无法处理这些任务。然而,AgentLM的基本错误明显较少,这表明该方法有效地激活了模型的Agent能力。值得注意的是,70BAgentLM的总体性能接近GPT-4。

        在held-out任务中,70B AgentLM的性能接近GPT-3.5,70B模型和7B模型分别都有176%和76%的提升。这是因为更大的模型具有更强的泛化能力能力,在相同的训练数据上有更好的泛化性。

       在通用任务上,AgentLM在四个维度(知识,数学、编码和人类偏好)上的表现与Llama 2不相上下。这充分表明,即使增强了Agent能力,AgentLM模型也能保持相同的通用能力。

4.3 错误分析

       为了深入研究错误分析,作者从held-in任务集中选择了三个任务(ALFWorld、WebShop、KG),并使用基于规则的方法识别常见错误类型,例如无效动作和重复生成。结果如图3(a)所示:

       总的来说,Llama2会出现如重复生成和采取无效行动的基本错误,相比之下,GPT-3.5尤其是GPT-4产生这种错误更少。然而,AgentLM显著减少了这些基本错误。作者推测,虽然Llama 2 chat模型本身具有Agent能力,但其较差,可能是由于缺乏对Agent数据对齐训练;AgentTuning有效的激活了其Agent潜力。

参考文献:

[1] https://arxiv.org/pdf/2310.12823.pdf

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编写Yaml文件当Poc,利用Nuclei扫描器去扫描漏洞

编写Yaml文件当Poc,利用Nuclei扫描器去扫描漏洞 YAML是一种数据序列化语言,它的基本语法规则注意如下: -大小写敏感 -使用缩进表示层级关系 -缩进时不允许使用Tab键,只允许使用空格。 -缩进的空格数目不重要,只要相同层级的元…

VSCode如何设置Vue前端的debug调试

vscode在调试vue.代码时,如何进行debug? 1.安装Chrome Debug插件。 2.在launch.json中,将url修改成你前端项目的路径: 1 {2 // Use IntelliSense to learn about possible attributes.3 // Hover to view descriptions of existing att…

redis 三主三从高可用集群docker swarm

由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Redis的集群,其作用是提供在多个Redis节点间共享数据的程序集。 官网介绍地址 re…

Elasticsearch:向量数据库的真相

通过工作示例了解什么是向量数据库、它们如何实现 “相似性” 搜索以及它们可以在明显的 LLM 空间之外的哪些地方使用。除非你一直生活在岩石下,否则你可能听说过诸如生成式人工智能和大型语言模型(LLM)之类的术语。 除此之外,你很…

如何利用Axure制作移动端产品原型

Axure是一款专业的快速原型设计工具,作为专业的原型设计工具,Axure 能够快速、高效地创建原型,同时支持多人协作设计和版本控制管理。它已经得到了许多大公司的采用,如IBM、微软、思科、eBay等,这些公司都利用Axure 进…

SAP UI5 walkthrough step7 JSON Model

这个章节,帮助我们理解MVC架构中的M 我们将会在APP中新增一个输入框,并将输入的值绑定到model,然后将其作为描述,直接显示在输入框的右边 首先修改App.controllers.js webapp/controller/App.controller.js sap.ui.define([&…

python变量的命名和使用

变量名只能包含字母、数字和下划线 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头。例如,可将变量命名为message_1,但不能将其命名为1_message。 Python 语言中,以下划线开头的标识符有特殊含…

翻译: 生成式人工智能的经济潜力 第3部分工作和生产力的影响 The economic potential of generative AI

麦肯锡报告 翻译: 生成式人工智能的经济潜力 第一部分商业价值 The economic potential of generative AI翻译: 生成式人工智能的经济潜力 第2部分行业影响 The economic potential of generative AI 1. 工作和生产力的影响 技术几十年来一直在改变工作的解剖学。多年来&…

c++新经典模板与泛型编程:const修饰符的移除与增加

const修饰符的移除 让你来写移除const修饰符&#xff0c;你会怎么样来写&#xff1f; &#x1f602;&#x1f602;trait类模板&#xff0c;如下 #include <iostream>// 泛化版本 template<typename T> struct RemoveConst {using type T; };// 特化版本 template…

阿里云(云服务器)上搭建项目部署环境

目录 安装docker docker安装MySQL5.7.37 安装MySQL 方式一&#xff1a;docker中MySQL时区调整 方式二&#xff1a;docker中MySQL时区调整 docker安装MySQL8.0.27 docker安装redis5.0.14 云服务器上安装jdk1.8 安装docker 1、先卸载docker&#xff0c;因为有一些服务器…

西南科技大学C++程序设计实验十(函数模板与类模板)

一、实验目的 1. 掌握函数模板与类模板; 2. 掌握数组类、链表类等线性群体数据类型定义与使用; 二、实验任务 1. 分析完善以下程序,理解模板类的使用: (1)补充类模板声明语句。 (2)创建不同类型的类对象,使用时明确其数据类型? _template<typename T>__…

c-语言->数据在内存的存储

系列文章目录 文章目录 系列文章目录前言 前言 目的&#xff1a;学习整数在内存的储存&#xff0c;什么是大小端&#xff0c;浮点数的储存。 1. 整数在内存中的存储 在讲解操作符的时候&#xff0c;我们就讲过了下⾯的内容&#xff1a; 整数的2进制表⽰⽅法有三种&#xff0…

动手学习深度学习-跟李沐学AI-自学笔记(3)

一、深度学习硬件-CPU和GPU 芯片&#xff1a;Intel or AMD 内存&#xff1a;DDR4 显卡&#xff1a;nVidia 芯片可以和GPU与内存通信 GPU不能和内存通信 1. CPU 能算出每一秒能运算的浮点运算数&#xff08;大概0.15左右&#xff09; 1.1 提升CPU利用率 1.1.1 提升缓存…

自动驾驶学习笔记(十六)——目标跟踪

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 匹配关联 轨迹记录 状态预测 总结 前…

【文件上传系列】No.2 秒传(原生前端 + Node 后端)

上一篇文章 【文件上传系列】No.1 大文件分片、进度图展示&#xff08;原生前端 Node 后端 & Koa&#xff09; 秒传效果展示 秒传思路 整理的思路是&#xff1a;根据文件的二进制内容生成 Hash 值&#xff0c;然后去服务器里找&#xff0c;如果找到了&#xff0c;说明已经…

【智能家居】七、人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

一、翔云 人工智能开放平台 API文档开发示例下载 二、编译openSSL支持libcurl的https访问 安装SSL依赖库openSSL(使用工具wget)libcurl库重新配置&#xff0c;编译&#xff0c;安装运行&#xff08;运行需添加动态库为环境变量&#xff09; 三、编程实现人脸识别 四、Base6…

12.4每日一题(备战蓝桥杯顺序结构程序设计)

12.4每日一题&#xff08;备战蓝桥杯顺序结构程序设计&#xff09; 题目1000: 【入门】AB Problem题目描述输入输出样例输入样例输出来源/分类 题解 1000: 【入门】AB Problem题目 2124: 计算(ab)c的值题目描述输入输出样例输入样例输出来源/分类 题解 2124: 计算(ab)c的值题目…

UML案例分析

首先需要花大约20分钟来思考解决这个问题&#xff0c;如果对问题不是很熟悉&#xff0c;也可以在完成题目之后&#xff0c;找相关的资料翻阅&#xff08;例如看UML类图的基本情况&#xff0c;UML状态图的基本情况&#xff0c;然后结合这些信息 做一个自我评价&#xff0c;看这个…

matlab 最小二乘拟合空间直线(方法三)

目录 一、算法原理1、算法过程2、参考文献二、代码实现三、结果展示四、相关链接博客长期更新,GPT与爬虫自重,你也未必能爬到最新版本。 一、算法原理 1、算法过程 空间直线的点向式方程为:

poe与chatgpt那个功能更强大

在当前的人工智能领域&#xff0c;Poe Al Chat以其卓越的聊天能力和实用的功能&#xff0c;受到了大家的广泛关注和喜爱。本文好为您个绍Poe Al Chat的功能&#xff0c;以及我们国内用户如何进行充值订阅。Poe Al Chat是一个基于OpenAl的GPT模型开发的人工智能聊天工具。它能够…