Skip to main content
章节18 min read

第9章:Learning and Adaptation

第9章:Learning and Adaptation Learning and Adaptation 对于增强人工智能 Agent 的能力至关重要。这些过程使 Agent 能够超越预定参数的限制,通过经验和环境交互来自主改进。通过 Learning and Adaptation,Agent 可以有效地管理新情况并优化...

第9章:Learning and Adaptation

Learning and Adaptation 对于增强人工智能 Agent 的能力至关重要。这些过程使 Agent 能够超越预定参数的限制,通过经验和环境交互来自主改进。通过 Learning and Adaptation,Agent 可以有效地管理新情况并优化其表现,而无需持续的人工干预。本章详细探讨了支撑 Agent Learning and Adaptation 的原理和机制。

全景图

Agent 通过基于新的经验和数据来改变其思维、行动或知识,从而实现 Learning and Adaptation。这使 Agent 能够从简单地遵循指令进化到随时间推移变得更聪明。

  • 强化学习(Reinforcement Learning):Agent 尝试动作并获得正面结果的奖励和负面结果的惩罚,在不断变化的情境中学习最优行为。适用于控制机器人或玩游戏的 Agent。
  • 监督学习(Supervised Learning):Agent 从带标签的示例中学习,将输入与期望输出连接起来,从而实现决策和模式识别等任务。适合用于分类邮件或预测趋势的 Agent。
  • 无监督学习(Unsupervised Learning):Agent 在未标记数据中发现隐藏的联系和模式,有助于洞察、组织以及创建其环境的心理地图。适用于在没有特定指导的情况下探索数据的 Agent。
  • 基于 LLM 的 Few-Shot/Zero-Shot Learning:利用 LLM 的 Agent 可以通过最少的示例或清晰的指令快速适应新任务,从而能够快速响应新命令或新情境。
  • 在线学习(Online Learning):Agent 持续使用新数据更新知识,这对于动态环境中的实时反应和持续适应至关重要。对于处理连续数据流的 Agent 尤为关键。
  • 基于记忆的学习(Memory-Based Learning):Agent 回忆过去的经验来调整当前类似情境中的行动,增强上下文意识和决策能力。对于具有 Memory 回忆能力的 Agent 非常有效。

Agent 通过基于学习来改变策略、理解或目标进行适应。这对于在不可预测、不断变化或全新的环境中运行的 Agent 至关重要。

**近端策略优化(Proximal Policy Optimization,PPO)**是一种强化学习算法,用于在具有连续动作范围的环境中训练 Agent,例如控制机器人关节或游戏中的角色。其主要目标是可靠且稳定地改进 Agent 的决策策略(即其 policy)。

PPO 的核心思想是对 Agent 的 policy 进行小幅、谨慎的更新。它避免可能导致性能崩溃的剧烈变化。其工作方式如下:

  1. 收集数据:Agent 使用其当前 policy 与环境交互(例如玩游戏),并收集一批经验(状态、动作、奖励)。
  2. 评估"替代"目标:PPO 计算潜在的 policy 更新如何改变期望奖励。然而,它不是简单地最大化此奖励,而是使用一个特殊的 "clipped" 目标函数。
  3. "Clipping"机制:这是 PPO 稳定性的关键所在。它在当前 policy 周围创建一个"信任区域"或安全区。算法被阻止进行与当前策略相差太大的更新。这种 clipping 就像安全刹车一样,确保 Agent 不会迈出巨大而冒险的一步,从而毁掉已经学到的内容。

简而言之,PPO 在改进表现与保持接近已知有效的策略之间取得平衡,从而防止训练中的灾难性失败,实现更稳定的学习。

**直接偏好优化(Direct Preference Optimization,DPO)**是一种较新的方法,专门用于将大语言模型(LLM)与人类偏好对齐。它为这项任务提供了一种比使用 PPO 更简单、更直接的替代方案。

要理解 DPO,首先了解传统的基于 PPO 的对齐方法会有所帮助:

  • PPO 方法(两步过程)

    1. 训练奖励模型:首先,收集人类反馈数据,其中人们对不同的 LLM 响应进行评分或比较(例如,"Response A 比 Response B 更好")。这些数据用于训练一个单独的 AI 模型,称为奖励模型(reward model),其任务是预测人类会对任何新响应给出什么分数。
    2. 使用 PPO 微调:接下来,使用 PPO 对 LLM 进行微调。LLM 的目标是生成能够从奖励模型获得最高可能分数的响应。奖励模型在训练过程中充当"裁判"的角色。

    这个两步过程可能复杂且不稳定。例如,LLM 可能会找到漏洞,学会"破解"奖励模型,为糟糕的响应获取高分。

  • DPO 方法(直接过程):DPO 完全跳过了奖励模型。它不是将人类偏好转化为奖励分数,然后针对该分数进行优化,而是直接使用偏好数据来更新 LLM 的 policy。

  • 它通过使用一个数学模型来工作,该模型直接将偏好数据与最优 policy 联系起来。本质上,它教会模型:"增加生成与首选响应相似的响应的概率,减少生成与不喜欢的响应相似的响应的概率。"

本质上,DPO 通过直接在人偏好数据上优化语言模型来简化对齐过程。这避免了训练和使用单独奖励模型的复杂性和潜在的不稳定性,使对齐过程更高效、更鲁棒。

实际应用与用例

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

  • 个性化助手 Agent 通过对个体用户行为的纵向分析来优化交互协议,确保高度优化的响应生成。
  • 交易机器人 Agent 通过基于高分辨率实时市场数据动态调整模型参数来优化决策算法,从而最大化财务回报并降低风险因素。
  • 应用 Agent 通过基于观察到的用户行为动态修改来优化用户界面和功能,从而提高用户参与度和系统直观性。
  • 机器人和自动驾驶车辆 Agent 通过整合传感器数据和历史行为分析来增强导航和响应能力,从而在各种环境条件下实现安全高效的操作。
  • 欺诈检测 Agent 通过使用新识别的欺诈模式优化预测模型来提高异常检测能力,增强系统安全性并最小化财务损失。
  • 推荐 Agent 通过采用用户偏好学习算法来提高内容选择的精确度,提供高度个性化和上下文相关的推荐。
  • 游戏 AI Agent 通过动态调整策略算法来增强玩家参与度,从而提高游戏的复杂性和挑战性。
  • 知识库学习 Agent:Agent 可以利用 Retrieval Augmented Generation(RAG)来维护一个问题描述和经过验证的解决方案的动态知识库(参见第 14 章)。通过存储成功的策略和遇到的挑战,Agent 可以在决策过程中参考这些数据,通过应用以前成功的模式或避免已知的陷阱来更有效地适应新情境。

案例研究:Self-Improving Coding Agent(SICA)

Self-Improving Coding Agent(SICA)由 Maxime Robeyns、Laurence Aitchison 和 Martin Szummer 开发,代表了基于 Agent 的 Learning 领域的一项进展,展示了 Agent 修改其自身源代码的能力。这与传统方法形成对比——在传统方法中,一个 Agent 可能训练另一个 Agent;SICA 同时充当修改者和被修改的实体,迭代地优化其代码库以提高在各种编码挑战中的表现。

SICA 的自我改进通过迭代循环运作(见图 1)。最初,SICA 审查其过往版本及其在基准测试上表现的存档。它选择性能得分最高的版本,该得分基于考虑成功、时间和计算成本的加权公式计算。然后,这个选定的版本进行下一轮自我修改。它分析存档以识别潜在的改进,然后直接更改其代码库。修改后的 Agent 随后针对基准进行测试,结果记录在存档中。此过程重复进行,促进直接从过去表现中学习。

这种自我改进机制使 SICA 能够在不依赖传统训练范式的情况下进化其能力。

图1:SICA 的自我改进,基于其历史版本进行 Learning and Adaptation

SICA 经历了显著的自我改进,导致了代码编辑和导航方面的进步。最初,SICA 使用基本的文件覆盖方法进行代码更改。随后,它开发了一个 "Smart Editor",能够进行更智能和上下文感知的编辑。这演变为 "Diff-Enhanced Smart Editor",将 diffs 用于目标修改和基于模式的编辑,以及一个 "Quick Overwrite Tool" 以减少处理需求。

SICA 进一步实现了 "Minimal Diff Output Optimization" 和 "Context-Sensitive Diff Minimization",使用抽象语法树(AST)解析以提高效率。此外,还添加了一个 "SmartEditor Input Normalizer"。在导航方面,SICA 独立创建了一个 "AST Symbol Locator",使用代码的结构映射(AST)来识别代码库中的定义。后来,开发了 "Hybrid Symbol Locator",将快速搜索与 AST 检查结合起来。这通过 "Optimized AST Parsing in Hybrid Symbol Locator" 进一步优化,以专注于相关代码段,提高搜索速度。(见图 2)

图2:跨迭代的性能表现。关键改进标注了相应的工具或 Agent 修改。(图片由 Maxime Robeyns、Martin Szummer、Laurence Aitchison 提供)

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

一个异步监督器(asynchronous overseer),即另一个 LLM,监控 SICA 的行为,识别潜在问题,如循环或停滞。它与 SICA 通信,并在必要时可以干预以暂停执行。监督器接收 SICA 行动的详细报告,包括调用图和消息及工具操作的日志,以识别模式及低效。

SICA 的 LLM 在其上下文窗口(即短期记忆)中以结构化方式组织信息,这对其操作至关重要。这种结构包括:定义 Agent 目标的 System Prompt、工具和子 Agent 文档以及系统指令。Core Prompt 包含问题陈述或指令、打开文件的内容以及目录映射。Assistant Messages 记录了 Agent 的逐步推理、工具和子 Agent 调用记录和结果,以及监督器通信。这种组织促进了高效的信息流,增强 LLM 操作,减少处理时间和成本。最初,文件更改以 diff 形式记录,仅显示修改部分并定期合并。

SICA:深入代码:更深入地查看 SICA 的实现揭示了支撑其能力的几个关键设计选择。如前所述,系统采用模块化架构构建,包含若干子 Agent,如 coding agent、problem-solver agent 和 reasoning agent。这些子 Agent 由主 Agent 调用,类似于工具调用,用于分解复杂任务并有效管理上下文长度,特别是在那些扩展的元改进迭代中。

该项目正在积极开发中,旨在为那些对在 Tool Use 和其他 Agent 任务上进行 LLM 后训练感兴趣的人提供一个强大的框架,完整代码可在 https://github.com/MaximeRobeyns/self_improving_coding_agent/ GitHub 仓库中查阅和贡献。出于安全考虑,该项目强烈强调 Docker 容器化,这意味着 Agent 在专用的 Docker 容器中运行。这是一个至关重要的措施,因为考虑到 Agent 执行 shell 命令的能力,它提供了与宿主机的隔离,降低了意外操 纵文件系统等风险。

为了确保透明度和可控性,系统通过一个交互式网页提供强大的可观测性,该网页可视化事件总线上的事件和 Agent 的调用图。这提供了对 Agent 动作的全面洞察,允许用户检查单个事件、阅读监督器消息,并折叠子 Agent 跟踪以获得更清晰的理解。

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

初始 SICA 实现中的一个显著挑战是,如何在每个元改进迭代中提示基于 LLM 的 Agent 独立提出新颖、创新、可行且引人入胜的修改。这一局限性,特别是在培养 LLM Agent 的开放式学习和真正创造力方面,仍然是当前研究中的一个关键调查领域。

AlphaEvolve 和 OpenEvolve

AlphaEvolve 是 Google 开发的一个 AI Agent,旨在发现和优化算法。它结合使用 LLM(具体是 Gemini 模型,包括 Flash 和 Pro)、自动化评估系统和进化算法框架。该系统旨在推进理论数学和实际计算应用。

AlphaEvolve 采用 Gemini 模型的集成。Flash 用于生成各种初始算法提案,而 Pro 提供更深入的分析和优化。然后,提出的算法根据预定标准自动评估和评分。此评估提供反馈,用于迭代改进解决方案,从而产生优化和新颖的算法。

在实际计算方面,AlphaEvolve 已部署在 Google 的基础设施中。它已展示出在数据中心调度方面的改进,导致全球计算资源使用量减少 0.7%。它还为硬件设计做出了贡献,为即将到来的 Tensor Processing Units (TPUs) 中的 Verilog 代码提出了优化建议。此外,AlphaEvolve 加速了 AI 性能,包括 Gemini 架构核心内核的 23% 速度提升,以及 FlashAttention 的低级 GPU 指令优化高达 32.5%。

在基础研究领域,AlphaEvolve 为矩阵乘法新算法的发现做出了贡献,包括一种用于 4x4 复值矩阵的方法,使用了 48 次标量乘法,超越了先前已知的解决方案。在更广泛的数学研究中,它在 75% 的情况下重新发现了 50 多个开放问题的现有最先进解决方案,在 20% 的情况下改进了现有解决方案,包括 kissing number problem 方面的进展。

OpenEvolve 是一个利用 LLM(见图 3)迭代优化代码的进化编程 Agent。它编排了一个 LLM 驱动的代码生成、评估和选择的流水线,以持续增强各种任务的程序。OpenEvolve 的一个关键特点是它能够进化整个代码文件,而不仅限于单个函数。该 Agent 设计具有多功能性,支持多种编程语言,并与任何 LLM 的 OpenAI 兼容 API 兼容。此外,它整合了多目标优化,允许灵活的 Prompt Engineering,并能够进行分布式评估以高效处理复杂的编码挑战。

图 3:OpenEvolve 内部架构由 controller 管理。此 controller 协调几个关键组件:program sampler、Program Database、Evaluator Pool 和 LLM Ensembles。其主要功能是促进它们的 Learning and Adaptation 过程以提升代码质量。

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

python
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}")

At a Glance

What(问题):AI Agent 通常在动态且不可预测的环境中运行,预编程的逻辑不足以应对。当面对初始设计时未预料到的新情况时,其性能可能下降。没有从经验中学习的能力,Agent 无法随时间优化其策略或个性化其交互。这种僵化限制了它们的有效性,并阻止它们在复杂的现实场景中实现真正的自主性。

Why(解决方案):标准化解决方案是整合 Learning and Adaptation 机制,将静态 Agent 转化为动态的、不断进化的系统。这使 Agent 能够根据新数据和交互自主地优化其知识和行为。Agent 系统可以使用各种方法,从强化学习到更先进的技术如自我修改,如 Self-Improving Coding Agent (SICA) 中所示。像 Google 的 AlphaEvolve 这样的先进系统利用 LLM 和进化算法来发现解决复杂问题的全新且更高效的方案。通过持续学习,Agent 可以掌握新任务、提升表现,并适应不断变化的条件,而无需持续的人工重新编程。

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

视觉总结

图4:Learning and Adaptation 模式

Key Takeaways

  • Learning and Adaptation 是关于 Agent 通过利用经验变得更好并应对新情况。
  • "Adaptation"是从学习中产生的 Agent 行为或知识的可见变化。
  • SICA(Self-Improving Coding Agent)通过基于过去表现修改自己的代码来实现自我改进。这催生了像 Smart Editor 和 AST Symbol Locator 这样的工具。
  • 拥有专门的 "子 Agent" 和一个 "监督器" 有助于这些自我改进系统管理大型任务并保持正轨。
  • LLM 的 "上下文窗口" 的设置方式(包括 system prompts、core prompts 和 assistant messages)对于 Agent 工作的效率非常重要。
  • 此模式对于需要在始终变化、不确定或需要个性化处理的环境中运行的 Agent 至关重要。
  • 构建会学习的 Agent 通常意味着将它们与机器学习工具连接起来,并管理数据如何流动。
  • 一个 Agent 系统,配备基本的编码工具,可以自主编辑自身,从而提升其在基准任务上的表现。
  • AlphaEvolve 是 Google 的 AI Agent,它利用 LLM 和进化框架来自主发现和优化算法,显著增强了基础研究和实际计算应用。

结论

本章探讨了 Learning and Adaptation 在人工智能中的关键角色。AI Agent 通过持续的数据获取和经验积累来提升其表现。Self-Improving Coding Agent (SICA) 通过代码修改自主提升其能力,体现了这一点。

我们已经回顾了 Agent 化 AI 的基本组成部分,包括架构、应用、Planning、Multi-Agent Collaboration、Memory Management,以及 Learning and Adaptation。学习原则对于 Multi-Agent 系统中的协调改进尤其重要。为了实现这一点,调优数据必须准确反映完整的交互轨迹,捕获每个参与 Agent 的输入和输出。

这些元素促成了重大进展,如 Google 的 AlphaEvolve。这一 AI 系统通过 LLM、自动化评估和进化方法自主发现和优化算法,推动了科学研究和计算技术的进步。这些模式可以组合起来构建复杂的 AI 系统。像 AlphaEvolve 这样的发展表明,由 AI Agent 实现的自主算法发现和优化是可实现的。

参考文献

  1. Sutton, R. S., & Barto, A. G. (2018). Reinforcement Learning: An Introduction. MIT Press.
  2. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
  3. Mitchell, T. M. (1997). Machine Learning. McGraw-Hill.
  4. Proximal Policy Optimization Algorithms by John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, and Oleg Klimov. You can find it on arXiv: https://arxiv.org/abs/1707.06347
  5. Robeyns, M., Aitchison, L., & Szummer, M. (2025). A Self-Improving Coding Agent. arXiv:2504.15228v2. https://arxiv.org/pdf/2504.15228 https://github.com/MaximeRobeyns/self_improving_coding_agent
  6. AlphaEvolve blog, https://deepmind.google/discover/blog/alphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms/
  7. OpenEvolve, https://github.com/codelion/openevolve