第9章:学习与适应 Learning and Adaptation

学习与适应是增强人工智能智能体能力的关键。这些过程使智能体能够超越预定义参数,通过经验和与环境的交互自主改进。通过学习与适应,智能体能够有效应对新情况,并在无需持续人工干预的情况下优化其性能。本章将详细探讨智能体学习与适应的基本原理和机制。

总体概述

智能体通过根据新的经验和数据改变其思维、行为或知识来学习和适应。这使智能体能够从简单地遵循指令发展为随着时间的推移变得更加智能。

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

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

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

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

  1. 数据收集: 智能体使用当前策略与环境交互(例如玩游戏),并收集一批经验(状态、动作、奖励)。
  2. 评估“智能体目标”: PPO计算潜在的策略更新将如何改变期望奖励。然而,它并非仅仅最大化奖励,而是使用一种特殊的“裁剪”目标函数。
  3. 裁剪机制: 这是PPO稳定性的关键。它在当前策略周围创建一个“信任区域”或安全区,防止算法进行与当前策略差异过大的更新。这种裁剪机制类似于安全刹车,确保智能体不会采取巨大且风险较高的步骤,从而破坏其学习。

简而言之,PPO在提升性能与保持接近已知有效策略之间取得平衡,从而防止训练期间发生灾难性失败,并实现更稳定的学习。

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

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

  • PPO 方法(两步流程):
    1. 训练奖励模型:首先,收集人类反馈数据,这些数据包括人们对不同 LLM(大型语言模型)响应的评分或比较(例如,“响应 A 比响应 B 更好”)。这些数据用于训练一个单独的 AI 模型,称为奖励模型,其任务是预测人类对任何新响应会给出的评分。
    2. 使用 PPO 微调:接下来,使用 PPO(近端策略优化)对 LLM 进行微调。LLM 的目标是生成能够从奖励模型中获得最高评分的响应。奖励模型在训练过程中充当“裁判”的角色。

这种两步流程可能会较为复杂且不稳定。例如,LLM 可能找到漏洞并学会“利用”奖励模型,从而为质量较差的响应获取高分。

  • DPO 方法(直接流程):DPO 完全跳过奖励模型。与其将人类偏好转化为奖励分数并优化该分数,DPO 直接使用偏好数据来更新 LLM 的策略。
  • 它通过一种数学关系直接将偏好数据与最优策略链接起来。本质上,它教会模型:“增加生成类似于偏好响应的概率,减少生成类似于不受欢迎响应的概率。”

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

实际应用与使用场景

自适应智能体通过基于经验数据的迭代更新,在变化的环境中表现出增强的性能。

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

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

由 Maxime Robeyns、Laurence Aitchison 和 Martin Szummer 开发的自我改进编码智能体(Self-Improving Coding Agent, SICA)代表了智能体学习领域的一项进步,展示了智能体能够修改自身源代码的能力。这与传统方法形成了鲜明对比,传统方法通常是一个智能体训练另一个智能体;而 SICA 同时充当修改者和被修改的实体,通过迭代地优化其代码库来提高在各种编码挑战中的性能。

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

图 1:SICA 的自我改进流程,通过学习和适应其过去版本

图 1:SICA 的自我改进流程,通过学习和适应其过去版本

SICA 经过显著的自我改进,在代码编辑和导航方面取得了突破。最初,SICA 使用一种基础的文件覆盖方法进行代码修改。随后,它开发了一个能够进行更智能和上下文相关编辑的“智能编辑器”(Smart Editor)。这一工具进一步演化为“差异增强智能编辑器”(Diff-Enhanced Smart Editor),通过引入差异(diff)进行针对性修改和基于模式的编辑,同时开发了“快速覆盖工具”(Quick Overwrite Tool)以减少处理需求。

SICA 还实施了“最小差异输出优化”(Minimal Diff Output Optimization)和“上下文敏感差异最小化”(Context-Sensitive Diff Minimization),利用抽象语法树(Abstract Syntax Tree, AST)解析来提高效率。此外,还添加了“智能编辑器输入标准化器”(SmartEditor Input Normalizer)。在导航方面,SICA 独立创建了“AST 符号定位器”(AST Symbol Locator),使用代码的结构化映射(AST)来识别代码库中的定义。之后开发了“混合符号定位器”(Hybrid Symbol Locator),结合快速搜索和 AST 检查功能。通过“混合符号定位器中的优化 AST 解析”(Optimized AST Parsing in Hybrid Symbol Locator),进一步优化了对相关代码段的聚焦,提高了搜索速度(见图 2)。

