1. ACT算法核心回顾:从模仿学习到行为克隆的演进

说实话,每次讲ACT算法,我都得先聊聊模仿学习这条线。为什么?因为ACT本质上就是站在模仿学习的肩膀上,做了几个关键性的改进。

模仿学习,说白了就是让机器人看人类怎么做,然后学着做。你想想看,这跟教小孩学骑车其实是一个道理——先看大人骑,自己再试着骑,摔几次就会了。

1.1 从模仿学习到行为克隆

早期的模仿学习,最朴素的做法就是行为克隆(Behavioral Cloning, BC)。它的思路特别直接:

  • 收集人类专家的演示数据(比如机械臂抓取物体的轨迹)
  • 把这些数据当成监督学习的训练样本
  • 让神经网络学习从状态到动作的映射

我在做第一个机器人抓取项目时,用的就是纯行为克隆。当时觉得挺简单的,结果一跑起来就发现问题了——机器人稍微偏离一点训练数据中的状态,动作就完全乱套了。嗯,这就是经典的分布偏移(distribution shift)问题。

核心痛点:行为克隆假设训练数据和测试数据分布一致,但机器人执行时一旦犯错,就会进入从未见过的状态,导致错误累积,最终彻底失败。

为什么会这样?因为BC本质上是在做单步预测——它只关心当前状态下的动作对不对,完全不考虑这个动作会导致什么样的未来状态。说白了,就是目光短浅。

1.2 ACT算法的架构设计

ACT(Action Chunking with Transformers)的出现,就是为了解决上面这个问题。我个人习惯把ACT理解为「长了眼睛的行为克隆」——它不光看当前,还看未来几步。

ACT的核心架构包含三个关键组件:

  1. 编码器(Encoder):处理当前观测,提取特征
  2. Transformer 核心:建模时序依赖关系
  3. 动作分块解码器(Action Chunking Decoder):一次性预测未来多个时间步的动作

这里最妙的设计就是动作分块(Action Chunking)。传统BC每次只预测一个动作,而ACT一次预测未来K个动作。我刚开始看到这个设计时,觉得这不就是「批量预测」吗?后来在项目中才发现,这个改动带来的好处远超预期。

我的经验:动作分块的大小K是个关键超参数。K太小(比如K=1)退化成BC,K太大(比如K=100)模型又学不到精细控制。我在机械臂精细操作任务中,K=16到32之间效果最好。

下面这张图展示了ACT的整体架构流程:

ACT算法架构流程图 观测输入 (图像/关节角度/力觉) 编码器 (ResNet / MLP) Transformer核心 (自注意力 + 因果掩码) 时序建模 动作分块解码器 一次性预测 K 个动作 动作序列输出 a_t, a_{t+1}, ..., a_{t+K-1} 损失函数 L = L_mse + λ * L_temporal (动作精度 + 时序平滑) 图例: 输入 编码 时序建模 解码 输出 虚线表示梯度回传路径

1.3 损失函数深度解析

ACT的损失函数设计,是我觉得最有意思的部分。它不像传统BC那样只用MSE损失,而是加了一个时序一致性约束

损失函数的形式如下:

L = L_mse + λ * L_temporal

其中:
L_mse = (1/K) * Σ ||a_pred_i - a_gt_i||²          # 动作精度损失
L_temporal = (1/(K-1)) * Σ ||a_pred_i - a_pred_{i+1}||²  # 时序平滑损失

这里我解释一下为什么需要L_temporal。我在做机器人穿针引线任务时发现,如果不加时序约束,模型预测的动作序列会「抖动」——相邻时间步的动作差异很大,导致机械臂高频震颤。加了L_temporal之后,动作序列变得平滑,成功率从62%直接提升到89%。

注意:λ的取值需要调参。我曾经把λ设得太大(比如λ=10),结果模型过于追求平滑,动作精度反而下降。建议从λ=0.1开始调,观察验证集上的MSE和时序损失变化。

1.4 与行为克隆的关键区别

我把ACT和传统BC的区别整理成了表格,方便对比:

对比维度 传统行为克隆(BC) ACT算法
预测粒度 单步预测(一步一动作) 分块预测(一次K个动作)
时序建模 无显式时序建模 Transformer自注意力机制
损失函数 仅MSE/交叉熵 MSE + 时序平滑损失
分布偏移 严重(一步错步步错) 缓解(多步规划缓冲误差)
执行频率 每步都推理 每K步推理一次(可重叠)
适用场景 简单重复性任务 复杂长时序操控任务

你看这个表格就能发现,ACT其实是在BC的基础上做了「三件套」升级:多步预测 + 时序建模 + 平滑约束。这三者缺一不可。

避坑指南:我曾经在项目中尝试去掉Transformer,只用LSTM做时序建模,结果在长序列任务上效果差了15%。Transformer的自注意力机制在处理长距离依赖时确实有优势,这个别省。

1.5 小结

ACT算法的核心就三点:

  • 动作分块让模型有了「前瞻性」,不再短视
  • Transformer提供了强大的时序建模能力
  • 时序平滑损失保证了执行过程的稳定性

说白了,ACT就是把「模仿学习」这件事从「照葫芦画瓢」升级成了「理解动作的节奏和连贯性」。下一节我们会深入讨论,这种架构设计如何为策略迁移和泛化打下基础。


专注资料整理