代理式技能探索
版本: 1.0
領域: 自主學習系統、AI 架構、強化學習
核心概念
自主技能探索解決了雞生蛋蛋生雞的問題:在學習如何達成目標的同時,學習什麼才算成功。系統必須同時扮演學生與老師的角色,這會產生循環依賴,需要在架構上將提案與驗證分離。
決策點
架構選擇決策樹
如果任務有真實成功標準(例如:具有明確目標的導航、操作) → 使用單模型架構搭配快速 LLM 評估 → 成本:低 | 精確度:~75% | 使用案例:預先確定的任務
如果任務需要開放式技能探索(例如:創意任務、探索) → 使用雙程序架構(系統 1/系統 2) → 系統 1:用於訓練循環的快速 LLM 評估 → 系統 2:用於庫接納的獨立 VLM 驗證 → 成本:高 | 精確度:~76% | 使用案例:自主學習
如果需要複雜的多步驟行為 → 自上而下的任務分解 → 從失敗的複雜任務開始 → 分解為子任務 → 學習缺失的先備知識 → 成功率:43.75% 對比 12.50%(自下而上鏈接)
如果要從基本動作建立技能庫 → 僅在基本動作與最終目標完美匹配時使用自下而上的技能鏈接 → 風險:組合爆炸與缺失「中間技能」 → 備援方案:當組合失敗時切換至自上而下
如果當前方法遇到效能瓶頸 → 檢查是否存在循環依賴(同一模型既提案又評估) → 如果檢測到:實施架構分離 → 如果未檢測到:使用成功的技能模式進行 RAG,以進行環境知識蒸餾
驗證策略決策表
| 場景 | 快速評估(系統 1) | 慢速評估(系統 2) | 庫接納規則 |
|---|---|---|---|
| 訓練循環 | LLM 生成的成功函數 | 無 | 不適用 |
| 技能驗證 | LLM 評估 | VLM 驗證 | 兩者皆需通過 |
| 庫污染風險 | 高容忍度 | 零容忍度 | 系統 2 覆寫要求 |
| 成本限制 | 優化速度 | 優化準確度 | 不對稱成本接受 |
失敗模式
1. 橡皮圖章評估
症狀: 報告的成功率高但任務完成度低,技能庫快速增長 檢測規則: 如果同一模型生成獎勵並評估成功,則存在循環依賴 根源: LLM 同時扮演玩家與裁判,造成評估偏差 修復: 使用獨立驗證器(例如:視覺任務使用 VLM)實施架構分離
2. 基本動作爆炸癱瘓
症狀: 技能庫龐大但無法解決複雜任務,技能無法有效組合 檢測規則: 如果技能數量增加但複雜任務成功率停滯,則存在「中間技能」問題 根源: 自下而上鏈接無法發現基本動作與複雜目標之間的中間技能 修復: 從期望的複雜行為切換至自上而下的任務分解
3. 無上下文 RAG 浪費
症狀: RAG 檢索已發生但效能未提升,將檢索視為通用範例 檢測規則: 如果 RAG 未改善約束學習(例如:物理理解),則只是昂貴的提示 根源: 缺少環境知識蒸餾機制 修復: 將技能庫結構化為環境賦能性的漸進模型,而不僅僅是範例收集
4. 庫污染級聯
症狀: 隨著技能庫增長,效能隨時間下降,假陽性不斷累積 檢測規則: 如果庫接納使用與訓練循環相同的評估,則污染會級聯 根源: 不良技能導致不良組合;庫錯誤會加乘,不同於訓練雜訊 修復: 庫接納使用昂貴的獨立驗證,訓練循環僅使用廉價評估
5. 人為粒度覆寫
症狀: 技能感覺脫離自然語義邊界,強制抽象層級 檢測規則: 如果手動指定技能粒度與 LLM 提議矛盾,檢查領域匹配性 根源: LLM 從訓練資料中編碼語義任務邊界 修復: 讓系統自由提議技能,觀察發現的粒度,僅根據領域特定需求調整
工作範例
範例 1:使用雙程序驗證的機器人抽屜開啟
場景: 代理必須學習開啟各種抽屜類型,而無預先定義的成功標準。
系統 1(快速)流程:
- LLM 生成技能提案:「grasp_drawer_handle」
- LLM 建立成功函數:
drawer_handle_grasped = gripper_distance < 0.02 - RL 訓練使用此函數進行 100 個回合
- LLM 評估:「成功!夾爪持續到達把手」
- 決策點: 接納入庫?否 - 需要系統 2
系統 2(慢速)流程:
- VLM 分析來自 10 個最佳回合的最終影片幀
- VLM 裁決:「夾爪觸碰把手但未維持抓握 - 手指未閉合」
- 檢測: 系統 1 假陽性被發現
- 動作: 拒絕庫接納,改進成功函數
- 迭代: 在成功函數中加入抓握壓力要求
專家 vs 新手:
- 新手遺漏: 信任 LLM 自我評估,接納學習不良的技能
- 專家發現: 同一模型無法評估其提議的內容;需要獨立驗證
結果: 技能庫維持 76% 的精確度,而無系統 2 時僅為 46%
範例 2:多步驟任務的自上而下任務分解
場景: 「沖泡咖啡」在使用自下而上技能鏈接時失敗,儘管擁有「grasp_cup」、「pour_liquid」等基本動作
自下而上失敗分析:
- 可用技能:grasp_cup、pour_liquid、move_arm、detect_object
- 組合嘗試:嘗試了所有 16 種可能的 2 技能鏈
- 缺失的中間技能:「align_cup_with_spout」、「detect_liquid_level」、「coordinate_bimanual_pouring」
- 決策點: 自下而上無法發現這些 - 它們不是基本動作的組合
自上而下分解:
- 失敗任務:「prepare_coffee」
- 分解為:[heat_water] → [grind_beans] → [align_cup] → [pour_water] → [add_beans]
- 差距分析:「align_cup」從庫中缺失
- 按需學習: 以「grind_beans」的結束狀態作為初始狀態來學習「align_cup」
- 鏈接: 每個子任務的成功狀態成為下一個任務的初始條件
權衡分析:
- 自下而上:12.50% 成功率,探索不必要的技能組合
- 自上而下:43.75% 成功率,僅學習所需的先備知識
- 成本: 自上而下需要任務分解能力,自下而上需要詳盡探索
自上而下何時會適得其反:
- 如果任務分解錯誤,會學習到不正確子任務的技能
- 如果初始狀態無法可靠設置,鏈接會中斷
- 緩解措施: 在技能學習前驗證分解,實施狀態設置驗證
範例 3:RAG 環境知識蒸餾
場景: 代理必須在沒有明確物理約束的情況下學習新環境中的操作技能
無 RAG(25% 成功率):
- LLM 生成獎勵:
reward = distance_to_target - 代理學習接近但不考慮碰撞邊界
- 失敗: 不知道在抓取前夾爪必須距離表面 5 公分
有 RAG(46% 成功率):
- 檢索先前成功:「reach_cube_A」獎勵函數
- 檢測到模式: 所有成功的「reach」都包含
gripper_height > 0.05約束 - LLM 納入:
reward = distance_to_target if gripper_height > 0.05 else -10 - 知識蒸餾: 隱式學習了環境賦能性
專家 vs 新手:
- 新手遺漏: 將 RAG 視為範例提供,未識別出約束學習
- 專家發現: RAG 透過模式識別實現環境知識蒸餾
RAG 何時會適得其反:
- 如果檢索的模式來自不同環境,則會學到錯誤的約束
- 如果成功範例過於稀疏,模式不具有統計顯著性
- 緩解措施: 按環境相似性過濾檢索,要求模式提取的最小樣本量
品質關卡
- 提案與驗證使用不同的模型能力(例如:LLM 提案,VLM 驗證)
- 在保留測試集上測量,快速評估精確度 >45%,慢速評估精確度 >75%
- 庫接納需要獨立驗證,而不僅是訓練循環成功
- 複雜任務分解產生 3-7 個有意義的子任務,且具有清晰的依賴排序
- RAG 檢索改善約束學習的程度 > 無 RAG 基準線的 15%
- 技能粒度分析顯示語義聚類,而非參數列舉
- 系統能夠檢測並從循環依賴失敗模式中恢復
- 透過獨立驗證,庫污染率 <25%
- 自上而下分解在複雜任務上的表現優於自下而上鏈接 >2 倍
- 環境知識蒸餾展示從成功模式中學習約束
非適用範圍
請勿將此技能用於:
- 具有已知成功標準的預先確定任務 → 改用帶有手動設計獎勵的標準 RL
- 單步驟操作任務 → 改用帶有示範資料的監督式學習
- 需要即時效能的任務 → 雙程序驗證太慢;改用快取技能庫
- 缺乏視覺回饋的領域 → VLM 驗證不可用;改為設計領域特定的獨立驗證器
- 資源受限環境 → 系統 2 驗證成本高昂;接受較低精確度或使用分層驗證
改委派給以下技能:
- 標準獎勵工程 → 用於具有清晰成功指標的任務
- 模仿學習 → 用於具有大量示範資料的任務
- 分層 RL → 用於具有已知技能分解的任務
- 元學習 → 用於快速適應新任務分佈
- 憲法 AI → 用於需要價值對齊與安全約束的任務