1. 核心设计思想:为什么要提出 ACT?
传统的行为克隆(Behavioral Cloning, BC)等模仿学习算法在处理精细操作时,通常是“给定当前状态,预测下一步动作(单步预测)”。这会带来两个致命问题:
- 复合误差放大: 在精细操作中,一毫米的偏差就会导致任务失败。单步预测的微小误差会在数千步的长周期任务中不断累积,最终让机器人偏离训练数据分布。
- 人类数据的“非马尔可夫性”: 人类在操作时会有停顿、纠正,或者面对同一情况有不同的处理方式(多模态)。单步策略很难理解“我停在这里是因为我刚才打算这么做”,从而导致模型困惑(Causal Confusion)。
ACT 通过**“动作分块(Action Chunking)”和“生成式建模(CVAE)”**完美解决了这些问题。
2. ACT 的三大核心机制
① 动作分块 (Action Chunking)
受神经科学启发(人类在执行动作时大脑是按“块”来处理的,比如“抓取糖果纸的一角”作为一个整体),ACT 抛弃了单步预测。
- 做法: 策略模型在接收到当前时间的观察 后,不是预测 ,而是一口气预测未来 个时间步的动作序列 。
- 优势: 这相当于把任务的“有效视野”缩短了 倍。如果一个任务需要 1000 步,设 ,模型实际上只需要做 10 次大决策。这就极大地切断了误差不断累积的链条,同时也顺便解决了人类演示中短暂停顿带来的混杂因素。
② 时间集成 (Temporal Ensembling)
如果仅仅是“观察一次 -> 闭眼执行 步 -> 再观察一次”,机器人的动作在两次切换之间会非常僵硬和卡顿。
- 做法: 论文提出在每一个时间步都去查询策略。这意味着对于时间步 的动作,模型在 到 的每一次预测中都给出了建议(即会有 个重叠的预测值)。
- 加权平均: ACT 对这 个针对同一时间步的预测动作进行指数加权平均()。越早前的预测权重和最新预测的权重会有区分。
- 优势: 这种做法不需要增加任何训练成本(只需推理时计算),就能让原本离散的“动作块”完美融合,产生极其平滑且精准的物理运动。
③ 处理人类数据的多模态 (CVAE 生成模型)
同一个人做同一个任务,每次的轨迹也会不一样(比如递胶带时,交接的具体空间位置每次都在变)。如果用普通的均方误差去强制拟合,模型最后只能学到一个“平均动作”,往往导致双臂相撞。
- 做法: ACT 将策略训练成一个条件变分自编码器(Conditional VAE, CVAE)。它引入了一个隐含的“风格变量(Style Variable)” 。 负责吸收人类演示中的随机性和多模态变化。
- 推理阶段: 在实际部署测试时,直接将 设置为先验分布的均值(即全零向量),从而实现确定性且高精度的动作输出。
3. ACT 的网络架构细节
ACT 的架构大量使用了 Transformer 和 ResNet,总参数量约 80M(8000万)。分为训练时的 Encoder 和 推理时的 Decoder(即最终的策略)。
CVAE Encoder(仅在训练阶段使用)
- 输入: 真实的关节位置 + 真实的未来 步动作序列(从演示数据中采样) + 一个可学习的
[CLS]token。 - 处理: 使用类似 BERT 的 Transformer 编码器处理这段序列。
- 输出: 取出
[CLS]对应的特征,通过线性层预测出风格变量 的均值和方差(参数化为对角高斯分布)。
CVAE Decoder / Policy(训练和推理阶段的核心)
这就是机器人在实际运行时的大脑,分为视觉处理、特征融合和动作生成:
- 视觉处理 (ResNet18): 机器人有 4 个摄像头(顶部、前置、左右手腕)。每个摄像头拍到的 RGB 图片(480x640)通过 ResNet18 提取特征,加上 2D 正弦位置编码以保留空间信息,最后展平并拼接成一个很长的视觉特征序列。
- 特征融合 (Transformer Encoder): 将上面得到的 4 视角视觉特征,加上当前的关节位置信息(投影为 embedding),再结合隐含变量 ,一起送入 Transformer 编码器中进行信息融合。这一步让模型综合理解“我看哪里”和“我手在哪里”。
- 动作序列生成 (Transformer Decoder): 使用交叉注意力机制(Cross-Attention)。查询(Queries)是固定长度为 的位置编码,键(Keys)和值(Values)来自上一步 Encoder 的输出。最终 Decoder 直接吐出一个维度为 的张量(代表未来 步,左右双臂各 7 个自由度的绝对目标关节位置)。
关键的训练细节
- L1 Loss 取代 L2: 论文发现,使用 L1 损失函数(绝对误差)来重建动作序列,比常用的 L2(均方误差)能产生更高精度的动作模型。
- 绝对位置取代相对增量: 模型直接预测机械臂下个时刻的“目标绝对关节位置”,而不是“关节需要移动的增量(delta)”,这在实验中被证明能显著减少性能退化。
**总结来说,ACT 算法的精妙之处在于:**用 Transformer 强大的序列生成能力来实现“动作分块(Chunking)”,用 CVAE 消化了人类动作的噪声,再配合“时间集成”确保高频执行的平滑性,最终让低成本硬件实现了极其惊艳的毫米级闭环精细操作。