論文導讀:AHA——會說出「機器人為什麼失敗」的視覺語言模型
Jiafei Duan, Wilbert Pumacay, Nishanth Kumar, Yi Ru Wang, Shulin Tian, Wentao Yuan, Ranjay Krishna, Dieter Fox, Ajay Mandlekar, Yijie Guo · 2025原文連結
一句話讀懂這篇論文
讓大型語言模型或視覺語言模型幫機器人寫獎勵函數、規劃任務、生成軌跡已經很常見,但它們很不擅長發現自己哪裡做錯了。AHA 是一個專門用來看機器人操作畫面、回答「這一步成功了嗎?沒成功的話,原因是什麼?」的視覺語言模型。訓練資料是用模擬器故意把成功的示範弄壞自動生成的,結果它在真實機器人的失敗資料上,也比 GPT-4o 判斷得更準、解釋得更好。
論文資訊卡
- 標題:AHA: A Vision-Language-Model for Detecting and Reasoning Over Failures in Robotic Manipulation
- 作者:Jiafei Duan、Wilbert Pumacay、Nishanth Kumar、Yi Ru Wang、Shulin Tian、Wentao Yuan、Ranjay Krishna、Dieter Fox、Ajay Mandlekar、Yijie Guo(後兩位共同指導)
- 機構:NVIDIA、華盛頓大學、聖巴勃羅天主教大學、MIT、南洋理工大學、Allen AI
- 發表:ICLR 2025(arXiv 2410.00371)
- 專案頁:aha-vlm.github.io
- 定位:跟 SAFE 一樣處理「機器人失敗偵測」,但路線不同。SAFE 讀 VLA 內部的隱藏狀態做即時偵測;AHA 是一個外部的 VLM 觀察者,用語言解釋失敗原因
問題背景
基礎模型在開放世界任務上進步很多,但仍有幻覺問題——輸出偏離事實,而且模型自己察覺不到。人類能從失敗中學習(小孩學溜冰、練揮桿),RLHF 也是透過人類回饋讓模型往正確方向調整。問題是:**能不能讓模型自己偵測、推理自己的失敗?**這在機器人領域特別迫切,因為環境是隨機、不可預測的。
LLM/VLM 已經被整合進機器人系統做很多事:
- 自動生成強化學習的獎勵函數(例如 Eureka)
- 替運動規劃產生任務計畫
- 零樣本生成機器人軌跡
它們擅長「執行」,但不擅長偵測和推理失敗。比如機器人在任務中途掉了東西,人類觀察者會立刻發現並修正,機器人卻常常渾然不覺地繼續下一步。
既有的失敗偵測研究大多把現成的 VLM/LLM 當成功偵測器用,或者對 VLM 做指令微調來偵測失敗,但幾乎都只做二分類——只說成功或失敗,不解釋原因。
失敗分類:七種常見失敗模式
作者檢視了 DROID、Open X-Embodiment 等資料集,以及行為複製策略的實際執行結果(包含遙操作和自主策略的失敗),參考 REFLECT 的研究,整理出七種失敗模式:
| 失敗模式 | 類型 | 描述 |
|---|---|---|
| No_Grasp(沒夾) | 物體相關 | 夾爪到了該夾的位置,卻沒閉合就繼續下一步 |
| Slip(滑落) | 物體相關 | 已經夾起物體,移到下一個關鍵姿態途中夾力鬆掉、物體滑落 |
| Translation(位置偏移) | 動作相關 | 移向關鍵姿態時,X、Y 或 Z 方向有偏移,導致任務失敗 |
| Rotation(角度錯誤) | 動作相關 | 位置對了,但 roll、yaw 或 pitch 有偏差 |
| No_Rotation(沒轉) | 動作相關 | 位置對了,但完全沒做該做的旋轉 |
| Wrong_action(順序錯) | 動作相關 | 動作順序錯誤,例如「把方塊放進抽屜」時,抽屜還沒開就把方塊移過去 |
| Wrong_object(拿錯東西) | 物體相關 | 對錯的物體動作,例如「拿紅杯」卻拿了綠杯 |
FailGen:把成功示範「弄壞」
為什麼用 RLBench
RLBench 原生提供任務示範的關鍵姿態(keyframe)。基於關鍵姿態的表示,可以很靈活地更換操作對象、改變動作順序。FailGen 是包在 RLBench 外面的環境封裝,透過三種方式修改軌跡:擾動關鍵姿態、替換物體、重排關鍵姿態順序。
每種失敗怎麼生成
- No_Grasp:在相關關鍵姿態上拿掉夾爪開合指令
- Slip:夾爪閉合後不久,定時放開
- Translation / Rotation:擾動關鍵姿態的位置 / 朝向
- No_Rotation:限制關鍵姿態的旋轉軸
- Wrong_action:重排關鍵姿態的執行順序
- Wrong_object:把原本給某個物體的關鍵姿態改派給另一個物體,保持相對姿態,模擬拿錯東西
系統化掃描
對每個 RLBench 任務的所有關鍵姿態,掃過七種失敗模式的所有可能設定,用模擬器的成功條件檢查器確認是否真的導致整體失敗,自動產生 YAML 設定檔,記錄失敗模式、參數(距離、動作順序、夾力強度等)和要擾動的關鍵姿態。再搭配描述「兩個關鍵姿態之間機器人在做什麼」的語言模板,系統化地生成問答配對。
最後得到 AHA 資料集:79 個 RLBench 任務、約 4.9 萬筆失敗影像—問題配對。作者也用同一套流程在 ManiSkill 模擬器上生成失敗資料,並改寫既有的 RoboFail 資料集用於評估,證明 FailGen 能套用到不同模擬器。
方法
失敗推理的問題設定
把操作軌跡切成一連串子任務 ,每個子任務由兩個相鄰的關鍵姿態組成(例如「堆方塊」中的「拿起方塊」)。對目前的子任務:
- 先回答二元判斷:「Yes」或「No」
- 如果是「No」,再用簡短的自由語言解釋為什麼失敗
範例問答:
問:針對給定的子任務,先從 ["yes", "no"] 中判斷是否成功,再解釋目前子任務失敗的原因。
答:No,機器人夾爪以錯誤的 roll 角度旋轉。
輸入影像怎麼組
VLM 只吃一張圖,要怎麼表達「時間」?做法是把多張影像拼成一個矩陣:
- 每一欄是時間序列:從左到右依序放到目前子任務為止的所有關鍵姿態,還沒發生的關鍵姿態用白色區塊補上
- 每一列是一個相機視角 ,用多視角減少遮擋問題
再在提示中附上詳細的任務描述。這種格式統一用在所有微調和評估資料上。
訓練資料混合
除了 4.9 萬筆 AHA 資料,還一起微調通用資料,避免模型忘記預訓練知識:
| 來源 | 數量 | 範例 |
|---|---|---|
| AHA 資料集 | 49K | 判斷子任務成功與否並解釋失敗原因 |
| VQA(LLaVA) | 665K | 「圖中的貓在做什麼?」 |
| LVIS | 100K | 「找出所有抽屜」→ 邊界框中心與尺寸 |
模型與微調
沿用 LLaVA-v1.5 的指令微調流程:影像編碼器 → 2 層線性投影器 → 跟語言 token 串接 → Transformer 語言模型(LLaMA-2-13B)。所有元件用預訓練權重初始化,只更新投影器和語言模型,影像編碼器和 tokenizer 凍結。模型以自迴歸方式預測回答 token。另外也訓練了 7B 版本。
實驗設定
三個評估資料集,全部沒有在微調中出現過,各自測試一種泛化:
| 資料集 | 內容 | 測試什麼 |
|---|---|---|
| AHA(Test) | 10 個 RLBench 任務、1.1 萬筆,跟訓練任務不重疊 | 新任務、新行為 |
| ManiSkill-Fail | ManiSkill 中 4 個任務、130 筆 | 不同模擬器、不同視角 |
| RoboFail | 7 個 UR5 真實機器人任務的失敗 | 真實世界、不同機器人形態 |
四個評估指標(因為要公平比較自由語言推理):
- ROUGE-L:候選和參考文字的最長共同子序列
- 餘弦相似度:文字嵌入的相似度
- LLM 模糊比對:用 Anthropic 的 claude-3-sonnet 以師生提示的方式評估語意相似度
- 二元成功率:成功/失敗判斷的正確率
比較對象:LLaVA-v1.5-13B(AHA 的基底模型)、LLaVA-NeXT-34B、Qwen-VL、Gemini-1.5 Flash、GPT-4o、GPT-4o 5-shot 情境學習。
實驗結果一:失敗偵測與推理
| 模型 | 資料集 | ROUGE-L | 餘弦相似度 | 二元成功率 | LLM 模糊比對 |
|---|---|---|---|---|---|
| LLaVA-v1.5-13B | AHA Test | 0.061 | 0.208 | 0.080 | 0.648 |
| ManiSkill-Fail | 0.000 | 0.208 | 0.022 | 0.270 | |
| RoboFail | 0.000 | 0.203 | 0.000 | 0.404 | |
| LLaVA-NeXT-34B | AHA Test | 0.013 | 0.231 | 0.017 | 0.626 |
| ManiSkill-Fail | 0.001 | 0.195 | 0.007 | 0.277 | |
| RoboFail | 0.018 | 0.188 | 0.017 | 0.351 | |
| Qwen-VL | AHA Test | 0.000 | 0.161 | 0.000 | 0.426 |
| ManiSkill-Fail | 0.037 | 0.301 | 0.116 | 0.034 | |
| RoboFail | 0.000 | 0.159 | 0.000 | 0.050 | |
| Gemini-1.5 Flash | AHA Test | 0.120 | 0.231 | 0.371 | 0.566 |
| ManiSkill-Fail | 0.003 | 0.121 | 0.014 | 0.032 | |
| RoboFail | 0.000 | 0.042 | 0.000 | 0.393 | |
| GPT-4o | AHA Test | 0.251 | 0.308 | 0.500 | 0.784 |
| ManiSkill-Fail | 0.142 | 0.335 | 0.688 | 0.453 | |
| RoboFail | 0.114 | 0.318 | 0.554 | 0.438 | |
| GPT-4o-ICL(5-shot) | AHA Test | 0.226 | 0.380 | 0.611 | 0.776 |
| ManiSkill-Fail | 0.341 | 0.429 | 0.971 | 0.630 | |
| RoboFail | 0.236 | 0.429 | 0.571 | 0.418 | |
| AHA-7B | AHA Test | 0.434 | 0.574 | 0.691 | 0.695 |
| ManiSkill-Fail | 0.609 | 0.680 | 1.000 | 0.532 | |
| RoboFail | 0.204 | 0.394 | 0.625 | 0.439 | |
| AHA-13B | AHA Test | 0.446 | 0.583 | 0.702 | 0.768 |
| ManiSkill-Fail | 0.600 | 0.681 | 1.000 | 0.633 | |
| RoboFail | 0.280 | 0.471 | 0.643 | 0.465 |
- AHA-13B 在每個資料集、幾乎每個指標都最好。唯一例外是 AHA Test 的 LLM 模糊比對,GPT-4o 高不到 3%
- 對第二名 GPT-4o-ICL 的平均差距:AHA Test 12.6%、ManiSkill-Fail 13.4%、真實世界的 RoboFail 4.9%
- 整體比 GPT-4o 平均高 20% 以上,比基底模型 LLaVA-v1.5-13B 高 43% 以上
- 很多通用 VLM 的二元成功率接近 0,代表它們連「這步有沒有成功」都判斷不了,更別說解釋原因
實驗結果二:沒有忘記通用知識
| 模型 | MMBench | ScienceQA | TextVQA | POPE | VizWiz |
|---|---|---|---|---|---|
| LLaVA-13B(LLaMA-2) | 67.70 | 73.21 | 67.40 | 88.00 | 53.01 |
| AHA-13B(LLaMA-2) | 65.20 | 71.94 | 65.20 | 85.74 | 53.45 |
跟同樣預訓練權重、只用 VQA 資料微調的 LLaVA 比,差距約 1.5%。AHA 仍然能當一般用途的 VLM。
實驗結果三:資料越多越好
用 3k、6k、12k、34k、48k、60k 筆 AHA 資料分別微調,在 ManiSkill-Fail 上評估。四個指標的平均二次擬合梯度為 0.0022,顯示有隨資料量增加的趨勢,代表繼續用 FailGen 擴大資料可能還會進步。
實驗結果四:接進下游機器人系統
AHA 的價值不只在於回答得準,而是它的失敗解釋能直接回饋給其他系統。作者把它接進三種框架,跟用 GPT-4o 做同樣工作比較。三者平均,任務成功率比 GPT-4 系列高 21.4%。
1. 強化學習獎勵生成(Eureka)
Eureka 用 LLM 寫獎勵函數,根據訓練統計做「反思」再修改。作者把它移植到 ManiSkill,在反思時額外加入評估執行影像的失敗解釋(由 AHA-13B 或 GPT-4o 提供)。五個從桌面到移動操作的強化學習任務,先取一個獎勵函數,再給兩輪 GPT API 呼叫的迭代預算,用 PPO 訓練、1000 步評估。AHA 的回饋讓五個任務都在預算內成功,成功率比 GPT-4o 高 22.34%。
2. 任務與運動規劃(PRoC3S)
PRoC3S 讓 LLM 寫一個生成計畫的語言模型程式,在模擬器裡大量測試,找到有效計畫才在機器人上執行;找不到就把環境的失敗資訊回饋給 LLM 重寫。但傳統做法只能檢查有限幾種失敗(逆運動學無解、碰撞等)。作者用兩種方式加入 VLM:
- 把失敗計畫的模擬視覺化給 VLM,請它解釋失敗原因,回饋給 LLM
- PRoC3S 找到「有效」計畫後,再給 VLM 看一次,確認這個計畫真的達成語言目標,沒有的話觸發重新規劃
三個任務各 10 次,最多 100 個取樣步、三輪回饋。AHA 比 GPT-4o 高 36.7%。
3. 零樣本資料生成的子任務驗證(Manipulate-Anything)
Manipulate-Anything 用多個 VLM 零樣本生成機器人軌跡,其中有一個子任務驗證模組,看過去和現在的畫面判斷子任務是否完成,決定繼續或重試。把原本的 GPT-4V 換成 AHA-13B,四個 RLBench 任務各 25 次,整體成功率平均提升 5%。
限制
- AHA 輸出的推理跟微調資料中的失敗情境很接近,對分類以外的失敗模式,還不夠開放
- FailGen 目前是從模擬中擾動示範來生成失敗;如果能把大型預訓練策略蒸餾到模擬中執行多樣任務,再從中取樣失敗,可以得到更開放的失敗範例
影響與定位
AHA 的兩個主要貢獻:
- 把失敗偵測從二分類變成語言推理。「失敗了」對下游系統沒什麼用,「夾爪 roll 角錯了」才能用來修正獎勵函數或重新規劃
- FailGen 讓失敗資料可以大量自動生成。真實機器人的失敗資料很難系統化蒐集,但在模擬中有了成功示範和關鍵姿態,就能按分類有系統地擾動出各種失敗
跟 SAFE 放在一起看,可以看到失敗偵測的兩條路線:
| SAFE | AHA | |
|---|---|---|
| 位置 | VLA 內部(讀隱藏狀態) | VLA 外部(看影像) |
| 輸出 | 失敗分數(可即時、可提早預警) | 成功/失敗 + 語言解釋 |
| 適用對象 | 特定 VLA 模型 | 任何機器人系統,跨形態 |
| 主要用途 | 執行中及早停止 | 給 LLM/VLM 系統回饋,讓它修正 |
相關論文推薦
- 論文導讀:SAFE——從 VLA 模型的隱藏狀態裡,直接讀出「這次任務要失敗了」——另一條失敗偵測路線
- 論文導讀:V-GPS——用價值函數在推論時幫通用機器人策略挑動作——不重新訓練就改善策略的另一種方式
- 論文導讀:OpenVLA——70 億參數的開源 VLA,用七分之一參數打敗 RT-2-X——同樣建立在 LLaMA-2 上的 VLA
參考資料
- Duan, J., Pumacay, W., Kumar, N., Wang, Y. R., Tian, S., Yuan, W., Krishna, R., Fox, D., Mandlekar, A., & Guo, Y. (2025). AHA: A Vision-Language-Model for Detecting and Reasoning Over Failures in Robotic Manipulation. ICLR 2025. arXiv:2410.00371
- 專案頁:aha-vlm.github.io
訂閱 RoboTech Lab 電子報
每週一封,整理新的教學、論文導讀與機器人業界動態。隨時可以取消訂閱。