智能体设计模式-学习和适应

61 阅读18分钟

智能体设计模式-学习和适应

学习和适应对于增强人工智能代理的能力至关重要。这些过程使代理能够超越预先定义的参数进化,使它们能够通过经验和环境的相互作用自主改进。通过学习和适应,代理可以有效地管理新情况并优化其性能,而无需持续的人工干预。本章详细探讨了代理学习和适应的基本原理和机制。【大模型教程】

背景

代理人通过根据新的经验和数据改变思维、行动或知识来学习和适应。这使得代理人能够从简单地遵从指令发展到随着时间的推移变得更加聪明。

● 强化学习:代理人尝试行动,积极的结果会得到奖励,消极的结果会受到惩罚,在不断变化的环境中学习最佳行为。对于代理人控制机器人或玩游戏很有用。

● 监督学习:代理从标记的示例中学习,将输入连接到所需的输出,实现决策和模式识别等任务。非常适合代理人整理电子邮件或预测趋势。

● 无监督学习:代理在未标记的数据中发现隐藏的联系和模式,有助于洞察、组织和创建环境的心理地图。对于在没有特定指导的情况下探索数据的代理来说很有用。

● 使用基于LLM的代理进行少发/零发学习:利用 LLMs 的代理可以通过最少的示例或清晰的指令快速适应新任务,从而对新命令或情况做出快速响应。

● 在线学习:代理人不断用新数据更新知识,这对于动态环境中的实时反应和持续适应至关重要。对于处理连续数据流的代理来说至关重要。

● 基于记忆的学习:代理人回顾过去的经验,在类似情况下调整当前的行动,增强背景意识和决策能力。对具有内存召回功能的代理有效。

代理人通过根据学习改变策略、理解或目标来适应。这对于处于不可预测、变化或新环境中的代理人至关重要。

近似策略优化(PPO)是一种强化学习算法,用于在具有一系列连续动作的环境中训练代理,例如控制机器人的关节或游戏中的角色。其主要目标是可靠、稳定地改进代理商的决策策略,即其政策。

    PPO背后的核心思想是对代理策略进行小规模的、谨慎的更新。它避免了可能导致性能崩溃的剧烈变化。这是它的运作方式:

1. 收集数据:代理使用当前策略与环境交互(例如,玩游戏),并收集一批经验(状态、动作、奖励)。

2. 评估“替代”目标:PPO计算潜在的政策更新将如何改变预期回报。然而,它并不只是最大化这种奖励,而是使用了一个特殊的“裁剪”目标函数。

3. “剪切”机制:这是PPO稳定性的关键。它围绕现行政策创建了一个“信任区”或安全区。防止算法进行与当前策略差异太大的更新。这种剪辑就像一个安全制动器,确保代理人不会采取巨大的、危险的步骤来中断其学习。

简而言之,PPO在提高绩效和保持已知的有效策略之间取得平衡,该策略可以防止培训期间的灾难性失败,并带来更稳定的学习。

直接偏好优化(DPO)是一种更近期的方法,专门设计用于将大型语言模型(LLMs)与人类偏好对齐。它提供了一种更简单、更直接的替代方案,可以替代使用PPO来完成此任务。

要理解DPO,首先要了解传统的基于PPO的对齐方法:

● PPO方法(两步法):

○ 训练奖励模型:首先,您收集人类反馈数据,在这些数据中,人们对不同的 LLM 响应进行评级或比较(例如,“响应 A 比响应 B 更好”)。这些数据被用于训练一个单独的AI模型,称为奖励模型,其功能是预测人类会对任何新的回答给出多少分。

○ 使用PPO进行微调:接下来,使用PPO对LLM进行微调。LLM的目标是生成从奖励模型中获得最大可能分数的响应。奖励模式在训练游戏中扮演着“裁判”的角色。

这两个步骤的过程可能复杂且不稳定。例如,LLM可能会发现一个漏洞,并学习“破解”奖励模型,以便为糟糕的答复获得高分。

● DPO方法(直接流程):DPO完全跳过奖励模式。DPO不将人类偏好转换为奖励分数,然后根据该分数进行优化,而是直接使用偏好数据来更新LLM的策略。

