ACT · Action Chunking Transformer Encoder-Decoder · CVAE · Temporal Ensembling
一次预测多步动作 + 建模多模态分布 · VLA 时代的标准动作策略基线
ACT (Action Chunking with Transformers) 是 Zhao et al. 在 2023 年提出的动作策略方法,核心观点很简洁:与其每个时步只预测下一步,不如让 Transformer 一次预测接下来 K 步的整个动作 chunk。这样既能用 Transformer 自回归输出的强表达力建模动作序列的时序依赖,又能通过"一次决策多步"来缓解模仿学习里的累积误差问题。
ACT 于 2023 年作为 ALOHA 论文(arXiv 2304.13705)的一部分发布,并迅速成为后续 VLA 的事实标准 —— 从 π₀ 到 OpenVLA 再到 Qwen-VLA,几乎所有主流 VLA 都采纳了「action chunking」这个输出接口。它不是语言模型,也不需要外部语言知识,但在「怎样把连续动作接到 VLM 上」这个问题上定义了一条关键的技术路线。
为什么需要 Action Chunking?—— 三个问题
问题 1:模仿学习的累积误差
传统策略网络在训练时吃的都是"正确"的前置状态(人类演示的状态序列),但部署时一旦动作有偏,后续状态就偏离分布了 —— 这叫 distributional shift 或 compounding error。误差随时间步 t 呈平方增长 O(T²)。
一次预测 K 步而不是一步,相当于把决策间隔从 dt 拉长到 K·dt,累积误差变成 O((T/K)²) —— 即便网络不完美,整个轨迹也能撑得更久。
问题 2:机器人动作的多模态分布
同一个观测状态下,人类可以有多种「正确」的动作选择。比如拿一个物体,可以从左边拿、从右边拿,夹力可以轻可以紧 —— 都能完成任务。如果用 L2 loss 直接回归期望动作,网络会平均这些模式,输出的往往是"既不左也不右"的模糊动作,导致执行失败。
ACT 用条件 VAE (Conditional Variational Autoencoder) 来处理这个问题:encoder 把人类的完整 K 步动作 chunk 编码成一个隐向量(capture 其"风格"),decoder 在推理时可以从这个分布采样(引入随机性),从而能表达多模态的决策。
问题 3:动作序列的时序一致性
K 步动作不是独立的 K 个点,而是一条连贯的轨迹。Transformer decoder 通过自回归(每一步都能看到前面的预测结果)天然地建模这种时序依赖,输出的动作序列更平滑、更"人类"。
核心机制
1. Action Chunking:一次预测 K 步
模型的输出不是单个动作,而是一个向量序列 [a_t, a_{t+1}, ..., a_{t+K-1}]。在 ALOHA 论文的实现中,K = 100,采样频率 50 Hz,相当于预测 2 秒的动作。
推理时每一步(或每 M 步)都新生成一整个 chunk,然后融合预测(见下面的 Temporal Ensembling)。
2. Encoder-Decoder Transformer
Encoder:吃观测(图像特征 + 关节角度),输出中间表示。
Decoder:自回归式输出 K 步动作。在推理时,前几步的输出依赖 encoder 的输出和前面步骤的动作;后面的步骤逐步依赖更多的"自己预测的上文"。
3. Conditional VAE:建模多模态
在训练时:
- Encoder(另一个网络)把人类演示的完整 K 步 chunk 编码成一个低维隐向量
z ~ N(μ, σ) - Policy decoder 以
[observation, z]为条件,解码出动作 chunk,并用监督损失(比如 L2)约束输出跟人类演示一致 - 隐向量
z上加 KL 散度损失,鼓励μ, σ接近标准正态分布
在推理时:
- CVAE 的 encoder 不需要了(因为没有标准答案可以编码)
- Decoder 从标准正态分布里采样
z ~ N(0, I),条件生成动作 - 每次采样得到的 chunk 都略有不同("风格"不同),增加多样性
这让模型能学到数据中的多模态,也能在推理时表达多模态,而不是坍缩到平均值。
4. Temporal Ensembling:融合重叠预测
推理的典型流程:
- 当前帧生成 chunk
[a_t, a_{t+1}, ..., a_{t+K-1}] - 执行
a_t(或前几步a_t, a_{t+1}, ...),观测结果更新 - 下一个时步(或下 M 步)再生成一个新的 chunk
- 新 chunk 和旧 chunk 在时间上有重叠 —— 用指数加权融合重叠部分
这样可以:
- 每一步都有新鲜的观测反馈(闭环反应)
- 又不会因为高频重新生成而积累误差
- 融合的权重通常是指数衰减的(越靠近当前时步权重越大)
与其他动作策略的对比
| 维度 | ACT (本页) | Diffusion Policy | Flow Matching | Discrete Action Token |
|---|---|---|---|---|
| 动作表示 | 连续向量 | 连续向量 (+ 噪声) | 连续向量 (+ ODE flow) | 离散 token (自回归) |
| 多模态建模 | CVAE 采样 | 去噪扩散固有多模态 | 流匹配固有多模态 | 多头输出或采样 |
| 网络结构 | Encoder-Decoder Transformer | U-Net / DiT | Transformer / DiT | Transformer (LLM-like) |
| 推理成本 | 单次前向 (K 步) | 多步去噪 (50-100 步) | 多步积分 (10-30 步) | 自回归生成 (K tokens) |
| 代表工作 | ALOHA / Mobile ALOHA | Diffusion Policy / GR00T | Qwen-VLA / π₀ | RT-2 / OpenVLA |
技术细节 —— ALOHA 论文里的配置
模型规格
- Chunk length K:100 步(在 50 Hz 采样率下 = 2 秒)
- Encoder:ResNet-50 提取图像特征 + 线性层处理关节状态 → 拼接
- Decoder:6 层 Transformer decoder · 8 个 attention head
- 隐向量维度:64(CVAE 的 latent space)
- 输出动作维度:Interbotix ViperX 300 S 双臂 = 12 DoF (6 + 6) + 2 夹爪 = 14 维
训练配置
- 损失函数:
- Policy decoder 输出的 chunk:L2 loss 到人类演示
- CVAE encoder:KL 散度 (鼓励 latent 接近标准正态)
- 加权求和
- 优化器:Adam
- 数据:单个任务 ~10 分钟真机演示(对 ALOHA 而言)
- GPU 训练时间:约 5 小时(单个 RTX 3090 任务;见 ALOHA 页)
推理(Temporal Ensembling 细节)
- 每个控制周期(如 20 ms)调用一次 policy 网络生成新 chunk
- 新 chunk 和旧 chunk 在时间轴上重叠约 50%
- 融合权重:当前步 100%,未来步骤指数衰减(典型参数 decay = 0.01)
- 执行融合后的动作,更新观测
局限与取舍
- 无语言输入:ACT 本身只处理视觉-动作,不涉及语言。当作为 VLA 的一部分时,需要上层 VLM 把语言指令映射到观测或动作空间。
- Chunk 长度是超参:K=100 对 ALOHA 的 50 Hz 控制和精细操纵任务合适,但对不同硬件和任务类型可能需要调整。过长的 chunk 预测准确率下降,过短则累积误差优势不明显。
- CVAE 隐向量是任务特定的:隐向量维度和分布特性需要针对每个任务选择。迁移学习时可能需要重新调整。
- 对图像质量敏感:Temporal ensembling 依赖于快速、可靠的闭环反馈。如果摄像头卡顿或分辨率低,融合机制效果会下降。
- 没有完全的显式规划:ACT 是"反应式"策略 —— 每 chunk 都基于当前观测生成,没有显式的长期规划或约束(虽然通过 K 步预测隐含了这一点)。
后续工作与影响
直接继承 ACT 的工作
- Mobile ALOHA (2024):增加移动底盘,动作维度增大(加上底盘的 3 DoF),chunk 和 CVAE 随之调整。共训静态+移动数据能显著提升成功率。
- ALOHA 2 (2024, Google DeepMind):标准化硬件(夹爪 / 工作台高度),降低对精确校准的要求,但 chunk 框架和 CVAE 基本保留。
- LeRobot 框架:Hugging Face 的开源具身模型框架大量采用 ACT 作为基线动作策略(
lerobot/aloha_*任务集)。
启发其它 VLA 的概念
- π₀ / π₀.₅:保留 action chunking 的思想(K=32-64),但换成 flow matching 代替 CVAE + Transformer,并接入 VLM。
- OpenVLA:也采用 action chunking,但将动作离散化为 token,改为 LLM 自回归生成(适应 Llama backbone)。
- Qwen-VLA:action chunking 保留(K=64),但动作专家从 ACT 的 encoder-decoder 转换为 DiT flow-matching,以获得更平滑的轨迹。
对比与未解决的问题
- ACT vs Diffusion Policy:ACT 单次前向快速(毫秒级),但可能缺少 diffusion 那种"多步去噪逐步精化"的优势。Diffusion Policy 推理慢但轨迹质量可能更稳定。
- ACT vs Flow Matching:Flow matching 被现代 VLA (π₀、Qwen-VLA) 广泛采用,原因是它比 diffusion 积分步数少、比 ACT 的 CVAE 有更通用的多模态建模。但 ACT 的 temporal ensembling 策略在其它方法中鲜见。
- 为什么没有 ACT-based VLA?:主要是因为后续工作发现 flow matching / diffusion 在大规模预训练上更稳健;CVAE 的隐向量对新任务的泛化不如生成模型。但 ACT 的 chunk 预测思想已成为标准。
关键论文与开源资源
lerobot/aloha_* 任务数据集为什么仍然重要?
ACT 论文发布于 2023 年 4 月,距今已有 3 年,但「action chunking」作为动作输出接口的概念仍然是标准配置。原因有几个:
- 简洁而有效:核心思想就是"一次预多步+CVAE建模多模态+融合重叠预测",不需要复杂的框架。
- 开源友好:ALOHA 硬件 BOM 公开、代码开源,导致大量研究组能复现和改进。
- 与 VLM 自然兼容:VLM 输出的 embedding 或 token 可以直接接上 ACT-style decoder,不需要额外的"语言→动作"转换层。
- 累积误差的直觉正确:预测多步来缓解 compounding error 这个直觉在高精度控制(精细操纵)中被反复验证。
即便现在的 π₀、Qwen-VLA 等选择了 flow matching 而非 CVAE,它们仍然保留了 chunk 预测(通常 K=32-64),这正是 ACT 的核心思想的延续。