微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 权重还是技能?一场关于机器人"学习方式"的路线之争

权重还是技能?一场关于机器人"学习方式"的路线之争

2026-08-21 13:40
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-08-21 13:40 • 科技行者

你有没有想过,为什么你学会了骑自行车之后,去骑一辆从没骑过的陌生自行车,依然能很快上手?而一个背下了整本自行车操作手册的人,第一次坐上去还是会摔跤?

这个问题,恰好是当前机器人学习领域最核心的分歧。

2026年,一篇来自UC Berkeley、San Jose State等多所机构研究者合作的调查论文,把这个分歧拍在了桌面上:机器人的能力,应该压缩进一组"冻结的神经网络权重",还是让机器人自己写出、修改、积累可以执行的"技能代码"?

这不是一个可以轻易回答的问题。论文用77个代表性系统、225篇文献、六大技术分支,系统地梳理了这场正在进行中的路线之争。

---

两条路,一个根本问题

2022年到2024年,机器人学习领域出现了一个让人兴奋的趋势:越来越大的视觉-语言-行动模型开始能做越来越复杂的任务。RT-1能在真实厨房里执行700多种指令,RT-2把互联网上的常识知识迁移到了机器人控制里。

> **VLA(Vision-Language-Action)模型**:一类将视觉感知、语言理解和动作生成统一在同一个神经网络里的模型,输入图像和语言指令,直接输出机器人的关节控制命令。

这条路的逻辑很清晰:用海量数据喂一个足够大的网络,让它把"看到什么、听到什么、做什么"全部压缩进权重里。能力嵌在网络里,就像人的肌肉记忆——你不需要想,就能做到。

同期,另一条路也在悄悄长大。Code as Policies在2023年发表,展示了一件让很多人意外的事:只要给大语言模型一个机器人API和一段自然语言指令,它就能直接写出可以执行的Python控制程序,而且这些程序是人能读懂、能改、能重用的。

> **Code as Policies(代码即策略)**:用大语言模型直接生成机器人控制代码的方法,把自然语言指令翻译成调用感知和控制API的可执行程序,而不是训练神经网络权重。

这就是这篇调查论文要讲的核心分歧:**权重还是技能?(Weights or Skills?)**

不同于大多数综述论文把能提到的方法全部堆在一起,这篇论文做了一件更难的事:它用一个明确的分析轴线来组织整个领域,并且追问了一个此前没有人系统回答过的问题,代码即策略这条路,到底能"自我进化"到什么程度?

---

第一个核心贡献:给代码策略系统排了一张进化阶梯

这张阶梯是整篇论文最重要的分析贡献,值得仔细讲清楚。

研究者们提出了五个递进的问题,用来判断一个代码策略系统究竟站在进化阶梯的哪一级:

第一,这个系统会写控制代码吗?

第二,它能从执行失败中修复代码吗?

第三,它能把验证过的代码跨任务保存下来吗?

第四,它能同时维护多个候选程序并从中搜索最优解吗?

第五,它能把以上所有机制都整合进一个持续运转的自我改进循环吗?

每一个"是"都是阶梯上升一级。

**这张阶梯的意义在于,它让"自我改进"从一个模糊的宣称变成了可以逐项核查的操作定义。**

为了让这个框架不只是概念游戏,论文专门定义了三个核心机制,并规定了什么算数、什么不算数:

> **反馈(Feedback, F)**:在一次任务执行过程中,系统读取了执行结果信号(传感器数据、成功/失败检测、奖励等)并用这个信号修改了代码。注意:人重新输入指令不算反馈,固定的预训练价值函数不算反馈。

>

> **记忆(Memory, M)**:在任务结束后,运行时产生的内容(比如验证过的代码技能)被存储到跨任务的持久库里,之后的任务可以检索和调用。注意:模型的预训练权重不算记忆,单次任务内的临时草稿不算记忆。

>