● 它通过使用直接将偏好数据与最优策略联系起来的数学关系来工作。它本质上是教模型的:“增加生成类似于以下响应的概率首选的一个并降低生成类似于 的概率。不受欢迎一个。“

从本质上讲,DPO通过直接优化基于人类偏好数据的语言模型来简化对齐。这避免了培训的复杂性和潜在的不稳定性,并使用了单独的奖励模型,使调整过程更加高效和稳健。

应用案例

通过由经验数据驱动的迭代更新,自适应代理在可变环境中表现出增强的性能。

● 个性化的助理人员通过对单个用户行为的纵向分析来完善交互协议,确保高度优化的响应生成。

● 交易机器人代理通过基于高分辨率、实时的市场数据动态调整模型参数,优化决策算法,从而最大化财务回报并减轻风险因素。

● 应用代理通过基于观察到的用户行为的动态修改来优化用户界面和功能,从而提高用户参与度和系统直观性。

● 机器人和自动驾驶汽车代理通过整合传感器数据和历史动作分析,增强导航和响应能力,使其能够在各种环境条件下安全高效地运行。

● 欺诈检测代理通过用新发现的欺诈模式改进预测模型,提高系统安全性并最大限度地减少财务损失,从而改进异常检测。

● 推荐代理人通过使用用户偏好学习算法,提高内容选择精度,提供高度个性化和上下文相关的建议。

● 游戏人工智能代理通过动态调整策略算法来增强玩家的参与度,从而增加游戏的复杂性和挑战性。

● 知识库学习代理代理可以利用检索增强生成(RAG)来维护一个动态的问题描述和经过验证的解决方案的知识库(见第14章)。通过存储成功的策略和遇到的挑战,代理可以在决策过程中参考这些数据,使其能够通过应用以前成功的模式或避免已知的陷阱来更有效地适应新情况。

1、自改进编码代理(SICA)

由马克西姆·罗宾斯、劳伦斯·艾奇逊和马丁·舒默开发的自改进编码代理(SICA)代表了基于代理学习的进步,展示了代理修改自己源代码的能力。这与传统方法形成对比,在传统方法中,一个代理可能训练另一个代理;SICA既充当修改者,又充当被修改的实体,迭代地完善其代码库,以提高应对各种编码挑战的性能。

SICA的自我改进是通过一个迭代循环进行的(见图1)。最初,SICA会审查其过去版本的存档及其在基准测试中的性能。它会选择性能得分最高的版本,该得分基于考虑成功、时间和计算成本的加权公式计算。然后,这个选定的版本将进行下一轮的自我修改。它分析存档以识别潜在的改进,然后直接更改其代码库。随后将对经过修改的代理进行基准测试,并将结果记录在存档中。这个过程重复进行,便于直接从过去的表现中学习。这种自我改进机制使SICA能够在不需要传统培训模式的情况下发展其能力。

图1:SICA基于其过去版本的自我改进、学习和适应

SICA进行了显著的自我改进,从而在代码编辑和导航方面取得了进步。最初,SICA使用基本的文件覆盖方法进行代码更改。随后,它开发了一种“智能编辑器”,能够进行更智能和有情境的编辑。这演变成了一个"差值增强智能编辑器",其中包含用于定向修改和基于模式的编辑的差值,以及一个"快速覆盖工具",以减少处理需求。

SICA进一步实现了“最小差异输出优化”和“语境敏感差异最小化”,使用抽象语法树(AST)解析以提高效率。此外,还添加了一个“智能编辑器输入规范化器”。在导航方面,SICA独立创建了一个"AST符号定位器",使用代码的结构图(AST)来识别代码库中的定义。后来,开发了一种“混合符号定位器”,将快速搜索与AST检查相结合。通过“混合符号定位器优化AST解析”进一步优化了这一点,将重点放在相关的代码部分,提高了搜索速度。(见图2)

图2:各迭代的性能。关键改进附有相应的工具或代理修改说明。(由马克西姆·罗宾斯、马丁·舒默、劳伦斯·艾奇逊提供)

SICA的体系结构包括一个用于基本文件操作、命令执行和算术计算的基础工具包。它包括提交结果和调用专门子代理(编码、解决问题和推理)的机制。这些子代理分解复杂任务并管理LLM上下文长度,特别是在延长的改进周期中。

