来源:市场资讯

(来源:科技行者)

打开网易新闻 查看精彩图片

你有没有想过,让三个机械臂一起搭积木,比让一个机械臂积木难在哪?

不是难在动作本身,抓取、移动、放置,这些单臂机器人早就练得炉火纯青。真正的难点在于配合。谁先抓,谁后放,谁负责扶着别乱动,这些分工信息,现在的机器人系统几乎全部靠"猜"。

更麻烦的是,这个"猜"出来的分工一旦学会了,就很难改。

想象一下这样一个场景:你训练一个三臂机器人系统,让它学会"按红、绿、蓝的顺序叠方块"。训练数据里,一号臂永远负责红色,二号臂永远负责绿色,三号臂永远负责蓝色。系统学得又快又好,成功率能到九成以上。

但如果你现在告诉它:"换个顺序,蓝、绿、红",会发生什么?

论文里给出的答案是:几乎全军覆没。不管是Diffusion Policy、Pi0-FAST还是当前最强的Pi0模型,在这种"换了个顺序"的任务上,成功率统统是0%。

这不是危言耸听的极端案例,这是2026年这篇发表在arXiv上的论文《MA-VLA》里真实测出来的数字。三个业界公认还不错的模型,面对一个看似简单的顺序调换,全部交了白卷。

问题出在哪:语言只有一句话,机械臂却有好几只

要理解这个"全军覆没"是怎么发生的,得先搞清楚现在的机器人大脑是怎么工作的。

现在主流的做法叫做视觉-语言-动作模型,英文缩写VLA。

**VLA(Vision-Language-Action Model)**:一种把摄像头看到的画面、人说的指令、机器人要做的动作,三者打通训练在一起的模型。你给它一句话"把红方块放到蓝方块上",配上摄像头画面,它直接输出机械臂该往哪转、爪子该不该合上。

这套框架在单臂机器人上效果很好。RT2、Octo、OpenVLA、Pi0,这些近几年被反复提及的名字,本质上都在做同一件事:把一整句指令塞进模型,让模型端到端地想明白该怎么动。

问题是,当机械臂从一只变成三只、四只的时候,这句"整句指令"该怎么分给每只手臂?

论文里说得很直白:现有的VLA把语言当成一个"全局静态命令",扔给整个系统,具体谁干什么活,全靠模型自己在训练数据里隐式地摸索规律。

这就好比你是个项目经理,给团队群发了一条消息"把这个项目做完",然后指望三个下属自己心领神会该谁干哪部分。第一次这么干,可能因为大家都习惯了固定分工,老王管前端,老李管后端,小张管测试,所以歪打正着地成了。但只要项目结构一变,比如这次没有后端只有两个前端,整个团队立刻陷入混乱:到底谁该顶上?没人知道自己现在的角色是什么,因为角色从来没有被明确说出来过,只是被"猜"出来的默契。

**如果不显式分工会怎样**:模型会把"谁干什么"和"这只机械臂的编号"死死绑定在一起。红方块永远对应一号臂,这个规律训练时是真的,但换个顺序之后这个规律就是假的,模型却已经把它当成了铁律。

MA-VLA的做法:先把大目标拆成一句句"人话指令",再发给每只手臂

面对这个问题,研究团队提出的解法叫做MA-VLA,全称是Multi-Arm Vision-Language-Action Model,多臂视觉语言动作模型。

它的核心思路其实很朴素:与其让模型自己去猜每只手臂该干嘛,不如先把大任务拆解成一条条具体的"原子指令",再明明白白地分配给每只手臂。

**原子动作(Atomic Action)**:指的是像"抓取物体""举起来""对齐""放下"这样的最小动作单元,是可以被复用、被组合的基本积木块。

**原子提示(Atomic Prompt)**:给某只机械臂分配的具体任务说明,比如"一号臂:抓取红方块",是原子动作在语言层面的表达形式。

具体来说,MA-VLA由两个部分组成。

第一部分是一个"规划师",用的是视觉语言模型,实际实现里调用的是GPT-4.1。它接收一句高层指令,比如"按红绿蓝顺序叠方块",再看看当前的场景画面,然后把这句话拆解成一系列按阶段排列的原子提示,明确写出"第几阶段,几号臂,干什么"。

