第 26 章 AI AgentAgentic Patterns强化学习

第 26 章 强化学习:把反馈变成训练信号

从反馈到训练:Agent 真正进化的一步

第 24-25 章讲了反馈信号和评测驱动改进。这一章再进一步:把反馈变成训练信号,让 Agent 的权重(或记忆)真正进化,而不只是改提示词。

提示词优化有天花板:你的工具和业务上下文和基础模型训练时的分布不同,模型在特定任务上可能就是不高效。强化学习(RL)解决的是这个:让模型通过真实工具调用探索、用自定义奖励信号学习、优化你的指标。

这一章讲五个模式,覆盖 RL 训练的完整链路:

  1. Agent RFT(Agent 强化微调):端到端训练模型权重。
  2. RLAIF(从 AI 反馈的强化学习):用 AI 当标注员,规模化反馈。
  3. Variance-Based Sample Selection(方差采样):只选有学习价值的样本训练。
  4. Isolated VM per Rollout(隔离 VM):每个训练 rollout 一台独立虚拟机。
  5. Memory RL (MemRL)(记忆强化学习):不更新权重,学习记忆的效用分。

模式一:Agent 强化微调(Agent Reinforcement Fine-Tuning)

问题

优化完提示词和任务设计,Agent 在你的特定业务任务上可能还是表现不佳,因为:

  • 领域偏移:你的工具和业务上下文不同于基础模型训练时见过的。
  • 工具使用低效:Agent 工具调用太多或用错工具,延迟高。
  • 推理次优:模型在你特定工具输出上推理不好。
  • 样本稀缺:有些领域(新 GPU 硬件、专门金融)缺训练数据。

传统微调搞不定,因为它没法用你的环境对多步工具交互做端到端训练。

方案

Agent RFT 用强化学习端到端训练模型权重,让模型能:

  1. 通过真实工具调用探索:训练 rollout 期间,Agent 调你真实的工具端点,从真实响应学习。
  2. 接收自定义奖励信号:你用灵活的评分器(模型式、端点式、字符串式)定义"好"是什么样。
  3. 学习多步推理:Agent 学会在上下文窗口里跨工具输出推理。
  4. 为你的指标优化:减工具调用、提准确率、或按奖励函数两者兼顾。

关键组件:

  • 工具端点:托管你的工具(和生产线一样),训练时模型调用它们。
  • 评分器端点:定义自定义奖励逻辑,评估最终答案和/或工具调用轨迹。
  • 唯一 rollout ID:每个训练 rollout 拿一个唯一 ID,跨工具调用管理状态。

评分器设计最佳实践:

  • 用梯度奖励:给 0-1 浮点分,别给二进制 0/1,学习信号更清楚。
  • 防奖励黑客:评估推理过程而不只是最终答案,检测"幸运猜测"。
  • 对齐领域知识:训练前量评分器和人类的一致性(Cohen's Kappa)。
  • 多维评估:考虑正确性、格式合规、效率、安全。
训练样本 → 模型生成 rollout → 要调工具? 
  是 → 调你的工具端点 → 工具响应 → 加进上下文 → 回到生成
  否 → 最终答案 → 调你的评分器 → 奖励信号 → 更新模型权重 → 下一个样本

证据

  • 证据等级:新兴emerging),来自 OpenAI(Will Brown、Theo)。
  • Cognition(Devon AI):文件规划 Agent,规划时间减 50%(8-10 次工具调用 → 4 次),自动学会并行工具调用,文件识别 F1 提升。
  • Ambience Healthcare:ICD-10 医疗编码,F1 从 0.52 → 0.57(人类上限 0.75 背景下显著),延迟降 18%。
  • Rogo Finance:金融推理,ML 表现提升 21%,幻觉和缺引用减少,需要加固评分器防奖励黑客。
  • Modular(Mojo GPU 内核):为新手硬件写高性能 GPU 内核,正确+高性能内核提升 72%,只用 100 个 PyTorch 提示词,训练数据不需要代码示例。

怎么用

前置条件: 定义清晰、受约束的任务,正确答案有共识;基线表现非零(模型偶尔做对);高质量训练数据(100-1000 个样本,重质不重量);托管的工具端点镜像生产行为。

训练流程:

  1. 基线评估:基座模型每个样本跑多次量方差。
  2. 托管工具:部署能扛突发流量的工具端点(FastAPI、Modal)。
  3. 设计评分器:创建难玩、带梯度(不只二进制)的奖励函数。
  4. 监控训练:看奖励曲线、工具调用分布、推理 token 数。
  5. 评估结果:验证集上对比微调模型的准确率和延迟。

Agent RFT 优化什么: ML 表现(更好推理和工具使用 → 更好最终答案);延迟(更少工具调用和推理 token,常见减 50%);样本效率(少到 100 个高质量样本就有强结果)。

工具调用优化模式(模型靠探索自然学会):并行化(独立工具调用同时发);提前终止(信息够了就停止探索);工具选择(学会哪种工具对哪种任务最有效)。

取舍

  • 好处:端到端优化,训练整个 Agent 循环不只最终输出;样本高效,100-1000 个样本 vs 预训练几百万;奖励灵活,支持复杂多标准评分逻辑;自然加速,模型主动少用 token 和工具调用;领域适配,弥合基座模型和你的业务上下文之间的分布差距。
  • 代价:基础设施复杂,要托管稳健的工具和评分器端点;突发流量,训练在步边界发几百个同时请求;评分器设计投入,要小心奖励工程防玩游戏;训练成本,探索让它比监督微调贵;调试困难,难追溯模型为什么学会某些行为。

模式二:从 AI 反馈的强化学习(RLAIF)

问题

传统 RLHF(从人类反馈的强化学习)要大量人类标注偏好数据,贵(常 $1+/条)、慢、难扩展。这在训练对齐 AI 系统上造成瓶颈,尤其在人类专业知识稀缺或昂贵的复杂、专门领域。

方案

RLAIF 用监督 AI 模型替代人类标注员,生成偏好标签,训练奖励模型,再用 PPO(或类似 RL 算法)优化策略。步骤:

  1. AI 生成的批评:用语言模型基于一组原则或宪法评估输出。
  2. 偏好数据生成:让 AI 模型比较成对响应,按指定标准选更好的。
  3. 合成训练数据:用 AI 自己的能力生成高质量训练示例。
  4. 宪法原则:用显式规则引导反馈过程,而不是隐式的人类偏好。

这构成 Constitutional AI 的基础。多数生产系统用混合方法:RLAIF(规模化)+ RLHF(质量验证)。

class RLAIFAgent:
    def generate_preference_data(self, prompt, response_a, response_b):
        comparison_prompt = f"""
        根据这些原则: {self.constitution}

        哪个响应对这个提示词更好: "{prompt}"

        响应 A: {response_a}
        响应 B: {response_b}

        按原则选 A 或 B 并解释为什么。
        """
        preference = self.critic_model.generate(comparison_prompt)
        return self.parse_preference(preference)

证据

  • 证据等级:新兴emerging),来自 Anthropic、Google DeepMind。
  • Constitutional AI(Anthropic,2022)、RLAIF(DeepMind,2023)把成本降到比人工反馈便宜约 100 倍($0.01 vs $1+)。

怎么用

  • 需要超出人类标注能力的规模化反馈做对齐训练时用。
  • 从能评估你目标领域的良好对齐监督模型开始。
  • 关键应用做 RLAIF/RLHF 混合,人类验证重要。
  • 用宪法原则对评估标准做显式控制。

取舍

  • 好处:比人工反馈便宜 100 倍;可扩展,无人类瓶颈地生成无限反馈数据;一致,AI 反馈比参差的人类标注员更一致;快,近乎即时的反馈生成。
  • 代价:偏见放大,可能强化现有模型偏见;对齐依赖,继承监督模型的对齐性质;先有鸡还是先有蛋,训练前沿模型要一个能干的监督模型;原则设计,宪法原则要精心打磨。

模式三:方差采样(Variance-Based RL Sample Selection)

问题

不是所有训练样本对强化学习都同样有价值。这建立在优先经验重放(Schaul 等人,2016)之上,它给价值学习引入基于 TD 误差的样本优先级。

  • 零方差样本:模型每次得分一样(总是对或总是错),没有学习信号。
  • 浪费算力:在模型没有不确定性的样本上训练,浪费昂贵的 RL 探索。
  • 数据利用差:训练预算有限时,你想从每个样本里榨出最多学习。
  • 训练潜力不清:难知道你的数据集能不能支撑有效 RL 训练。

Theo 在 FinQA 基准上跑基线评估时发现:约 85% 的样本零方差(模型总是对或总是错),意味着只有约 15% 的样本真能为学习做贡献。

方案

每个样本跑多次基线评估识别方差,然后优先高方差样本训练。

方差图方法:

  1. 基线评估:基座模型每个样本跑 3-5 次。
  2. 可视化方差:画图识别哪些样本有方差。
  3. 样本分类
    • 总是对(方差 = 0):模型已经会了。
    • 总是错(方差 = 0):模型学不会(太难或需要不同方法)。
    • 有时对(方差 > 0):RL 的头号候选
  4. 聚焦训练:优先或只用高方差样本。
分数
1.0 ●━━━━━━━●━━━━━━●━━━━━━━●    ← 总是对(没学习)
0.5 ┃   ●━━━●━━━●  ┃   ●━━━●━━━●    ← 高方差(在这里学)
0.0 ●━━━●━━━━━━●━━━●━━━━━━●━━━━━━●    ← 总是错(没学习)

证据

  • 证据等级:生产验证validated-in-production),来自 OpenAI(Theo、Prashant)。
  • FinQA 实例:100 个验证样本里只有 15% 高方差;当前均值 0.59,best-of-3 均值 0.73,潜在增益 +0.14(24% 相对提升)。10 步 Agent RFT 后:验证奖励 0.59 → 0.63(+7%),每次 rollout 工具调用 6.9 → 4.2(-39%),延迟降约 10%。
  • 其它验证:Ambience Healthcare ICD-10 编码 F1 +9.6%、延迟降 18%;Cognition 文件规划工具调用减 50%。

怎么用

步骤 1 基线评估(训练前): 训练集和验证集每个样本跑 3-5 次。

步骤 2 画方差图: X 轴样本索引、Y 轴分数(0-1)、红叉是跨运行最佳分、蓝条是均值(粗)和方差(细)。

步骤 3 解读结果:

RL 的好指标:

  • 15-30% 高方差样本:学习机会够。
  • Best-of-N >> 均值:模型有 RL 提升潜力。
  • 方差分布在整个数据集:不是集中在少数样本。

警告信号:

  • <10% 高方差:数据集可能太易或太难。
  • Best-of-N ≈ 均值:模型非常一致(提升潜力低)。
  • 方差全在尾部:大多数样本不给学习信号。

步骤 4 设算力倍数(控制训练期间的探索):低方差(10-15%)用 2-4 倍更多探索;中方差(15-30%)用 1-2 倍;高方差(>30%)1 倍可能就够。

步骤 5 训练中监控: 早期训练方差应随模型学习下降;平台期方差可能随模型探索新策略上升;收敛期方差应在更低位稳定。

取舍

  • 好处:数据高效,训练聚焦真能贡献学习的样本;可预测,贵训练前估算提升潜力;诊断性,理解任务适不适合 RL;指导超参,告知算力倍数和训练时长决策。
  • 代价:前期成本,训练前要 3-5 倍基线评估;小样本(<50)方差估计可能噪音大;不保证成功,高方差必要但不充分;动态方差,训练中方差会变,初始分析可能不成立。

模式四:隔离 VM(Isolated VM per RL Rollout)

问题

