☰
AMI:世界模型与动作规划共享表征的具身智能架构
2026/10/14 13:17:16 网站建设 项目流程

1. 为什么把世界模型和动作规划放在同一个架构里

做机器人和具身智能这几年的一个直观感受是:感知、预测、规划这三件事,很多团队是分开迭代的。感知组训一个编码器,预测组训一个视频预测模型,控制组再单独写一套MPC或RL策略。每个模块单独看指标都不差,但拼到一起之后就变得非常拧巴。感知输出的特征到了预测模型里语义对不上,预测模型产生的想象轨迹到了规划器里又没法直接换算成控制信号,最后只能靠一堆硬编码的转换层去“接缝处”补丁。AM I这个项目从一开始就想把这个问题按下去:世界模型和动作规划不应该等做完之后再来集成,而是应该在设计阶段就共用同一套抽象表征。

这个想法说起来简单,做起来要动很多底层设计决策。第一个要明确的约束是:世界模型到底为谁服务?如果世界模型的目标只是“生成看起来合理的下一帧”,那么像素级的重建损失确实可以把预测做得漂亮,但这种漂亮对动作规划几乎没用。规划器需要的是一个能判断“如果把动作A执行下去,世界会进入什么状态”的评估器,它不关心下一帧长什么样,关心的是状态空间里目标条件是否满足、约束是否被触发、风险是否出现。所以AMI把世界模型的定位直接钉在“决策支持组件”上,而不是“视频生成器”。

围绕这个定位,AMI的设计约束定成三条。第一,观测必须先被压缩成语义可操作的抽象表征,所有预测都在这个抽象层完成,不重建原始像素。第二,动态模型必须是动作条件的,给定当前表征和动作序列,能预测后续表征轨迹,而不是被动地做无动作的视频外推。第三,规划器输出的动作必须能覆盖不同时间尺度,既要有面向任务目标的高层意图,也要有能下发到执行器的低层控制量,两层之间通过世界模型来做一致性校验。这三条约束定了,后面所有模块的选择和取舍都围绕它们展开。

这个项目适合谁来参考,我觉得不是纯理论研究者,而是正在做具身智能、机器人操作、自动驾驶决策这类“真机与仿真结合”方向的人。因为只有落到具体任务上,你才会深刻感受到“世界模型不是用来观赏的,是用来回答如果-那么问题的”。下面我按AMI的总体设计、规划链路、训练方案、实测踩坑和可扩展方向五块来讲,讲清楚每块为什么要这么设计,以及哪些地方最容易翻车。

2. AMI的总体架构:以联合嵌入预测为核心的抽象表征黑板

2.1 三大主干的协作关系

AMI的整体结构分成三个主干:观测编码主干、世界动态主干、策略输出主干。观测编码主干负责把原始传感器数据映射成紧凑的抽象表征;世界动态主干负责在抽象表征空间里做带动作条件的状态推演;策略输出主干则把任务描述和当前表征映射成高层意图或低层控制量。三者共享同一份表征词典,也就是同一个隐空间的度量标准,这是AMI和“各模块各说各话”的传统架构最根本的区别。

这个设计里有个很关键的词叫“共享表征”。你可以把它理解成团队内部统一了沟通语言:感知组不再交出一堆“视觉特征向量”,动态模型也不再输出“预测像素”,两者约定好,凡是过手的信息都必须是抽象表征空间里的一个点。这样规划器在读世界模型输出的时候,自然知道这些点代表什么语义边界、物体位置、速度趋势。共享表征解决了传统架构里最头疼的“接口不对齐”问题,因为在AMI里根本没有接口,只有同一块表征黑板,大家都在黑板上读写。

2.2 为什么选择JEPA式的预测而不是像素级重建

这里要展开说一下JEPA,也就是联合嵌入预测架构的思路。传统生成式世界模型走的是“编码-重建-预测”的老路,预测时要解码回像素空间,再跟真实帧算重建损失。这条路在视觉上效果很好,尤其是做视频预测的时候,但它在规划任务上有个致命弱点:重建像素需要的细节远超决策需要的信息量,模型被迫把大量容量花在预测纹理、光照、边缘这些对决策无关紧要的东西上,反而稀释了对物体刚性、位置关系、可交互性这些关键属性的表达。

