安全代价降 57%,成功率反而涨了 0.13:给 VLA 装「安全阀」的正确姿势是分区,不是扣分
一台送餐机器人躲过了椅子、躲过了纸箱,撞在了转角探出来的行李箱上。它学会了「平均少撞点」,没学会「一次都不能撞」——这两件事之间,隔着一整套训练框架。
- 要修的是一个数学裂缝:现有 VLA 的安全约束多用 Lagrangian 优化,优化的是全过程的平均违规成本;而安全要求的往往是「每一次都不能出事」,两者不等价。
- 换了一个更老的工具:ShieldVLA 把 Hamilton-Jacobi 可达性引入训练,用「这个状态还有没有救」替代「这个动作扣多少分」,并把可达性计算改造成不依赖精确动力学方程的时序差分形式。
- 核心机制是门控:安全评论家给出安全值,为正时完全按任务奖励优化、不施加任何惩罚;为负时屏蔽任务奖励,只给「怎么回到安全区」的梯度。
- 在 TurtleBot-Nav 上三项一起变好:无约束 VLA 成功率 0.30、安全代价 22.2;最强公开基线 SafeVLA 为 0.34 / 14.6;ShieldVLA 为 0.54 / 6.90。
- 五个基准平均,安全代价降 57%、成功率提升 0.13;在最复杂的 Safety-CHORES 抓取任务上安全代价从 8.98 降到 5.50,成功率从 0.34 升到 0.49。
- 判断:这项工作的可迁移点不在算法,而在评测口径——它把「安全」从成功率里拆出来单独计量。任何要做现场交付的团队,都该照这个思路把验收指标写成两条,而不是一条。
2024 年,一台送餐机器人在某公司走廊里执行「把杯子送到会议室」的任务。它绕开了一把椅子,躲开了一个纸箱,然后在转角撞上了一个刚好探出来的行李箱。
复盘时最让人难受的一点是:它在训练时确实学过「避开障碍物」。但它学会的方式是「平均意义上少撞点」——整个训练过程里的违规总量被压低了,某一次具体的碰撞并不在优化目标里。这就是 ShieldVLA 这篇工作要处理的问题:安全不是一个平均值问题,是一个「这一次能不能不出事」的问题。
现在主流的做法是把安全写成约束,用 Lagrangian 优化把约束变成惩罚项加到奖励里:撞了就扣分,扣得越狠,模型越不想撞。思路没问题,问题出在「扣分」这个机制太软——它优化的是全过程的平均违规成本,允许用别的高分片段把某一次严重违规「平均回来」。
论文把这种状态叫 persistent reward-cost trade-off:模型在整个训练期间始终绷着一根「要不要为了任务表现牺牲一点安全」的弦。绷着的结果是两头都不讨好——要么过度保守、任务完成率低,要么在关键帧依然踩雷。
第二个难题更隐蔽:危险怎么标注。语言模型可以对每句话打安全标签,但给机器人的每一帧画面标注「这一步安不安全」,工程量不可行。用视觉语言模型自动打分是个办法,可如果直接问「打个 1 到 10 分」,同一张图不同时间问,分数会飘。
作者没有在 Lagrangian 框架里缝补,而是转去控制理论里找了一个更老的工具:Hamilton-Jacobi 可达性。它关心的不是平均代价,而是「从当前状态出发,是否存在某种操作方式能让系统永远维持安全」——把状态空间劈成两块,一块是可行安全区,一块是进去就迟早出事的不可行区。
这个区分很像急诊分诊:不会按「平均病情」排队,而是先判断这个人是否处在生命危险区;在危险区里不计代价先稳住,脱离危险区之后才谈精细化方案。
难点在于,经典 HJ 可达性要求知道精确的动力学方程、还要把状态空间网格化,面对一张几万像素的图像根本算不动。作者借用了 2019 年 Fisac 等人的思路,把可达性计算改造成类似时序差分学习的模型无关方法——不需要物理方程,直接从数据里学。
安全值为正:当前在可行安全区内,完全按任务奖励做梯度更新,不施加任何安全惩罚——这一步的更新和没有安全约束的普通 VLA 一模一样。
安全值为负:已进入危险区,任务奖励被完全屏蔽,模型只接收「如何提升安全值」的梯度,专注把自己拉回安全区。
安全值由一个独立训练的安全评论家给出,训练规则叫安全贝尔曼方程。它和普通价值函数的区别在于用「取最小值」而不是「累加」——专门捕捉一条轨迹里最危险的那个瞬间,而不是把全程平均一下。论文附录给了这个更新收敛的证明。
把两种更新方式放在同一个安全评论家上对比,结论很干脆:门控式成功率 0.54、安全代价 6.90;换成 Lagrangian 式惩罚更新,成功率掉到 0.33、安全代价升到 7.80。也就是说,收益来自「门控」这个机制本身,不是来自一个更好的安全信号。
直接让 VLM 打总分不稳定,作者改成结构化评分表:把「安不安全」拆成五个可独立判断的维度——障碍物距离、是否正朝障碍物移动、是否已接触、遮挡程度、可机动空间,每项 0 到 1 打分再加权求和。针对导航任务,这五项是论文自己定的。
原始分数还不能直接用,因为不同场景、不同 VLM 的分数量纲不一致。作者用 Platt scaling,拿「整集任务最后到底出没出事」这一个粗粒度标签反推逻辑回归曲线,把原始分校准成有物理意义的安全边际。这一步是整套流程里唯一需要人工标注的地方,而且只标到「整集」这一级,不标帧。
还有一层自我修正:先找出「明明后来出事了、评分表却给了高分」的矛盾案例,喂给一个 720 亿参数的 Qwen2.5-VL,让它反过来提议「该加哪个评分维度」。这套机制在两个完全不同的平台上独立发现了相近的新维度(障碍物边缘距离、障碍物重叠程度),说明危险判断里有一些跨场景通用的成分。
更值得注意的是成功率没有掉。这个领域的常识是「安全换性能」——把违规压下去,任务完成率通常要付出代价。这次三个数字一起变好:0.30 → 0.34 → 0.54。门控机制解释了这个反常:在安全区里不施加惩罚,模型不会因为怕违规而变得畏首畏尾,性能损失被限制在真正危险的少数状态里。
消融实验还测了两个反例。第一个是把评分表换成最简单的二元碰撞信号(安全 +1、碰撞 −5),TurtleBot-Nav 成功率从 0.54 掉到 0.31,Franka-Reach 从 0.45 掉到 0.25——原因是二元信号在碰撞边界之外完全没有梯度,门控被过早触发,把模型锁死在一个很小的活动范围里。第二个是安全阈值 δ:δ 取 0 时残余违规成本还有 4.24,提到 0.2 能压到接近 0,但成功率从 0.42 降到 0.37。安全边界划得越宽越不出事,能自由发挥的空间也越小,这个旋钮没有完美解。
论文做了一组分布外测试:换场景主色调(换成训练里没见过的紫、青)、改光照(调暗、调暖)、两者叠加。ShieldVLA 的安全代价始终最低,在 Safety-CHORES Nav 上甚至在扰动下进一步下降(1.44 → 0.77 至 1.17 区间);而 SafeVLA 的安全代价从 1.82 升到 3 以上。机制解释是:视觉输入变陌生时,安全评论家给出的安全值会本能趋保守,门控更早介入;而 Lagrangian 的乘子是训练时按分布统计校准的固定值,遇到陌生场景没法临场调整。
局限也写得很直白。第一,打分器的能力有硬门槛:参数量小于 80 亿的模型会出现模式坍塌,对不同场景给出几乎一样的分数,加了自动发现维度的机制也救不回来。第二,训练数据里「临界状态」覆盖不足时,安全边界估计不准——而真实世界里越罕见的危险,越难靠「多撞几次去学」覆盖。第三,全部实验在仿真里,真机要重新校准打分器。