资讯动态

从VLM到VLA再到WAM:物理AI模型的数学逻辑与演进

发布时间:2026/8/30 3:16:20 来源:尧图企业网站定制
最近在整理具身智能和机器人学习资料时经常看到 VLM、VLA、WAM 三个词成组出现。很多读者会误以为它们只是同一个概念的三种叫法实际上差异非常大。VLM 让模型“看懂图像、听懂语言”VLA 让模型“根据观察和指令输出动作”而 WAM 试图让模型“在预测世界状态变化的同时做出决策”。三者的差异不只是名字而在于模型到底在计算什么随机变量、使用什么条件分布、采用什么损失函数优化。这篇文章我不打算写名词百科而是从数学角度拆解三者的底层逻辑重点覆盖多模态嵌入空间如何统一图像、文本和动作。VLM 的条件语言建模与对比学习损失。VLA 如何把动作空间纳入概率模型。WAM 如何建模状态转移与动作的联合分布。从 VLM 到 VLA 再到 WAM 的演进本质。一个最小教学示例与常见工程问题排查。如果你对多模态大模型、机器人学习和世界模型感兴趣这篇文章可以作为一条从“理解视觉语言”到“理解物理世界变化”的底层逻辑主线。1. 物理AI为什么需要 VLM、VLA、WAM1.1 从“数字AI”到“物理AI”过去几年大规模语言模型主要处理文本视觉模型主要处理图像生成模型主要处理像素和 token。这些模型共同的特点是输入输出都在数字空间里模型不需要理解“重力”“碰撞”“物体被拿起后会掉落”等物理规律。物理AI 则不同。它面向的是真实世界中的任务比如机械臂抓取、移动机器人导航、人形机器人行走、自动驾驶等。真实世界有一个重要特征状态是连续变化的动作会产生后果。机械臂执行“向前推”这个动作物体可能因为摩擦而移动也可能因为受力不当而翻倒。模型如果只学会“输出一个动作”却不理解“这个动作会让世界变成什么样”很难在开放环境中可靠工作。因此物理AI 的模型设计通常要回答三个递进的问题我看见了什么用户想要我做什么VLM 能解决一部分根据当前观察和指令我应该输出什么动作VLA 的定位如果执行这个动作下一时刻世界状态会变成什么我应该如何规划WAM 的定位1.2 三个关键角色VLM、VLA、WAM先给三个概念一个直观定义VLMVision-Language Model视觉语言模型输入图像和文本输出文本。典型任务是图片描述、视觉问答、视觉推理。数学上可以理解为学习条件分布 (p(\text{文本}|\text{图像},\text{文本}))。VLAVision-Language-Action Model视觉语言动作模型输入图像、语言指令和机器人状态输出动作序列。典型任务包括机械臂操作、移动机器人控制。数学上可以理解为学习策略分布 (\pi(a|o,l)) 或 (p(a|o,l))其中 (a) 是动作(o) 是观察(l) 是语言指令。WAMWorld Action Model世界动作模型这个名字在不同论文中定义不太统一本文语境下理解为“在世界模型框架中对动作与状态转移进行联合建模的模型”。它不只是输出动作还要预测“动作带来的状态变化”也就是学习 (p(s_{t1}, a_t | s_t, o_t, l))。1.3 从概率图看三者的关系为了统一理解可以把三者放在同一个随机变量框架里。我们用 (I) 表示图像观察(L) 表示语言指令(T) 表示文本(A) 表示动作(S_t) 表示 t 时刻状态(S_{t1}) 表示下一时刻状态。VLM 主要建模(I, L \rightarrow T)VLA 主要建模(I, L, S_t \rightarrow A)WAM 主要建模(I, L, S_t, A_t \rightarrow (S_{t1}, A_t))可以看出从 VLM 到 VLA 再到 WAM模型要解释的变量越来越多需要表达的现实约束也越来越多。这也是为什么物理AI 不能只靠一个单纯的 VLM 完成而需要 VLA 输出动作需要 WAM 提供对物理世界的预测能力。2. VLM 的底层数学逻辑2.1 视觉与文本如何统一到同一个空间VLM 的核心难点在于图像是像素文本是离散字符两者没有天然可比性。现代多模态模型普遍采用“嵌入空间对齐”的思路分别用视觉编码器和文本编码器把图像、文本映射到同一个向量空间。假设视觉编码器为 (f_{\theta})文本编码器为 (g_{\phi})我们希望对于语义一致的图像-文本对满足[ \text{sim}(f_{\theta}(I), g_{\phi}(T)) \approx 1 ]对于语义不一致的图像-文本对满足[ \text{sim}(f_{\theta}(I), g_{\phi}(T)) \approx 0 ]其中 (\text{sim}) 通常使用余弦相似度。这样图像和文本之间就有了一个统一的度量方式。后续模型在生成文本时可以从视觉特征中“借”语义信息在回答视觉问题时语言模型也能参考图像特征。2.2 对比学习与 InfoNCE 损失让嵌入空间满足上述对齐性质最经典的方法是对比学习。以 CLIP 为代表的训练方式会给模型一个 batch 的图文配对数据 ((I_i, T_i))然后构造正样本对和负样本对。对一个正样本对 ((I_i, T_i))我们希望它的相似度高于所有负样本对。常见损失函数是 InfoNCE[ L_i -\log \frac{\exp(\text{sim}(z_{I_i}, z_{T_i})/\tau)}{\sum_{j1}^{B} \exp(\text{sim}(z_{I_i}, z_{T_j})/\tau)} ]其中 (z_{I_i}) 是图像嵌入(z_{T_j}) 是文本嵌入(\tau) 是温度系数(B) 是 batch size。这个式子的含义是在 batch 内部把“第 i 张图和它的描述文本”当成正例把“第 i 张图和 batch 中其他文本”当成负例。最小化这个损失等于让模型学会区分“正确的图文配对”和“错误的图文配对”。温度系数 (\tau) 的作用值得注意。(\tau) 越小softmax 分布越尖锐模型对负样本的惩罚越强(\tau) 越大分布越平滑训练越稳定。实际训练中这个参数会影响对齐的精度。2.3 生成式 VLM 的条件语言建模另一类 VLM 走生成式路线输入图像和文本前缀输出文本。结构上通常是这样视觉编码器把图片切成 patch得到视觉 token。文本分词器把文本切成 token。所有 token 拼接成一个序列交给 Transformer。Transformer 逐 token 预测下一个 token。数学上生成式 VLM 训练时最大化条件概率[ p(t_1, t_2, ..., t_n | I) \prod_{i1}^{n} p(t_i | t_1, ..., t_{i-1}, I) ]损失函数是每个 token 位置上的交叉熵[ L_{\text{lm}} -\sum_{i1}^{n} \log p(t_i | t_{i}, I) ]这个目标看起来很简单但实际训练中有很多细节比如视觉 token 与文本 token 如何拼接、是否用投影层对齐维度、是否冻结视觉编码器等。2.4 VLM 的边界在哪里VLM 输出是文本不是动作。对于物理AI 的机器人场景这意味着 VLM 可以让机器人“理解任务”但不能直接给出电机控制信号。例如VLM 可以说“红色方块在绿色盒子的左边”但无法直接告诉机械臂“每个关节应该转多少度”。从 VLM 到 VLA最关键的变化就是把“输出文本”替换成“输出动作”或者把“动作”也当作一种 token 来生成。3. VLA 的底层数学逻辑3.1 动作也是一种“语言”VLA 的思想非常直接既然文本可以 token 化动作为什么不能 token 化在 RT-2、OpenVLA 等工作出现后一种通用做法是把机械臂关节角度、末端位置、旋转量等连续动作进行量化转成离散的动作 token然后像单词一样交给 Transformer 生成。数学表达为[ p(a | o, l) \prod_{t1}^{T} p(a_t | o, l, a_{t}) ]其中 (a_t) 是第 t 步动作 token。这里的动作空间可能是关节角度的分桶编码结果也可能是笛卡尔空间坐标的量化值。3.2 动作表征的三种方式实际建模时动作输出可以有三种不同做法。第一种是离散动作 token。优点是可以直接复用语言模型成熟的生成机制缺点是量化会带来误差尤其是高频精细控制场景。例如机械臂末端需要精确移动到毫米级位置过分粗糙的量化可能让动作无法落在目标点上。第二种是连续动作回归。假设动作 (a) 服从高斯分布模型输出均值 (\mu) 和方差 (\sigma)训练时最小化负对数似然[ L_{\text{act}} \sum_{t} \left[ \frac{1}{2} \log(2\pi \sigma_t^2) \frac{(a_t - \mu_t)^2}{2\sigma_t^2} \right] ]这个方法的优点是输出连续、精度高缺点是建模多峰动作分布时表达能力有限。机械臂抓取同一个物体可能有多种轨迹都可行单一高斯分布很难描述这种“多解性”。第三种是扩散策略或流匹配。模型通过逐步去噪的方式生成动作轨迹。常见思路是学习一个从高斯噪声到动作轨迹的映射训练时使用去噪损失[ L \mathbb{E}{t, \epsilon} \left[ |\epsilon - \epsilon\theta(x_t, t, o, l)|^2 \right] ]这种方式能表达多峰动作分布也更适合接触丰富的操作任务但训练和推理成本更高。3.3 VLA 的联合训练目标VLA 同时要保留 VLM 的语言能力也要学会动作预测。常见训练损失是两部分加权求和[ L L_{\text{lm}} \lambda L_{\text{action}} ]其中 (L_{\text{lm}}) 是语言建模交叉熵用于让模型继续理解视觉和语言(L_{\text{action}}) 是动作预测损失用于让模型学会输出动作。(\lambda) 用于平衡两个目标的权重。如果动作是离散 token(L_{\text{action}}) 也用交叉熵如果动作是连续量(L_{\text{action}}) 用 MSE 或高斯负对数似然。3.4 VLA 不只是“加了动作头的 VLM”一个常见误区是认为“给 VLM 加一个动作预测头就是 VLA”。实际上VLA 训练必须让动作条件于当前观察、语言指令和机器人状态而不是简单从语言指令到动作的映射。正确的条件建模应该是[ p(a_t | o_t, l, s_t) ]而不是[ p(a_t | l) ]原因很简单同一个语言指令“把杯子拿起来”在不同场景下动作完全不同。杯子在左边还是右边桌面高度是多少当前机械臂位姿在哪里都会影响动作。如果模型只用语言指令生成动作训练数据稍有偏差模型就会学到错误的“平均动作”。4. WAM 的底层数学逻辑4.1 WAM 要回答什么问题如果说 VLA 解决的是“我现在该怎么做”WAM 要回答的则是“我做了之后世界会变成什么样”。这两个问题在物理AI 中缺一不可。机械臂把杯子推向桌子边缘动作本身可能很标准但如果模型不能预测“杯子到达边缘后可能会掉落”就无法提前调整策略。WAM 的核心数学目标是联合建模动作与状态转移[ p(s_{t1}, a_t | s_t, o_t, l) ]这个式子可以拆成两部分[ p(s_{t1}, a_t | s_t, o_t, l) \pi(a_t | s_t, o_t, l) \cdot p(s_{t1} | s_t, a_t) ]第一部分 (\pi(a_t | s_t, o_t, l)) 是策略决定在当前状态下采用什么动作第二部分 (p(s_{t1} | s_t, a_t)) 是世界动力学描述动作如何改变世界状态。4.2 状态转移的概率建模物理环境的真实状态空间通常非常高维。如果直接用原始图像作为状态模型很难准确预测下一帧图像。所以 WAM 相关模型经常引入“潜在状态” (z_t)。假设编码器把观察映射到潜在状态[ z_t \text{Enc}(o_t) ]转移网络学习潜在状态的动力学[ z_{t1} f(z_t, a_t) \epsilon_t ]其中 (\epsilon_t) 是随机扰动用于表达环境的不确定性。训练时除了状态转移损失还需要解码器重建观察[ \hat{o}{t1} \text{Dec}(z{t1}) ]整个模型的损失包含三部分重建损失让潜在状态保留足够视觉信息。转移损失让潜在状态遵循物理规律。正则化损失防止潜在空间过于复杂。这种做法在 Dreamer、TD-MPC 等工作中有大量实践。它们的共同点是通过“想象”未来状态来帮助决策而不是直接在原始图像空间做规划。4.3 从“预测世界”到“规划动作”有了世界模型之后动作选择就变成一个优化问题。假设奖励函数为 (R(s_t, a_t))目标是最大化累计期望回报[ J \mathbb{E} \left[ \sum_{t0}^{H} \gamma^t R(s_t, a_t) \right] ]其中 (\gamma) 是折扣因子(H) 是规划步长。基于模型的规划MPC会在每一时刻选择一段最优动作序列[ a_{t:tH}^* \arg\max_{a_{t:tH}} J ]WAM 的“模型预测 动作生成”本质就是把世界模型作为模拟器让决策者可以在“想象”中先尝试各种动作再选择最优方案。这比直接执行一个未经预测的动作安全得多。4.4 为什么 WAM 比 VLA 更难VLA 只需要学习“观察-动作”映射属于一种策略拟合。WAM 需要同时拟合策略和世界动力学相当于在策略学习的基础上增加了一个“物理规律学习”约束。世界动力学本身很复杂包含接触、摩擦、遮挡、随机性等因素因此 WAM 的训练数据需求更大模型容量要求更高训练稳定性也更难保证。实际工程中很少一开始就训练一个端到端 WAM一般是先用专用模块建模动力学再通过联合微调让策略与动力学相互对齐。5. 三者的关系与演进逻辑5.1 从只读到会做再到会预测用一句话总结三者的演进VLM让机器理解世界。VLA让机器决策动作。WAM让机器预测动作后的世界变化从而做出更优决策。从数学变量上看VLM 的输出空间是文本词表VLA 的输出空间是动作空间WAM 的输出空间是“动作 未来状态”。每进入下一阶段模型需要表达的变量更多对世界的解释能力更强。5.2 共享底座Token 化与 AttentionVLM、VLA、WAM 在工程实现上都高度依赖 Transformer核心原因之一是 Transformer 对异构 token 的统一处理能力。给定由图像 token、文本 token、动作 token 组成的序列自注意力机制可以计算[ \text{Attention}(Q,K,V) \text{softmax}\left(\frac{QK^T}{\sqrt{d}}\right)V ]它让图像中的物体 token 能关注语言指令中的动词 token也让动作 token 能关注机器人状态 token。这种全局依赖建模能力让多模态融合变得简单。5.3 一张表读懂三者模型输入输出核心条件分布典型任务VLM图像、文本文本(p(T | I, L))图片问答、视觉描述VLA图像、文本、机器人状态动作(p(A | I, L, S))机械臂抓取、移动控制WAM图像、文本、状态、动作状态与动作(p(S, A | S, I, L))规划、物理推理、仿真需要强调的是这三者不是互相替代而是可以组合使用。实际系统中VLM 提供任务理解VLA 提供底层控制WAM 提供未来状态预测三者共同构成完整的物理AI 决策链路。6. 最小教学示例从 VLM 到 VLA 的训练思路6.1 环境准备下面用一个教学级示例说明 VLA 的训练思路。由于该领域依赖迭代很快不绑定具体版本建议使用你自己熟悉的环境组合操作系统Linux / macOS / Windows训练建议 LinuxPython 3.10 或更高版本PyTorch 2.xHugging Face Transformers一个视觉编码器和一个文本编码器如果你只是学习原理可以先在 CPU 上跑通少量数据如果想看真实效果需要 GPU 和机器人专家轨迹数据。6.2 数据格式VLA 训练数据通常是一条“观察-指令-动作”三元组。用 JSONL 格式组织比较方便{ image_path: data/0001.png, instruction: 把红色方块放到绿色盒子里, action: [0.1, -0.2, 0.05, 0.0, 0.0, 0.5, 0.2], state: [0.3, 0.4, 0.2, 0.0, 0.0, 1.0, 0.0] }其中 action 可以表示机械臂末端位姿增量或者关节角变化量实际项目中需要统一坐标定义和单位。6.3 模型结构示意下面代码是教学示意帮助你理解 VLA 的整体结构不代表可以直接复用到生产环境。import torch import torch.nn as nn class SimpleVLA(nn.Module): def __init__(self, vision_encoder, text_encoder, action_dim, hidden_dim512): super().__init__() self.vision_encoder vision_encoder self.text_encoder text_encoder self.action_head nn.Sequential( nn.Linear(hidden_dim, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, action_dim) ) def forward(self, image_feat, text_feat): # image_feat: [B, T_v, D] # text_feat: [B, T_t, D] vision_pooled image_feat.mean(dim1) text_pooled text_feat.mean(dim1) fused vision_pooled text_pooled action self.action_head(fused) return action需要说明的是真实 VLA 会使用更复杂的跨模态注意力机制这里只是为了展示“特征融合后回归动作”的基本思路。6.4 训练循环示例下面是一个最简训练循环示意import torch import torch.nn as nn from torch.utils.data import DataLoader def train_one_epoch(model, dataloader, optimizer, lambda_action1.0): model.train() total_loss 0.0 for batch in dataloader: image_feat batch[image_feat] text_feat batch[text_feat] action batch[action] pred_action model(image_feat, text_feat) loss_action nn.MSELoss()(pred_action, action) loss loss_action optimizer.zero_grad() loss.backward() optimizer.step() total_loss loss.item() return total_loss / len(dataloader)如果模型还同时预测文本可以将语言损失与动作损失相加公式为[ L L_{\text{lm}} \lambda L_{\text{action}} ]6.5 运行验证思路训练完成后可以在验证集上检查两个指标动作预测的平均误差是否下降模型在相同观察和指令下输出动作是否稳定。更接近真实场景的验证是把模型输出的动作送入仿真环境观察机械臂是否完成指令任务。不要一上来就在真机上测试安全风险很高。7. 常见问题与排查思路7.1 VLM 能回答问题但不能输出动作问题现象常见原因解决思路模型只会输出文本输出空间是词表不是动作空间引入动作 token 或动作输出头动作输出不在合法范围内缺少动作约束输出后加限幅、归一化动作有微小抖动未做平滑使用低通滤波或时序平滑7.2 VLA 训练时动作损失不下降问题现象常见原因解决思路动作 loss 不降动作尺度差异太大对动作做归一化模型学会平均动作数据集中同一指令对应多种动作使用扩散策略或多峰建模训练不稳定学习率过大降低学习率增加 warmup7.3 WAM 预测状态不准确问题现象常见原因解决思路预测图像模糊直接在像素空间预测改用潜在状态空间建模长期预测漂移误差逐步累积训练时加入多步预测目标无法处理接触场景训练数据缺少接触信息在数据中增加力/触觉信息7.4 排查建议遇到问题可以从这几个方面入手先看数据动作标注是否准确图像和指令是否对齐。再看损失关注 loss 曲线是震荡、不降还是过拟合。再看输出把预测动作可视化对比专家轨迹。最后看环境检查观测空间、状态定义和坐标系统是否一致。8. 最佳实践与工程建议8.1 数据质量优先于模型规模VLM、VLA、WAM 本质上都是数据驱动的概率模型。数据中的噪声、动作标注错误、指令不一致都会直接体现在模型行为中。实际项目中建议投入大量时间做数据清洗和标注检查。具体可以检查图像与指令是否严格匹配动作坐标系是否统一动作频率和控制周期是否一致是否存在重复或无效轨迹。8.2 从模块化系统开始直接训练一个大一统的 WAM 风险很高。比较稳妥的路线是先用专门模型做视觉感知和物体检测再用状态估计模块获取机器人状态用 VLA 输出候选动作用世界模型对动作结果做预测和筛选。最后再把各个模块做联合微调而不是一开始就用端到端模型。8.3 安全性必须前置物理AI 模型一旦接入真实设备动作输出的安全性非常重要。工程上建议动作输出增加限幅防止超出机器人关节范围设置急停逻辑异常时停止执行在仿真环境大量验证后再切换到真机真实设备操作遵循最小权限原则只在授权测试环境中执行。8.4 重视实验可复现性训练 VLA 或 WAM 成本不低工程上要管理好实验配置。推荐记录随机种子数据集版本模型结构配置学习率调度策略每个 checkpoint 的评估结果。这样可以减少“训练结果无法复现”的问题。9. 总结与学习路线通过本文你应该能理解 VLM、VLA、WAM 三者在数学建模上的核心差异VLM 建模的是图像和文本之间的条件分布VLA 把动作作为输出变量引入概率模型WAM 则进一步加入状态转移预测让模型具备“推测动作后果”的能力。如果想把知识转化为实际能力建议按照下面顺序学习先动手跑一个简单的 VLM 图文检索或图片问答项目理解嵌入空间和对比损失。再找一个开源 VLA 框架观察动作 token 化和策略建模细节建议从单任务机械臂仿真环境开始。最后尝试引入世界模型对比有预测和无预测的动作策略差别深入理解 WAM 的收益与成本。物理AI 领域变化很快但底层数学逻辑相对稳定。无论模型名字怎么变核心依然是条件概率建模、嵌入空间对齐和损失函数设计。掌握了这条主线再读论文和源码会轻松很多。如果你已经在使用 VLM 或 VLA 做机器人项目欢迎在评论区分享你的经验和踩坑记录如果这篇文章对你有帮助也可以收藏备用方便后续查阅。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价