AMI选择的是JEPA式的非生成训练:不构建从表征到像素的解码器,而是直接鼓励模型在抽象表征空间里预测未来。训练时用对比学习或者正则化约束,让预测出的未来表征尽量接近观测编码器对未来真实观测的表征,同时让不同样本的表征尽量彼此分开。这么做最大的好处是,模型的容量几乎全部用在“理解状态如何演化”上,而不是浪费在“把状态画出来”上。用生活化的例子类比,前者等于让你总结“这个球会滚到哪个位置”,后者等于让你学“把每一帧球的照片画得一模一样”。显然,规划器需要的能力是前者。

当然,JEPA式设计也有代价。它不像生成式模型那样可以直接可视化想象结果,你很难直观看到模型“脑补”出来的画面。所以AMI里额外加了一个轻量的解码侧头,仅用于调试时把隐状态粗略映射回语义标签图或关键点,帮助开发者观察模型有没有学到合理的空间变化。这个解码头不参与主损失,也不给规划器用,纯粹是个“示波器”。

2.3 信息流与接口细节

整个系统的典型信息流是这样:环境观测经过观测编码主干得到当前抽象表征,和任务目标一起送入策略输出主干,得到候选动作;动作序列送入世界动态主干,从当前表征出发推出若干步之后的状态表征,形成想象轨迹;规划器基于想象轨迹评估每个候选动作的效果,选出最优者下发执行。执行后环境返回新观测,编码主干再次提取表征,闭环继续。

接口设计上,有个细节值得提醒:世界动态主干的输入除了当前表征和动作,还要显式输入当前时间步的相对位置,也就是环境已经过去的步数或者episode里的时间戳。原因是动作条件的动态模型如果不带时间上下文,容易在长期规划时产生时序漂移。你会看到模型对“未来的未来”越来越悲观或越来越平滑,最后缩成一个不动点。加上时间步标记之后,模型能更好地意识到自己是在做多步外推,而不是做一步预测的简单重复。

3. 动作规划如何借力世界模型:从想象推演到目标条件决策

3.1 规划器的输入输出设计

在AMI里,动作规划不是一个独立的大网络,而是一个“世界模型+搜索优化”的组合。规划器拿到两类输入:一类是当前观测的抽象表征,另一类是任务目标。任务目标的编码方式可以是自然语言指令的嵌入,也可以是目标状态的关键点坐标,具体看下游任务。规划器内部维护一个动作假设集合,也就是候选的宏动作序列,然后用世界模型对每个候选序列做想象推演,得到若干步之后的预测表征。

这里的关键技巧是:规划器不直接输出原始电机电流这类低层控制量,它输出的是“动作意图”。动作意图可以是离散的宏动作标签(比如“推”、“抓”、“避让”),也可以是连续的子目标状态(比如“把手移动到坐标X处”)。真正把意图转换成执行器信号的活儿交给一个低层控制器。这样的分层设计让世界模型的想象推演复杂度大幅下降:世界模型只需要学习“宏动作对状态的影响”,不需要学习“电机电流对关节角的影响”,后者是非线性又高频的动力学问,跟世界模型要承担的认知任务不在一个层级。

3.2 想象轨迹与真实轨迹的对齐策略

规划器用世界模型做了一步或N步想象推演之后,必须回答一个核心问题:想象出来的轨迹可信吗?如果模型在训练数据分布内推演,那可信度较高;一旦遇到分布外状态,想象出来的轨迹可能完全离谱。AMI给出的对策略是双轨校验:规划器在每轮决策时,除了用世界模型做长期想象,还会用一个轻量的单步校正器,把“当前位置观测到的真实表征”和“世界模型预测的周期末表征”做比对。如果偏差超过阈值,说明世界模型当前置信度不高,规划器就会降低想象推演结果的权重,更多依赖反应式控制器撑过下一小步。