异步监督器(另一个LLM)监控SICA的行为,识别潜在的问题,如循环或停滞。它与SICA进行通信,并在必要时进行干预以停止执行。监督员收到关于SICA行动的详细报告,包括通话记录、消息和工具行动日志,以查明模式和低效。

SICA的LLM以结构化的方式在其上下文窗口(即短期记忆)中组织信息,这对其操作至关重要。此结构包括一个系统提示符,用于定义代理目标、工具和子代理文档以及系统指令。Core提示包含问题语句或指令、打开文件的内容和目录映射。助理消息记录代理的逐步推理、工具和子代理的通话记录和结果,以及监督通信。该组织促进了高效的信息流,增强了LLM操作,并减少了处理时间和成本。最初,文件更改被记录为diff,仅显示修改,并定期合并。

SICA: 代码简介:深入了解SICA的实施情况,可以发现支撑其功能的几个关键设计选择。如上所述,该系统采用模块化架构构建,包含多个子代理,例如编码代理、问题解决代理和推理代理。这些子代理由主代理调用,类似于工具调用,用于分解复杂任务和高效管理上下文长度,特别是在扩展元改进迭代期间。

该项目正在积极开发,旨在为那些对工具使用和其他代理任务的培训后 LLMs 感兴趣的人提供一个强大的框架,并提供完整的代码供进一步探索和贡献。

GitHub存储库。

为了安全性,该项目非常强调Docker容器化,这意味着代理在专用Docker容器中运行。这是一个至关重要的措施,因为它提供了与主机的隔离,减轻了由于代理执行shell命令的能力而导致的无意文件系统操作等风险。

为了确保透明度和控制,该系统通过一个交互式网页具有强大的可观察性,该网页可视化事件总线上的事件和代理的呼叫图。这可以全面了解代理的操作,允许用户检查单个事件、阅读监视器消息和崩溃子代理跟踪以便更清晰地理解。

就其核心智能而言,代理框架支持从各种提供者集成LLM,从而能够对不同的模型进行实验,以找到最适合特定任务的模型。最后,一个关键组件是异步监督器,一个与主代理并发运行的LLM。监督者定期评估代理的行为是否存在病态偏差或停滞,并在必要时通过发送通知甚至取消代理的执行来进行干预。它接收系统状态的详细文本表示,包括一个呼叫图和一个由LLM消息、工具调用和响应组成的事件流,这使它能够检测低效模式或重复工作。

在初始的SICA实施中,一个显著的挑战是促使基于LLM的代理独立提出新颖、创新、可行的建议,并在每次元改进迭代中进行修改。这种局限性,特别是在促进LLM代理开放式学习和真实创造力方面,仍然是当前研究的一个关键领域。

2、 AlphaEvolve 和 OpenEvolve

阿尔法进化是由谷歌开发的一款人工智能代理,旨在发现和优化算法。它使用了LLMs的组合,特别是Gemini模型(Flash和Pro)、自动评估系统和进化算法框架。该系统旨在推进理论数学和实际计算应用。

AlphaEvolve采用了一套双子座模型。Flash用于生成广泛的初始算法建议,而Pro则提供更深入的分析和优化。然后根据预定义的标准自动评估和评分所提出的算法。该评估提供反馈,用于迭代改进解决方案,从而优化和改进算法。

在实际计算中,AlphaEvolve已经部署在谷歌的基础架构中。它在数据中心调度方面表现出改进,导致全球计算资源使用率下降了0.7%。它还通过建议在即将推出的张量处理单元(TPU)中优化Verilog代码,为硬件设计做出了贡献。此外,AlphaEvolve还加速了AI性能,包括在Gemini架构的一个核心内核中实现了23%的速度提升,以及对FlashAttention的低级GPU指令进行了高达32.5%的优化。

在基础研究领域,AlphaEvolve为发现新的矩阵乘法算法做出了贡献,包括一种使用48个标量乘法的4x4复值矩阵方法,超过了先前已知的解决方案。在更广泛的数学研究中,它在75%的案例中重新发现了50多个开放问题的现有最先进的解决方案,并在20%的案例中改进了现有解决方案,例如在接吻次数问题上的进步。

