浙大发布Agent学习框架,13B 模型达到 ChatGPT 水平!

news2024/11/17 13:20:23

2023 年下半年,AI Agent 正式开启「大模型下半场」

图片

自“人工智能”这门学科创立之初,一种可以“观察世界”-“思考推理”-“做出行动”-“反思学习”的人造代理就是构建通用人工智能的终极目标之一。而基于大模型的 AI Agent 借助大模型强大的推理判断能力,为 AI Agent 的发展开启了一扇新的大门。

以 LangChain 的底层思想 ReACT 为例,大模型 Agent 在与外部环境互动时,经历“思考”-“行动”-“观察”三个步骤,通过将“行动”与“推理”结合,赋予大模型解决实际问题的能力

图片

但是,半年过去,直接使用类似 GPT-4 等闭源模型通过 Prompt 的方式构建 Agent 的思路尽管成绩斐然,但是不可避免的我们对这类 Agent 的掌控性往往并不高,一些结果不具有可解释性甚至不可复现。因此,一些工作开始在开源模型的基础上使用轨迹数据对模型进行微调,以使得 Agent 具备更强的解决问题的能力。

然而,微调这种思路面对着两大挑战,首先,微调需要数据,数据不可能完全由人工生成,那么不可避免的 Agent 进行规划所需的“思考轨迹”的数据依然依赖于闭源模型生成。其次,使用单一的一个语言模型,是否足够强大以使得其可以从数据中完整的学习出任务所需的一切规划能力也是一个 Agent 设计者与开发者不得不被考虑的问题

图片

基于此,来自浙江大学的团队 2024 年开年,创新了大模型 Agent 学习框架,提出了 AUTOACT,在不依赖大规模的标注数据和来自闭源模型合成的轨迹数据的基础上,通过分工策略生成能完成任务的子代理组,在与众多 Agent 的对比中表现出了相当不错的性能。当使用 Llama-2-13b 模型时,其表现甚至能够与 GPT-3.5-Turbo 相当!

论文题目:

AUTOACT: Automatic Agent Learning from Scratch via Self-Planning

论文链接:https://arxiv.org/pdf/2401.05268.pdf

AUTOACT 框架

首先,让我们来宏观的看一下 AUTOACT 的框架。AUTOACT 只需要关于目标任务的相关信息以及一个大模型 Agent (论文中称为 Meta-Agent)即可启动,如下图所示,Meta-Agent 首先进行“Self-Instruct”对任务数据进行扩充,并添加到其任务数据库之中,接下来,借助可用的工具库,Meta-Agent 可以自动挑选所用的工具,合成相关的轨迹数据,并通过“Self-Differentiation”进行自我分化,构建“规划”,“工具”,“反思”三个子智能体使用数据集中的数据进行微调学习,最终在三个子智能体的“合作”下,解决相关任务

图片

在这个框架之下,Meta-Agent 作为 AUTOACT 的中心,主要负责在分化子智能体前的一切“准备工作”,并且同时,Meta-Agent 也是分化的子智能体的基础模型。整个 Meta-Agent 可以使用任何一个开源模型进行初始化,而在论文中作者主要使用了 Llama-2 模型。

在初始时刻,任务数据库 D 被设置为仅仅包含任务描述中的示例 C,以 C 作为“种子”,在 Self-Instruct 阶段 Meta-Agent 通过 Few-shot 的方式生成新的“问题-答案”对,并添加到数据库 D 中,Few-shot 的示例数据由 D 中随机采样,依次重复知道数据库中数据量满足任务所需即停止。其 Few-shot 的 Prompt 为:

图片

在通过 Self-Instruct 搭建起数据集后,Meta-Agent 接下来完成“工具选择”与“轨迹合成”两步,其中工具选择用于从工具库中挑选完成任务所需的工具,其 Prompt 为:

图片

可以看到,在选择过程中,Meta-Agent 将为接下来分化的三个子 Agent 分别选择其所用的工具。在挑选好工具后,在不依赖闭源模型的情况下,论文使用 Zero-shot 的方式使得 Meta-Agent 基于数据集合成模型的思考轨迹数据,遵循 ReACT 的“思考”-“行动”-“观察”模式生成轨迹数据,从而辅助分化子智能体进行微调

图片

在合成轨迹数据之后,Meta-Agent 在 AUTOACT 中将进行自我分化,分化为“规划”,“工具”,“反思”三个子智能体,其中规划智能体  完成任务分解并决策在每次循环中调用哪个工具,工具智能体  用于生成调用工具的相关参数,反思智能体  通过考虑所有历史轨迹进行整体反思。在轨迹数据集的基础上,通过如下输入数据对使用 LoRA 对每个子智能体进行微调:

其中, 表明“思考”输出, 表示动作名称, 表示动作相关参数。 与   表示反思过程中的思考与行动。 分别表示任务综合信息,工具集以及历史信息。

