智能体设计模式-CH09:学习与适应(Learning and Adaptation)

英文原地址:Chapter 9: Learning and Adaptation

学习与适应对于增强智能体的能力至关重要。这些过程使智能体能够超越预设参数,通过经验和与环境的交互自主改进。通过学习与适应,智能体可以有效应对新颖情境,并在无需持续人工干预的情况下优化其表现。本章将详细探讨支撑智能体学习与适应的原理与机制。

概览

智能体通过基于新的经验与数据改变其思维、行动或知识来进行学习与适应。这使得智能体能够从单纯执行指令演变为随着时间推移变得更智能。

  • 强化学习: 智能体尝试动作,并因正向结果获得奖励、因负向结果受到惩罚,从而在变化的情境中学习最优行为。适用于控制机器人或玩游戏的智能体。
  • 监督学习: 智能体从带标签的示例中学习,将输入与期望输出相连接,从而实现决策制定与模式识别等任务。适用于对邮件进行分类或预测趋势的智能体。
  • 无监督学习: 智能体在未标注数据中发现隐藏的关联与模式,有助于洞察、组织信息,并构建其环境的心智地图。适用于在缺乏特定指导下探索数据的智能体。
  • 基于 LLM 的小样本/零样本学习: 利用 LLM 的智能体可通过极少示例或清晰指令快速适应新任务,从而对新命令或情境做出迅速响应。
  • 在线学习: 智能体持续用新数据更新知识,这对于在动态环境中进行实时反应与持续适应至关重要。对处理连续数据流的智能体尤为关键。
  • 基于记忆的学习: 智能体回忆过去经验,在相似情境下调整当前行动,增强情境感知与决策能力。适用于具备记忆回溯能力的智能体。

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

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

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

  1. 数据收集:智能体使用当前策略与环境交互(例如玩游戏),并收集一批经验(状态、动作、奖励)。
  2. 评估"替代"目标:PPO 计算一次潜在策略更新对期望回报的影响。然而,它并不只是简单地最大化该回报,而是使用一种特殊的"裁剪"目标函数。
  3. "裁剪"机制:这是 PPO 稳定性的关键。它在当前策略周围创建一个"信任域"或安全区。算法被限制不能进行与当前策略差异过大的更新。这种裁剪就像安全刹车,确保智能体不会迈出巨大的高风险一步而推翻其已学到的内容。

简而言之,PPO 在提升性能与保持接近已知可用策略之间取得平衡,从而防止训练中的灾难性失败,并带来更稳定的学习。

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

要理解 DPO,首先有助于了解基于传统 PPO 的对齐方法(两步流程):

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

这一两步走的流程可能复杂且不稳定。例如,LLM 可能会找到漏洞,学会"黑箱操作"奖励模型,从而让糟糕的回复也获得高分。

  • DPO 方法(Direct Process):DPO 完全跳过奖励模型。它不是把人类偏好转化为奖励分数再进行优化,而是直接使用偏好数据来更新 LLM 的策略。
  • 其原理是利用一种将偏好数据与最优策略直接关联的数学关系。本质上,它教会模型:"提高生成类似偏好 回复的概率,降低生成类似不受偏好回复的概率。"

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

实际应用与使用场景

自适应智能体通过由经验数据驱动的迭代更新,在多变环境中表现更佳。

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

案例研究:自我改进编码智能体(SICA)

由 Maxime Robeyns、Laurence Aitchison 和 Martin Szummer 开发的自我改进编码智能体(SICA),代表了基于智能体学习的一项进步,展示了智能体修改自身源代码的能力。这与传统方法中一个智能体训练另一个智能体形成对比;SICA 同时充当修改者与被修改者,通过迭代优化其代码库,以提升在各类编码挑战中的表现

SICA 的自我改进通过迭代循环运行(见图 1)。起初,SICA 回顾其过往版本及其在基准测试中的表现。它选择基于加权公式(考虑成功、时间与计算成本)计算出的最高性能得分版本。该选定版本随后进行下一轮自我修改。它分析归档以识别潜在改进点,随后直接更改其代码库。修改后的智能体会再次针对基准测试进行评估,结果记录在归档中。此过程反复执行,使其能直接从过去表现中学习。这种自我改进机制使 SICA 无需传统训练范式即可演化其能力。

图 1:SICA 基于其过往版本进行自我改进、学习与适应

SICA 经历了显著的自我改进,在代码编辑与导航方面取得了进展。最初,SICA 使用基础的文件覆盖方式进行代码变更。随后,它开发了能够进行更智能、具备上下文感知的"Smart Editor"。这进一步演化为"Diff-Enhanced Smart Editor",通过引入 diff 实现目标化修改与基于模式的编辑,并配备"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:跨迭代的性能表现。关键改进以其对应的工具或智能体修改进行注释。(致谢 Maxime Robeyns、Martin Szummer、Laurence Aitchison)

SICA 的架构由用于基本文件操作、命令执行与算术计算的基础工具集构成。它包含提交结果与调用专门子智能体(编码、问题求解与推理)的机制。这些子智能体将复杂任务分解,并在长时改进周期中管理 LLM 的上下文长度。

一个异步监管者(另一个 LLM)监控 SICA 的行为,识别循环或停滞等潜在问题。它与 SICA 通信,并在必要时介入以终止执行。监管者会接收 SICA 行为的详细报告,包括调用图与消息及工具动作日志,以识别模式与低效之处。

SICA 的 LLM 在其上下文窗口(短期记忆)内以结构化方式组织信息,这对其运作至关重要。该结构包括定义智能体目标的系统提示、工具与子智能体文档以及系统指令。一个核心提示包含问题陈述或指令、已打开文件的内容以及目录映射。助手消息记录智能体的逐步推理、工具与子智能体调用记录及结果,以及监管者通信。此种组织方式促进信息高效流动,增强 LLM 运行并降低处理时间与成本。起初,文件变更以 diff 的形式记录,仅显示修改内容,并定期进行整合。

SICA:代码一览: 深入探究 SICA 的实现揭示了其能力背后的若干关键设计选择。如前所述,系统采用模块化架构,包含多个子智能体,例如编码智能体、问题求解智能体和推理智能体。主智能体会像工具调用一样触发这些子智能体,以分解复杂任务并高效管理上下文长度,尤其是在那些延展的元改进迭代期间。

该项目在积极开发中,旨在为有意在工具使用及其他 agentic 任务上进行后训练的人员提供稳健框架,完整代码可在 github.com/MaximeRobey... GitHub 仓库查看与贡献

出于安全考虑,项目强烈强调 Docker 容器化,这意味着智能体在专用的 Docker 容器内运行。这是一项至关重要的措施,因为它提供了与主机的隔离,从而减轻了诸如无意文件系统操作等风险,鉴于智能体具备执行 shell 命令的能力。

为确保透明与可控,系统通过交互式网页提供强大的可观测性,可对事件总线与智能体的调用图进行可视化。这为智能体行为提供了全面洞察,使用户能够检查单个事件、阅读监督者消息,并折叠子智能体跟踪以获得更清晰的理解。

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

初版 SICA 实现中的一项显著挑战,是在每次元改进迭代中,促使基于 LLM 的智能体独立提出新颖、创新、可行且引人入胜的修改。这一局限,尤其是在促进开放式学习与实现 LLM 智能体真实创造力方面,仍是当前研究的关键探索领域。

AlphaEvolve 和 OpenEvolve

AlphaEvolve 是由 Google 开发的智能体,旨在发现与优化算法。它结合使用 LLMs,具体为 Gemini 模型(Flash 与 Pro)、自动化评估系统以及进化算法框架。该系统旨在推动理论数学与实际计算应用的共同进步。

AlphaEvolve 采用 Gemini 模型集成。Flash 用于生成范围广泛的初始算法方案,而 Pro 提供更深入的分析与精修。所提方案随后会按预定义标准自动评估与打分。评估产生的反馈用于迭代改进解法,从而得到优化且新颖的算法。

在实际计算中,AlphaEvolve 已部署于 Google 的基础设施中。它在数据中心调度方面带来了改进,使全球计算资源使用降低了 0.7%。它还通过为即将推出的张量处理单元(TPU)的 Verilog 代码提出优化建议,助力硬件设计。此外,AlphaEvolve 提升了 AI 性能,包括使 Gemini 架构的某个核心内核提速 23%,以及对 FlashAttention 的低级 GPU 指令进行多达 32.5% 的优化。

在基础研究领域,AlphaEvolve 促成了矩阵乘法新算法的发现,其中包括一种对 4x4 复数矩阵仅使用 48 次标量乘法的方法,超越了先前已知的方案。在更广泛的数学研究中,它在 75% 的案例中重新发现了 50 多个开放问题的现有最优解,并在 20% 的案例中取得了改进,其中包括在接触数问题方面的进展。

OpenEvolve 是一种利用 LLMs(见图 3)进行迭代代码优化的进化式编码智能体。它编排了一条由 LLM 驱动的代码生成、评估与选择流水线,持续增强适用于广泛任务的程序。OpenEvolve 的一个关键特性是能够进化整个代码文件,而非仅限于单个函数。该智能体以通用性为目标,支持多种编程语言,并兼容任意 LLM 的 OpenAI 兼容 API。此外,它还引入多目标优化、支持灵活的提示工程,并具备分布式评估能力以高效处理复杂编码挑战。

图 3:OpenEvolve 的内部架构由一个控制器管理。该控制器编排多个关键组件:程序采样器、Program Database、Evaluator Pool 和 LLM Ensembles。其主要职能是促进它们的学习与自适应过程,以提升代码质量。

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