图 2:各迭代中的性能表现。关键改进标注了对应的工具或智能体修改。(由 Maxime Robeyns、Martin Szummer 和 Laurence Aitchison提供)

图 2:各迭代中的性能表现。关键改进标注了对应的工具或智能体修改。(由 Maxime Robeyns、Martin Szummer 和 Laurence Aitchison提供)

SICA 的架构包括一个基础工具包,用于基本文件操作、命令执行和算术计算。它包含用于结果提交和调用专门子智能体(编码、问题解决和推理)的机制。这些子智能体负责分解复杂任务,并在长时间的改进周期中管理大语言模型(LLM)的上下文长度。

一个异步监督者(另一个 LLM)负责监控 SICA 的行为,识别潜在问题,例如循环或停滞。监督者与 SICA 进行通信,并在必要时可以干预以停止执行。监督者会接收 SICA 行为的详细报告,包括调用图(callgraph)以及消息和工具操作的日志,以识别模式和低效之处。

SICA 的 LLM 在其上下文窗口(即短期记忆)内以结构化方式组织信息,这种结构对其运行至关重要。该结构包括定义智能体目标的系统提示(System Prompt)、工具和子智能体文档,以及系统指令。核心提示(Core Prompt)包含问题陈述或指令、打开文件的内容以及目录映射。助手消息(Assistant Messages)记录智能体的逐步推理、工具和子智能体调用记录及结果,以及监督者的通信。这种组织方式促进了信息流的高效性,提升了 LLM 的运行效率,同时减少了处理时间和成本。最初,文件更改以差异(diffs)的形式记录,仅显示修改内容,并定期进行合并。

SICA:代码解析

深入探讨 SICA 的实现揭示了其能力背后的几个关键设计选择。如前所述,该系统采用模块化架构,集成了多个子智能体,例如编码智能体、问题解决智能体和推理智能体。这些子智能体由主智能体调用,类似于工具调用,用于分解复杂任务并高效管理上下文长度,尤其是在那些扩展的元改进迭代过程中。

该项目正在积极开发中,旨在为对后训练 LLM 的工具使用和其他智能体任务感兴趣的人提供一个强大的框架,完整代码可在 GitHub 仓库 中进一步探索和贡献。

为了安全性,项目高度强调 Docker 容器化,这意味着智能体在专用的 Docker 容器内运行。这是一项关键措施,因为它提供了与主机机器的隔离,降低了由于智能体能够执行 shell 命令而可能导致的文件系统意外操作风险。

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

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

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

AlphaEvolve 和 OpenEvolve

AlphaEvolve 是由 Google 开发的 AI 智能体,旨在发现和优化算法。它结合了 LLM(特别是 Gemini 模型,包括 Flash 和 Pro)、自动评估系统以及进化算法框架。该系统旨在推动理论数学和实际计算应用的进步。

AlphaEvolve 使用 Gemini 模型的集成系统。Flash 模型用于生成广泛的初始算法提案,而 Pro 模型则负责更深入的分析和优化。提出的算法会根据预定义的标准自动进行评估和评分。评估结果提供反馈,用于迭代改进解决方案,从而生成优化和新颖的算法。

在实际计算领域,AlphaEvolve 已部署于 Google 的基础设施中。它在数据中心调度方面表现出显著改进,使全球计算资源使用率降低了 0.7%。此外,它还通过建议优化 Verilog 代码,为即将推出的张量处理单元(TPUs)的硬件设计做出了贡献。同时,AlphaEvolve 加速了 AI 性能,包括 Gemini 架构核心内核的速度提升 23%,以及 FlashAttention 的底层 GPU 指令优化高达 32.5%。

在基础研究领域,AlphaEvolve 发现了新的矩阵乘法算法,包括一种使用 48 次标量乘法处理 4x4 复值矩阵的方法,超越了此前已知的解决方案。在更广泛的数学研究中,它重新发现了现有的最先进解决方案,在 75% 的情况下解决了超过 50 个开放问题,并在 20% 的情况下改进了现有解决方案,其中包括对接触数问题的进展。

OpenEvolve 是一个利用大型语言模型(LLMs)的进化编码智能体(参见图 3),用于迭代优化代码。它通过 LLM 驱动的代码生成、评估和选择管道,不断增强程序以适应广泛的任务。OpenEvolve 的一个关键特点是能够进化整个代码文件,而不仅仅局限于单个函数。该智能体设计为多功能,支持多种编程语言,并兼容任何支持 OpenAI API 的 LLM。此外,它还集成了多目标优化、灵活的提示工程,并能够进行分布式评估,以高效处理复杂的编码挑战。

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

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

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

from openevolve import OpenEvolve

## 初始化系统
evolve = OpenEvolve(
   initial_program_path="path/to/initial_program.py",
   evaluation_file="path/to/evaluator.py",
   config_path="path/to/config.yaml"
)

## 运行进化过程
best_program = await evolve.run(iterations=1000)
print(f"最佳程序指标:")
for name, value in best_program.metrics.items():
   print(f"  {name}: {value:.4f}")

概览

定义(What)

AI 智能体通常运行在动态且不可预测的环境中,预设的逻辑往往不足以应对这些环境。当面对设计时未预料到的新情况时,其性能可能会下降。如果智能体无法从经验中学习,就无法优化其策略或随着时间推移个性化其交互。这种僵化性限制了它们的有效性,并阻碍了它们在复杂的现实场景中实现真正的自主性。

设计意图(Why)

标准化解决方案是整合学习和适应机制,将静态智能体转变为动态、可进化的系统。这使智能体能够根据新的数据和交互自主优化其知识和行为。智能体系统可以采用多种方法,从强化学习到更高级的技术,如自我修改机制,正如自我改进编码智能体(SICA)所展示的那样。像谷歌的 AlphaEvolve 这样的高级系统利用大语言模型(LLM)和进化算法来发现全新的、更高效的复杂问题解决方案。通过持续学习,智能体能够掌握新任务、提升性能,并适应不断变化的环境,而无需频繁的手动重新编程。

使用原则(Rule of Thumb)

在构建需要在动态、不确定或不断变化的环境中运行的智能体时,应使用此模式。对于需要个性化、持续性能提升以及能够自主处理新情况的应用,这种模式至关重要。

图解 (Visual Summary)

图4:学习与适应模式

图4:学习与适应模式

关键要点

  • 学习与适应是指智能体通过经验变得更擅长处理任务,并能够应对新情况。
  • “适应”是智能体通过学习而在行为或知识上的显著变化。
  • 自我改进编码智能体(SICA)通过基于过去的表现修改自身代码来实现自我改进。这催生了诸如智能编辑器和 AST 符号定位器等工具。
  • 拥有专门的“子智能体”和一个“监督者”有助于这些自我改进系统管理大型任务并保持方向。
  • 大语言模型(LLM)的“上下文窗口”设置(包括系统提示、核心提示和助手消息)对于智能体的工作效率至关重要。
  • 此模式对需要在不断变化、不确定或个性化环境中运行的智能体至关重要。
  • 构建能够学习的智能体通常需要将其与机器学习工具连接,并管理数据流动。
  • 一个配备基本编码工具的智能体系统可以自主编辑自身,从而提高其在基准任务上的性能。
  • AlphaEvolve 是谷歌的 AI 智能体,它利用 LLM 和进化框架自主发现和优化算法,显著提升了基础研究和实际计算应用的能力。

结论

本章探讨了学习与适应在人工智能中的关键作用。AI智能体通过持续的数据获取和经验积累来提升其性能。自我改进编码智能体(SICA)通过代码修改自主提升其能力,成为一个典型的例子。

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

这些元素促成了诸如谷歌 AlphaEvolve 等重大进展。该 AI 系统通过 LLM、自动评估和进化方法独立发现和优化算法,推动了科学研究和计算技术的进步。这些模式可以结合起来构建复杂的 AI 系统。像 AlphaEvolve 这样的发展表明,AI智能体通过自主发现和优化算法是可实现的。

参考文献

  1. Sutton, R. S., & Barto, A. G. (2018). 强化学习:导论. MIT出版社。
  2. Goodfellow, I., Bengio, Y., & Courville, A. (2016). 深度学习. MIT出版社。
  3. Mitchell, T. M. (1997). 机器学习. McGraw-Hill出版社。
  4. John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, 和 Oleg Klimov. 近端策略优化算法。可在arXiv上找到:https://arxiv.org/abs/1707.06347
  5. Robeyns, M., Aitchison, L., & Szummer, M. (2025). 自我改进编码智能体. arXiv:2504.15228v2. https://arxiv.org/pdf/2504.15228

    https://github.com/MaximeRobeyns/self_improving_coding_agent
  6. AlphaEvolve博客, https://deepmind.google/discover/blog/alphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms/
  7. OpenEvolve, https://github.com/codelion/openevolve

results matching ""

    No results matching ""