第二部分是一个"执行者",这是真正驱动机械臂动起来的模型。它接收规划师给出的每只手臂的原子提示、每只手臂自己看到的画面、每只手臂当前的姿态信息,统一处理之后,输出所有手臂在这一刻该做的具体动作。

这里有个细节值得说一下:论文里把所有手臂的提示词拼成一句话,格式类似"Arm0: 抓取红方块, Arm1: 等待, Arm2: 放置",一起喂给执行模型,而不是给每只手臂单独训练一个小模型。这个设计后面会讲到,其实是为了避免另一个更隐蔽的坑。

再回到那个项目经理的比喻。如果MA-VLA是那个项目经理,它现在不再只发一句"把项目做完",而是明确写出"老王:今天先写登录页;老李:等登录页写好后接手写接口;小张:等接口写完开始测试"。分工被摊开写在明面上,谁的活是谁的,一目了然。

但这还只解决了一半的问题。分工写清楚了,可如果每次任务分配的"套路"本身也是固定的呢?比如训练时永远是"老王管红方块,老李管绿方块",那即便你把这句话明明白白写出来,模型依然可能学到一个隐藏的坏习惯:看到"红方块"这三个字,条件反射地想到"一号臂"。这时候真正需要解决的,是让模型别再把"干什么"和"是谁"焊死在一起。

Arm Shuffle:训练时故意把角色打乱,逼模型学会"听话不认脸"

这是MA-VLA整篇论文里最关键的一个设计,叫做Arm Shuffle,直译过来就是"手臂洗牌"。

**Arm Shuffle**:在训练过程中,以一定概率随机打乱每只机械臂的状态、摄像头画面、任务提示和对应动作之间的对应关系,让模型没法把某个动作和某个固定编号的手臂绑定在一起。

具体的做法是这样的:假设有三只手臂,编号1、2、3。正常情况下,训练数据里"一号臂的状态"总是配着"一号臂的画面"和"一号臂该做的动作"。Arm Shuffle做的事情,就是在训练时随机重新洗牌这个对应关系,比如把"一号臂的画面"配上"三号臂的动作标签",逼着模型不能再依赖"这是几号位置"这种表面线索,而必须真正去读懂那句原子提示里写的是什么内容,再据此判断该做什么。

这个设计乍一听有点反直觉:故意在训练时制造"错误"的对应关系,这不是在教模型学错误的东西吗?

其实不是。这里洗牌的只是"哪个编号对应哪组输入输出",动作本身的正确性并没有被破坏,如果原子提示写的是"抓取红方块",那对应的动作依然是抓取红方块该有的正确动作,只是这次它挂在了"三号臂"的名下而不是"一号臂"。模型被迫学会的是:无论你是几号臂,只要你的提示词说的是"抓取红方块",你就该做抓取红方块该做的事。角色编号本身,不再携带任何隐藏信息。

这个思路让我想起小时候玩过的一个游戏:老师会在班里随机换座位,本来坐第一排的同学挪到最后一排,本来靠窗的挪到靠门。如果班规是写在黑板上明明白白的:"值日生负责擦黑板",那不管你现在坐在哪个座位,只要你是值日生,你就该去擦黑板。换座位换的是位置,换不了这条规则本身。反过来,如果班规从来没写清楚,只是"惯例上"第一排的同学负责擦黑板,那一旦换了座位,规矩立刻乱套,没人知道现在该谁上了。

Arm Shuffle做的事情,正是把机械臂的"座位"和它该执行的"任务规则"彻底解耦开。

**如果不做Arm Shuffle会怎样**:论文的消融实验给出了具体数字。只加入原子动作分解、不加Arm Shuffle时,样本内(训练时见过的任务分布)的成功率能到58%,但样本外(没见过的组合顺序)的成功率是0%,一次都没成功过。加上Arm Shuffle之后,样本外成功率从0跳到了7.3%。这看起来涨幅不大,但从"完全做不到"到"能做到一小部分",这是质的跨越,不是量的微调。

论文里还专门做了一个梯度实验,把Arm Shuffle出现的概率从0%一路调到100%,观察成功率的变化。数据显示,样本外成功率从0一路爬升,在概率80%时达到峰值15.3%,样本内成功率则从58%小幅下滑到52%到56%之间,波动不大。这说明适度增加"洗牌"的概率,能实实在在换来更强的跨场景适应能力,而代价只是训练时熟悉场景下轻微的表现下滑,这笔交易,看起来是划算的。