py 复制代码
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}")

回顾

是什么(What)

智能体常常在动态且不可预测的环境中运行,预先编写的逻辑并不足够。当面对初始设计时未曾预料到的新情境时,它们的性能可能会下降。缺乏从经验中学习的能力,智能体就无法优化其策略或随着时间推移实现个性化交互。这种僵化限制了其效能,阻碍其在复杂的真实世界场景中实现真正的自主性。

为什么(Why)

标准化的解决方案是整合学习与适应机制,将静态的智能体转变为动态、可进化的系统。这使得智能体能够基于新数据和交互自主完善其知识与行为。智能体系统可以采用多种方法,从强化学习到更高级的自我修改技术,如 Self-Improving Coding Agent(SICA)所示。像 Google 的 AlphaEvolve 这类先进系统利用 LLMs 与进化算法,为复杂问题发现全新且更高效的解决方案。通过持续学习,智能体能掌握新任务、提升性能,并在无需持续人工重新编程的情况下适应变化的条件。

经验法则(Rule of Thumb)

在构建必须在动态、不确定或不断演化环境中运行的智能体时使用该模式。对于需要个性化、持续性能改进以及能够自主处理新奇情境的应用而言,这一点至关重要。

图示摘要

关键点

  • 学习与适应是指智能体通过利用其经验,变得更擅长自己的任务并能处理新情境。
  • "适应"是源自学习而在智能体行为或知识上体现出的可见变化。
  • SICA(Self-Improving Coding Agent,自我改进编码智能体)通过基于过去表现修改自身代码来自我改进。这促成了诸如 Smart Editor 和 AST Symbol Locator 等工具的诞生。
  • 拥有专门的"子智能体"和一位"监督者"有助于这些自我改进系统管理大型任务并保持方向不偏离。
  • LLM 的"上下文窗口"(由 system prompts、core prompts 和 assistant messages 构成)的设置方式对智能体的运行效率至关重要。
  • 该模式对于需要在始终变化、不确定或需要个性化处理的环境中运行的智能体至关重要。
  • 构建能够学习的智能体通常意味着将其与机器学习工具对接,并管理数据的流动方式。
  • 一个配备了基础编码工具的智能体系统可以自主编辑自身,从而提升其在基准任务上的表现
  • AlphaEvolve 是 Google 的 AI 智能体,利用 LLMs 和进化式框架来自主发现与优化算法,显著提升基础研究与实际计算应用的效果。

总结

本章探讨学习与适应在人工智能中的关键作用。智能体通过持续的数据获取与经验积累来提升性能。Self-Improving Coding Agent(SICA,自我改进编码智能体)通过自主进行代码修改以提升自身能力,正是这一点的典范。

我们回顾了智能体式 AI 的基本组成部分,包括架构、应用、规划、多智能体协作、记忆管理,以及学习与适应。学习原理对于多智能体系统中的协同改进尤为重要。为实现这一点,调优数据必须准确反映完整的交互轨迹,捕捉每个参与智能体的个体输入与输出。

这些要素共同推动了诸如 Google 的 AlphaEvolve 等重要进展。该 AI 系统通过 LLMs、自动化评估与进化式方法自主发现并改进算法,推动科学研究与计算技术的进步。此类模式可以组合起来构建复杂的 AI 系统。像 AlphaEvolve 这样的发展表明,AI 智能体实现自主的算法发现与优化是可行的。

参考资料

  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: arxiv.org/abs/1707.06...
  5. Robeyns, M., Aitchison, L., & Szummer, M. (2025). A Self-Improving Coding Agent . arXiv:2504.15228v2. arxiv.org/pdf/2504.15... github.com/MaximeRobey...
  6. AlphaEvolve blog, deepmind.google/discover/bl...
  7. OpenEvolve, github.com/codelion/op...
相关推荐
Tiny_React2 小时前
智能体设计模式-CH10:模型上下文协议(Model Context Protocol)
设计模式
Tiny_React2 小时前
智能体设计模式-CH11:目标设定与监控(Goal Setting and Monitoring)
设计模式
Deschen14 小时前
设计模式-外观模式
java·设计模式·外观模式
恋红尘20 小时前
设计模式详解
设计模式
Code_Geo1 天前
agent设计模式:第一章节—提示链
microsoft·设计模式·agent·模型
懂得节能嘛.1 天前
【设计模式】Java规则树重构复杂业务逻辑
java·开发语言·设计模式
tan77º1 天前
【项目】基于多设计模式下的同步&异步日志系统 - 项目介绍与前置知识
linux·c++·设计模式
Query*2 天前
Java 设计模式——工厂模式:从原理到实战的系统指南
java·python·设计模式
庸了个白2 天前
一种面向 AIoT 定制化场景的服务架构设计方案
mqtt·设计模式·系统架构·aiot·物联网平台·动态配置·解耦设计