强化学习训练带工具的 Agent 时,多个 rollout 同时执行,可能调破坏性或带状态的工具。这在分布式 RL 研究里早就是熟问题:A3C(Mnih 等人,2016)和 PPO(Schulman 等人,2017)都依赖并行隔离环境实例做稳定的梯度估计。

  • 交叉污染:一个 rollout 的动作影响另一个 rollout 的环境。
  • 破坏性命令:Agent 可能跑 rm -rf,弄坏共享状态。
  • 状态泄漏:文件系统改动跨 rollout 持久化,训练数据不一致。
  • 奖励损坏:rollout B 看到 rollout A 的副作用,奖励信号就没意义。
  • 调试噩梦:竞态条件导致非确定性失败。

Cognition 训练 Devon 的文件规划 Agent 时遇到:Agent 有 shell 工具能跑任意命令(grepfind、甚至 rm)。在共享基础设施上跑 32 个并行 rollout 会一片混乱。

方案

每个 RL rollout 开一个隔离的虚拟机(或容器),保证完全环境隔离。

架构:

  1. Rollout ID 跟踪:OpenAI 的 Agent RFT 平台给每个 rollout 分配唯一 ID。
  2. VM/容器映射:你的基础设施把 rollout ID 映射到专用 VM。
  3. 干净状态:每个 VM 从相同的文件系统、包、配置启动。
  4. 清理:rollout 完成后(成功或失败)销毁 VM。

关键组件: 快速 VM 创建(云实例或容器);突发扩展(训练步边界处理 100-500 个同时 VM 请求);状态隔离(VM 间无共享文件系统或数据库);超时处理(VM 超时自动销毁防资源泄漏)。

训练步开始
OpenAI 训练 → 负载均衡 → VM1 (Rollout 1): shell("grep TODO") → 隔离执行
          → 负载均衡 → VM2 (Rollout 2): shell("rm temp.txt") → 隔离执行
rollout 完成 → VM 销毁

证据

  • 证据等级:新兴emerging),来自 Cognition(Sam Pretty、Devon 工程团队)。

怎么用

阶段 1 基础设施: 选隔离技术。Modal/E2B 微 VM(约 1 秒启动,Firecracker 隔离,Agent 训练推荐);Modal/Lambda serverless 函数(容器隔离,最容易);Docker 每 rollout 容器(好平衡);Kubernetes Jobs 每 rollout pod(生产级);云 VM(最大隔离,30-120 秒启动)。

阶段 2 实现 rollout ID 跟踪: 所有工具端点必须接受并验证 rollout_id。

阶段 3 处理突发流量: Agent RFT 成突发发流量:训练步边界 100-500 个同时 rollout 请求、工具调用延迟间短暂暂停、清理阶段大量 VM 销毁。配自动扩展(Modal 示例:concurrency_limit=500container_idle_timeout=60)。

阶段 4 监控基础设施:

关键指标:

  • VM 配置时间:应 <5 秒(>10 秒告警)。
  • 基础设施错误率:目标 <1%(>5% 告警,高错误率导致训练崩溃)。
  • Rollout 超时率:目标 <0.1%(>1% 告警)。
  • 资源泄漏:活跃 rollout 数应匹配预期(超基线 +50 告警)。

Cognition 的关键经验(Sam): "基础设施出错、VM 失败……那确实会导致训练崩溃,因为模型就算做了好事,也拿了个零奖励。" 基础设施错误返回可重试错误(retryable: True),别给零奖励。

取舍

  • 好处:完全隔离,rollout 间无交叉污染;安全,破坏性命令影响不了其它 rollout 或主机;确定性,一致环境给可靠奖励信号;生产对齐,能用和生产完全相同的环境。
  • 代价:成本,同时跑几百个 VM 可能很贵;配置时间,VM 启动加延迟(容器更快);复杂,要稳健的基础设施和监控;扩展限制,云提供商配额可能限制并发 VM;失败模式,基础设施问题可能导致训练崩溃。

替代方案: 共享基础设施 + 命名空间(chroot、Docker volumes,便宜但隔离弱);数据库后端状态(按 rollout ID 存状态,简单但文件系统工具不适用);乐观隔离(共享基础设施,检测并丢弃被污染的 rollout,浪费算力)。

