VLM/VLA:闭环恢复与失败分析
很多 VLA 演示最容易忽略的一点是:机器人之所以看起来聪明,往往不是因为它从不犯错,而是因为它在犯错后还能继续完成任务。真实环境里的误差是常态,物体会滑、遮挡会发生、指令会歧义、工具会卡住、相机会偏一点。如果系统没有闭环恢复能力,再强的离线平均成功率也很难支撑部署。
闭环恢复的核心是“边做边看、错了能改”。VLA 不应该只输出一整串动作就结束,而要不断检查当前状态是否偏离目标。
用筷子夹菜时,第一次夹滑了,你会重新对准、换角度、减小力度,而不是继续执行原计划。机器人也需要这种失败检测和局部恢复能力。
1. 为什么闭环比一次性规划更重要
VLA 往往以视觉和语言为输入生成动作序列。如果把它理解成“输入任务后吐出整串动作”,就会天然脆弱,因为现实系统中的状态转移不是确定的。更合理的形式应是:
其中 是当前观测, 是指令, 是历史。也就是说,每一步动作都基于最新观测而不是开环假设。
闭环恢复的本质,是让模型不断问自己:我是不是还在正确轨道上?如果不是,下一步怎么修正?
2. 失败从哪里来
VLA 的失败通常可分为四类:
| 类型 | 典型表现 |
|---|---|
| 感知失败 | 看错目标、误判状态、忽略遮挡 |
| 语义失败 | 误解指令、指代解析错误、任务阶段混乱 |
| 执行失败 | 抓取滑落、放置偏移、控制延迟、碰撞 |
| 系统失败 | 工具接口错误、坐标变换失配、传感器延迟 |
区分这四类失败非常关键,否则团队会陷入“再训一个更大模型试试”的惯性,而不是定位真正短板。
3. 闭环恢复的基本结构
一个可恢复的 VLA 系统通常包含四个部件:状态估计负责判断任务进行到哪一步,成功 / 失败检测负责确认当前动作是否达成预期,恢复策略决定重试、回退、重新观察还是请求帮助,记忆更新则把失败信息写回历史,避免重复犯错。
可以把恢复策略表示成
其中 是错误类型估计。这里的关键不是有一个统一万能恢复策略,而是能针对不同错误类型采取不同处理。
4. 成功检测与失败检测
若系统根本不知道自己失败了,就无从恢复。检测信号可来自几何条件、视觉条件、力觉 / 触觉、任务状态,也可以来自语言或规则校验:目标是否进入指定区域、物体是否被抓起、夹爪是否闭合到位、抽屉是否真的打开、当前动作是否违背任务顺序,都是闭环判断的一部分。
在数学上,可把失败检测看作一个判别器:
它输出失败标签或置信度。
5. 恢复策略的几种层级
5.1 微调式恢复
动作偏一点但任务尚未脱轨,例如抓手比目标左偏 2 厘米。这时最有效的是小步修正,而不是整段回滚。
5.2 子任务重试
例如“打开抽屉失败”,重新对齐把手再试一次。子任务重试是最常见、也最容易实现的恢复方式。
5.3 状态重建后再规划
当前世界状态与原计划差距较大,需要重新观察并生成新子计划。例如物体被碰倒、目标被遮挡、容器位置变了。
5.4 升级处理
当系统不确定或风险高时,应进入人工确认、安全待机或调用其他专用模块。这是一种“承认自己不会”的恢复方式,往往比盲目尝试更安全。
6. 历史记忆为何对恢复重要
若系统每一步都只看当前图像而不记历史,就容易在失败后反复做同样错误动作。记忆至少要保留最近执行了什么、哪次尝试失败、当前任务完成到哪一步,以及环境中哪些对象状态已经改变。
一个简单例子是把杯子放进盒子。第一次尝试因盒口被挡失败后,系统应记得“障碍物在盒口附近”,而不是下一步再用完全相同路径硬塞一次。
7. 失败分析应如何组织
单看总成功率无法指导改进。更实用的是建立 failure taxonomy,例如视觉定位偏差、指令 grounding 错误、抓取接触失败、目标丢失、动作执行超时和恢复策略错误,并为每类失败记录发生频次、任务阶段、场景条件、是否可恢复和平均恢复耗时。
这能让数据回流与模型优化更精准。
8. 失败轨迹的价值远高于成功轨迹
成功轨迹告诉模型“事情顺利时怎么做”,失败轨迹告诉模型“现实会怎样出错以及如何补救”。对于 VLA 来说,恢复数据常常是最稀缺也最有价值的部分。
例如在仓库拣选任务里,成功抓起箱子的示范很多,但“夹歪了之后如何重新定位再抓”的数据更能提升真实稳定性。
9. 常见失效模式
9.1 错了还继续错
系统未检测到失败,延续原计划,导致误差扩大。比如杯子没抓起来,机器人却继续执行“移动到托盘上方”。
9.2 过度恢复
轻微偏差本可局部修正,系统却频繁重置、重新规划,导致效率极低。
9.3 恢复与主任务冲突
恢复动作本身破坏环境状态,例如为重新观察而大幅移动相机,反而把目标撞倒。
9.4 错误归因不准
把感知失败当成控制失败,会一直调轨迹;把控制失败当成感知失败,会一直换视角。错误归因错了,恢复也会错。
10. 闭环恢复中的评测指标
除总成功率外,还应同时看首次成功率、最终成功率、平均重试次数、恢复成功率、平均恢复时长和危险恢复动作比例。
若首次成功率一般但最终成功率很高,说明恢复系统有效;若首次成功率高但一旦失败就完全崩盘,则不适合开放环境。
11. 一个具体例子:开抽屉取物
任务是“打开抽屉拿出勺子”。常见失败链条是:把手定位偏差导致第一次抓空,系统重新观察后发现把手更靠左,第二次成功打开抽屉;但抽屉开度不足,勺子仍被遮挡,于是系统追加“再拉一点”的动作,重新检测勺子位置后再完成抓取。
如果没有阶段状态和恢复策略,这个任务会在第一步失败后直接中止。
12. 再看一个例子:屏幕控制型机器人
假设机器人需要在触摸屏上完成设备设置。若第一次点击未生效,系统必须判断是按钮没点中、网络加载慢、权限弹窗挡住,还是页面已经跳转但识别错了。
这类问题和纯机械接触不同,但同样需要闭环恢复。VLA 若只会“点下一步”,而不会确认页面状态,就很容易陷入死循环。
13. 设计建议
把失败检测单独建模,不要假设主策略天然知道自己错了;为不同错误类型设计不同恢复层级,避免一刀切重置;把失败轨迹和恢复成功轨迹优先回流训练;评测时分离首次成功率和最终成功率;高风险情况下保留请求帮助或安全待机机制。
14. 小结
闭环恢复是 VLA 从“演示能做”走向“现实可用”的关键能力。真实系统一定会犯错,真正优秀的机器人不是不出错,而是能检测到错、理解错在哪里,并用合适代价把任务拉回正轨。没有失败分析,改进会变成盲调;没有恢复机制,再强的离线策略也很难撑住真实世界的复杂性。
工程落地提醒
闭环恢复页的重点不是再列一个模型结构,而是把失败检测、恢复策略、历史记忆和数据回流放进同一条实机链路。落地时先写清任务接口和风险边界,再做离线回放、小规模闭环和实机演练;一旦线上或实机表现和离线不一致,应优先检查数据、接口、执行层和评测口径,而不是立刻归因于“模型还不够大”。
- Title: VLM/VLA:闭环恢复与失败分析
- Author: Charles
- Created at : 2026-04-02 09:00:00
- Updated at : 2026-04-02 09:00:00
- Link: https://charles2530.github.io/2026/04/02/ai-files-vla-closed-loop-recovery-and-failure-analysis/
- License: This work is licensed under CC BY-NC-SA 4.0.