> **搜索(Search, S)**:系统同时维护多个候选程序,通过执行打分来选择或变异,不只是顺序修复一个程序。注意:单纯重复提示并不算搜索,除非这些候选程序真的被比较和筛选过。

有了这三个机制的精确定义,77个系统的位置就变得清晰了。

---

第一级:零样本合成,一次生成,不回头

这一级系统的特征简单直接:写代码,执行,结束。没有F,没有M,没有S。

Code as Policies是这一级的奠基者。给一个语言模型一个感知和控制的API,再给一段自然语言指令,它能输出一段可以运行的Python:调用感知原语识别物体位置,调用控制原语规划轨迹,甚至递归地定义之前没有定义过的子函数。

ProgPrompt把这个思路推了一步:把场景里当前可用的动作和物体名称都暴露成可导入的Python符号,这样生成的程序天然就和当前场景是对齐的。

VoxPoser走了不同的路:它让模型写的不是直接的动作指令,而是合成三维值图(3D value maps)给运动规划器用,从而把对固定API的依赖换成了对三维空间推理的依赖。

> **3D value maps(三维值图)**:一种用三维空间中每个位置的标量值来表示"应该去哪里、应该避开哪里"的表示方式,可以直接输入给运动规划器使用。

这一级系统的根本限制,论文说得很直接:程序只写一次,如果执行时失败了,就直接失败了。这就像一个厨师只看菜谱第一遍,不管菜炒糊了还是没熟,都不回头看一眼,端盘就走。

---

第二级:闭环自我修复,但记忆不过夜

类比一下会让这一级的本质变得很清楚。

你让一个刚学会做菜的朋友去炒蛋,第一次炒糊了。闭环自我修复的意思是:他看一眼锅里,说"火太大了",然后调低火再炒一次。这很好。但他今天做完了,明天你让他再来,他把之前学到的"火别太大"这个经验完全忘了,从头开始。

如果不加入闭环反馈,他连"糊了"这件事都察觉不到,直接端上去。那比"记性不好"还糟糕。

Inner Monologue是这一级的代表。它把成功检测器的输出、场景描述、甚至人类的简短反馈,都转成自然语言喂回给语言模型,让它重新规划失败的步骤。

REFLECT做了一件更系统的事:它构建了一个多层次的、多模态的过去交互摘要,让语言模型能够"回顾"发生了什么,解释为什么失败,然后提出修正方案。

Code as Monitor把这个监控机制推到了感知层:让模型把时空约束编译成视觉语言检查程序,在执行过程中实时监测是否有违规,而不是等到任务彻底失败后才开始反思。

这一级的进步是真实的,但论文点明了它的边界:修正发生在任务内部,任务结束后,所有的修正都被丢弃。下一个任务来了,重新从零开始犯同样的错。

---

第三级:技能库积累,让经验跨任务沉淀

**这一级做的事情,是让验证过的知识真正留下来。**

Voyager是这一级最被广泛引用的例子,尽管它发生在Minecraft游戏里而不是真实机器人上。它维护了一个持续增长的代码技能库,每当一个技能在执行中被验证可用,就写入库里,并附带"什么时候用它"的守卫条件。之后的任务在生成新程序时,可以直接调用库里已有的技能作为积木块。

类比一下:这就像一位厨师有了一本自己的经验笔记本。炒某道菜成功了,他把步骤记下来;下次做类似的菜,先翻翻笔记,看看有没有可以直接用的已验证步骤。如果没有这本笔记,每次都从零推导,不只是慢,还会重复踩同样的坑。没有笔记本的厨师和有笔记本的厨师,在面对第100道新菜的时候,差距才真正显现出来。

> **技能库(Skill Library)**:一个持久存储验证过的代码技能的数据库,技能以可检索的形式保存,之后的任务可以调用和组合这些技能,而不用每次从头生成。

LRLL(终身机器人库学习)把这个思路应用到了真实机器人的具身控制场景,用语言模型自举出一个可组合的技能库,每个技能都有明确的前置条件和效果描述。

DROC则在技能库积累之外加入了反馈机制:它把人类的语言纠正提炼成可检索的知识,存进技能库,让下次相似任务能直接从历史纠正中受益。

---

第四级:进化式程序搜索,从修复单路到探索种群

修复一个失败程序,和从一群候选程序里淘汰差的、保留好的,是两件本质不同的事。

前者是调试,后者是进化。

调试的局限在于:如果你选择了一个从根本上就走错方向的初始程序,再怎么修也修不好。进化的优势在于:你同时维护多条路,差的被执行结果淘汰,好的被保留并变异出新的候选。

> **进化式程序搜索(Evolutionary Program Search)**:维护一个程序种群,通过执行打分来选择适应度高的候选程序,并对其进行变异或交叉,生成下一代候选程序,类似生物进化中的自然选择。

CaP-X为这种搜索提供了一个专门的测试框架和基准,让不同的编码智能体在受控环境下比较进化搜索的效果。

RoboEvolve走得更深:它把一个规划器和一个可学习的仿真器联合起来进行协同进化,用仿真器来模拟程序执行结果,从几乎失败的案例中挖掘改进信号,来稳定搜索过程。

GEAR(代码进化用于控制)专门研究如何用大语言模型驱动的进化搜索来综合控制策略,通过跨代的程序选择和变异来逼近更优的策略代码。

这一级的关键跨越是:探索从线性变成了并行。代价也很明显,你需要更多的计算资源来同时跑多个程序,更需要一个能可靠评分的执行环境。

---

第五级:完整自我改进循环,目前只有三个系统真正站在这里

论文用一整张图来描述这个循环的结构:任务来了,Actor智能体执行,执行引擎产生带有反馈信号的执行轨迹(F),验证过的技能被写进持久技能库(M),进化搜索在候选程序种群里筛选和变异(S),最终产出的技能流向未来任务。

**这三个机制,缺一不可。缺了F,系统不知道执行好不好;缺了M,学到的东西不跨任务积累;缺了S,搜索空间只能线性探索。**

截至2026年,真正占据这个位置的系统只有三个:ASPIRE、ENPIRE和RoboClaw。

ASPIRE把一个机器人执行引擎、一个发出每原语多模态轨迹的反馈系统、一个持久技能库和一个候选程序种群搜索,整合进了一个完整的闭环。

ENPIRE在真实物理硬件上关闭了类似的循环:通过自动复位、并行回放和日志驱动的程序修订,让机器人在真实世界里自主积累技能。

RoboClaw把数据采集、策略学习和执行控制统一在一个控制器下,用自复位循环来持续运转整个改进过程。

论文特别强调:这个格子被如此稀疏地占据,而不是其中具体哪个系统有多好,才是这篇调查论文要让读者看清楚的结构性事实。

---

另一极:VLA模型,把能力压进冻结权重

讲完代码这边,我们来看另一极。

VLA模型的架构有一个共同的设计模式:一个视觉语言主干(backbone)负责编码场景和指令,一个动作头(action head)把这个编码映射成电机指令。能力,完全嵌在训练后的权重里。

RT-1是这条路的起点,用大规模真实机器人数据训练的Transformer,把连续动作离散化成分类bin输出。RT-2把它扩展了,把一个在互联网数据上预训练的视觉语言模型微调到机器人轨迹上,动作作为文本token输出,这样互联网上的语义知识就顺带被迁移进来了。

> **动作头(Action Head)**:附加在视觉语言主干网络后面的模块,负责把主干生成的特征表示转换成具体的机器人动作命令,不同设计有离散token头、连续回归头、流匹配头等多种形式。

之后的系统在两个方向上继续演进。一个方向是开放复现:Octo和OpenVLA(7B参数,DINOv2/SigLIP视觉栈)在汇总的Open X-Embodiment语料上训练,让社区能在共同基准上比较。

另一个方向是动作表示:离散token头简单但粗糙,新系统倾向于连续头。π0给PaLI-Gemma主干接了一个流匹配头,用于高频双臂控制;CogACT把认知模块和扩散Transformer动作模块分开;SpatialVLA注入了三维空间编码。

> **流匹配(Flow Matching)**:一种生成式建模方法,通过学习从噪声分布到目标分布的连续变换流来生成样本,比扩散模型需要更少的推理步骤,更适合需要高频输出的机器人控制。

到了最大规模,GR00T N1给人形机器人配了一个慢速系统2视觉语言推理器加一个快速系统1扩散Transformer,让高层推理和低层执行各司其职。Gemini Robotics在Gemini主干上同时构建了VLA和具身推理模型。

这一极的根本属性,也是论文把它当作对照系的原因:没有循环,没有代码,能力通过数据和参数规模的扩大来泛化,通过插值而不是搜索来应对新任务,而且训练后既不能编辑,也不能审查,也不能重新组合。

---

奖励合成:第三条路,语言写奖励,RL来训练

在代码策略和VLA之间,还有第三个家族值得单独讲清楚。

奖励合成的逻辑是:让语言模型写的不是直接的策略代码,而是奖励函数或训练课程,然后用强化学习优化器把这个奖励函数"编译"成策略权重。

Eureka是这一类的代表作。给语言模型一段未修改的环境源代码和任务描述,它零样本生成一个可执行的奖励函数,然后用一个叫"奖励反思"的机制来改进:把训练统计的文字摘要喂回给模型,模型根据这些统计进化奖励函数。在29个IsaacGym任务里,它在83%的任务上超过了人类专家设计的奖励。

> **奖励反思(Reward Reflection)**:Eureka中的一种机制,把强化学习训练过程的统计信息(如各组成部分的奖励曲线)转成文字摘要,喂回给语言模型用于修改奖励函数,形成一个外循环的改进过程。

DrEureka把这个思路从仿真扩展到了真实世界:它同时让语言模型合成域随机化范围,让策略在零样本条件下迁移到真实四足机器人上。

Eurekaverse更进一步:让语言模型提出一个由简到难的环境课程,让智能体通过逐渐升级的挑战来学习跑酷技能,最终迁移到真实机器人上。

这一家族和代码策略家族的关键区别是:语言模型写的是训练中介,而不是直接可执行的技能。最终运行时的东西,依然是训练出来的权重。所以论文把这个家族和代码策略家族分开,单独归类。

---

技能库:一个词,五种完全不同的含义

论文里有一张表,我认为是全文最有洞察力的地方之一。

它指出了一个被大多数论文忽略的问题:"技能"这个词,在不同的语境里被用来指代至少五种完全不同的东西,而这五种东西在可检查性、可适应性、可组合性和可分发性上有着根本不同的特性。

第一种:潜策略(Latent Policy)。一个以潜变量z为条件的神经网络π(a|s,z),技能用潜空间里的一个向量来编码。DIAYN、DADS、METRA都属于这类。这类技能不可人工检查,组合性差,完全不可分发。

> **潜技能(Latent Skill)**:通过信息论目标(如最大化技能编码和访问状态之间的互信息)从无奖励交互中学习出来的潜空间技能表示,每个技能对应潜空间中的一个点,可以被下游任务的高层策略调用。

第二种:选项/原语(Option/Primitive)。在技能先验的指导下,时序上延伸的子策略。SPiRL、OPAL、SkiMo属于这类。可组合性有限,不可分发。

第三种:代码(Code)。在API上可执行的程序,这是Code as Policies和Voyager所用的表示。人可以读、可以改、可以组合,在可检查性和可适应性上是唯一全部满足的。

第四种:机器人App(Robot App)。打包好的、一键部署的行为包,比如Unitree UniStore里的动作包。可以分发,但不可检查,不可适应,不可组合。

第五种:市场商品(Market Product)。带版本号、定价的技能列表。同样可以分发,但在其他所有维度上都是最弱的。

**论文的核心发现是:只有代码这种形式同时满足可检查、可适应和可组合;只有App和商品形式是真正可分发的。这两个集合几乎不重叠,而这个不重叠,正是技能经济面临的根本矛盾。**

---

六大家族的对比:没有哪个家族在所有维度上都强

论文最后整理了一张六维对比表,把端到端VLA、代码策略、奖励合成、RL技能发现和市场技能,在数据需求、任务跨度、迁移能力、可解释性、安全性和典型失败模式这六个轴上逐一打分。

用数据需求举例:VLA需要超过100万条跨22个机器人形体的真实轨迹(Open X-Embodiment语料);代码策略只需要一个预训练语言模型加上少量提示;奖励合成需要大量仿真交互,但不需要示范数据;RL技能发现需要每个形体数百万步的环境交互;市场技能在部署时完全不需要数据,但只是供应商录制好的固定回放。

在可解释性上,代码策略是唯一一个"优"的。VLA的权重是不透明的,你不能在运行前检查它会做什么。代码是人能读懂、能改、能对比的。

在安全性上,VLA的新兴行为在部署前很难验证;代码策略在执行前可以审查,而且被约束在经过验证的API范围内;奖励合成面临奖励黑客问题,仿真里表现好但现实里目标偏移;RL技能发现在硬件上探索是危险的;市场技能有供应商认证,但没有可溯源的记录。

典型失败模式上,VLA是"静默的语义偏移",在分布外的新场景里默默做错,你甚至察觉不到;代码策略在感知错误地标注场景时会脆断;奖励合成会在仿真里过拟合成功但现实里不好用的策略;技能发现会收敛到退化行为;市场技能遇到和预录场景不同的环境时完全没有恢复能力。

**没有一个家族在所有六个维度上都强,这不是某家族设计不好,这是各自对应不同根本取舍的必然结果。**

---

技能经济:商业市场已经到来,但停在了最低级

2026年,Unitree的UniStore上线了,用户可以一键下载跨G1、H1人形机器人和B2、Go2四足机器人的动作包。

论文把这件事定义为"技能经济"的到来,并且立刻指出了一个让人不安的事实:UniStore里的每一个技能,都是静态回放。

> **静态回放(Static Playback)**:一种技能分发形式,供应商预录好动作序列(通常来自动作捕捉数据),用户安装后直接回放,机器人不感知当前环境是否和录制时一致,没有任何适应能力。

在论文构建的三层技能栈框架里,UniStore是第2层(分发)架在第1层(静态构建)技能上。真正有价值的第3层,也就是在设备上的自适应,"根据水果硬度调整抓取力度让它不碰伤",没有任何已上市的技能能做到这件事。

这个缺口引出了论文提出的五个开放问题。

第一个问题是静态到自适应的鸿沟。第3.1节的那些技术,闭环修复、持久记忆和搜索,恰恰是让下载来的技能能够在目标机器人上适应的工具。这个鸿沟的另一边,是能力商店,而不是动画商店。

第二个问题是跨形体可移植性。UniStore宣传一个技能能跨多个平台运行,但没有共享动作接口或显式形体适应,在G1上标定的技能凭什么能在Go2上正确?形体适配的形式化条件,目前没有定论。

第三个问题是溯源与信任。一个邀请第三方上传的市场,必然会收到来自未知作者的动作捕捉数据和代码。机器人技能作用于物理世界,溯源(谁写的、从什么数据来的、怎么验证的)是安全属性,不是元数据修饰。目前没有任何标准来签名、证明或审计一个机器人技能的来源。

第四个问题是安全验证。对一个代码策略技能,在一般情况下安全性是不可判定的,因为技能的效果取决于它遇到的具体场景。实际的问题是:它需要声明哪些前置条件?需要通过什么沙盒或仿真筛查?代码即监控(Code as Monitor)这类运行时监控器能在多大程度上约束未知输入下的行为?

第五个问题是技能组合。理想中,下载"冲咖啡"加"清理桌面"应该能组合出"早晨例程"。组合需要共享接口和前后置条件的形式化描述。今天的动作包既不透明也不可组合,代码技能也只能在同一个系统内部组合。

---

未来评测需要四条曲线,而不是一个数字

论文提出了一个让这些开放问题变得可测量的评测框架,有四个具体指标:

成功率随交互次数的增长曲线:一个自我改进系统,成功率应该随着自主交互次数的增加而上升,而静态回放技能应该保持不变。测试平台建议是LIBERO-100风格的终身任务流。

技能库复用率:新任务解决方案中调用了至少一个历史存储技能的比例,以及每个存储技能的平均被调用次数。这个数字应该随着库的增长而上升,而不是停在个位数。

跨形体迁移下降幅度:训练形体和未见形体之间的成功率差距,在匹配任务和预算的条件下测量。测试平台建议是Open X-Embodiment的留出形体分割(22个形体)。

溯源覆盖率:分发出去的技能中,携带了可验证的来源声明、训练数据描述和可复现测试记录的比例。目前,这个数字在市场技能上接近于零。

---

写在后面

读完这篇论文,我最深的感受其实不是技术细节,而是那张"技能五种含义"的对比表带来的一种清醒感。

很多领域的混乱,源于同一个词承载了太多不同的意思,而大家都以为彼此在说同一件事。"技能"这个词在机器人学习里就是这样,研究者在讨论DIAYN的时候说技能,讨论Voyager的时候也说技能,讨论UniStore的时候还是说技能,但这三个"技能"在可检查性、可组合性、可分发性上的差异是如此之大,以至于把它们放在同一张表格里比较根本没有意义。

这篇论文最有价值的地方,也许不在于那77个系统的具体参数,而在于它强迫读者承认:我们现在用的语言在描述这个领域时是有严重歧义的,而澄清这些歧义本身就是科学进步的一部分。

当前完整自我改进循环(F+M+S)只有三个系统真正实现了,这不一定是因为这件事技术上很难,而可能是因为大多数工作只追求单任务的高成功率,而没有把"在交互中学习并积累"当作第一优先级。

那些在游戏里很自然被研究的东西,比如Voyager的技能库,会不会正是因为游戏环境的重置成本低、反馈速度快,才在真实机器人上迟迟没有对应工作?真实世界的代价,是在塑造研究问题本身的边界。

---

Q&A

Q1:代码即策略和VLA模型的根本区别是什么?

A:VLA模型把机器人能力压缩进神经网络的冻结权重,训练结束后能力就固定了,不可以在执行中编辑或审查。代码即策略让语言模型直接生成可执行的控制程序,程序是人类可读的,可以修改、可以跨任务保存,并且可以从执行失败中自动修复。最关键的区别是:代码策略在不更新梯度的情况下就能自我改进,而VLA需要重新收集数据和训练才能获得新能力。

Q2:ASPIRE、ENPIRE和RoboClaw为什么是特别的?

A:这三个系统是目前唯一同时满足反馈(F)、记忆(M)和搜索(S)三个机制的机器人学习系统,也就是处于论文提出的代码策略进化阶梯的最高级。大多数系统只有其中一个或两个机制:比如闭环修复系统有F但没有M和S,技能库系统有M但没有S。三个机制同时运转才构成真正的开放式自我改进循环,这也是为什么论文把这个位置称为"稀疏填充的格子"。

Q3:Unitree UniStore技能商店和这篇论文里讨论的技能有什么关系?

A:UniStore是论文讨论的"技能经济"的真实商业案例,但论文指出UniStore里的所有技能都是静态回放,也就是论文进化阶梯中最低级的系统。论文把技能栈分为三层:构建、分发和适应,UniStore是第2层(分发)架在静态第1层技能上,而真正有价值的第3层"设备上自适应",比如根据不同物体调整抓取力度,目前没有任何商业产品实现。论文用UniStore作为动机,说明学术界的自我改进技术和现实产品之间还存在根本性的落差。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-