模式五:记忆强化学习(Memory Reinforcement Learning, MemRL)

问题

LLM 在运行时自我进化上挣扎,因为稳定-可塑两难:

  • 微调:计算贵,容易灾难性遗忘。
  • RAG/记忆系统:靠语义相似度,会检索到噪音。
  • 没有效用学习:分不清高价值策略和语义相似但无效的。

标准检索假设"相似意味着有用",但常常错。一个语义相关的过去解法,对当前任务可能其实是坏方法。

方案

MemRL 把强化学习从参数空间搬到上下文空间:不更新模型权重,而是学习情景记忆上的效用分。LLM 保持冻结,只有记忆效用进化。

核心想法: 不只用相似度检索,而是按记忆过去表现多好排序

记忆三元组结构:

  • 意图(Intent):用户要求什么(嵌入)。
  • 经验(Experience):Agent 试了什么(解法轨迹)。
  • 效用(Utility):效果多好(学习到的分数,随时间更新)。

两阶段检索:

  1. 阶段 A,语义过滤:找语义相似的记忆。
  2. 阶段 B,效用排序:按学习到的效用分重排。

这过滤掉"看起来相关但历史上导致差结果"的干扰记忆。

查询 → 找相似记忆 → 按效用分排序 → 用顶部记忆 → 得结果 → 更新效用 → 存新经验
# 1. 存带效用分的经验
memory_bank.append({
    "intent": embed(query),
    "experience": solution_trace,
    "utility": 0.5  # 初始分,随时间学习
})

# 2. 带效用排序的检索
candidates = similar_memories(query, threshold=0.7)  # 先按相似度过滤
ranked = sorted(candidates, key=lambda m: m.utility, reverse=True)  # 再按效用重排
context = ranked[:k]

# 3. 按结果更新效用
reward = 1 if success else 0
for mem in retrieved_contexts:
    mem.utility += learning_rate * (reward - mem.utility)

为什么有效: 成功的记忆分更高、更常被检索到;失败的记忆被降级,哪怕语义相似;冻结的 LLM 保持稳定,只有记忆效用进化;Agent 通过运行时经验自我改进。

证据

  • 证据等级:中medium),来自上海交大、西安电子科技大学、MemTensor。
  • 关键发现:MemRL 完全避免权重更新,解决稳定-可塑两难(Kirkpatrick 等人,2017)。
  • 相关验证:Reflexion 在 HumanEval 上用语词 RL + 情景记忆达到 91% vs 80% 基线(Shinn 等人,2023)。

怎么用

  • 用于多步任务 + 清晰成功信号 + 可复用解题模式 + 付不起微调的场景。
  • 别用:单轮查询、无清晰奖励信号、高度多样任务(没模式)。

取舍

  • 好处:无灾难性遗忘(LLM 冻结);从经验自我改进;过滤"长得像"的坏解法;不需要重训。
  • 代价:要可靠的成败信号;记忆开销随时间增长;冷启动,要 episode 才能学;比基础 RAG 复杂。

五个模式怎么选

场景 推荐模式
想让模型权重为你的任务端到端进化 Agent RFT
反馈标注太贵,想规模化 RLAIF
训练数据贵,想只学有价值的样本 方差采样
训练 rollout 会跑破坏性命令 隔离 VM
不想碰权重,想让记忆进化 MemRL

五个模式是RL 训练的完整链路方差采样决定"拿哪些样本训"(数据),Agent RFT 决定"怎么训"(算法),RLAIF 解决"奖励从哪来"(标注),隔离 VM 解决"在哪安全地训"(基础设施),MemRL 提供"不动权重也能进化"的替代路线。数据、算法、奖励、基础设施、替代方案,五个都到位,Agent 的进化才闭环。

实践清单

  • Agent RFT 前置:定义清晰任务 + 非零基线 + 100-1000 个高质量样本
  • 评分器用梯度奖励(0-1)+ 防玩游戏 + Cohen's Kappa 对齐人类
  • 训练前跑基线方差分析:只选高方差样本(有时对的)训练
  • 方差 15-30% 是 RL 好指标;算力倍数按方差调
  • 每个 rollout 一台隔离 VM,rollout ID 跟踪,VM 启动即干净、完成即销毁
  • 训练步边界突发流量配自动扩展,基础设施错误返回可重试别给零奖励
  • 标注贵用 RLAIF:AI 批评者 + 宪法原则,混合 RLHF 做质量验证
  • 不想动权重用 MemRL:意图/经验/效用三元组,语义过滤 + 效用排序两阶段检索
  • 监控奖励曲线、工具调用分布、基础设施错误率

本章小结

  • Agent RFT:端到端训练权重,真实工具调用探索 + 自定义奖励,样本高效(100 样本就够)。
  • RLAIF:AI 当标注员,便宜 100 倍,宪法原则引导,混合 RLHF 验证质量。
  • 方差采样:只训"有时对"的高方差样本,FinQA 上 24% 潜在提升。
  • 隔离 VM:每 rollout 一台虚拟机,破坏性命令安全、状态干净、奖励可靠。
  • MemRL:不动权重,学记忆效用分,两阶段检索过滤"长得像"的坏解法。
  • 数据、算法、奖励、基础设施、替代方案,RL 链路闭环,Agent 权重和记忆真正进化。

下一章也是第六部分的最后一章:复合式进化。工程复利、前沿聚焦开发、渐进复杂度升级。

📑 Agent 模式实战:生产级 AI Agent 的工程模式

1 第 1 章 什么是 Agent 模式 2 第 2 章 规划-执行-观察:先想清楚,再动手 3 第 3 章 反思闭环:让 Agent 学会检查自己的作业 4 第 4 章 委派:让主 Agent 学会把活分出去 5 第 5 章 上下文预算治理:把 token 当成钱来管 6 第 6 章 上下文压缩与精选:装不下怎么办 7 第 7 章 上下文最小化:别让脏东西留在脑子里 8 第 8 章 记忆体系:让 Agent 记得住过去 9 第 9 章 学习沉淀:让 Agent 和团队一起变聪明 10 第 10 章 工具接口哲学:让 Agent 能用、好用、用得起 11 第 11 章 工具发现:让 Agent 在几百个工具里找到对的 12 第 12 章 执行环境:Agent 在哪动手、怎么动手 13 第 13 章 代码执行与沙箱:先写码,再跑码 14 第 14 章 结构化输出与契约:让 Agent 的输出能接住 15 第 15 章 验证循环:Agent 怎么检查自己的作业 16 第 16 章 评测基建:怎么系统地检验 Agent 17 第 17 章 可观测性:看见 Agent 在想什么、在干嘛 18 第 18 章 韧性工程:扛得住部分失效 19 第 19 章 威胁模型:先看风险长什么样,再谈防御 20 第 20 章 控制流隔离:把"谁做决定"和"谁执行"分开 21 第 21 章 权限与审批:谁有权干什么、谁点头 22 第 22 章 凭据与出口:Agent 手里的钥匙和门 23 第 23 章 多智能体信任:多个 Agent 之间怎么互信、怎么审计 24 第 24 章 反馈信号设计:给 Agent 的是信号,不是更大的提示词 25 第 25 章 评测驱动的改进:让 Agent 在真实使用和对抗测试里变强 26 第 26 章 强化学习:把反馈变成训练信号 27 第 27 章 复合式进化:让 Agent 系统越用越值钱 28 第 28 章 多智能体协调:让一群 Agent 一起干活不掉链子 29 第 29 章 模型路由:谁用哪个模型,怎么用得起 30 第 30 章 推理搜索结构:让 Agent 多想想,而不是一条道走到黑 31 第 31 章 控制谱系:从自动补全到完全自主的滑动条 32 第 32 章 团队与产品:把 Agent 变成团队资产,而不是个人玩具
← 返回本书大纲