P-ACT-ALOHA-2023 · ACT / ALOHA 单篇深度笔记
一句话定位
ACT(Action Chunking with Transformers) = CVAE-Transformer 一次预测一整段动作 chunk + temporal ensemble 平滑;ALOHA = 两万美元级双臂遥操系统。算法 + 硬件打包,让「精细双臂模仿」从百万美元实验室专属变成社区可复现的范式。
动机
作者想做精细双臂操作(开拉链、装电池、撕胶带),但遇到两个工程瓶颈:
- 现有 IL 算法(朴素 BC)在双臂 14 自由度、多模态动作上崩;
- 没有便宜的双臂数据采集平台——传统 leader-follower 工业臂百万美元级,社区没法复现。
ACT 解决 (1),ALOHA 解决 (2)。这是为什么论文标题是「Learning ... with Low-Cost Hardware」——硬件是核心贡献之一。
方法核心:ACT 的 CVAE
1. 为什么用 CVAE
和 Diffusion Policy 一样,ACT 要解决多模态动作分布。但作者没选 diffusion,选了 Conditional VAE——用一个低维 latent style 变量 $z$ 隐式建模多模态。
直觉:演示里对同一个观测 $o$ 有多种正确动作 $a$(mode),用一个 latent $z$ 把「这次是哪个 mode」编码进去。名义上推理时从先验采样 $z$ 相当于「随机挑一个 mode」,但 ACT 实际不采样(见下,$z=0$)。
2. 数学:CVAE 的 ELBO(基于 PDF 正文,§IV.B + Algorithm 1)
设观测 $o$(4 张 RGB 图像 + 双臂 14 DoF 关节),动作 chunk $a_{t:t+k}$(未来 $k$ 步动作,Table III: $k=100$),latent style $z$(论文没显式给 dim,但实践中常用 1–32 的小维度,因为是「style」变量)。
- encoder $q_\phi(z\mid a_{t:t+k}, \bar o_t)$:训练时从 $(a_{t:t+k}, \bar o_t)$ 抽 $z$,参数化为对角高斯(mean + variance)。为了训练快,encoder 故意不看图像——只看关节位置 $\bar o_t$(去掉 image)+ 目标动作序列。这是「encoder 只在训练时用」所以可以省图像。
- decoder / policy $\pi_\theta(\hat a_{t:t+k}\mid o_t, z)$:从 $(o_t, z)$ 生成动作 chunk,包含图像 + 关节。
- 先验 $p(z\mid o) = \mathcal{N}(0, I)$:训练和推理都用标准正态。推理时 $z$ 直接置为 0(先验均值),deterministic decode——这是 ACT 反直觉的关键:名义上是 CVAE,实际接近 deterministic policy。
精确训练目标(Algorithm 1 原文):
$$\mathcal{L} = \underbrace{\|\hat a_{t:t+k} - a_{t:t+k}\|_1}_{\mathcal{L}_\text{reconst}} + \beta\,\underbrace{D_{KL}\big(q_\phi(z\mid a_{t:t+k}, \bar o_t)\,\big\|\,\mathcal{N}(0, I)\big)}_{\mathcal{L}_\text{reg}}$$
- ⚠️ loss 表述论文内部不一致:§IV.C 正文明确写 "We use L1 loss for reconstruction instead of the more common L2 loss";但 Algorithm 1 伪代码写 $\mathcal{L}_\text{reconst}=\text{MSE}$。官方
tonyzhaozh/act与 LeRobot 实现用 L1,与 §IV.C 一致——Algorithm 1 的 MSE 应理解为伪代码简记。 - $\beta=10$(Table III 唯一给出值,不是 10–100)。论文 §IV.B:「higher $\beta$ will result in less information transmitted in $z$」(PDF 此句 cite [62] Tishby 信息瓶颈;β-VAE [23] Higgins 2017 被 cite 于 β 加权 KL 项本身)。直觉:$\beta$ 大把 posterior 推向 prior,让 $z$ 携带信息少、接近 deterministic;这是 ACT 在多模态不强时性能稳的关键。
- KL 闭合形式:posterior 是 diag Gaussian、prior 是标准正态,两者 KL 有解析式直接计算(非 Monte Carlo)。Adam 优化,lr $10^{-5}$,batch 8。
3. 架构:Transformer encoder-decoder(基于 PDF 正文,§IV.C + Table III)
总参数量 ~80M(论文原话 "around 80M parameters"),单 11G RTX 2080 Ti 训 5 小时,推理 0.01s。
- CVAE encoder(BERT-style):输入 $(a_{t:t+k}, \bar o_t)$,前置一个 learned
[CLS]token,序列长度 $k+2=102$。过 transformer encoder 后,取[CLS]对应的 feature 预测 $z$ 的 mean/variance。 - CVAE decoder(policy):
- 4 张 $480\times640$ RGB 图像 → ResNet-18 → 各自 $15\times20\times512$ feature map → flatten + 2D sinusoidal positional embedding → $300\times512$ per image → 4 张图 concat 成 $1200\times512$。
- 追加 2 个 token:关节位置(14D 投影到 512)+ style variable $z$(投影到 512)。最终 encoder 输入序列 $1202\times512$。
- transformer decoder 用 cross-attention 接 encoder 输出,input sequence 是固定 PE,维度 $k\times512=100\times512$,输出 $k\times512$ → MLP 下投到 $k\times14$(双臂 14 DoF 绝对关节位置)。
- 超参(Table III):lr $10^{-5}$,batch 8,encoder 4 层 / decoder 7 层,feedforward dim 3200,hidden dim 512,#heads 8,chunk size $k=100$,$\beta=10$,dropout 0.1。
- 动作空间:双臂各 7 DoF = 14 维绝对关节位置(不是 delta,论文实测 delta 性能更差)。chunk 输出 $k\times14$ 张量。
- 不是 autoregressive:transformer decoder 一次性并行解码整个 100 步 chunk(这就是 ACT 名字里 "Chunking with Transformers" 的含义)。
4. Action Chunking + Temporal Ensemble(基于 PDF 正文,§IV.A + Algorithm 2)
Chunking(论文原话):"every $k$ steps, the agent receives an observation, generates the next $k$ actions, and executes the actions in sequence"。chunk size $k=100$,带来 $k$-fold reduction in effective horizon——这是 ACT 抗 compounding error 的核心机制。chunking 还顺带解决 non-Markovian confounder(人类 demo 里的停顿、犹豫)——单步 BC 处理不了这种 timestep-dependent 行为,但只要 confounder 落在一个 chunk 内就被吸收。
Receding horizon(关键差异 vs 朴素 chunking):ACT 不是每 100 步才重新观测,而是每个 timestep 都重新推理一次(Algorithm 2)。这样多个 chunk 在时间上 overlap:timestep $t$ 时 FIFO buffer $B[t]$ 里会有多个 chunk 对这一步的预测。
Temporal ensemble 精确公式(Algorithm 2 原文):设 $B[t]$ 中存了 $n$ 个预测 $A_t[0], \ldots, A_t[n-1]$($i=0$ 最老,越新 index 越大),加权平均输出动作
$$a_t = \frac{\sum_i w_i A_t[i]}{\sum_i w_i}, \qquad w_i = \exp(-m\cdot i)$$
- $i=0$ 对应最老的预测(PDF §IV.A 原文:"$w_0$ is the weight for the oldest action"),$w_0=\exp(0)=1$ 最大;$i$ 越大(越新)权重越小——越老越信。
- $m$ 控制新观测的吸收速度(PDF §IV.A 原文:"a smaller $m$ means faster incorporation"):$m$ 小→权重趋于均匀→最新预测占比大、吸收快(反应快但平滑弱);$m$ 大→最老预测($w_0$)主导、新观测几乎被忽略(平滑但反应慢)。
- 关键设计:和典型滑动平均 smoothing 不同,temporal ensemble 聚合的是同一 timestep 的多个预测(不是相邻 timestep 的动作)——因此无偏,不会引入 bias,且只在推理时多算几次前向,训练零成本。
- 消融(§VI-A, Fig. 8b):temporal ensemble 显著提升 ACT 和 BC-ConvMLP 的成功率,但对 VINN 反而掉点——说明 TE 不是万能 smoothing trick,依赖方法的特性。
chunk size $k$ 的消融(Fig. 8a):$k=1$(无 chunking)成功率 1%;$k=100$ 涨到 44%;$k=200/400$(接近 open-loop)反而下降——chunk 太长失去 closed-loop 修正能力。$k=100$ 是 sweet spot。
CVAE 的消融(§VI-B, Fig. 8c):scripted demo 上 CVAE 没差别(数据 deterministic),human demo 上去掉 CVAE 成功率从 35.3% 掉到 2%——证明 CVAE 在 noisy/multimodal 人类数据上是必要的。
为什么重要
- 和 Diffusion Policy 平行收敛:两个独立团队同月给出 IL 的「双重创新」(多模态生成 + chunking),证明这是当时唯一正确的方向。一个走 diffusion,一个走 CVAE,定义了后续 IL 的两条主路线。
- ALOHA 硬件范式改变了整个社区。低成本双臂 teleop 让「精细双臂数据采集」普及,后续 Mobile ALOHA [Fu 2024, arxiv:2401.02117]、HumanPlus、甚至 π0 的数据采集都沿用 ALOHA leader-follower 范式。这是这篇论文最大的产业影响,比 ACT 算法本身影响更大。
- ACT 的思想(多 token 并行解码 + chunking)后来回流进 VLA——OpenVLA-OFT [Kim 2025, arxiv:2502.19645] 就是把 ACT 的 chunking 塞回离散 token VLA,把 LIBERO 从 76.5% 拉到 97.1%。
ACT vs Diffusion Policy:核心权衡
| 维度 | ACT (CVAE) | Diffusion Policy (DDPM) |
|---|---|---|
| 多模态建模 | latent $z$ 隐式 | 高维动作空间显式采样 |
| 推理速度 | 单次前向,快 | 50–100 步去噪,慢 |
| 表达能力 | 弱(一个 latent 维度) | 强(迭代去噪) |
| 训练稳定性 | 稳 | 偶尔不稳 |
| 适用场景 | 数据中等、任务多模态不极端 | 数据稍多、多模态强 |
经验结论:精细双臂(自由度高、数据中等、多模态不算极端)首选 ACT;多模态极强、推理频率要求不高的任务用 Diffusion Policy。这也是为什么 LeRobot 默认推荐 ACT 上手。
ALOHA 硬件细节
- 4 个 ViperX 300 机械臂:2 个 leader(人操作,无电机只有编码器)+ 2 个 follower(同步跟随 leader,记录关节角);
- 成本约 2 万美元(对比传统工业双臂百万级);
- 直接在关节空间记录动作(不是 Cartesian),避免逆运动学误差,让 follower 能 1:1 复现 leader;
- 后来 Mobile ALOHA 加移动底盘,是 2024 年初引爆社区的那一波。
局限与被后续工作解决
| 局限 | 解决者 |
|---|---|
| CVAE 表达弱,强多模态任务不如 diffusion | Diffusion Policy 在强多模态任务上更强 |
| 单臂/双臂固定配置,不跨本体 | Mobile ALOHA 加底盘;后续 VLA 跨本体 |
| 没有语言/语义理解 | 后来 ACT + language(BridgeData 风格)/ Mobile ALOHA co-training |
| 双臂数据采集成本还是不低 | AVP 采集(iDP3)、RGB 单目(HumanPlus)进一步压成本 |
复现要点
- 官方代码
tonyzhaozh/act(Mobile ALOHA / HumanPlus 才在MarkFzp下),ALOHA 硬件 BOM 完全开源; - LeRobot 的 ACT 实现最易上手;
- 关键超参(Table III 校核):chunk size $k=100$、$\beta=10$、encoder 4 层 / decoder 7 层、hidden 512、feedforward 3200、lr $10^{-5}$、batch 8、dropout 0.1、总参 ~80M。⚠️ temporal ensemble 的 $m$ 论文未给数值(Table III 不含 $m$;§IV.A 仅定性说「smaller $m$ means faster incorporation」),常用值 $m=0.01$ 来自官方代码。
- 常见坑:① $\beta$ 太小(KL 太强)会让 $z$ 失效、性能掉;② 没开 temporal ensemble 双臂会抖;③ reconstruction 用 L1(§IV.C 正文 + 官方实现);Algorithm 1 伪代码写 MSE 是简记,复现照 L1 即可。
与本线索其他工作的关系
- 平行解:Diffusion Policy [Chi 2023, arxiv:2303.04137],详见 P-DiffusionPolicy-2023.md。
- 直接后继:Mobile ALOHA(加移动底盘)、OpenVLA-OFT(chunking 回流 VLA)、ACT + diffusion 融合工作。
- 生态:ALOHA 数据范式被 π0 / GR00T / HumanPlus 等几乎所有后续 IL 工作沿用。