由于进行了分化,因此在完成任务中,AUTOACT 需要子智能体之间的“配合”才能完成任务。首先任务信息进入规划智能体进行任务分解,返回所需工具名称 ,随后工具智能体被激活生成工具参数  并传输到特定的工具,返回工具的使用结果作为观测,在规划智能体与工具智能体进行互动给出任务结果后,反思智能体被激活,如果反思结表明认可任务结果,则结束任务,如果不认可则结合反思进行进入下一轮循环

图片

实验结果

论文实验主要在 HotpotQA 与 ScienceQA 两个问答数据集中进行,整体 AUTOACT 使用 Llama-2 作为 Meta-Agent,并与思维链 CoT,ReAct,Reflexion,Chameleon,FIREACT,BOLAA 以及 GPT-3.5Turbo 进行对比,结果如下:

图片

可以看出,AUTOACT 方法在 Llama-2 13B 和 70B 基础下训练出的 Agent 全线优于其他所有直接提示方法、CoT 与 Agent 方法。13B 的模型做到了与 GPT-3.5 Turbo 性能相差不多,而 70B 模型甚至超越了 GPT-3.5-Turbo,在 HotpotQA 实现了 3.77% 的提升,在 ScienceQA 上实现了 6.33% 的提升

而进一步与基于闭源模型数据的微调模型 FIREACT 进行对比,尽管 FIREACT 使用了 GPT-4,但是在 70B 基础上的 AUTOACT 在 HotpotQA 上提升了 5.77%,在 ScienceQA 上提升了 6.67%。值得注意的是这一结果是建立在 AUTOACT 完全没有使用任何强大的闭源模型进行辅助的基础之上的

此外,作者还对 HotpotQA 中由 AUTOACT 生成的轨迹数据对比其他 Agnet 方法进行了人工评估,五位 NLP 专家从规划轮数、思维逻辑正确性、动作类型、动作参数与整体连贯性等方面综合评估,结果如下:

图片

此外,案例研究的实验也说明,AUTOACT 用自分化的模式将规划与行动解耦,可以有效的提升 Agent 能力:

图片

一点总结

图灵奖,也是诺贝尔经济学奖得主,人工智能的先驱人物,也是现代管理学的奠基人之一的 Herbert  Simon 提出的有限理性原则:

由于人类目标的模糊性,其知识和信息的不完备性以及其推理判断能力的局限性,人类决策不可能简单地归结为某种目标函数优化的完美数学形式。

但是,除了有限理性以外,Simon 也认为:

精确的社会分工和明确的个人任务可以弥补个人处理和利用信息能力的有限性。

从这一点出发,面对复杂的任务,寻求使用一个单一智能体(哪怕是最强的 GPT-4)去解决任务之中的方方面面似乎都有一些强人所难。而这篇论文正是从这一点出发,将单一智能体的任务分解为三个子智能体分别优化,依赖精心设计的“分工模式”与“合作机制”,使得“三个臭皮匠,顶一个诸葛亮”

此外,AUTOACT 完全不需要闭源模型辅助进行开源 Agent 微调的方法也将为基于开源模型的自动 Agent 学习打好基础铺平道路。在 AUTOACT 的基础上,也期待未来多智能体模式的基于开源模型的 AI Agent 可以不断百花齐放百家争鸣吧!

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

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

相关文章

github官网连接超时解决方案(图解版,亲测成功)

目录 一、521github镜像站1.1、521github镜像站访问地址 二、Github520镜像站2.1、Github520镜像站访问地址地址 三、UsbEAm Hosts Editor加速器3.1、UsbEAm加速器下载、安装及使用 四、SwitchHosts加速器4.1、SwitchHosts加速器下载、安装及使用 五、原名(Steam)目…

Android P 屏保和休眠相关知识

Android P添加屏保功能,如果休眠时间设定大于屏保时间,则先进入屏保,达到休眠时间后再进入休眠 需求: 添加屏幕互保开关,默认关闭。只保留时钟,可设定指针和数字、夜间模式。启用时间改多长时间无操作进入…

LeetCode —— 137. 只出现一次的数字 II

😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️…

互联网加竞赛 基于深度学习的人脸表情识别

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的人脸表情识别 该项目较…

angular 表单FormGroup笔记

一、校验 1、校验提示 <nz-form-item><nz-form-label>手机号码</nz-form-label><nz-form-control [nzErrorTip]"mobileTemplate"><input nz-input formControlName"mobile" placeholder"请输入" /><ng-templ…

springboot mybatis-plus 项目分层笔记

整体定义 config: 配置项&#xff0c;包含configuration注解 constants: 常量类enums: 枚举 exceptions: 全局异常处理&#xff0c;自定义异常&#xff0c;RestControllerAdvice 注解 fia3: 三大器依据执行顺序&#xff1a;过滤器filter、拦截器interceptor、切面aop 简称 fia…

Flutter canvas 画一条波浪线 进度条

之前用 Flutter Canvas 画过一个三角三角形&#xff0c;html 的 Canvas 也画过一次类似的&#xff0c; 今天用 Flutter Canvas 试了下 感觉差不多&#xff1a; html 版本 大致效果如下&#xff1a; 思路和 html 实现的类似&#xff1a; 也就是找出点的位置&#xff0c;使用二阶…

Python实现avif图片转jpg格式并识别图片中的文字

文章目录 一、图片识别文字1、导包2、代码实现3、运行效果 二、avif格式图片转jpg格式1、导包2、代码实现3、运行效果4、注意事项 三、Python实现avif图片转jpg格式并识别文字全部代码 在做数据分析的时候有些数据是从图片上去获取的&#xff0c;这就需要去识别图片上的文字。P…

Buffer缓冲区类设计实现

目录 类设计理念 类设计接口函数 类设计函数实现 测试 正常读取与写入 相同类型拷贝 扩容测试 按行读取 类设计理念 类设计接口函数 #include <vector> #include <cstdint>#define BUFFER_DEFAULT_SIZE 1024 // Buffer 默认起始大小 class Buffer { pr…

Redis -- String 字符串, 计数命令,字符串操作

"学如逆水行舟&#xff0c;不进则退。" 目录 Redis的String字符串 常见命令 set get mget mset setnx setex psetex 计数命令 incr incrby decr decrby incrbyfloat 字符串操作 append getrange setrange strlen 小结 string内部编码 Redis…

全方面解析msvcp110.dll文件的修复教程,六个修复msvcp110.dll文件丢失问题的详细方法

msvcp110.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2012 Redistributable Package&#xff08;微软视觉C 2012重新分配包&#xff09;的一部分。这个文件主要包含了C标准库中的一些函数&#xff0c;特别是与内存管理、异常处理、字符串处理和数学计算相关的…

部署YUM仓库服务

一、yum仓库 1. yum简介 yum是一个基于RPM包&#xff08;是Red-Hat Package Manager红帽软件包管理器的缩写&#xff09;构建的软件更新机制&#xff0c;能够自动解决软件包之间的依赖关系。 为什么会有依赖关系的发生 因为linux本身就是以系统简洁为自身优势&#xff0c;所以…

动态gif制作方法是什么?一个网站在线制作

一般我们说的gif动图就是动态图片是一种图片格式。Gif动图就是由一帧一帧的静态画面合成一张有动态效果的图片。接下来。给大家讲一讲gif生成&#xff08;https://www.gif.cn/&#xff09;的方法吧&#xff01;很简单不需要下载软件&#xff0c;手机、pc均可操作&#xff0c;只…

Unity触发检测Trigger踩坑合集

正常状态 绿色方块&#xff1a;刚体碰撞盒检测触发碰撞脚本 蓝色方块&#xff1a;碰撞盒 检测脚本&#xff1a; 正常进出&#xff1a; 踩坑1 绿色方块&#xff1a;刚体碰撞盒检测触发碰撞脚本 蓝色方块&#xff1a;碰撞盒 保持绿色和蓝色方块的接触 对蓝色方块&#xff1a…

87.网游逆向分析与插件开发-物品使用-物品交换的逆向分析与C++封装

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;物品丢弃的逆向分析与C代码的封装-CSDN博客 码云地址&#xff08;ui显示角色数据 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;5222a6b1e5…

程序员的新风口,来了?

过去几年逐渐沉寂的程序员培训行业&#xff0c;现在重新热闹了起来。 作为一家IT培训机构的课程顾问&#xff0c;小娜发现&#xff0c;最近一段时间&#xff0c;咨询鸿蒙开发课程的人越来越多了&#xff0c;为了能够及时回复&#xff0c;我整理了一份话术&#xff0c;以便快速摸…

Qt Excel读写 - QXlsx的安装配置以及测试

Qt Excel读写 - QXlsx的安装配置以及测试 引言一、安装配置二、简单测试 引言 Qt无自带的库处理Excel 文件&#xff0c;但可通过QAxObject 借助COM接口进行Excel的读写1。亦可使用免费的开源第三方库&#xff1a;QXlsx&#xff0c;一个基于Qt库开发的用于读写Microsoft Excel文…

存储监控工具:监控存储区域网络(SAN)

从托管应用程序到提供大型多媒体服务&#xff0c;组织都依靠其 IT 基础架构来提供无与伦比的最终用户体验。为了提供这种卓越的体验&#xff0c;必须大大提高应用程序的可用性和性能。在许多其他挑战中&#xff0c;存储区域网络 &#xff08;SAN&#xff09; 正好用于应对这些挑…

Fiddler-02使用

文章目录 一、Fiddler的作用二、Fiddler抓取https请求三、Fiddler过滤请求1、案例一2、案例二3、过滤页面介绍4、总结 四、Fiddler删除数据五、Fiddler接口基础概述六、Fiddler请求响应报文详解1、请求2、响应 七、Fiddler定位前后端的问题八、Fiddler弱网测试方式一&#xff1…

(十六)串口UART

文章目录 UART简介传输数据帧和波特率定时器1作为串口1波特率发生器串口部分相关寄存器TMODAUXRPCONSCONSBUF 串口1工作模式1&#xff1a;8位UART&#xff0c;波特率可变总体工作原理如何简单接收一个字符和发送数据一步之遥的设置现象演示 UART简介 通用异步收发传输器(Unive…