这个设计在实战里非常有用。我做真实机械臂任务时发现,即使预训练做得再充分,真机上的摩擦力、延迟、光照变化都会让模型预测的关节轨迹和真实轨迹逐渐分叉。如果没有单步校正器,规划器会在第5步、第8步开始给出荒谬动作。有了校正机制以后,规划器学会了“听模型的话,但保持怀疑”,整体执行力明显稳了。

3.3 与低层控制器的缝合

低层控制器接收的是来自规划器的高层意图,而它的反馈回路频率通常比规划器高很多。规划器可能每秒决策一次,低层控制器需要跑50赫兹甚至1000赫兹。两者之间需要一个“意图译码器”,把高层子目标转换成一条可执行的轨迹,再用一个简单的跟踪控制器去跟。跟踪控制器本身不需要什么智能,PID或者更简单的状态反馈就够,关键在于意图译码器要保证轨迹光滑、动态可行。

AMI在意图译码器上踩过一次坑,一开始直接用线性插值把子目标点连起来,结果机械臂在转折点附近产生剧烈加速度冲击。后来改成最小加加速度轨迹生成之后,这个问题就消失了。这件事说明一个很容易被忽视的原则:世界模型和规划器解决的是“去哪、怎么走”的问题,而“走得舒服、走得稳”是低层控制的专业范围,别想着用一个端到端网络把这些问题一口吃下,分层缝合在工程上远比单模型可靠。

4. 训练目标与损失设计:预训练、微调和联合训练三段走

4.1 自监督预训练阶段的损失构成

AMI的训练分成三个阶段,第一阶段是自监督预训练,只训练观测编码主干和世界动态主干,完全不碰规划器。预训练用的损失主要有三部分:表征预测损失、表征均匀性损失、时序一致性损失。

表征预测损失是最主要的,它计算世界动态模型在当前表征和动作条件下预测出的下一时刻表征与观测编码器得到的真实下一时刻表征之间的余弦相似度负对数。简单说,就是逼着动态模型预测“未来在表征空间里该有的样子”。表征均匀性损失则要求样本表征在单位球面或高维空间里尽量均匀分布,避免所有样本被压缩到一个小区域,也起到防塌缩的作用。时序一致性损失用来保证相邻时间步的表征变化是平滑的,不至于出现相邻两步的表征跳变到相距很远的错觉。

4.2 防止表征塌缩的三个手段

JEPA式训练里最经典的坑就是表征塌缩:模型学会了把所有输入都映射到同一个输出点,这样预测损失异常低,但表征完全失去区分性。AMI用了三种手段来防塌缩。第一是对比学习式的负样本采样,在每个batch里把不同样本的预测表征和真实表征都拉出来,让预测表征与正样本(真实未来表征)靠近、与负样本(其他样本的当前或未来表征)远离。第二是非对称预测头,也就是动态模型预测出的表征要经过一个额外的投影头再参与损失计算,而观测编码器的输出不加投影头,这种不对称结构能天然避免“大家都缩成一个点”的退化解。第三是前面提到的均匀性损失,直接对表征分布施加正则化约束。

如果你在复现时发现loss降得很快但下游任务完全不work,九成是表征塌缩了。检查办法很简单:把一批样本的表征做PCA降维,如果发现所有点聚成一团,基本就是中招。别急着加正则化权重,先确认负样本采样逻辑是否有问题,这是最常见的诱因。

4.3 分层训练节奏与控制模块微调

第二阶段是策略输出主干的微调。这一步固定住已经训好的观测编码主干和世界动态主干,只训练策略模块去输出“能让世界模型给出高成功概率的想象结果”的动作意图。训练数据来自离线轨迹库和在线探索的混合体,策略损失用标准的actor-critic框架,但奖励信号不是环境给的标量奖励,而是“想象 rollout 达到目标状态的打分器”给出的软奖励。这个设计的巧处在于,策略并不是在真实环境里试错,而是在世界模型里“脑内排练”,样本效率高很多。

