第9章:学习和适应
学习和适应对于提升人工智能智能体的能力至关重要。这些过程使智能体能够超越预设的参数,通过经验和环境交互实现自主改进。通过学习和适应,智能体能够有效应对新情况并优化其性能,而无需持续的手动干预。本章详细探讨了支撑智能体学习和适应的原则和机制。
整体情况
智能体通过根据新的经验和数据改变其思考、行为或知识来学习和适应。这使得智能体能够从仅仅遵循指令发展到随着时间的推移变得越来越聪明。
- 强化学习: 智能体尝试行动,并因积极结果获得奖励,因消极结果受到惩罚,从而在变化的环境中学习最优行为。适用于控制机器人或玩游戏中的智能体。
- 监督学习: 智能体通过标记的示例进行学习,将输入与期望的输出相连接,从而实现决策制定和模式识别等任务。非常适合用于智能体对电子邮件进行分类或预测趋势。
- 无监督学习: 智能体在未标记的数据中发现隐藏的关联和模式,有助于洞察、组织和构建其环境的思维地图。适用于无需具体指导探索数据的智能体。
- 基于LLM的智能体进行少样本/零样本学习: 利用LLM的智能体可以快速适应新任务,仅需少量示例或明确指令,从而能够迅速响应新的命令或情况。
- 在线学习: 智能体持续用新数据更新知识,这对于动态环境中的实时反应和持续适应至关重要。对于处理连续数据流的智能体来说,这是必不可少的。
- 基于记忆的学习: 智能体通过回忆过去的经验来调整当前类似情况下的行为,从而增强情境意识和决策能力。适用于具有记忆回忆能力的智能体。
智能体通过改变策略、理解或目标来适应,基于学习进行适应对于处于不可预测、变化或新环境中的智能体至关重要。
近端策略优化(PPO)是一种强化学习算法,用于在具有连续动作范围的环境中训练智能体,例如控制机器人的关节或游戏中的人物。其主要目标是可靠且稳定地提升智能体的决策策略,即其策略。
PPO的核心思想是对智能体的策略进行小幅度、谨慎的更新。它避免了可能导致性能崩溃的剧烈变化。以下是其工作原理:
- 收集数据:智能体使用其当前策略与其环境(例如,玩游戏)进行交互,并收集一批经验(状态、动作、奖励)。
- 评估“代理”目标:PPO计算潜在策略更新会如何改变预期奖励。然而,它并非仅仅最大化这个奖励,而是使用一个特殊的“裁剪”目标函数。
- “裁剪”机制:这是PPO稳定性的关键。它为当前策略创建一个“信任区域”或安全区域。该算法被阻止做出与当前策略差异太大的更新。这种裁剪就像一个安全制动器,确保智能体不会采取巨大、风险高的步骤,从而抵消其学习成果。
简而言之,PPO(策略梯度优化)在提升性能的同时,保持与已知有效策略的接近,这有助于防止训练过程中的灾难性失败,并导致更稳定的学习。
直接偏好优化(DPO)是一种较新的方法,专门用于将大型语言模型(LLM)与人类偏好对齐。它为使用PPO完成此任务提供了一个更简单、更直接的替代方案。
要理解数据保护官(DPO),首先了解基于传统PPO(策略梯度优化)对齐方法是有帮助的:
PPO方法(两步过程): 1. 训练奖励模型:首先,您收集人类反馈数据,其中人们会对不同的LLM响应进行评分或比较(例如,“响应A比响应B更好”)。这些数据用于训练一个独立的AI模型,称为奖励模型,其任务是预测人类会给任何新的响应打多少分。 2. 使用PPO微调:接下来,使用PPO对LLM进行微调。LLM的目标是生成能够从奖励模型中获得最高分数的响应。奖励模型在训练游戏中充当“裁判”的角色。
这个两步过程可能复杂且不稳定。例如,大型语言模型(LLM)可能会找到漏洞,并学会“黑客”奖励模型,以获得不良回答的高分。
DPO方法(直接过程):DPO完全跳过了奖励模型。不是将人类偏好转化为奖励分数然后优化该分数,而是DPO直接使用偏好数据来更新LLM的策略。 它通过使用一种数学关系,将偏好数据直接与最优策略联系起来。本质上,它教导模型:“增加生成类似于偏好的响应的概率,并减少生成类似于不偏好的响应的概率。”
本质上,DPO通过直接优化语言模型在人类偏好数据上的表现来简化对齐过程。这避免了训练和使用独立奖励模型的复杂性和潜在的不稳定性,使得对齐过程更加高效和稳健。
实际应用与用例
自适应智能体通过由经验数据驱动的迭代更新,在多变环境中展现出增强的性能。
- 个性化助手智能体通过纵向分析个体用户行为,优化交互协议,确保高度优化的响应生成。
- 交易智能体通过根据高分辨率、实时市场数据动态调整模型参数来优化决策算法,从而最大化金融收益并降低风险因素。
- 应用程序智能体通过根据观察到的用户行为进行动态修改来优化用户界面和功能,从而提高用户参与度和系统直观性。
- 机器人与自主车辆智能体通过整合传感器数据和历史动作分析,增强了导航和响应能力,能够在各种环境条件下实现安全高效的操作。
- 欺诈检测智能体通过利用新识别的欺诈模式来优化预测模型,从而提高异常检测能力,增强系统安全性并最小化财务损失。
- 推荐智能体通过采用用户偏好学习算法,提高内容选择精度,提供高度个性化和与上下文相关的推荐。
- 游戏AI智能体通过动态调整策略算法,从而增强玩家参与度,提高游戏复杂性和挑战性。
- 知识库学习智能体:智能体可以利用检索增强生成(RAG)来维护一个动态的问题描述和已验证解决方案的知识库(参见第14章)。通过存储成功的策略和遇到的挑战,智能体可以在决策过程中参考这些数据,通过应用之前成功的模式或避免已知的陷阱,更有效地适应新情况。
案例研究:自我提升的编码智能体(SICA)
自我提升编码智能体(SICA),由Maxime Robeyns、Laurence Aitchison和Martin Szummer开发,代表了基于智能体学习的一个进步,展示了智能体修改自身源代码的能力。这与传统方法形成对比,在传统方法中,一个智能体可能会训练另一个智能体;SICA既是修改者也是被修改的实体,通过迭代优化其代码库,在各种编码挑战中提升性能。
SICA的自我改进通过一个迭代周期进行(见图1)。最初,SICA会回顾其过往版本及其在基准测试中的表现。它会选择性能评分最高的版本,该评分基于一个加权公式计算,考虑了成功率、时间和计算成本。然后,这个选定的版本将进行下一轮自我修改。它会分析存档以识别潜在的改进,然后直接修改其代码库。修改后的智能体随后将接受基准测试,并将结果记录在存档中。这个过程会重复进行,从而直接从过往表现中学习。这种自我改进机制使得SICA能够在不依赖传统训练范式的情况下进化其能力。

图1:SICA基于其过往版本进行自我改进、学习和适应
SICA经历了显著的自我提升,从而在代码编辑和导航方面取得了进步。最初,SICA使用基本的文件覆盖方法进行代码更改。随后,它开发了一个“智能编辑器”,能够进行更智能和上下文相关的编辑。这进一步演变为“增强型差异智能编辑器”,它集成了差异以进行针对性的修改和基于模式的编辑,以及一个“快速覆盖工具”以减少处理需求。
SICA进一步实现了“最小化差异输出优化”和“上下文敏感差异最小化”,利用抽象语法树(AST)解析以提高效率。此外,还添加了一个“智能编辑器输入标准化器”。在导航方面,SICA独立创建了一个“AST符号定位器”,使用代码的结构映射(AST)来识别代码库中的定义。随后,开发了一个“混合符号定位器”,结合快速搜索和AST检查。通过“混合符号定位器中的优化AST解析”进一步优化,专注于相关代码部分,提高了搜索速度。(见图2)

图2:迭代过程中的性能表现。关键改进及其对应的工具或智能体修改已标注。 (由Maxime Robeyns、Martin Szummer、Laurence Aitchison提供)
SICA的架构包括用于基本文件操作、命令执行和算术计算的底层工具包。它包含结果提交和调用专用子智能体(编码、问题解决和推理)的机制。这些子智能体分解复杂任务,并管理LLM的上下文长度,尤其是在长期改进周期中。
一个异步的监管智能体,另一个LLM,监控SICA的行为,识别潜在的問題,如循环或停滞。它可以与SICA通信,并在必要时进行干预以停止执行。监管智能体接收SICA行动的详细报告,包括调用图和消息及工具操作的日志,以识别模式和低效之处。
SICA的LLM以结构化的方式在其上下文窗口、短期记忆中组织信息,这对于其运行至关重要。这种结构包括定义智能体目标的系统提示、工具和子智能体文档以及系统指令。核心提示包含问题陈述或指令、打开文件的内容和目录图。助手消息记录智能体的逐步推理、工具和子智能体调用记录和结果,以及监管者的通信。这种组织方式促进了高效的信息流动,增强了LLM的运行效率,并减少了处理时间和成本。最初,文件更改以差异形式记录,仅显示修改内容,并定期合并。
SICA:代码探秘:深入探究SICA的实现,可以发现其能力背后的几个关键设计选择。正如所讨论的,该系统采用模块化架构,集成了多个子智能体,例如编码智能体、问题解决智能体和推理智能体。这些子智能体由主智能体调用,类似于工具调用,旨在分解复杂任务并高效管理上下文长度,尤其是在那些扩展的元改进迭代过程中。
该项目正在积极开发中,旨在为对训练后LLM在工具使用和其他智能体任务感兴趣的人提供一个稳健的框架,完整代码可在https://github.com/MaximeRobeyns/self_improving_coding_agent/ GitHub仓库中进一步探索和贡献。
为了安全起见,该项目高度重视Docker容器化,这意味着智能体在专用的Docker容器中运行。这是一项至关重要的措施,因为它提供了与宿主机的隔离,降低了由于智能体能够执行shell命令而导致的意外文件系统操作等风险。
为确保透明度和控制,该系统通过一个交互式网页提供了强大的可观察性,该网页可视化事件总线上的事件和智能体的调用图。这为智能体的操作提供了全面的洞察,使用户能够检查单个事件、阅读监管者消息,并折叠子智能体跟踪以获得更清晰的理解。
在核心智能方面,智能体框架支持从各种提供商集成LLM,允许对不同的模型进行实验,以找到特定任务的最佳匹配。最后,一个关键组件是异步监管者,这是一个与主智能体并行运行的LLM。监管者会定期评估智能体的行为,以检测是否存在病态偏差或停滞,并在必要时通过发送通知甚至取消智能体的执行来进行干预。它接收系统状态的详细文本表示,包括调用图和LLM消息、工具调用及响应的事件流,这使得它可以检测到低效的模式或重复的工作。
在SICA初始实施过程中,一个显著的挑战是引导基于LLM的智能体在每次元改进迭代中独立提出新颖、创新、可行且引人入胜的修改。这一限制,尤其是在培养LLM智能体的开放式学习和真实创造力方面,仍然是当前研究的关键领域。
AlphaEvolve 和 OpenEvolve
AlphaEvolve 是由谷歌开发的一款AI智能体,旨在发现和优化算法。它结合了大型语言模型(LLM),特别是Gemini模型(Flash和Pro),自动化评估系统和进化算法框架。该系统旨在推动理论数学和实际计算应用的发展。
AlphaEvolve采用了Gemini模型的集成。Flash用于生成广泛的初始算法提案,而Pro则提供更深入的分析和优化。随后,提出的算法将根据预定义的标准自动进行评估和评分。这种评估提供了反馈,用于迭代改进解决方案,从而产生优化和创新的算法。
在实用计算中,AlphaEvolve已被部署在谷歌的基础设施中。它已在数据中心调度方面展现出改进,导致全球计算资源使用量降低了0.7%。它还通过为即将推出的张量处理单元(TPUs)中的Verilog代码提出优化建议,对硬件设计做出了贡献。此外,AlphaEvolve加速了人工智能性能,包括Gemini架构核心内核的速度提高了23%,以及FlashAttention的低级GPU指令优化高达32.5%。
在基础研究领域,AlphaEvolve为矩阵乘法算法的发现做出了贡献,包括一种用于4x4复值矩阵的方法,该方法使用了48次标量乘法,超越了之前已知的解决方案。在更广泛的数学研究中,它在75%的情况下重新发现了现有最先进解决方案,并在20%的情况下改进了现有解决方案,例如在亲吻数问题上的进展。
OpenEvolve 是一种进化编码智能体,它利用LLM(见图3)来迭代优化代码。它协调一个由LLM驱动的代码生成、评估和选择的工作流程,以持续提升各种任务中的程序。OpenEvolve的关键特性在于其能够进化整个代码文件,而不仅仅是单个函数。该智能体设计具有多功能性,支持多种编程语言,并与任何LLM兼容的OpenAI API保持兼容。此外,它还集成了多目标优化,允许灵活的提示工程,并能够进行分布式评估,以高效地处理复杂的编码挑战。

