VLM/VLA:闭环恢复与失败分析

VLM/VLA:闭环恢复与失败分析

Charles Lv7

很多 VLA 演示最容易忽略的一点是:机器人之所以看起来聪明,往往不是因为它从不犯错,而是因为它在犯错后还能继续完成任务。真实环境里的误差是常态,物体会滑、遮挡会发生、指令会歧义、工具会卡住、相机会偏一点。如果系统没有闭环恢复能力,再强的离线平均成功率也很难支撑部署。

初学者先抓住

闭环恢复的核心是“边做边看、错了能改”。VLA 不应该只输出一整串动作就结束,而要不断检查当前状态是否偏离目标。

有趣例子:夹菜掉了怎么办

用筷子夹菜时,第一次夹滑了,你会重新对准、换角度、减小力度,而不是继续执行原计划。机器人也需要这种失败检测和局部恢复能力。

1. 为什么闭环比一次性规划更重要

VLA 往往以视觉和语言为输入生成动作序列。如果把它理解成“输入任务后吐出整串动作”,就会天然脆弱,因为现实系统中的状态转移不是确定的。更合理的形式应是:

atπθ(atot,l,ht),a_t \sim \pi_\theta(a_t \mid o_t, l, h_t),

其中 oto_t 是当前观测,ll 是指令,hth_t 是历史。也就是说,每一步动作都基于最新观测而不是开环假设。

闭环恢复的本质,是让模型不断问自己:我是不是还在正确轨道上?如果不是,下一步怎么修正?

2. 失败从哪里来

VLA 的失败通常可分为四类:

类型 典型表现
感知失败 看错目标、误判状态、忽略遮挡
语义失败 误解指令、指代解析错误、任务阶段混乱
执行失败 抓取滑落、放置偏移、控制延迟、碰撞
系统失败 工具接口错误、坐标变换失配、传感器延迟

区分这四类失败非常关键,否则团队会陷入“再训一个更大模型试试”的惯性,而不是定位真正短板。

3. 闭环恢复的基本结构

一个可恢复的 VLA 系统通常包含四个部件:状态估计负责判断任务进行到哪一步,成功 / 失败检测负责确认当前动作是否达成预期,恢复策略决定重试、回退、重新观察还是请求帮助,记忆更新则把失败信息写回历史,避免重复犯错。

可以把恢复策略表示成

πrecover(atot,l,ht,et),\pi_{\text{recover}}(a_t \mid o_t, l, h_t, e_t),

其中 ete_t 是错误类型估计。这里的关键不是有一个统一万能恢复策略,而是能针对不同错误类型采取不同处理。

4. 成功检测与失败检测

若系统根本不知道自己失败了,就无从恢复。检测信号可来自几何条件、视觉条件、力觉 / 触觉、任务状态,也可以来自语言或规则校验:目标是否进入指定区域、物体是否被抓起、夹爪是否闭合到位、抽屉是否真的打开、当前动作是否违背任务顺序,都是闭环判断的一部分。

在数学上,可把失败检测看作一个判别器:

et=gϕ(ot,atk:t,ht),e_t = g_\phi(o_t, a_{t-k:t}, h_t),

它输出失败标签或置信度。

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.
Comments