摘要
本文解读 NeurIPS 2025 论文《SAFE: Multitask Failure Detection for Vision-Language-Action Models》。该论文提出多任务失败检测这一新设定,并给出SAFE:只读视觉-语言-动作模型(VLA)最后一层的内部特征,回归一个失败分数,再用功能共形预测把它校准成带概率保证的告警阈值。其特别之处在于检测器与策略解耦——不改 VLA 权重、不做微调,训练只需要已见任务的 rollout 级成败标签,却能在未见任务上零样本工作。实验表明 SAFE 在 LIBERO、SimplerEnv 与两台真机上平均把未见任务的 ROC-AUC 提升 4–5 个百分点,而附加推理时间仅 0.73 ms(不到 VLA 推理时间的 1%),为通用机器人策略的安全部署提供了重要借鉴。
视频讲解:点击观看 B 站视频
- 摘要
- 论文基本信息
- 背景与动机
- 研究主线:从问题到结论
- 基准/方法设计
- 分类全景
- 方法细节
- 实验设计与结果
- 结果对比总结
- 关键发现
- 局限性
- 常见问题(FAQ)
- SAFE 需要修改或微调 VLA 模型本身吗?
- 为什么不用 token 级不确定性做失败检测?
- 多任务失败检测和 OOD 检测有什么区别?
- 共形预测在这里起了什么作用?
- SAFE 的实时性如何?
- SAFE 在真机上表现如何?
- 参考链接
论文基本信息
| 项目 | 内容 |
|---|---|
| 标题(英文) | SAFE: Multitask Failure Detection for Vision-Language-Action Models |
| 标题(中文) | SAFE:面向视觉-语言-动作模型的多任务失败检测 |
| 作者 | Qiao Gu, Yuanliang Ju, Shengxiang Sun, Igor Gilitschenski, Haruki Nishimura, Masha Itkina, Florian Shkurti |
| 机构 | University of Toronto · UofT Robotics Institute · Vector Institute · Toyota Research Institute |
| 会议 | NeurIPS 2025 |
| arXiv | arXiv:2506.09937 |
| 项目网站 | vla-safe.github.io |
背景与动机
通用机器人策略正在改变操作任务的开发方式:以 OpenVLA、π0、π0-FAST 为代表的 VLA 模型直接用语言指令驱动机器人,在训练过的任务上成功率可以到 80–90%。但一旦换成没见过的任务与陌生环境,这些策略的表现会掉到 30–60%,而且失败的方式五花八门——抓歪、卡死、把物体掉了、动作抖动失稳。要让机器人在真实世界里安全运行,系统必须在失败真正造成损失之前就知道"我正在失败",然后停下来、回退一步,或者请人接管。
问题在于,已有的失败检测方法几乎都建立在"一个任务一个检测器"的假设上。FAIL-Detect 这一类工作系统评测了各种失败检测方法,并给出了 LogpZO(用流匹配建模观测嵌入分布)等强基线,但评测对象都是单任务策略;针对多任务与陌生环境,这类方法需要为每个新任务重新采集 rollout、重新训练与校准,对通用策略而言成本无法接受。另一条路线尝试做任务无关的检测:STAC 通过比较相邻两次推理预测出的动作块的一致性来判断策略是否还在正常推进,效果不错,但需要采样多个动作——论文实测中它用了 256 个样本,对算力本就吃紧的大模型策略意味着显著的实时开销;还有一些方法选择查询额外的大视觉语言模型来做判断,同样难以满足控制频率要求。
现成的不确定性量化(UQ)工具也不能直接搬来用。token 级不确定性与采样一致性是 LLM 幻觉检测的常用手段,但机器人失败不等于模型"没信心"——策略完全可能非常自信地做错。基于 OOD 检测的方法则假设"偏离成功分布即为失败",这在通用策略上并不成立:新任务本身就偏离训练分布,但新任务并不等于失败。
因此本文要回答的问题是:能否训练一个检测器,只在已见任务上学习,却能对未见任务做出既准确又及时的失败判断,并且附加开销小到可以忽略?作者给出的答案是 SAFE(ScAlable Failure Estimation),其出发点是一个被测量出来的经验事实:VLA 的内部特征空间里,失败的轨迹会聚进同一片区域,而且这片区域跨越任务与指令——失败检测所需要的知识,策略自己已经编码好了。
研究主线:从问题到结论
基准/方法设计
SAFE 的设计起点不是模型结构,而是一次可视化实验。作者把 π0-FAST 在 LIBERO-10 上执行时的内部特征做 t-SNE 降维,发现失败的轨迹会落入同一片区域(论文称之为 failure zone),并且这片区域跨任务、跨指令、跨环境保持一致;更关键的是,特征随时间的移动反映了任务的推进:正常执行时停在区域外,一旦抓取失败或物体掉落,特征就走进区域。
基于这个观察,SAFE 只做三件事:抽取特征、回归分数、校准阈值。特征来自 VLA 最后一层在解码成 token logits 或速度场之前的隐状态,再沿 token、动作块长度、流匹配步等维度聚合成一个定长向量;分数由一到两层的 MLP 或 LSTM 输出;阈值由功能共形预测在校准集上给出。整套流程不需要访问 VLA 的损失函数,也不需要修改任何权重——只要策略是白盒的、能读到内部特征即可。
分类全景
把论文对比的方法按"信号从哪里来"排开,可以看出 SAFE 的位置:它既不像 token 不确定性那样只读单次前向的概率分布,也不像采样一致性那样依赖多次采样,更不像嵌入距离那样只看几何量,而是把 VLA 内部特征当作监督学习对象,用学到的判别结构替代手工度量。
方法细节
SAFE 由三个组件构成。特征提取负责把 VLA 的内部张量压成定长向量:对 OpenVLA 与 π0-FAST,特征是最后一个 transformer block 在解码成 token logits 之前的隐状态,token 数就是聚合维度;π0-FAST 还额外对比了最终 RMS 归一化层之前(encoded)与之后(pre-logits)取特征的差别。对用流匹配输出连续动作的 π0 与 π0∗,特征是三维张量,需要沿动作块长度与流匹配步两个维度分别聚合。所有聚合方式都按已见任务验证集的表现挑选。
分数回归刻意做得极小:MLP 只有两层、隐维 256,对每个时刻独立打分再累加,因此分数范围落在 $0 < s_t < t$;LSTM 只有一层、隐维 256,把整条特征序列映射成归一化概率。两者的训练目标对应各自的输出形式——MLP 用 L1 损失把失败轨迹的分数推高到接近 $t$、把成功轨迹压到接近 $0$;LSTM 用逐时刻二元交叉熵。由于成功与失败 rollout 数量不均衡,损失按类别频率的倒数加权,并附加 L2 权重正则。
阈值校准是方法里最讲究的一步。功能共形预测构造一条时变预测带 $C_\alpha$,单边形式取 $\mathrm{upper}_t = \mu_t + h_t$,其中 $\mu_t$ 是时变均值、$h_t$ 是带宽;校准只在成功轨迹上进行。在可交换性假设下,任意一条新的成功轨迹,其分数在全部时刻都落在带内的概率至少是 $1-\alpha$,因此把阈值取为 $\delta_t = \mathrm{upper}_t$,成功轨迹上的误报率就被限制在 $\alpha$ 以内。相比固定阈值,时变带宽能跟随分数随时间的自然增长,避免"跑得久就被判失败"的伪告警。换句话说,SAFE 把"阈值该取多少"翻译成"误报率允许是多少",让安全阈值成为可配置、可辩护的工程参数。
实验设计与结果
实验覆盖四个基准、三类 VLA、仿真与真机。LIBERO-10 是仿真里最难的十任务长程套件,OpenVLA、π0、π0-FAST 都采用官方权重,随机留 3 个任务作未见任务;SimplerEnv 上评测 π0 的复现版本 π0∗,在 Google Robot 与 WidowX 两个 embodiment 上分别训练与评测,每个任务 100 条 rollout;真机上,π0-FAST 的 DROID 检查点直接部署在 Franka Emika Panda 上,覆盖 13 个任务、每任务 30 条成功与 30 条失败;另外还用 OpenVLA 在 WidowX 上采集 8 个任务共 532 条 rollout(244 成功 / 288 失败)。
评测分两类:以 max-so-far 分数的 ROC-AUC 衡量排序能力,以及由共形预测阈值给出的 TPR、FPR、平衡准确率与平均检测时刻(T-det)。所有指标都在多个随机种子、不同见/未见任务划分下取平均。论文还特别处理了一个评测陷阱:LIBERO 的失败 rollout 总是跑满最大步数,若不干预,检测器只要学会"数时间步"就能拿高分,因此评测统一截断到每个任务的最短 rollout 长度。
| 基准 | 任务数(见/未见) | 训练 rollout | 未见任务评测 rollout |
|---|---|---|---|
| LIBERO(3 个 VLA) | 7 / 3 | 210 | 150 |
| π0∗ SimplerEnv(Google Robot) | 2 / 2 | 198 | 100 |
| π0∗ SimplerEnv(WidowX) | 2 / 2 | 198 | 100 |
| 真机 Franka | 10 / 3 | 450 | 180 |
| 真机 WidowX | 6 / 2 | 250 | 149 |
仿真基准上未见任务的 ROC-AUC 主表如下(数值取自论文 Table 1,"−" 表示方法在该设置下不适用):
| 方法(未见任务 ROC-AUC) | OpenVLA | π0-FAST | π0 | π0∗ |
|---|---|---|---|---|
| Token max prob. | 53.8 | 69.4 | − | − |
| Cosine dist. k-NN | 69.5 | 84.6 | 70.3 | 71.3 |
| LogpZO(FAIL-Detect 最佳) | 52.9 | 83.1 | 73.2 | 74.7 |
| STAC(需多次采样) | − | 85.3 | 47.9 | 62.2 |
| SAFE-LSTM | 72.5 | 84.5 | 71.1 | 80.1 |
| SAFE-MLP | 73.5 | 80.4 | 73.3 | 84.8 |
真机上是同样的排序:SAFE-MLP 在 π0-FAST + Franka 与 OpenVLA + WidowX 两套实验里都拿到最好的成绩,WidowX 未见任务上比马氏距离基线高 18.4 个百分点。
| 方法(真机 ROC-AUC) | Franka 见 | Franka 未见 | WidowX 见 | WidowX 未见 |
|---|---|---|---|---|
| Max prob. | 53.7 | 48.6 | 50.8 | 54.3 |
| Mahalanobis dist. | 75.5 | 53.9 | 82.4 | 70.0 |
| Euclid. k-NN | 80.4 | 60.3 | 72.0 | 53.6 |
| LogpZO | 64.4 | 52.2 | 62.9 | 51.3 |
| SAFE-LSTM | 77.3 | 58.7 | 84.3 | 71.8 |
| SAFE-MLP | 86.8 | 64.2 | 89.1 | 88.4 |
补充的消融实验给出两条结论:其一,训练任务数越多,未见任务表现越好——在 OpenVLA + LIBERO 上,SAFE-MLP 用 1 个任务训练时未见任务 ROC-AUC 为 63.8,用 3 个任务为 67.0,5 个任务为 68.2,7 个任务升到 73.5;其二,起作用的必须是 VLA 自己的特征,把末层特征换成 DINOv2、CLIP 或两者拼接后,真机上的表现明显下降(例如 MLP 未见任务从 64.2 掉到 59.5 以下)。
结果对比总结
关键发现
- 失败检测的知识已经在策略内部:把 π0-FAST 的内部特征做无监督 t-SNE 就能看到跨任务共享的 failure zone,说明成败信息不需要额外的大模型来提供。
- token 不确定性几乎无效:在 OpenVLA 上 token 最大概率的未见任务 ROC-AUC 只有 53.8,接近随机;采样一致性类方法虽有提升,但需要多次采样,对实时控制不友好。
- 嵌入距离强但不最优:余弦距离 k-NN 在 π0-FAST 上达到 84.6,是 SAFE 之外最强的基线;但它只是几何量,缺少学到的判别结构,换到别的 VLA 就掉到 70 上下。
- 零样本跨任务才是关键指标:在四个仿真基准上,SAFE 系方法在未见任务上平均比最佳基线高 4–5 个百分点,并保持已见任务的最好或并列最好表现。
- 告警往往早于人类判断:与人工标注的"需要接管时刻"相比,SAFE-MLP 常常更早报警;在 π0-FAST + LIBERO 上,40% 的失败在 rollout 的第一个时刻就被预测出来。
- 开销可以忽略:SAFE-LSTM 只有 230 万参数、附加推理 0.73 ms,而 π0 本体是 33 亿参数、单次推理 149 ms——检测成本不到策略的 1%。
局限性
- 只覆盖操作任务:论文只讨论机械臂操作的多任务失败检测,跨 embodiment、sim2real 以及无动作视频的泛化能力尚不清楚。
- 只用了最后一层特征:如何融合多层特征仍是开放问题,而且不同模型的"最佳层"可能不同,需要逐模型搜索,通用性有待验证。
- 仍然需要成败数据:训练检测器必须先部署策略并采集成功与失败 rollout,冷启动阶段拿不到检测能力,这是"代价前置"。
- 真机上的分离度有限:π0-FAST + Franka 的特征在 t-SNE 上看不出明显分离,未见任务 ROC-AUC 上限只有 64.2,说明真机失败的语义比仿真更分散。
- 共形预测的假设并不严格成立:校准集与测试集来自不同任务分布,可交换性只是近似,论文也观察到部分基准的 TNR 偏离 1−α 这条理论线。
常见问题(FAQ)
SAFE 需要修改或微调 VLA 模型本身吗?
不需要。SAFE 只读取 VLA 最后一层在解码成 token logits 或速度场之前的内部特征,不改权重、不做微调,因此对任何白盒神经策略都适用;它新增的只是一个 230 万参数的小网络。
为什么不用 token 级不确定性做失败检测?
因为不确定性衡量的是策略对自己输出的信心,而失败与信心并不同步:策略完全可能非常自信地做出错误动作。论文实验中 token 不确定性方法在最差的设置上 ROC-AUC 只有 53.8,接近随机。
多任务失败检测和 OOD 检测有什么区别?
OOD 检测把"偏离成功分布"当作失败信号,但通用策略在未见任务上本身就偏离训练分布,却不一定失败。SAFE 直接从成功与失败 rollout 中学习失败的判别特征,属于有监督失败检测,而不是用 OOD 分数代理失败。
共形预测在这里起了什么作用?
它把阈值选择变成一个带统计保证的问题:校准只在成功轨迹上进行,给定显著性水平 α,新成功轨迹的分数以 1−α 的概率始终不越界,于是成功轨迹上的误报率被控制在 α 以内。
SAFE 的实时性如何?
可以忽略:SAFE-LSTM 附加推理时间 0.73 ms,相对 π0(33 亿参数、149 ms/次推理)不到 1%;相比之下,STAC 需要采样 256 个动作,论文实测 π0 生成 10 个动作样本就比 1 个慢 152%。
SAFE 在真机上表现如何?
π0-FAST + Franka 与 OpenVLA + WidowX 两套真机实验中,SAFE-MLP 在已见与未见任务上都拿到最好的 ROC-AUC,WidowX 未见任务比马氏距离高 18.4 个百分点;但真机整体上限不高(Franka 未见任务最高 64.2),说明真机失败语义更分散。
参考链接
- 论文 arXiv 摘要页:arXiv:2506.09937 — SAFE: Multitask Failure Detection for Vision-Language-Action Models
- 项目网站(含视频与代码):vla-safe.github.io
- STAC 基线(动作一致性运行时监控):Unpacking Failure Modes of Generative Policies
- OpenVLA:arxiv.org/abs/2406.09246;π0:arxiv.org/abs/2410.24164;π0-FAST:arxiv.org/abs/2501.09747
- 评测基准 LIBERO:arxiv.org/abs/2306.03310;SimplerEnv:arxiv.org/abs/2405.05941
给大家推荐一款自用写文献综述、无虚构文献的 AI:
🌟复旦大学 FudanNLP 团队自研 切问学术
官网:qiewenpaper.com
覆盖3.6 亿篇可溯源真实中英文文献,能自动整合文献观点生成规范综述
还能挖掘研究创新点、复现实验,配合视频教学,新手快速上手文献综述写作
🍀后记🍀
博客的关键词集中在编程、算法、机器人、人工智能、数学等等,持续高质量输出中。
🌸讨论QQ群:白拾的小屋 (750365700)
⭐B站账号:白拾的物理AI组会(活跃于知识区和动画区)
✨GitHub主页:YhbCode000(工程文件)