图3:OpenEvolve的内部架构由一个控制器管理。该控制器协调多个关键组件:程序采样器、程序数据库、评估器池和LLM集成。其主要功能是促进它们的学习和适应过程,以提升代码质量。
此代码片段使用OpenEvolve库对一个程序进行进化优化。它使用初始程序、评估文件和配置文件的路径初始化OpenEvolve系统。evolve.run(iterations=1000)这一行启动进化过程,运行1000次迭代以找到程序的改进版本。最后,它以四位小数格式打印出进化过程中找到的最佳程序的指标。
from openevolve import OpenEvolve # Initialize the system
evolve = OpenEvolve(
initial_program_path="path/to/initial_program.py",
evaluation_file="path/to/evaluator.py",
config_path="path/to/config.yaml"
) # Run the evolution
best_program = await evolve.run(iterations=1000)
print(f"Best program metrics:")
for name, value in best_program.metrics.items():
print(f" {name}: {value:.4f}")
概览
内容: 智能体通常在动态且不可预测的环境中运行,预编程的逻辑往往不足以应对。当面临在设计初期未预料到的全新情况时,它们的性能可能会下降。如果没有从经验中学习的能力,智能体无法优化其策略或随着时间的推移个性化其交互。这种僵化限制了它们的有效性,并阻止它们在复杂、真实世界的场景中实现真正的自主性。
原因: 标准化的解决方案是整合学习和适应机制,将静态智能体转变为动态、演化的系统。这使得智能体能够根据新的数据和交互自主地优化其知识和行为。智能体系统可以使用各种方法,从强化学习到更高级的技术,如自我改进(如自我改进编码智能体SICA中所示)。像Google的AlphaEvolve这样的先进系统利用LLM和进化算法来发现全新的、更高效的复杂问题解决方案。通过持续学习,智能体可以掌握新任务,提升其性能,并适应不断变化的环境,而无需不断进行手动重新编程。
经验法则: 当构建必须在动态、不确定或不断变化的环境中运行的智能体时,请使用此模式。这对于需要个性化、持续性能改进以及能够自主处理新情况的应用至关重要。
视觉摘要