光打乱身份还不够,还得让模型少依赖"看惯了的画面"

Arm Shuffle解决的是"角色和任务绑死"的问题,但还有一个更隐蔽的坑:视觉输入本身的依赖。

论文观察到,即便打乱了角色分配,模型有时候还是会过度依赖某些特定摄像头视角提供的画面信息,比如某个手臂如果长期都是从固定角度看物体,一旦场景发生变化(光照不同、物体摆放位置变了、遮挡情况变了),模型的判断力就会打折扣。

为此,研究团队引入了第二个训练技巧,叫做View Dropout。

**View Dropout(视角随机丢弃)**:训练时以一定概率随机把某些摄像头画面直接遮成全黑或全零,逼迫模型不能只依赖某一个固定视角的信息,而要学会综合利用多个视角、或者在某个视角缺失时依然能做出合理判断。

这个操作听起来有点像"蒙眼训练"。想象一个新手司机,教练在他学车的时候,偶尔故意用手挡住后视镜,不是永远挡住,而是随机、偶尔地挡。这样训练出来的司机,不会因为某天后视镜脏了看不清就完全没法判断路况,因为他早就习惯了在信息不全的情况下也要保持基本的判断力。如果教练从来不这么做,学员会高度依赖后视镜的清晰画面,一旦某天视野受阻,反应就会明显变慢甚至出错。

把这两个技巧叠加起来看,消融实验的结果很清楚:只用原子动作分解,样本外0%;加上Arm Shuffle,样本外7.3%;再加上View Dropout,样本外提升到15.3%,样本内成功率基本维持在53%左右,没有明显下降。三重叠加,样本外的表现是从完全失败到能完成七分之一左右的任务,这个数字听起来不算惊艳,但要知道,对照组里所有基线模型在同样任务上的表现都是精确的0%。

会不会干脆给每只手臂单独训练一个模型?答案是:更差

读到这里,你可能会冒出一个念头:既然联合训练这么麻烦,那干脆给每只机械臂单独训练一个独立的小模型,各自为战,会不会反而更简单、更稳?

研究团队确实做了这个对比实验,结果挺有意思。

他们把多臂的训练数据拆开,按每只手臂单独切分成三份独立的数据流,让每个模型只看自己那只手臂的视角、状态和历史动作,分别训练三个独立的Pi0模型,推理时三个模型并行跑,各管各的。

结果是:这套"各自为战"的方案在样本内(熟悉的任务分布)表现出色,成功率反而冲到了61%,比联合训练的MA-VLA(53%)还要高。但在样本外的组合泛化任务上,独立训练的三个模型成功率是0%,和最初那批联合训练但没做任何优化的基线模型一样惨。

这个结果其实说得通。三个各自为战的模型,每一个都只优化自己那部分的动作预测,谁都不知道另外两只手臂在干嘛,更别提协调配合了。就像三个各自埋头做自己那部分工作的人,每个人都做得很熟练,但从来没有互相沟通过整体流程,一旦流程顺序被打乱,没人知道该等谁、该让谁先动,配合直接崩盘。

这也解释了为什么MA-VLA坚持用一个统一模型来处理所有手臂的输入输出,而不是分开训练。协作能力,本质上就是要让信息在手臂之间流动起来,割裂开训练,协作能力也就跟着被割裂掉了。

而且独立训练还带来一个实际的部署问题:模型数量随手臂数量线性增长,三只手臂就要跑三个模型,四只手臂就要跑四个,这在实际部署里意味着更高的算力开销和更复杂的同步逻辑。论文的表格里专门列出了"VLA模型数量"这一栏,独立方案是3,MA-VLA是1,这不只是数字上的差异,也是工程复杂度上的差异。

数据说话:三个平台、七八个任务,差距有多大

光讲原理不够有说服力,直接看论文里的实测数据。

研究团队在三个环境里做了测试:仿真平台RoboFactory(涵盖二到四臂的协作任务)、仿真平台RoboTwin 2.0的困难难度版本(强调视觉干扰,比如遮挡物、背景变化、光照变化)、以及一个真实的双臂机械臂平台SO101。

在RoboFactory的双臂任务上,四种方法的平均成功率分别是:Diffusion Policy 27.5%,Pi0-FAST 57.5%,Pi0 80.3%,**MA-VLA 83.5%**。

到了三臂和四臂任务,差距被进一步拉开。三臂任务的平均成功率:Diffusion Policy 15.3%,Pi0-FAST 11.8%,Pi0 76.5%,**MA-VLA 83.3%**。手臂数量越多,MA-VLA相对于普通Pi0的优势越明显,论文里提到的解释是,手臂越多,"谁该干什么"这件事的模糊性就越大,而原子提示恰好能把这种模糊性拆解清楚。

在视觉干扰更强的RoboTwin2.0困难场景下,七个任务的平均成功率:ACT 12.3%,Diffusion Policy 18.9%,DP3 28.6%,Pi0-FAST 27.0%,Pi0 41.1%,**MA-VLA 49.0%**。

真正让人印象深刻的,是样本外组合泛化任务的结果。表格里列了五个未见过的协作场景:三种颜色的重新排列顺序、传递两只鞋、反向叠碗,Diffusion Policy、Pi0-FAST、Pi0三个方法的成绩全部是0.0,**MA-VLA的平均成绩是13.0%**,其中在一个组合任务上单项达到28%。

真实机器人平台的结果同样能说明问题。在SO101双臂平台上测试四个任务(叠碗、放方块、递玩具、叠方块),样本内表现:Pi0在叠碗任务上20次里成功9次,MA-VLA成功12次;样本外(顺序颠倒的场景):Pi0是0/20,全军覆没,MA-VLA是10/20,整整成功了一半。放方块任务,样本外Pi0是0/20,MA-VLA是8/20。递玩具,Pi0是0/20,MA-VLA是2/20。

这组真实机器人的对比数字,比仿真环境更让人有实感,毕竟这不是虚拟世界里的模拟测试,是真实的机械臂、真实的物体、真实的失败或成功。

写在后面

读完这篇论文,最触动我的其实不是那些漂亮的成功率数字,而是Arm Shuffle这个设计的思路本身。

它没有引入任何复杂的新模块,没有堆更大的模型,甚至没有增加任何推理时的计算开销,它做的只是在训练时故意"制造混乱",把本该稳定的对应关系打乱。这种"以毒攻毒"式的正则化思路,让我想起深度学习里另一个经典的技巧Dropout,同样是靠随机破坏一部分信息来逼模型学会更鲁棒的表示。Arm Shuffle某种意义上是Dropout思路在多智能体协作场景下的一次自然延伸,只不过Dropout丢的是神经元,Arm Shuffle"丢"的是角色身份。

还有一个细节让我反复琢磨:独立训练三个模型在样本内反而比联合训练的MA-VLA表现更好(61% vs 53%)。这说明协作能力和单臂执行精度之间,可能存在某种此消彼长的关系,联合建模为了换来协作的灵活性,牺牲了一部分单臂执行的最优化程度。这提示我们,"协作"和"专精"或许天然就是需要权衡的两件事,而不是简单地叠加起来就能两全其美。

这篇论文没有解决的问题也很明显:13%的样本外成功率,说明距离真正可靠的组合泛化还有很长的路要走。原子动作的词表是人工预先设定好的有限集合,如果真实任务需要的动作类型超出了这个词表范围,整套框架该怎么应对?这个问题留在了论文之外,也留在了我脑子里。

Q&A

Q1:MA-VLA是什么?

A:MA-VLA是一种多臂机器人视觉语言动作模型,它会先用视觉语言模型把一句高层任务指令拆解成每只机械臂该做的具体原子动作,再统一交给一个执行模型生成实际的控制信号,从而让多个机械臂协同完成任务。

Q2:MA-VLA相比现有方法最大的优势是什么?

A:最大的优势在于面对没见过的协作顺序时依然能工作。论文测试显示,现有的Pi0、Pi0-FAST、Diffusion Policy等方法在任务顺序被打乱后成功率全部跌到0%,而MA-VLA凭借Arm Shuffle训练策略依然能保持一定的成功率,样本外平均达到13%。

Q3:Arm Shuffle具体是怎么操作的?

A:Arm Shuffle是在训练过程中随机打乱每只机械臂的状态、摄像头画面、任务提示和动作标签之间的对应关系,让模型不能依赖"哪个编号的手臂对应哪种任务"这种表面规律,而是必须真正读懂提示词内容再决定该做什么动作。