可「自主进化」的Agent?首个端到端智能体符号化训练框架开源了

ce30239964cd921e0ad4c7792ce32402.gif

©作者 | 周王春澍、姜昱辰等

单位 | 波形智能、浙江大学等

来源 | 机器之心

随着各类大模型 API 的迭代以及各类 AI Agent 框架的开源,基于大模型的智能体在学术界和工业界收获了广泛的关注、研究、和应用。

尽管基于大模型的智能体 (AI Agent) 在很多场景都取得了不错的效果,并且在一些场景下已经能够实际落地应用,AI Agent 的研究和开发的进展仍然局限于 “expert-centric”,或者说 “engineering-centric” 的范式中。也就是说,现在的 Agent 的创建和调优过程还是几乎完全依赖人类专家 (算法工程师) 的人力和经验来设计智能体的 promtps, tools,和 workflow。

这样的过程费时费力,并且注定了无法使用海量数据对智能体的这些符号化元素进行学习和训练。而大部分智能体依赖于闭源的 API 调用,无法对大模型基座本身进行优化,即使使用开源大模型,对模型基座本身的优化也在大部分 AI 智能体的应用场景中受到资源、算力、稳定性等原因而无法实际进行。因此现在的智能体还处于 “专家系统” 的发展阶段。

众所周知,神经网络成为机器学习 / 人工智能的基础范式的重要原因正是因为可以高效地使用海量数据进行训练和优化,而不需要手工设计复杂的结构和学习算法。因此,来自波形智能的研究人员们认为,AI Agent 从以专家经验为核心 (expert-centric) 到以数据为核心 (data-centric) 的转变,将会是基于大模型的智能体的一个重要发展方向。

为了实现这个目标,来自波形智能的研究团队借鉴连接主义训练神经网络 (connectionist learning) 的基本方式,即反向传播和梯度下降,将 AI Agent 和神经网络进行类比,使用文本和大模型建模损失函数、梯度、和优化器,模拟反向传播和梯度下降算法,实现对 Agent 的端到端的符号化训练算法,构建了一套可以对 AI 智能体进行端到端训练的算法框架,代码已经开源在 GitHub。

cd6d2d07e94f82e64b13715ad9cfcf36.jpeg

论文题目:

Symbolic Learning Enables Self-Evolving Agents

论文链接:

https://arxiv.org/pdf/2406.18532

代码仓库:

https://github.com/aiwaves-cn/agents

具体来说,团队首先将基于大模型的智能体解构为三个主要元素,即 prompts, tools, 和 agent pipeline (workflow)。接着,框架中将一个 Agent 系统看作是一个 “符号化” 神经网络,将 Agent workflow 中的每一个 node 看作是网络中的一个 layer,而将每个节点中的 prompts 和 tools 看作是这个 layer 的 weights,智能体的 workflow/pipeline 则可以看作是网络的计算图。

这样下来,智能体系统可以看作是一个权重从数字 / 张量空间变成离散符号空间 (文字,代码都是符号化的表示) 的神经网络,而这种网络的训练自然也就可以参考传统神经网络的优化方式,即反向传播和梯度下降。

6b884ab8920cb4866ba66dbe52d9a8ae.png

▲ 图1. Agent Symbolic Learning框架示意图

要使传统的反向传播和梯度下降能够处理符号化的权重空间,agent symbolic learning 框架中通过文本和大模型 + 提示词的方式建模了损失,损失函数,反向传播的流程,梯度,以及基于梯度的优化器。

具体来说,前向传播过程中,框架会将每一层的输入、权重、和输出都保存在计算图中。接下来,通过大模型 + 提示词的方式,在提示词中结合当前样本的输入,输出,和整体任务的描述,之后由大语言模型输出对当前样本任务完成情况的评价和总结。得到的文本形式的评价 / 总结,正如神经网络中的 loss 一样,用来衡量任务完成的好坏,研究团队将其称为 “文本形式的损失”,即 language-based loss。

之后,该研究通过大语言模型和精心设计的提示词工程,来生成智能体流程中对最后一个节点的 “反思”。反思中包括模型的输出应该怎样变化才能更符合要求,以及提示词和工具调用应该如何优化才能使输出朝这样的方向发生变化。这一内容和神经网络优化中梯度的作用刚好一致,都是包含了参数应该如何调整才能最小化整个模型的损失的信息,因此研究团队将这样的反思称作 “文本形式的梯度”,即 language-based gradient。

接下来要做的就是从后向前,得到每一层的梯度,这对于神经网络的优化至关重要。受到神经网络中基于链式法则的公式的反向传播的启发,波形智能的研究人员通过文本和大模型,用一套精心设计的 prompt 来模拟了传统神经网络优化的链式法则。