OpenEvolve是一个进化编码代理,它利用 LLMs(见图3)来迭代优化代码。它协调了由LLM驱动的代码生成、评估和选择的流程,以持续增强适用于各种任务的程序。OpenEvolve 的一个关键方面是它能够演化整个代码文件,而不是局限于单个函数。该代理专为多功能性而设计,支持多种编程语言,并兼容OpenAI兼容的API,适用于任何LLM。此外,它包含多目标优化,允许灵活的快速工程,并能够进行分布式评估,以高效地处理复杂的编码挑战。

图3:Open Evolve内部架构由控制器管理。该控制器协调几个关键组件:程序采样器、程序数据库、评估器池和LLM集成。其主要功能是促进它们的学习和适应过程,以提高代码质量。

此代码片段使用 OpenEvolve 库对程序执行进化优化。它用初始程序、评估文件和配置文件的路径初始化 OpenEvolve 系统。evolve.run(iterations=1000)行启动进化过程,运行1000次以找到程序的改进版本。最后,它将演化过程中发现的最佳程序的指标打印出来,格式化为小数点四位。

小结

定义:AI代理通常是在动态且不可预测的环境中运行,在这种情况下,预先编程的逻辑是不够的。当遇到初始设计中没有预料到的新情况时,它们的表现可能会下降。如果没有从经验中学习的能力,代理人就无法随着时间的推移优化他们的策略或个性化他们的互动。这种僵化限制了他们的有效性,并阻止他们在复杂的现实世界中实现真正的自主。

原理: 标准化的解决方案是整合学习和适应机制,将静态代理转化为动态、进化的系统。这允许代理基于新数据和交互自主地完善其知识和行为。代理系统可以使用各种方法,从强化学习到更先进的技术,如自我修改,如自改进编码代理(SICA)。谷歌的 AlphaEvolve 等先进系统利用法学硕士和进化算法来发现复杂问题的全新且更有效的解决方案。通过不断学习,代理可以掌握新任务,提升其性能,并适应不断变化的条件,而无需不断地手动重新编程。

经验法则:当构建必须在动态、不确定或进化环境中运行的代理时,请使用此模式。对于需要个性化、持续性能改进和自主处理新情况的能力的应用程序来说,它是必不可少的。

要点

● 学习和适应是关于代理人通过使用他们的经验来改进他们的工作和处理新情况。

● “适应”是指代理人的行为或知识因学习而出现的明显变化。

● SICA,自我改进编码代理,通过根据过去的性能修改其代码来自我改进。这导致了智能编辑器和AST符号定位器等工具的出现。

● 拥有专门的“子代理”和“监督员”有助于这些自我改进的系统管理大任务并保持正轨。

● LLM的“上下文窗口”的设置方式(包括系统提示、核心提示和辅助消息)对代理工作的效率非常重要。

● 对于需要在不断变化、不确定或需要个人接触的环境中工作的代理人来说,这种模式至关重要。

● 构建能够学习的代理通常意味着将它们与机器学习工具连接,并管理数据流。

● 配备基本编码工具的代理系统可以自主编辑,从而提高其在基准任务上的性能。

● AlphaEvolve是谷歌的AI代理,它利用LLMs和一个进化框架,能够自主地发现和优化算法,显著提升了基础研究和实际计算应用的水平。

结论

本章研究学习和适应在人工智能中的关键作用。AI代理通过持续的数据获取和经验积累来提升其性能。自我改进编码代理(SICA)通过代码修改自主改进其能力来体现这一点。

我们已审查了代理式人工智能的基本组成部分,包括架构、应用、规划、多代理协作、内存管理以及学习和适应。学习原则对于多代理系统的协调改进尤为重要。为了实现这一点,调优数据必须准确地反映完整的交互轨迹,捕捉每个参与代理的单独输入和输出。

这些要素促进了重大进步,例如谷歌的AlphaEvolve。这个AI系统通过LLMs、自动化评估以及进化方法独立地发现并优化了算法,推动了科学研究与计算技术的进步。这些模式可以被组合起来,构建出复杂的人工智能系统。像AlphaEvolve这样的进展表明,由AI代理进行的自主算法发现和优化是可行的。