AI通用智能体的自我进化能力,并非遥不可及。
LLM-based Agent,已经不再需要人类监督者的帮助,开始实现「自我进化」!
这个智能体在学习了专家轨迹以后,获得了基础的通用能力,能够在更广泛、更真实的未知环境与任务上进行探索和学习,在外部的反馈下不断提升自己。
最近,复旦大学语言与视觉团队推出的 AgentGym 平台,打通了大语言模型智能体「数据采样、训练微调、自我进化、能力评测」全流程。基于该平台提出的 AgentEvol 算法,首次探索了通用智能体的自我进化能力,并在多项智能体任务上表现非凡,与 GPT-4、Claude 等 SOTA 模型比肩。
开发一个能够解决和适应复杂工作的多任务通用智能体,一直是人工智能社区长久以来的重要目标。
类似于人类的学习过程,通用智能体首先通过模仿,开始学习最基础的知识和技能。
随着基础能力的掌握,我们不仅期望智能体可以通过与不同环境的交互,持续学习和适应许多先前未见的任务,还能从自身经验以及外部反馈中汲取丰富的智慧,发展出一定程度的泛化能力(图1)。
图1:基础通用智能体实现「自我进化」的示意图。该智能体首先在人类监督下进行行为克隆,随后在不同的外部环境和任务中进行探索和学习,以实现自我进化。
大语言模型凭借其卓越的通用能力,被视为构建此类智能体的重要基础之一。目前的研究领域正沿着两个主要方向进行探索,以推动智能体技术的进一步发展。
面对上述挑战,作者首次探讨了一个具备基础能力的通用智能体——在多种环境和任务中——自我进化的潜力。
为了实现这一研究目标,作者确定了推动智能体自我进化的「三大关键支柱」,这些支柱是研究的核心要素。
图2:AgentGym 平台示意图。平台共涵盖了 14 个跨越不同类别的环境,每个环境都作为 HTTP 服务部署。客户端为智能体提供封装好的统一接口,便于与环境互动。通过 AgentEvol 方法,作者探索了智能体在不同环境和任务中的自我进化。此外,平台提供了测试集 AgentEval 对智能体进行全面的能力评估。
围绕这三大支柱,作者的研究工作体现在以下几个方面:
AgentGym 平台,是一个全新的,支持大语言模型智能体轨迹采样、自我进化、能力评测的框架,特点是提供多样、实时、并发和统一格式的反馈。旨在帮助人工智能社区更便利地探索具备通用能力的 LLM-based 智能体。
AgentGym 集成了多种环境、丰富的轨迹数据和全面的基准测试。它通过统一的环境操作接口,简化了环境配置过程。具体而言,AgentGym 拥有以下特点:
多样化的环境:
AgentGym 包含 14 种环境和 89 项任务,涵盖了网页导航、文字游戏、具身控制、工具使用和代码等类别。无论是致力于构建 Task-specific Agent,还是通用型的 Generally-capable Agent,AgentGym 框架均能提供对应的支持。
其中,每个环境独立部署,避免了不同环境间的依赖冲突,确保了平台的可扩展性。例如,WebShop 环境,一个用于网络购物任务的交互式平台,仅通过一行命令,即可轻松完成部署。
数据驱动:
AgentGym 的轨迹数据采用了统一的 ReAct 格式,该格式通过「Thought-Action」对将推理步骤和行动序列结合,图 2左上方提供了一个轨迹数据的示例。
平台通过广泛收集和增强指令,构建了具有 20509 条指令的集合,并从中挑选出 1160 条具有多样性的指令,构建了基准测试集 AgentEval,用于全面评估基于 LLM 的智能体。
同时,作者使用 GPT-4-Turbo 和众包标注收集轨迹数据,并基于奖励或正确性严格筛选,构建了 6130 条高质量轨迹的集合 AgentTraj。为了展现行为克隆方法的性能潜力,研究者进一步扩展,得到包含 14485 条轨迹的 AgentTraj-L。
图3:AgentGym 平台 14 种环境的统计数据(涵盖任务类型数量、指令集规模、评估集规模、轨迹集规模及平均交互轮数)。
模块化的架构与高效的 Pipeline:
AgentGym 平台采用模块化设计,开发者可以轻松添加或更改环境。环境被部署在不同的服务器(EnvServers)上,通过 HTTP 服务实现灵活、高效的交互。客户端(EnvClients)封装了与环境交互所需的函数,提供了相应的操作接口。
而核心组件 AgentController 作为智能体和环境的中间媒介,提供了优化智能体策略的训练器(Trainer),以及支持多环境的性能评估器(Evaluator)。统一的操作接口简化了智能体与环境的交互,使用户能够专注于算法优化和智能体训练。
图4:AgentGym 平台架构概览。
独特优势:
与其他框架相比,AgentGym 的优势在于它不仅提供了广泛的环境集合,还通过交互平台为智能体提供实时的环境反馈,支持智能体的训练与评估。同时,AgentGym 支持在多个环境中实现智能体的「全面进化」,这极大地增强了智能体的泛化能力,使其在不同任务和环境中都能表现出色。
图5:AgentGym 与其他代理框架的比较。
基于 AgentGym 套件,研究者们可以容易地对智能体进行采样、训练与评测。而复旦语言与视觉团队为了探究具有通用智能体的在「自我进化」的潜力,提出了 AgentEvol 算法(图6),帮助智能体在多环境、多任务下实现了各项能力的提升。这一算法的核心思想是让智能体通过探索和学习来提升自己的性能,特别是在面对之前未见过的任务和指令时。
图6:AgentEvol 算法框架
AgentEvol 首先基于收集到的 AgentTraj 轨迹数据集,通过「行为克隆(behavioral cloning)」的形式训练一个「基础通用智能体(base generally-capable agent)」,使其具备基本的指令遵循能力和必要的先验知识。在这个过程中,智能体一步一步地模仿专家的轨迹,包括思考过程(thought)和行动(action)。
接着,这一基础通用智能体与不同的环境交互,完成自我进化。它面对来自不同环境的、更多样化的指令与查询(Instructions and queries),逐渐提升自己完成各项任务的能力。
这一过程受到机器学习中 RL as Inference 方法的启发,它将交互强化学习视为一个概率推断问题(具体推导与解释见原文)。这种方法与传统的强化学习方法不同,它不是直接寻找最大化期望回报的轨迹,而是首先定义一个关于轨迹的最优策略分布,然后通过迭代过程来优化这个分布。
具体而言,该过程包括两个交替进行的步骤:
通过交替探索和学习步骤,AgentEvol 算法逐步优化智能体,显著提升其在多环境下的能力,实现「自我进化」的目标。
任务概述:
本研究通过 AgentGym 框架对智能体进行了一系列的跨环境探索和进化实验。实验旨在评估基础智能体在多样化环境中进行自我探索和进化的能力。为此,作者采用更广泛的指令集来扩展智能体的探索空间。
主要结果:
这一发现揭示了智能体具有适应和解决更复杂任务的潜力,为开发更高级的通用智能体提供了坚实的基础。
图7:多任务环境下各种模型和智能体的性能对比
分析实验:
该团队还从四个角度展开了一系列的消融实验:(1) 数据合并策略;(2) 进化迭代次数;(3) 探索范围;(4) 采样次数。
实验发现,将智能体当前生成的轨迹与初始专家轨迹集合并,能带来更稳定的性能提升。相应地,利用前一迭代的探索轨迹,可能导致过拟合,出现性能的波动。
随着进化过程中迭代次数 M 增加,性能提升,但最终会趋于稳定和收敛。
图8:数据合并策略和迭代次数的消融实验
在 AgentEvol 探索过程中,通过对每个指令执行采样,生成多样化的轨迹促进了智能体的学习。
而将智能体的探索范围限制在已知的指令集内,也就是进行有限空间的探索,可能会限制 AgentEvol 的性能进一步提升。
图9:采样数目与探索范围的消融实验
此外,研究者还在不同的基座模型上进行实验。结果表明, AgentEvol 方法在不同规模的模型上均表现出色。
图10:不同基座模型上的性能比较
文章还探讨了在通用智能体的进化过程中,成功与失败的经验轨迹是否都能发挥作用。
实验采用直接偏好优化 DPO (Direct Preference Optimization) 方法,基于探索过程中的「成功-失败」轨迹进行训练。结果表明,智能体能够在多任务的场景下,从错误经验中学习,但其整体性能仍然不如 AgentEvol 方法。
图11:基于成功和失败轨迹的 DPO 训练
文章来自于微信公众号 “机器之心”,作者 “机器之心”
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner