第 26 章 强化学习:把反馈变成训练信号
从反馈到训练:Agent 真正进化的一步
第 24-25 章讲了反馈信号和评测驱动改进。这一章再进一步:把反馈变成训练信号,让 Agent 的权重(或记忆)真正进化,而不只是改提示词。
提示词优化有天花板:你的工具和业务上下文和基础模型训练时的分布不同,模型在特定任务上可能就是不高效。强化学习(RL)解决的是这个:让模型通过真实工具调用探索、用自定义奖励信号学习、优化你的指标。
这一章讲五个模式,覆盖 RL 训练的完整链路:
- Agent RFT(Agent 强化微调):端到端训练模型权重。
- RLAIF(从 AI 反馈的强化学习):用 AI 当标注员,规模化反馈。
- Variance-Based Sample Selection(方差采样):只选有学习价值的样本训练。
- Isolated VM per Rollout(隔离 VM):每个训练 rollout 一台独立虚拟机。
- Memory RL (MemRL)(记忆强化学习):不更新权重,学习记忆的效用分。
模式一:Agent 强化微调(Agent Reinforcement Fine-Tuning)
问题
优化完提示词和任务设计,Agent 在你的特定业务任务上可能还是表现不佳,因为:
- 领域偏移:你的工具和业务上下文不同于基础模型训练时见过的。
- 工具使用低效:Agent 工具调用太多或用错工具,延迟高。
- 推理次优:模型在你特定工具输出上推理不好。
- 样本稀缺:有些领域(新 GPU 硬件、专门金融)缺训练数据。
传统微调搞不定,因为它没法用你的环境对多步工具交互做端到端训练。
方案
Agent RFT 用强化学习端到端训练模型权重,让模型能:
- 通过真实工具调用探索:训练 rollout 期间,Agent 调你真实的工具端点,从真实响应学习。
- 接收自定义奖励信号:你用灵活的评分器(模型式、端点式、字符串式)定义"好"是什么样。
- 学习多步推理:Agent 学会在上下文窗口里跨工具输出推理。
- 为你的指标优化:减工具调用、提准确率、或按奖励函数两者兼顾。
关键组件:
- 工具端点:托管你的工具(和生产线一样),训练时模型调用它们。
- 评分器端点:定义自定义奖励逻辑,评估最终答案和/或工具调用轨迹。
- 唯一 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 个样本,重质不重量);托管的工具端点镜像生产行为。
训练流程:
- 基线评估:基座模型每个样本跑多次量方差。
- 托管工具:部署能扛突发流量的工具端点(FastAPI、Modal)。
- 设计评分器:创建难玩、带梯度(不只二进制)的奖励函数。
- 监控训练:看奖励曲线、工具调用分布、推理 token 数。
- 评估结果:验证集上对比微调模型的准确率和延迟。
Agent RFT 优化什么: ML 表现(更好推理和工具使用 → 更好最终答案);延迟(更少工具调用和推理 token,常见减 50%);样本效率(少到 100 个高质量样本就有强结果)。
工具调用优化模式(模型靠探索自然学会):并行化(独立工具调用同时发);提前终止(信息够了就停止探索);工具选择(学会哪种工具对哪种任务最有效)。
取舍
- 好处:端到端优化,训练整个 Agent 循环不只最终输出;样本高效,100-1000 个样本 vs 预训练几百万;奖励灵活,支持复杂多标准评分逻辑;自然加速,模型主动少用 token 和工具调用;领域适配,弥合基座模型和你的业务上下文之间的分布差距。
- 代价:基础设施复杂,要托管稳健的工具和评分器端点;突发流量,训练在步边界发几百个同时请求;评分器设计投入,要小心奖励工程防玩游戏;训练成本,探索让它比监督微调贵;调试困难,难追溯模型为什么学会某些行为。
模式二:从 AI 反馈的强化学习(RLAIF)
问题
传统 RLHF(从人类反馈的强化学习)要大量人类标注偏好数据,贵(常 $1+/条)、慢、难扩展。这在训练对齐 AI 系统上造成瓶颈,尤其在人类专业知识稀缺或昂贵的复杂、专门领域。
方案
RLAIF 用监督 AI 模型替代人类标注员,生成偏好标签,训练奖励模型,再用 PPO(或类似 RL 算法)优化策略。步骤:
- AI 生成的批评:用语言模型基于一组原则或宪法评估输出。
- 偏好数据生成:让 AI 模型比较成对响应,按指定标准选更好的。
- 合成训练数据:用 AI 自己的能力生成高质量训练示例。
- 宪法原则:用显式规则引导反馈过程,而不是隐式的人类偏好。
这构成 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% 的样本真能为学习做贡献。
方案
每个样本跑多次基线评估识别方差,然后优先高方差样本训练。
方差图方法:
- 基线评估:基座模型每个样本跑 3-5 次。
- 可视化方差:画图识别哪些样本有方差。
- 样本分类:
- 总是对(方差 = 0):模型已经会了。
- 总是错(方差 = 0):模型学不会(太难或需要不同方法)。
- 有时对(方差 > 0):RL 的头号候选。
- 聚焦训练:优先或只用高方差样本。
分数
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 工具能跑任意命令(grep、find、甚至 rm)。在共享基础设施上跑 32 个并行 rollout 会一片混乱。
方案
每个 RL rollout 开一个隔离的虚拟机(或容器),保证完全环境隔离。
架构:
- Rollout ID 跟踪:OpenAI 的 Agent RFT 平台给每个 rollout 分配唯一 ID。
- VM/容器映射:你的基础设施把 rollout ID 映射到专用 VM。
- 干净状态:每个 VM 从相同的文件系统、包、配置启动。
- 清理: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=500、container_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):效果多好(学习到的分数,随时间更新)。
两阶段检索:
- 阶段 A,语义过滤:找语义相似的记忆。
- 阶段 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 权重和记忆真正进化。
下一章也是第六部分的最后一章:复合式进化。工程复利、前沿聚焦开发、渐进复杂度升级。