资讯详情

资讯详情

VLA模型安全对齐新思路:用约束学习把安全写进训练目标

最近读了一篇 VLA 模型安全对齐方向的新工作标题是《Towards Safety Alignment of Vision-Language-Action Model via Constrained Learning》通过约束学习实现视觉-语言-动作模型的安全对齐。坦白说第一次看到题目里的 Constrained Learning 时我下意识以为又是一篇拿奖惩函数做安全优化的文章读进去才发现完全不是一回事。现在大小模型们都在卷动作生成的精度与泛化但一个几乎被忽略的问题是当 VLA 模型真正控制机械臂或移动底盘时一次错误的动作输出不只是生成一段错误文本那么简单而是直接造成物理碰撞、设备损坏甚至伤人。这篇论文的核心贡献就是试图用约束学习把“安全”变成一个训练目标中的硬约束而不是在模型部署以后再加一道安全过滤器。如果你在做具身智能、机器人强化学习或者单纯关心大模型对齐从文本走向物理世界这篇文章都值得认真读一遍。1. 为什么 VLA 模型的安全对齐是个绕不开的问题1.1 VLA 模型是什么它和普通多模态模型差在哪VLA 模型全称 Vision-Language-Action Model也就是“视觉-语言-动作模型”。输入是摄像头等传感器提供的图像加上一段自然语言指令输出是机器人可以直接执行的动作信号。这个动作信号可以是关节角度增量、末端位姿序列也可以是底盘速度指令。相比之下大家更熟悉的 VLMVision-Language Model输出的是文本里的下一个 token而 VLA 输出的是动作空间里的一个点这个点通常落在连续高维空间里。结构上VLA 一般由视觉编码器、语言模型主体和动作输出头三部分组成。拿一个常见任务举例你对机器人说“把左边那个红色马克杯拿到托盘上”VLA 模型会结合当前图像直接输出机械臂末端的一条轨迹。传统机器人编程需要手写轨迹规划VLA 却是从大量遥操作和视频数据中自动学到了从感知到控制的映射。正因为它省掉了人工设计状态机和奖励函数的过程才被看作通用机器人操作的重要技术路线。但这种“端到端”的便利也带来了新的问题。传统机器人至少还有明确的运动学约束和底层安全控制VLA 模型直接把图像和语言映射到动作中间没有任何显式的安全推理过程。模型只见过“如何完成任务”的数据没见过“哪些动作绝对不能做”的数据因此它天然缺乏安全边界感。1.2 安全风险不是“模型说错话”而是“机器人做错事”大语言模型的安全对齐失败最坏的结果是生成一段有害回答平台可以事后删除。VLA 模型的安全失败发生在物理世界动作一旦执行就无法撤回。碰撞可能损坏机械臂关节错误的力度可能压碎易碎物品在人与机器人共融的场景里更可能直接导致人身伤害。另一个容易被忽略的问题是动作维度。文本是离散的即使某个 token 错误往往只影响语义连贯性VLA 的动作序列是连续轨迹错误可能不是在某一个点爆发而是在一段时间里逐渐累积最终让机械臂偏离安全走廊。例如模型可能先正确理解了任务但在执行到一半时因为视觉特征扰动产生了一个微小偏移这个偏移被后续动作不断放大最后撞上障碍物。作者在论文里应该也强调了系统层面和模型层面两种安全风险的区别。系统层面的安全靠硬件限位、急停按钮、围栏来保证模型层面的安全则需要模型自己“知道”哪些动作不该做。但现有主流 VLA 训练流程里几乎没有显式的安全对齐环节模型从第一天起就在最大化任务成功率安全隐患只能靠部署后的规则来兜底。1.3 现有安全对齐思路为什么不够这部分是我读下来最有共鸣的。作者至少讨论了三种常见的安全增强套路并且一一指出了它们的问题。第一种是用人类反馈类似 RLHF调整策略。问题在于文本场景里人类只需要比较两个回答哪个更好VLA 场景里我们很难对一整段连续动作给出“这个轨迹比那个轨迹更安全”的标注。机器人一天执行十万次动作不可能每次都让人来打分更别提动作空间如此连续人类评估者很难精确表达“哪个时刻的动作存在隐患”。第二种是安全过滤器。典型代表包括基于规则的安全检查、控制屏障函数CBF或者一个单独训练的安全分类器。过滤器会在动作执行前拦截违规动作确实有效但非常保守为了安全会把大量合理动作也拦掉导致任务成功率骤降。而且过滤器对未知输入的泛化能力有限微小的视觉扰动就可能让分类器给出错误判断安全性和鲁棒性都存疑。第三种是奖励塑形。在训练时给危险行为加一个很大的负奖励希望模型自己学会避开。问题在于这个负奖励的权重是个玄学给大了模型会极度保守原地不动给小了模型会用高风险高收益的动作换取总回报最大化。本质上奖励塑形是“危险动作做一次扣一次分”如果高风险策略能带来足够多的额外回报模型仍然会选择冒险。于是论文提出了一个更本质的思路安全问题不是奖励函数里的一个加权项而是优化问题里的一个必须满足的约束。2. 论文核心思路把安全约束写进学习目标而不是事后打补丁2.1 一个关键转变从“奖励优化”到“约束满足”先看传统强化学习的优化目标。策略网络想要最大化累计期望奖励max J(π) E[Σ γ^t r_t]。在这个目标下安全只是一个被折衷考虑的要素。比如任务是把杯子从 A 点拿到 B 点如果快速移动能拿到更高效率奖励但碰撞概率也会上升RL 优化器会自动用“可接受的风险”换“更高的收益”。对一台在工厂里干活的机械臂来说这种折衷非常危险。约束学习把问题改写成一个带约束的优化max J(π) subject to C(π) ≤ d。这里 C(π) 是策略 π 下的期望安全成本d 是安全阈值。例如把安全成本定义为“单次执行任务中发生碰撞的概率”约束就是“碰撞概率不能超过 5%”。这样模型仍然最大化任务表现但不允许越过安全红线。这个转变最重要的意义是把“安全”从奖励函数中一个个孤立的惩罚项变成了一个独立且强制的限制条件。它不再和任务收益做交换而是先保证不越线再谈任务优化。2.2 安全约束如何表示怎么定义 C(π) 是全文非常关键的问题。理想情况下我们希望用一个连续可导的解析函数把机器人状态映射成一个“危险程度”的值。工程实现通常有两条路线一种是从环境里直接得到二值标签例如物理仿真中是否发生碰撞、是否超过关节速度限制。二值标签很准确但很稀疏绝大多数状态下标签是 0训练效率很低。另一种是让一个单独的安全成本网络去拟合连续的安全边际比如到障碍物的最小距离、关节力矩离极限还有多少余量。连续成本信号能提供更好的梯度让策略知道“离危险边界还有多远”。一般论文里会设计一张安全成本表把不同约束类型、成本定义和阈值放进去方便读者对照。约束类型成本定义阈值 d 示例碰撞机械臂与障碍物发生碰撞每次执行不超过 1 次关节限位关节角度或速度超限每千步超限少于 5 次力/力矩末端施加的力超过上限单次任务累计超限 0 次安全距离与操作者的最小距离始终保持大于 0.5m实际训练中为了便于实现论文大概率会把多种成本线性组合或者给每个约束分配一个独立的拉格朗日乘子。多约束的好处是不同安全指标之间不会互相掩盖。比如碰撞成本和关节超限成本量纲不同如果放在一起用一个 λ模型很可能忽略掉数值上不敏感的那一类风险。2.3 为什么叫“Towards”尚在初步路线题目里的 “Towards” 很有信息量。这说明论文作者非常清楚自己的工作不是终结答案而是指出一条可行的路线。上一个时代大家把安全当成后处理这篇文章则是把“安全对齐”正式问题化给出一个统一框架并在模拟环境里做验证。读到这里我对论文的定位理解是它更像一面旗帜而不是一把锤子。它最重要的贡献可能是让更多人意识到VLA 的安全问题不能靠单一过滤器解决而应该在训练目标里立下硬约束。至于最终能否在真实机器人上大规模落地还需要后续工作不断迭代。因此“Towards”这个前缀也提醒读者当前实验更多是验证可行性距离工业级部署还差得很远。3. 约束学习的训练流程与技术实现3.1 拉格朗日对偶视角把约束问题转化为无约束问题带约束的优化问题很难直接做梯度下降。论文采用拉格朗日对偶方法把原始问题变换成对偶问题。构造拉格朗日函数L(π, λ) -J(π) λ(C(π) - d)优化过程是一个极小极大博弈内层对策略参数更新时减小 L外层对乘子 λ 更新时增大 L。λ 越大违反约束的代价越高模型就越不敢越线。这就像一张安全预算表λ 是超额成本的单价如果模型老是超预算单价就会上涨直到它学会在预算内完成任务。训练过程可以简化成以下伪代码# 伪代码约束学习的交替优化 lambda_lr 1e-3 lambda_val 0.0 for epoch in range(num_epochs): # 1. 采样一批环境数据 states, actions, costs, rewards collect_batch(env, policy) # 2. 更新策略降低任务损失 lambda * 安全约束损失 safety_violation mean(costs) - safety_threshold policy_loss task_loss(rewards) lambda_val * safety_violation update_policy(policy_loss) # 3. 更新拉格朗日乘子提高对越界行为的惩罚 lambda_val lambda_lr * safety_violation lambda_val clip(lambda_val, 0.0, lambda_max)很多读者第一次看到这个流程都会有一个疑问lambda 更新这一步会不会不稳定确实会。C(π) 的估计来自一批样本方差可能很大导致 lambda 在每一轮剧烈抖动。我在读的时候特别留意作者有没有提稳定化技巧后面会展开。3.2 网络结构如何处理“动作生成”这个方法不依赖于特定的 VLA 结构。最自然的做法是保留预训练的视觉语言主体不变在动作头附近插入轻量级的适配层同时额外训练一个小型安全成本网络。安全成本网络输入当前观测和动作输出预测的安全成本。这个预测不参与控制只参与约束目标计算。一个关键设计是安全成本网络与策略网络联合训练但安全网络使用类似目标网络的慢更新机制。为什么因为如果安全网络和策略一起快速变化成本函数本身也在漂移策略网络的优化就成了打移动靶非常容易震荡。慢更新相当于给成本估计一个稳定的参考系。参数冻结策略也值得学习。VLA 模型的视觉编码器和语言模型骨干包含大量通用语义知识如果从头到尾端到端全量微调不仅算力昂贵还可能在数据量不足时灾难性遗忘预训练能力。所以实践上通常冻结大部分骨干只微调动作头附近的低秩适配器。约束学习只改变动作输出的边界感而不破坏模型已有的语义理解。3.3 损失函数组成与超参数整体损失函数可以拆成三块任务损失、安全约束损失、策略正则损失。任务损失是原始 VLA 训练目标可能是动作头的行为克隆损失也就是让模型模仿专家轨迹安全约束损失是 λ(C(π) - d)用来对越界行为施加梯度策略正则损失一般用 KL 散度让微调后的策略不能偏离原策略太远。KL 正则项的必要性很直观我们不能为了安全把模型变成一个什么都不拒绝执行的“躺平模型”否则任务成功率就崩了。超参数里最重要的是安全阈值 d 和乘子步长 alpha。d 来源于我们对任务风险的实际评估。比如人类操作员平均每 1000 次操作中碰撞 2 次就可以把 d 设为 0.002要求模型比人类更稳。alpha 最好从 1e-4 到 1e-3 之间试过大会导致 lambda 震荡过小则约束很难被激活。3.4 训练稳定性问题约束学习的训练稳定性是所有读过类似文章的人都会担心的问题。我在自己的强化学习项目里也踩过同样的坑这里整理几个常见的技巧。第一对 batch 内的安全成本做滑动平均。用 EMA 平滑后的成本估计作为 lambda 更新的输入而不是直接用原始 batch 平均值能有效降低样本间的噪声。第二对 lambda 做裁剪。设置 lambda_max防止某个瞬间的高成本把乘子推到极端值让训练崩溃。第三为每个约束分别设置独立的乘子和学习率。因为不同安全指标的量纲不一样碰撞成本和关节超限成本可能差几个数量级统一用一个 lambda 会导致某些约束被忽略。成本网络训练本身也需要数据增强。在仿真环境里可以增加随机扰动、随机障碍物位置让成本网络见过更多危险状态。如果只在正常轨迹上训练成本网络它会对“危险状态长什么样”没有概念预测出来的成本几乎全是零约束学习也就名存实亡了。4. 实验评价既要任务做得好又要安全有保障4.1 评测场景设计论文实验一定不会只看一个指标。既然主题是安全对齐评测就需要同时覆盖“任务完成能力”和“安全满足程度”两个维度。我猜测作者会选两类环境一类是带有明确障碍物的桌面操作仿真比如让机械臂把物体放到目标点途中需要避开障碍另一类是移动平台导航比如让机器人在有行人模型的环境中从起点走到终点。这两类环境都能很自然地定义安全成本。比较关键的指标至少包含任务成功率、平均安全违规次数、执行效率。任务成功率衡量模型是否还能干活平均安全违规次数衡量模型是否守住了红线执行效率用来确认安全对齐不会把模型拖得畏手畏脚。真正有说服力的结果不是某一个分数异常高而是多个指标之间形成“帕累托最优”——在相同成功率水平下安全违规最少或者在相同安全水平下任务成功率最高。4.2 与基线方法对比与固定惩罚的 RL 相比约束学习的优势体现在“曲线形态”上。固定惩罚相当于人为设定了一个安全权重但权重本身不会随训练动态调整结果就是模型要么因为惩罚过重而原地不动要么因为惩罚不足而继续冒险。约束学习的 lambda 起到了自动调节作用当成本低于阈值时lambda 会逐渐减小模型可以把更多精力放在优化任务上当成本高于阈值时lambda 上升迫使模型降低风险。这种自适应特性是固定惩罚做不到的。与安全过滤器相比约束学习不会丢弃太多合法动作。过滤器是在模型输出之后再加一道判断关卡它不理解任务上下文很容易把“通过狭小缝隙”这种高风险但高价值的动作误杀。约束学习则是让模型自己学会在遵守安全红线的前提下保留完成任务的多样性策略。用比较直白的话说过滤器是“一刀切”约束学习是“带着镣铐跳舞”。4.3 消融实验约束阈值、成本估计的作用消融实验是检验论文贡献点的重要手段。预计会有几个方向的消融。首先是安全阈值 d 的影响。把 d 设成接近 0 时模型会变得极度保守任务成功率垂直下降把 d 设置得太大时安全违规次数又快速上升。论文应该会展示一条任务成功率随 d 变化的“悬崖曲线”帮助读者理解阈值选择的敏感性。其次是成本网络是否必要的消融。如果用仿真碰撞检测作为稀疏成本信号训练方差会很大而用连续成本预测网络模型能在动作执行之前就感知到“现在靠近了障碍物”从而提前调整轨迹。消融结果大概率是在没有成本网络的情况下约束学习也能工作但收敛更慢、最终性能更差。这个结论对实际应用很重要提醒我们不要忽视成本函数的设计。5. 阅读之后的一些思考与实操建议5.1 论文最值得借鉴的是“问题转化”的方法论这篇论文最打动我的不是某个具体网络结构而是它把“安全对齐”从一个工程问题重新定义成了一个优化问题。在 VLA 出现之前机器人安全通常靠机械设计和底层控制去保证在 VLA 出现之后神经网络作为决策者安全问题第一次和模型的训练目标直接挂钩。作者做的最重要一步是提出安全约束必须作为一等公民进入训练目标而不是做个附属品。这个思路可以迁移到很多场景比如自动驾驶轨迹规划、无人机避障甚至任何由语言条件控制的物理系统。核心方法论是先想清楚“不可逾越的边界”是什么把它变成可量化的约束再让优化算法在约束内寻找最优解。至于约束怎么定义其实是另一个值得研究的问题。5.2 对从业者的实际建议如何在自己的 VLA 流程里引入约束如果你也想在自己的 VLA 项目里引入类似思路我建议按下面的顺序落地。第一步定义可量化的安全成本。不要一开始就追求覆盖所有抽象风险先从最容易测量的指标开始比如碰撞距离、关节力矩、末端速度上限。先做好一个低成本可测量的约束再逐步增加新的约束项。第二步准备带安全标注的数据。在仿真环境里收集轨迹的同时记录每一步的成本标签。如果使用真机可以通过事后回放和运动学计算得到近似成本。第三步微调时使用拉格朗日对偶。先在低成本任务上调整 lambda 的学习率和初始值确认训练不震荡再扩展到完整任务。第四步做对抗性测试。不要只跑正常场景要专门构造测试集比如突然出现的人形障碍物、错误指令导致目标区域有易碎品等。约束学习模型在见过类似分布的数据后应该能提前减速或改变路径。如果做不到说明成本函数还不够好需要重新设计。5.3 论文的局限和未来方向作为一个“Towards”性质的工作论文的局限也很明显。第一个问题是安全成本函数的设计依赖人工先验。高级语义风险比如“不要把杯子放到刀架旁边”很难用几何距离函数表达出来未来可能需要用大语言模型参与成本函数定义或者直接在语言层面描述约束。第二个问题是仿真到真实的差距。仿真里定义成本很容易但真机上获得精确的距离信息和力反馈很难。第三个问题是约束学习和多任务泛化的关系。在单一任务上学会的安全边界换一个任务场景是否还成立目前还没有明确答案。5.4 最后分享一点个人想法读完整篇论文我最大的收获是意识到“安全对齐”这件事在 VLA 领域才刚刚开始远没有像文本对齐那样形成成熟范式。本文提出的约束学习框架至少在方法论上帮我重新梳理了“安全”和“任务”之间的关系不再把它们看成对立的两个目标而是一个受预算约束的优化问题。如果让我给一个操作层面的建议那就是先别急着在真机上跑完整框架。先在仿真里把成本函数和 lambda 更新这两个模块调试稳定再逐渐迁移到实物。我在做机器人行为策略时吃过不少亏很多看起来漂亮的安全算法都栽在训练不稳定上约束学习也不例外。把稳定性问题先解决这套方法才真正能从论文变成生产力。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →