智能体技能自动发现
版本: 1.0 领域: 自主学习系统、AI架构、强化学习
核心概念
自主技能发现解决了鸡-蛋问题:在学习如何成功的同时学习什么构成成功。系统必须既是学生又是老师,这造成了需要架构上分离提议和验证的循环依赖。
决策点
架构选择决策树
如果任务具有真实成功标准(例如,具有明确目标的导航、操作任务) → 使用单模型架构进行快速LLM评估 → 成本:低 | 精度:~75% | 用例:预定义任务
如果任务需要开放式技能发现(例如,创意任务、探索) → 使用双过程架构(系统1/系统2) → 系统1:用于训练循环的快速LLM评估 → 系统2:用于技能库准入的独立VLM验证 → 成本:高 | 精度:~76% | 用例:自主学习
如果需要复杂的多步骤行为 → 自上而下的任务分解 → 从失败复杂任务开始 → 分解为子任务 → 学习缺失的前提条件 → 成功率:43.75% vs 12.50%(自下而上链接)
如果从原语构建技能库 → 仅当原语与最终目标匹配良好时,才使用自下而上的技能链接 → 风险:组合爆炸和缺失“中间技能” → 备用方案:当组合失败时切换为自上而下
如果现有方法性能停滞 → 检查循环依赖(同一模型提议和评估) → 如果检测到:实现架构分离 → 如果未检测到:添加包含成功技能模式的RAG,用于环境知识蒸馏
验证策略决策表
| 场景 | 快速评估(系统1) | 慢速评估(系统2) | 技能库准入规则 |
|---|---|---|---|
| 训练循环 | 由LLM生成的成功函数 | 无 | 不适用 |
| 技能验证 | LLM评估 | VLM验证 | 要求两者均通过 |
| 技能库污染风险 | 高容忍度 | 零容忍度 | 需要系统2覆盖 |
| 成本约束 | 优化速度 | 优化精度 | 不对称成本接受 |
失败模式
1. 橡皮图章评估
症状: 报告成功率很高但任务完成度差,技能库快速增长 检测规则: 如果同一模型既生成奖励又评估成功,则存在循环依赖 根本原因: LLM同时充当球员和裁判会产生评估偏差 修复: 实现架构分离,使用独立验证器(例如,视觉任务使用VLM)
2. 基元爆炸瘫痪
症状: 技能库庞大但无法解决复杂任务,技能无法有效组合 检测规则: 如果技能数量增长但复杂任务成功率停滞,则存在“中间技能”问题 根本原因: 自下而上的链接无法发现介于基元和复杂目标之间的技能 修复: 从期望的复杂行为切换为自上而下的任务分解
3. 无上下文的RAG浪费
症状: RAG检索发生但性能没有提升,将检索视为通用示例 检测规则: 如果RAG没有改进约束学习(例如,物理理解),则只是昂贵的提示工程 根本原因: 缺少环境知识蒸馏机制 修复: 将技能库结构化为环境可供性的渐进模型,而不仅仅是例子的集合
4. 技能库污染级联
症状: 随着技能库增长,性能逐渐下降,假阳性不断累积 检测规则: 如果技能库准入使用与训练循环相同的评估,污染将会级联 根本原因: 糟糕的技能使得糟糕的组合成为可能;技能库错误会累积,不同于训练噪声 修复: 技能库准入使用昂贵的独立验证,训练循环仅使用廉价评估
5. 手动粒度覆盖
症状: 技能感觉与自然语义边界脱节,抽象级别强制指定 检测规则: 如果手动指定技能粒度与LLM提议矛盾,检查领域对齐 根本原因: LLM从训练数据中编码了语义任务边界 修复: 让系统自由提议技能,观察发现的粒度,仅针对特定领域需求进行调整
工作实例
实例1:使用双过程验证的机器人抽屉打开
场景: 智能体必须学习打开各种抽屉类型,且没有预定义的成功标准。
系统1(快速)过程:
- LLM生成技能提议:"抓取抽屉把手"
- LLM创建成功函数:
drawer_handle_grasped = gripper_distance < 0.02 - RL训练使用该函数进行100个回合
- LLM评估:"成功!夹爪始终能到达把手"
- 决策点: 是否加入技能库?否 - 需要系统2
系统2(慢速)过程:
- VLM分析来自10个最佳回合的最终视频帧
- VLM判断:"夹爪接触把手但未保持抓握 - 手指未闭合"
- 检测: 捕获系统1假阳性
- 动作: 拒绝技能库准入,完善成功函数
- 迭代: 在成功函数中添加抓握压力要求
专家与新手对比:
- 新手遗漏: 信任LLM自我评估,收录学习不佳的技能
- 专家捕获: 同一模型无法评估自己提议的内容;需要独立验证
结果: 技能库保持76%的精度,而未经系统2验证时仅为46%
实例2:多步骤任务的自上而下任务分解
场景: 使用自下而上的技能链接执行"准备咖啡"失败,尽管拥有诸如"抓取杯子"、"倒液体"等原语
自下而上失败分析:
- 可用技能:抓取杯子、倒液体、移动手臂、检测物体
- 组合尝试:尝试了所有16种可能的2技能链
- 缺失的中间技能: "将对准杯子与壶嘴"、"检测液体液位"、"协调双臂倒液"
- 决策点: 自下而上无法发现这些技能 - 它们不是原语组合
自上而下分解:
- 失败任务:"准备咖啡"
- 分解为:[加热水] → [研磨咖啡豆] → [对准杯子] → [倒水] → [加入咖啡豆]
- 差距分析: 技能库中缺失"对准杯子"
- 按需学习: 学习"对准杯子",初始状态 = "研磨咖啡豆"的结束状态
- 链接: 每个子任务的成功状态成为下一个任务的初始条件
权衡分析:
- 自下而上:12.50%的成功率,探索不必要的技能组合
- 自上而下:43.75%的成功率,仅学习必需的前提条件
- 成本: 自上而下需要任务分解能力,自下而上需要穷举探索
自上而下何时会适得其反:
- 如果任务分解错误,则为错误的子任务学习技能
- 如果初始状态无法可靠设置,链接会中断
- 缓解措施: 在技能学习前验证分解,实现状态设置验证
实例3:RAG环境知识蒸馏
场景: 智能体必须在新环境中学习操作技能,没有明确的物理约束
无RAG(25%成功率):
- LLM生成奖励:
reward = distance_to_target - 智能体学会接近但未考虑碰撞边界
- 失败: 不知道抓取前夹爪必须距离表面5厘米
有RAG(46%成功率):
- 检索之前的成功:"reach_cube_A"奖励函数
- 检测到的模式: 所有成功的抓取都包含
gripper_height > 0.05约束 - LLM整合:
reward = distance_to_target if gripper_height > 0.05 else -10 - 知识蒸馏: 隐式学习了环境可供性
专家与新手对比:
- 新手遗漏: 将RAG视为示例提供,未认识到约束学习
- 专家捕获: RAG通过模式识别实现环境知识蒸馏
RAG何时会适得其反:
- 如果检索的模式来自不同环境,则学习到错误的约束
- 如果成功示例过于稀疏,则模式不具统计显著性
- 缓解措施: 按环境相似性过滤检索,要求最小样本量进行模式提取
质量门
- 提议和验证使用不同的模型能力(例如,LLM提议,VLM验证)
- 在留出测试集上测量,快速评估精度>45%,慢速评估精度>75%
- 技能库准入需要独立验证,而不仅仅是训练循环的成功
- 复杂任务分解生成3-7个有意义的子任务,并具有清晰的依赖顺序
- RAG检索将约束学习提升超过无RAG基线的15%
- 技能粒度分析显示语义聚类,而非参数枚举
- 系统能够检测并从循环依赖失败模式中恢复
- 通过独立评估验证,技能库污染率<25%
- 在复杂任务上,自上而下分解的性能优于自下而上链接超过2倍
- 环境知识蒸馏展示了从成功模式中进行约束学习的能力
非适用边界
请勿将本技能用于:
- 具有已知成功标准的预定义任务 → 改用带有手工设计奖励的标准RL
- 单步骤操作任务 → 改用带有演示数据的监督学习
- 需要实时性能的任务 → 双过程验证太慢;改用缓存的技能库
- 没有视觉反馈的领域 → VLM验证不可用;设计特定领域的独立验证器
- 资源受限环境 → 系统2验证成本高;接受较低精度或使用分层验证
改用以下技能:
- 标准奖励工程 → 适用于具有明确成功指标的任务
- 模仿学习 → 适用于有大量演示数据的任务
- 分层强化学习 → 适用于具有已知技能分解的任务
- 元学习 → 适用于快速适应新的任务分布
- 宪法式AI → 适用于需要价值对齐和安全约束的任务