具体来说,这套 prompts 让大模型基于上一层的梯度信息 (即对上一层执行任务的反思) 以及本层的输入、输出、以及权重 (这些输入和反向传播公式中的参数完全对应),输出对当前节点的 prompt/tool usage 的反思,即当前层的 language-based gradient。

这样基于文本的反向传播的方案使得该研究能够得到一个包含多个节点和复杂 workflow 的智能体中每一节点 / 层的参数的梯度,也就可以直接优化每一个 prompt 和 tool 对整个智能体性能的作用,从而实现 end-to-end 的 joint optimization。

最后,得到了每组参数的 language-based gradient 之后,框架中使用基于大模型的 optimizer,使用精心设计的 prompt,以每一层的提示词和工具调用,以及基于文本的梯度作为输入,输出优化过后的 prompts 和 tools,从而实现对智能体参数的更新。

除此之外,框架中还支持了对网络结构,即 agent workflow 的优化。具体来说,框架中将 agent workflow 以特定的编程语言进行表示,这样就将智能体网络的 “计算图” 也处理成了符号化的权重。之后通过一个单独设计的基于大模型的优化器,以当前智能体的工作流和工作流中的各个节点的文本形式的梯度为输入来对智能体的工作流进行更新。这在神经网络中训练中可以类比自动网络结构搜索相关的研究。

1c6edb81d35a8501ee59c487dd68c3e4.png

▲ 图2. Agent Symbolic Learning 算法流程

100d0fb595668ffea524072cfb984c7d.png

▲ 图3. 大模型评测任务上的实验结果

330ca83a603a935679710ec61d6dd44f.png

▲ 图4. 智能体级别评测任务的实验结果

波形智能的研究人员在大模型和智能体的一系列 benchmark 上对该算法进行了评估,如图 3 和图 4 所示,agent symbolic learning 相比 DSpy 和传统的没有学习能力的智能体框架相比,在各类任务上都有了明显的提升,在一些任务上甚至使用 GPT-3.5 也能和其他智能体框架使用 GPT-4 的表现类似。

而简单的对智能体中每一个节点中的提示词使用局部的基于大语言模型的提示词自动优化算法 (AutoPE) 则无法取得很明显的效果。另外,如图 5 所示,该算法在创意写作任务中,从初始的只基于一个提示词进行写作的单节点智能体,自主进化到了支持写作 + 编辑的工作流,并且将写作节点的提示词进行了更新和优化。

14b797facb035ab80285092e4d41b487.png

▲ 图5. Agent Symbolic Learning框架学习效果展示(以创意写作任务为例)

波形智能的研究团队介绍了 Agent Symbolic Learning 的两种应用场景。首先,该框架可以用于开发者或研究人员创建和调优智能体系统中。像神经网络的训练一样,开发者和研究人员可以对指定的任务收集(或者使用框架中提供的自动生成)大量的样本,之后使用该框架在大量数据上完成 “data-centric” 的智能体的训练和优化,在之后像普通智能体的部署一样,在产品生产环境中以静态的方式部署优化过后的智能体。

除此之外,该框架的另一个重要应用场景是支持能够在环境 / 交互中自主进化的 Agent。具体来说,因为该训练框架本身只需要调用大模型的能力而不需要复杂的基于 GPU 的训练和部署,因此一个 Agent 可以将该训练框架作为其自身可以调用的一个工具,通过在环境中探索或者和人类进行交互的过程中,不断收集新的训练样本,定期或者主动调用智能体训练的算法工具,对自身的 prompts, tools, 和 workflow 进行更新。

波形智能在 AIWaves Agents 的开源代码库中也支持了这样的部署逻辑,实现了首个可以在被部署到实际产品和生产环境中之后,依然可以不断自主进化、自我迭代的智能体系统。

Agent Symbolic Learning 框架将 AI Agent 视作由复杂 workflow 中的 prompts 和 tools 连接而成的符号化 “神经网络”,通过基于自然语言模拟反向传播和梯度下降,使得基于大模型的智能体可以自主对自身的 “网络参数”,即 prompts 和 tools,以及 “网络结构”,即 agent workflow,进行优化,从而实现了能够高效利用大量数据和经验,进行 “data-centric learning” 的智能体框架,让能够持续自主进化的智能体系统变成了可能。

目前,该框架已经在波形智能的多个产品和应用中发挥作用,解决了 Agent 人工优化和评测困难的问题。为了推进 “Data-centric Agent” 和 “Agent Learning” 的发展和研究,波形智能的研究团队也将算法的全部代码开源,期待智能体领域学术界和工业界一起探索更多更有趣的算法和应用。

关于作者

本文主要作者来自波形智能、浙江大学、和北京航空航天大学。共同一作中,周王春澍是波形智能的联合创始人和 CTO,欧翌昕是浙江大学硕士二年级,丁盛为为北京航空航天大学四年级本科生。文章的通讯作者为周王春澍和姜昱辰,姜昱辰是波形智能的联合创始人和 CEO。