图4:学习和适应模式
关键要点
学习和适应是指智能体通过利用经验不断提升自身能力,并处理新情况的能力。 “适应”是指智能体由于学习而产生的行为或知识上的可见变化。 * SICA(自我改进编码智能体),通过根据以往的表现修改其代码来实现自我改进。这导致了智能编辑器和AST符号定位器等工具的出现。 拥有专门的“子智能体”和“监管者”有助于这些自我改进的系统管理大型任务并保持进度。 LLM的“上下文窗口”设置方式(包括系统提示、核心提示和助手消息)对于智能体的工作效率至关重要。 这种模式对于需要在不断变化、不确定或需要个性化触感的环境中运行的智能体至关重要。 构建能够学习的智能体通常意味着将它们与机器学习工具连接起来,并管理数据流。 一个配备基本编码工具的智能体系统可以自主编辑自身,从而提高其在基准任务上的性能。 AlphaEvolve是谷歌的AI智能体,它利用LLM(大型语言模型)和进化框架,自主发现和优化算法,显著提升了基础研究和实际计算应用的能力。
结论
本章探讨了学习与适应在人工智能中的关键作用。人工智能智能体通过持续的数据获取和经验积累来提升其性能。自我改进编码智能体(SICA)通过自主修改代码来提升其能力,从而成为这一点的例证。
我们已经审查了智能体AI的基本组件,包括架构、应用、规划、多智能体协作、内存管理和学习与适应。学习原则对于多智能体系统中协调改进尤为重要。为了实现这一点,调整数据必须准确反映完整的交互轨迹,捕捉每个参与智能体的个体输入和输出。
这些元素促进了显著进步,例如谷歌的AlphaEvolve。这个AI系统通过LLM(大型语言模型)、自动评估和进化方法独立发现和优化算法,推动科学研究和技术计算的发展。这些模式可以组合起来构建复杂的AI系统。AlphaEvolve等发展表明,由AI智能体自主发现和优化算法是可行的。
参考文献
- Sutton, R. S. & Barto, A. G. (2018). 强化学习:入门. 麻省理工学院出版社。
- Goodfellow, I.,Bengio, Y.,& Courville, A. (2016). 《深度学习》. 麻省理工学院出版社。
- 米切尔,T. M. (1997). 《机器学习》。麦格劳-希尔出版社。
- 《近端策略优化算法》由John Schulman、Filip Wolski、Prafulla Dhariwal、Alec Radford和Oleg Klimov所著。您可以在arXiv上找到它
- Robeyns, M.,Aitchison, L.,& Szummer, M. (2025). 自我改进的编码智能体. arXiv:2504.15228v2. https://github.com/MaximeRobeyns/self_improving_coding_agent
- [AlphaEvolve博客(https://deepmind.google/discover/blog/alphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms/)
- OpenEvolve
```