第三阶段是低层控制器或意图译码器的训练,使用真实环境或者高保真仿真数据,目标是让生成的轨迹可跟踪、平滑且满足物理约束。这三个阶段必须按顺序来,不能上来就端到端联合训练。我有一次为了省时间跳过了第一阶段,直接让策略模块从头学,结果策略输出的意图世界模型根本推不动,因为共同表征还没有建立。后来老老实实按节奏走,每个阶段训练量砍一半都比之前的全端到端结果好。

5. 实操复现中的三个深坑与我的排查链路

5.1 动作空间抽象程度不对,导致规划器根本学不动

第一次完整跑通AMI流程之后,我发现规划器在简单到达任务上表现不错,但一换成需要精细操作的任务(比如插入、对准)就完全崩掉。排查过程很磨人。我先检查世界模型的预测误差,发现误差不大;又检查策略模块的探索噪声,发现reward曲线完全没上升。最后我把规划器输出的动作意图打印出来逐条看,才发现问题出在动作空间的抽象粒度上:在城市级导航这种粗粒度任务里,规划器输出“向前走5米”这种宏动作没有问题,但在精细操作任务里,规划器还在尝试输出“位移2厘米”这种连续动作,世界模型对这种细粒度动作的预测噪声很大,导致想象推演结果不稳定,规划器自然学不动。

解决办法是对动作空间做了分叉设计:全局规划器只输出到达预定义关键点的原子动作,精细操作交给一个单独训过的局部控制器,世界模型只对原子动作建模。换句话讲,让世界模型去预测高精度连续动作本来就是超纲题,动作抽象程度必须和任务粒度匹配。这个坑在论文里几乎不会提,建议所有复现的人一上来就对任务做个动作粒度分析,别高估世界模型的预测能力。

5.2 预测表征和真实表征分布不一致

第二个坑是联合训练阶段,规划器在真实环境里每步决策都正常,长时间跑下来也没什么大问题,但一旦把真实轨迹拿出来离线分析,能明显看到预测表征和真实表征之间存在系统性偏移。比如预测的物体位置表征比实际的更偏左,速度表征整体偏大。这类偏移单步看不出来,多步累积起来就会造成规划器信心过高。

排查链路是这样的:先分别对预测表征和真实表征做分布统计,看均值方差是否一致;发现不一致后,检查是不是观测编码主干在训练时见过类似场景太少,造成泛化偏差;进一步确认之后,发现根因是训练数据里动作序列大多来自离线策略,动作分布和在线规划器执行的动作分布有明显差异,导致动态模型对“在线动作风格”的预测不够准。修复方案是在线采集阶段用混合策略生成数据,也就是一部分随机探索、一部分离线经验回放、一部分当前规划器输出,确保世界模型对动作分布的覆盖足够广。

5.3 在线规划的性能瓶颈与缓存策略

世界模型做想象推演虽然比真实试错便宜,但在线规划时依然是最贵的一环。一开始我把模型预测的batch size设得很大,一步推演四十个候选动作,结果决策周期跑到好几秒,机器人站在原地干等。后面我做了两个优化。一是在线推理时把动态主干切换成更轻量的深度,只保留两个transformer层,精度损失很小但速度快了将近一倍。二是在线规划加了一个“想象缓存”:如果当前观测表征与最近某次决策时的表征相近,直接复用当时算好的候选动作排序,不再重新推演。这两个优化加起来把决策周期压到了实时可用的范围。

如果有人复现时遇到性能问题,我建议先别急着换模型结构,先看看是不是batch内候选动作互相干扰导致缓存命中率低,很多情况下把候选动作分组处理、每组独立推演,效果好过盲目剪枝。

6. 测评与调参经验:别只盯着成功率

6.1 哪些指标比任务成功率更值得记录

任务成功率当然是最宏观的指标,但它很容易掩盖模型内部的病态行为。比如说,策略可能依赖世界模型的预测噪声“恰好”推到了目标位置,换个噪声种子就完全失败。这说明模型学到的是环境里的偶然偏差,不是泛化规律。所以AMI的评测体系里,我额外记录三个指标:想象轨迹与真实轨迹的平均表征距离、规划器每步对多个候选动作的区分度、以及低层轨迹的能量消耗。第一个指标衡量世界模型的靠谱度;第二个指标衡量规划器对动作的判别能力,如果所有候选动作打分都差不多,说明规划器根本没学会区分;第三个指标衡量执行质量,防止模型靠蛮力挥臂完成任务。