更多阅读

8de0ececd0eda59c7b34957fbba2a20e.png

4dd0247c2087cd50e6853cc0ed3705e3.png

fbeff5d511ea7b3409f0d11461404094.png

9d8a8ad7dbf40c924ecead894801d5af.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

f01fcd287800e9fc43505d7b5ab47007.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

·

d22a051b418efa005d1b2650481267ff.jpeg

内容概要:本文档详细介绍了Android开发中内容提供者(ContentProvider)的使用方法及其在应用间数据共享的作用。首先解释了ContentProvider作为四大组件之一,能够为应用程序提供统一的数据访问接口,支持不同应用间的跨进程数据共享。接着阐述了ContentProvider的核心方法如onCreate、insert、delete、update、query和getType的具体功能与应用场景。文档还深入讲解了Uri的结构和作用,它是ContentProvider中用于定位资源的重要标识。此外,文档说明了如何通过ContentResolver在客户端应用中访问其他应用的数据,并介绍了Android 6.0及以上版本的运行时权限管理机制,包括权限检查、申请及处理用户的选择结果。最后,文档提供了具体的实例,如通过ContentProvider读写联系人信息、监听短信变化、使用FileProvider发送彩信和安装应用等。 适合人群:对Android开发有一定了解,尤其是希望深入理解应用间数据交互机制的开发者。 使用场景及目标:①掌握ContentProvider的基本概念和主要方法的应用;②学会使用Uri进行资源定位;③理解并实现ContentResolver访问其他应用的数据;④熟悉Android 6.0以后版本的权限管理流程;⑤掌握FileProvider在发送彩信和安装应用中的应用。 阅读建议:建议读者在学习过程中结合实际项目练习,特别是在理解和实现ContentProvider、ContentResolver以及权限管理相关代码时,多进行代码调试和测试,确保对每个知识点都有深刻的理解。
开发语言:Java 框架:SSM(Spring、Spring MVC、MyBatis) JDK版本:JDK 1.8 或以上 开发工具:Eclipse 或 IntelliJ IDEA Maven版本:Maven 3.3 或以上 数据库:MySQL 5.7 或以上 此压缩包包含了本毕业设计项目的完整内容,具体包括源代码、毕业论文以及演示PPT模板。 项目配置完成后即可运行,若需添加额外功能,可根据需求自行扩展。 运行条件 确保已安装 JDK 1.8 或更高版本,并正确配置 Java 环境变量。 使用 Eclipse 或 IntelliJ IDEA 打开项目,导入 Maven 依赖,确保依赖包下载完成。 配置数据库环境,确保 MySQL 服务正常运行,并导入项目中提供的数据库脚本。 在 IDE 中启动项目,确认所有服务正常运行。 主要功能简述: 用户管理:系统管理员负责管理所有用户信息,包括学生、任课老师、班主任、院系领导和学校领导的账号创建、权限分配等。 数据维护:管理员可以动态更新和维护系统所需的数据,如学生信息、课程安排、学年安排等,确保系统的正常运行。 系统配置:管理员可以对系统进行配置,如设置数据库连接参数、调整系统参数等,以满足不同的使用需求。 身份验证:系统采用用户名和密码进行身份验证,确保只有授权用户才能访问系统。不同用户类型(学生、任课老师、班主任、院系领导、学校领导、系统管理员)具有不同的操作权限。 权限控制:系统根据用户类型分配不同的操作权限,确保用户只能访问和操作其权限范围内的功能和数据。 数据安全:系统采取多种措施保障数据安全,如数据库加密、访问控制等,防止数据泄露和非法访问。 请假审批流程:系统支持请假申请的逐级审批,包括班主任审批和院系领导审批(针对超过三天的请假)。学生可以随时查看请假申请的审批进展情况。 请假记录管理:系统记录学生的所有请假记录,包括请假时间、原因、审批状态及审批意见等,供学生和审批人员查询。 学生在线请假:学生可以通过系统在线填写请假申请,包括请假的起止日期和请假原因,并提交给班主任审批。超过三天的请假需经班主任审批后,再由院系领导审批。 出勤信息记录:任课老师可以在线记录学生的上课出勤情况,包括迟到、早退、旷课和请假等状态。 出勤信息查询:学生、任课老师、班主任、院系领导和学校领导均可根据权限查看不同范围的学生上课出勤信息。学生可以查看自己所有学年的出勤信息,任课老师可以查看所教班级的出勤信息,班主任和院系领导可以查看本班或本院系的出勤信息,学校领导可以查看全校的出勤信息。 出勤统计与分析:系统提供出勤统计功能,可以按班级、学期等条件统计学生的出勤情况,帮助管理人员了解学生的出勤状况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值