ACT、Diffusion Policy、 π0、π0-fast、SmolVLA(1)

📅 2026/7/11 2:41:30
ACT、Diffusion Policy、 π0、π0-fast、SmolVLA(1)
1、传统行为克隆为什么不够最普通的行为克隆可以写成输入当前观测​模型预测当前动作。它通常每次只预测一步。只要某一步出现一点误差下一步的状态就会偏离训练数据误差可能不断累积。同时对于同一个状态演示者可能有多种合理行为。例如抓取杯子时可以从左侧接近也可以从右侧接近。普通均方误差回归可能把两种轨迹平均生成一条两边都不像的动作。因此后来的模型主要围绕两个问题展开如何生成时间上连续的一段动作如何表示多种可能的合理动作。这五种机器人策略实现方式都在解决同一个基本问题当前观测任务要求⟶机器人接下来应该执行什么动作其主要区别在于动作生成方式ACT直接回归Diffusion Policy通过扩散模型去噪生成π₀和SmolVLA通过Flow Matching生成连续动作π₀-FAST自回归预测离散动作Token。这些训练数据本质上通常都是一段段机器人演示轨迹其中观测o包含相机图像、关节角等VLA还会多一个语言指令动作可能是末端增量也可能是关节角。2、ACT从预测一步变成预测一段Action Chunking with Transformers(ACT)来自论文Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware相机图像 ────────┐机器人关节状态 ────┼→ Transformer → 一段动作序列示范动作潜变量 ────┘ACT主要使用CVAE和Transformer一次预测未来一段动作主要目标是通过模仿学习完成精细双臂操作。它主要针对两个问题策略误差随时间累积以及人类演示具有非平稳性。单步预测用的是MLP它没时间概念只能输入一个点输出一个点。而ACT的解码器是Transformer可以进行并行输出通过自注意力和位置编码可以同时实现多步并行输出。CVAE带条件的VAEACT根据当前的视觉图像和机器人关节角度为条件进行生成。ACT一般先使用CNN例如ResNet对不同相机图像提取视觉特征然后把图像特征、机器人状态和潜变量转成一组Token这些Token进入Transformer Encoder得到环境条件特征Transformer Decoder中放入 k个动作查询每个查询负责一个未来的动作。多视角图像 当前关节状态↓CNN视觉特征提取↓Transformer编码↓一次输出未来K步动作↓Temporal Ensemble平滑执行本质上还是行为克隆。局限ACT通常还是一个具体机器人、具体任务数据上训练的策略。它本身通常没有很强的语言理解也不是在大规模多机器人数据上预训练的通用模型所以ACT更接近高性能的单任务或少任务模仿学习策略。2、Diffusion PolicyDiffusion Policy来自论文Diffusion Policy: Visuomotor Policy Learning via Action Diffusion与ACT并列为动作块生成的两大主流。它通过从随机噪声动作开始多次去噪最后生成一段合理动作。训练时先取一段真实专家动作然后随机选择一个扩散时间步 kkk向动作加入高斯噪声Diffusion Policy不直接学习图像到动作而是图像 带噪动作 噪声程度 —— 这段动作里包含什么噪声只要能准确预测噪声就可以逐步把噪声动作还原为真实动作。看到这里有一个很自然的问题为什么选择预测噪声而不是直接预测动作高斯噪声具有完美的对称性和数学可导性而机器人的动作则充满了非线性和奇异点。用简单的噪声作为桥梁去逼近复杂的动作难度下降很多同时可以解决多模态的回归到均值问题。局限Diffusion Policy生成一个动作要非常多补的去噪过程推理延迟高计算开销大原版DP使用U-Net长序列能力较弱且存在偏差积累问题。3、π₀ACT和Diffusion Policy主要从当前机器人数据中学习动作而π₀首先有一个预训练视觉语言模型再把机器人状态和动作接入模型。π0来自论文π0: A Vision-Language-Action Flow Model for General Robot Control。它基于预训练PaliGemma并增加机器人专用的状态和动作通路通过条件Flow Matching生成连续动作块。图像 语言↓大型VLM 提取场景与任务语义↓条件特征传给Action Expert↓机器人状态 带噪动作 流时间t↓Action Expert↓预测动作速度场相机图像通过视觉编码器得到视觉Token图像Token和语言Token进入PaliGemma VLM形成语义上下文。VLM负责看懂要做什么Action Expert负责生成怎么动。因为机器人动作是一个连续高频的对象如果直接让语言模型逐个输出离散动作Token可能产生非常长的序列。Action Expert 本质上是一个去噪网络它的任务是在Flow Matching框架下根据当前“带噪的动作块”预测出速度场从而指导动作块从纯噪声逐步演化为干净、可执行的动作序列通常是一个Transformer。关于Flow MatchingFlow Matching可以算是扩散模型的变体都是希望将随机噪声转变为动作。但Flow Matching主要学习一个速度场即这个噪声应该往哪个方向变化才能逐渐变成真实动作。扩散模型的路径是随机微分方程SDE而Flow Matching是常微分方程ODE。速度场是平滑且确定的没有随机扰动项故Flow Matching在推理时可以用大步长推理效率相比扩散模型快很多。π0的训练一般分为预训练和后训练微调。预训练使用多种机器人、多种任务的大规模数据训练目标是让模型获得多机器人动作模式、物体操作先验、语言任务理解和一定的跨任务迁移能力。其原文中预训练规模超过一万小时机器人数据并结合多个机器人平台和任务。后训练再使用某个目标任务的高质量数据微调这与前面ACT这种直接使用当前任务演示训练的方法差异很大。图像 → 视觉编码器 → 图像Token语言 → 文本Tokenizer → 文本Token↓VLM↓任务条件表示↓随机动作块 当前状态↓Action Expert↓多步Flow Matching求解↓动作块↓执行前几步滚动预测↓重新观察再预测