这三个指标在调试时非常管用。有次任务成功率从60%涨到80%,我以为模型进步了,结果一看轨迹距离指标变差、能量消耗变高,原来只是策略学会了“更莽”。改掉探索噪声策略之后,成功率反而掉到70%,但轨迹距离收紧了。这个取舍让我意识到,成功率可以靠运气上去,但表征距离才是决定泛化天花板的那个数。

6.2 批次大小、负样本数量和学习率的关系

JEPA训练的batch size对结果影响非常大。我把对比学习里的负样本数量从64逐步加到512,发现表征均匀性显著提升,但批次过大的时候内存压力也很大。我最终用的是batch size 128、负样本256,学习率2e-4,配合warmup和cosine decay,整个预训练在单卡V100上跑了两天左右收敛到不错的状态。如果显卡资源不够,可以把负样本降到128,损失一点均匀性但基本能保住主要性能。

学习率这块要特别小心,动态主干和观测编码主干对学习率的敏感度不一样。观测编码主干我用1e-4,动态主干用3e-4,策略模块用1e-4或2e-4分阶段设置。如果用一个全局学习率,经常会出现一边收敛一边发散的现象。强烈建议给三个主干分别设优化器,这在代码里看起来啰嗦,但省去大量调参时间。

6.3 评测场景的分布设计

训练时用固定布局的仿真环境,测试时一定要换不同布局、不同物体初始位置、不同动力学参数。原因很简单,世界模型如果在单一布局上训练,很容易把“某个物体的位置”硬编码进表征里,看起来在训练任务上很准,换场景就原形毕露。我做了一个SIM2GAP的实验,把训练时间缩短三分之一,专门在完全不同的布局上做测试,效果比多训三倍时间的单一场景泛化性强很多。如果你准备复现,我非常建议在项目一开始就定义好测试场景的分布范围,并坚持每周在测试分布上跑一遍,这会逼着模型真正学到因果关系而不是记忆场景。

7. 后续可以扩展的四个方向

第一个方向是多模态观测融合。现在AMI的观测编码主干主要吃视觉或关节角度,把触觉、力矩、深度信息也融合进抽象表征之后,世界模型对精细接触任务的预测会准很多。第二是跨环境自适应。通过一个轻量的适配模块,让观测编码主干在部署时在线微调几个归一化层参数,就能把仿真训练的模型迁移到真机,代价很小收益很直接。第三是基于记忆的长时程预测。当前动态主干只能推演几十步,加上一个记忆库模块之后,可以让模型在处理长时程任务时调用过去相似场景的表征演化规律,避免多步误差累积。第四是隐空间可解释性研究。把抽象表征里的各个维度跟语义概念做映射分析,比如通过探针任务找到“物体可见性”“碰撞风险”对应的表征子空间,用于规划器解释和故障诊断。

我在实际复现AMI之后最大的体会是:世界模型的最大价值不在“预测得漂亮”,而在“和规划器共享一套语言”。很多项目把世界模型当成一个附属组件,训好了再接上规划器,这是最吃亏的做法。如果你打算做类似方向,不妨先从最小版本的“编码主干+动态主干+最简规划器”跑通闭环,再逐步加复杂度。这个顺序虽然慢,但每一步都能看到模型的行为变化,不会出现“拆东墙补西墙”的集成灾难。

最后分享一个很实用的小技巧:在训练动态模型的时候,每隔一段时间就把当前表征空间里的随机两个点做插值,再通过调试输出头可视化插值轨迹。如果插值路径是平滑的、语义连续的,说明表征空间学得健康;如果插值路径上出现跳变或者奇怪的突变,就说明动态模型对状态演化的建模还有缺口,应该回去检查数据覆盖度和动作空间设计。这个“表征插值体检法”帮我省了很多冤枉路,推荐试试。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询