返回Guides

动作碎片变化器 (ACT):机器人模仿学习的完整指南 (2026)

Master ACT (Action Chunking Transformers):架构,对实际机器人数据的培训,零件尺寸调整和在OpenArm和移动ALOHA上部署.包括PyTorch代码,超参数指南和数据集格式规格.

深入了解ACT 是机器人操纵最有效的数据模仿学习算法.涵盖建筑,CVAE条件,零件尺寸调整,PyTorch和LeRobot的训练,超参数优化,硬件选择,故障模式和部署策略.

行动缩是什么,为什么重要

标准行为克隆预测从当前观察中下一次行动.这在理论上运行,但在实践中分解:随着时间的推移,小预测错误积累,导致机器人漂移到训练中从未见过的状态.

** 动作分量** 通过一次预测未来行动的 _ 序列来解决这个问题. 典型的时间步骤是50100. 模型的答案是"机器人现在应该做什么?" 而不是"机器人应该在接下来的两个秒钟里做什么?" 这迫使网络产生一致的,时间一致的轨迹而不是噪音的步骤预测.

感觉很简单:当你伸手去一杯时,你不会独立决定每毫秒.你计划一个单一的流运动.行动分量给模型相同的结构它预测一个完整的运动原始,然后执行它. 重要的是,重叠的块通过时间组合进行混合,该组合通过相邻的块进行平均预测,以进一步平滑轨迹,减少块边界的动.

ACT(Action Chunking with Transformers),由Tony Zhao等人在2023年在斯坦福大学推出,将此行动块的想法与CVAE (条件变量自动编码器) 变体架构结合在一起.结果是最有效的数据模仿学习算法:50次示范通常足以进行简单的选择和位置任务,成功率为80%以上.

暂时抽象:减少有效的视野

对于一个50Hz控制的典型操纵任务,需要250500个个别的行动预测,以实现510秒的任务.在标准BC中,每个预测组合都会导致错误.在一个100个小块尺寸时,同样的任务只需要35个小块预测.有效的决策视野缩小了2050倍,使学习问题变得更容易.

这就是为什么ACT使用如此少的示范工作:学习问题更简单.而不是从观察到单一7DOF行动 (对于典型的机器人臂) 学习绘图,模型从观察到100×7行动轨迹学习绘图.轨迹结构提供强大的自我监督.

建筑深度潜水

ACT使用了有条件变量自动编码器 (CVAE) 与变压器编码器-解码器背骨.了解这种架构对于有效的训练和调试是必不可少的.

欧盟的经济发展框架

编码器在训练过程中观察了当前状态和基础真相行动序列,将它们压缩成一个分布在 _z_上.解码器从这个分布中取样加上当前观察,并重建了行动序列.

在推断过程中,编码器被丢弃.解码器从 (标准正常分布) 和当前观察中接收样本,然后生成行动部分.损失中的KL分离术语确保后部保持接近前,因此在测试时间从前部进行样本产生合理的行动序列.

化器的结构具有关键目的:它捕获内部示范变化.即使在单一任务中,确切轨迹在示范之间也会变化 (略有不同的抓取角度,时间,接近路径).隐形变量 _z_捕获这种变化,使解码器能够产生多样化的但有效的轨迹.

编码架构

通过 ACT 编码器处理多模态输入:

  • 摄像头图像:通过视觉脊柱 (默认ResNet-18,VIT可选).多个摄像头视图 (手腕+上头) 独立处理并连接.
  • **关节位置 (qpos) **:目前的机器人关节角,通常每臂加上抓住器状态67DOF.
  • ** 行动序列 (仅进行训练) **: 未来的 _k_行动的基本真实部分,用于CVAE编码器计算后部分布.

输入符号化并输入到变压器编码器中.输出是一个隐藏的表示,该表示是投影到后部分布的平均和变异.

解码器架构

解码器是一个标准的变压器解码器,具有可学习的行动查询**.有 _k_查询 (每一个时间步骤在部分中),每个都被初始化为学习嵌入.解码器交叉处理编码的观察令牌和样本的隐藏 z,然后通过线性投影头输出 _k_行动向量.

每个预测的操作都是包含联合位置目标 (67 DOF/臂) 和抓紧器开/关命令的向量. 损失是L1 (预测和地面真相操作之间的平均绝对错误),加上加重 β 的 KL 差异术语.

损失功能

# ACT loss computation (simplified)
L_reconstruction = L1_loss(predicted_actions, target_actions)  # [batch, chunk_size, action_dim]
L_kl = KL_divergence(posterior_mean, posterior_logvar, prior)  # regularize latent space
L_total = L_reconstruction + beta * L_kl                       # beta typically 10-20

基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基基隆基隆基隆基隆基基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆基隆

数学直觉: 选择块大小

部分大小_k_是ACT中最重要的单个超参数.它决定了模型在每个步骤中预测的未来行动数量.

控制频率关系

在50 Hz控制 (大多数机器人臂的标准),直接到预测视野的零件尺寸图:

Chunk Size Prediction Horizon Best For
25 0.5 seconds Very fast reactive tasks, contact transitions
50 1.0 second Quick pick-and-place, single-arm tasks under 3 seconds
100 2.0 seconds Default — most tabletop manipulation tasks
150 3.0 seconds Slow precision tasks (insertion, assembly)
200 4.0 seconds Long-horizon smooth motions (pouring, wiping)

理想的部分尺寸应该覆盖大约一个完整的子动作. 选择和位置任务:到达到抓取运动需要1.5秒,所以chunk_size=75100捕捉了整个方法. 如果部分太短,模型无法规划完整的运动.如果太长,模型浪费了预测未来远程的行动的能力,无论如何,下一个部分将被覆盖.

暂时组装

在部署过程中,ACT在每一步 (或每几步) 产生一个新的部分.在每一步控制时,执行的行动是重量平均重量重量重量重量预测:

# Temporal ensembling (exponential weighting)
# w controls the blending — lower w gives more weight to recent predictions
w = 0.01  # default temporal ensembling weight
for t in range(episode_length):
    new_chunk = policy.predict(observation_t)  # shape: [chunk_size, action_dim]
    for i in range(chunk_size):
        all_predictions[t + i].append(new_chunk[i])

    # Weighted average with exponential decay
    weights = [np.exp(-w * j) for j in range(len(all_predictions[t]))]
    action_t = np.average(all_predictions[t], weights=weights, axis=0)

时间组合重量 (通常是0.01) 控制了较老预测的衰退速度.较小的 w 给较老预测的重量 (更轻,但反应更慢).较大的 w 支持最近的预测 (更反应性,但可能是紧张).

对于ACT的数据收集要求

垃圾进出,垃圾出出, 50个清洁的示范比500个噪音的示范更高.

最少的剧集数

Task Category Episodes Needed Expected Success Rate Collection Time
Simple pick-and-place 50–100 85%+ 2–4 hours
Bimanual coordination 100–200 80%+ 4–8 hours
精度 insertion (peg-in-hole) 200–400 70%+ 1–2 days
Complex multi-step tasks 500+ 60%+ 2–5 days
Dexterous manipulation 500–1,000 50%+ 1–2 weeks

数据质量检查清单

  • 一致的示范:使用一个运算器 (或具有非常相似的风格的运算器).ACT假设单模的行动分布混合风格混模型.
  • 固定物体放置区:物体应该从大约相同的区域开始 (在5厘米的变化范围内).除非明确训练它们,否则ACT不会很好地将空间变化概括为大.
  • 清洁的开始/结束状态:每个集都应该从相同的位置开始,并且应该清洁地结束 (对象的抓住器关闭,或者对象放在目标).
  • 一致的时间:尝试在示范中以相似的速度执行任务. 时间变化大,导致行动分布的模糊性.
  • 摄像头稳定性:摄像头必须紧密安装. 任何相机在剧集之间转移会显著降低性能.

HDF5数据格式

RCSV将所有收集的数据提供在HDF5格式中,这是ACT训练标准.每个集都作为一个单一的HDF5文件存储,具有以下结构:

# HDF5 episode structure for ACT training
episode_0.hdf5
├── observations/
│   ├── qpos          # [T, 7] — joint positions (6 DOF + gripper)
│   ├── qvel          # [T, 7] — joint velocities
│   ├── images/
│   │   ├── cam_high  # [T, 480, 640, 3] — overhead camera
│   │   └── cam_wrist # [T, 480, 640, 3] — wrist camera
│   └── effort        # [T, 7] — joint torques (optional)
├── action            # [T, 7] — target joint positions
└── attrs/
    ├── sim           # False (real robot data)
    ├── compress      # True
    └── num_timesteps # T

对于ACT准备的数据收集服务,请参阅[RCSV数据服务]T7).我们提供了校准的多摄像头设置,训练有素的操作员,质量控制和HDF5或LeRobot Parquet格式的交付.

摄像头设置建议

ACT性能主要取决于摄像头配置.原始的ALOHA设置使用了三个摄像头:

  • 面部摄像头 (要求): 工作空间高于0.81.2米,直向下. 提供了场景和物体位置的全球视图. 解析度:最低640×480.
  • 手腕摄像头 (强烈建议)::安装在机器人手腕或前臂上.在抓住和插入时提供近距离视图.对于高精度任务至关重要,在空头摄像头无法解决细节时.
  • **侧相机 (可选) **:提供了空头和手腕视图可能错过的深度信息. 对于涉及垂直堆或高度敏感的放置任务来说最有用.

使用固定曝光和白色平衡的USB3.0摄像头 (Logitech C920或Intel RealSense D405).自动曝光会导致节目之间的图像亮度不一致,从而降低了训练.

经历训练

本节将通过使用LeRobot框架和直接 PyTorch实现的ACT政策培训.

训练与LeRobot (推)

拥抱脸的 [LeRobot]T8) 是2026年ACT培训最容易使用的框架. 它处理数据加载,增强和评估.

# Step 1: Install LeRobot
pip install lerobot

# Step 2: Convert HDF5 data to LeRobot format
python -m lerobot.scripts.convert_dataset \
  --raw-dir ./my_episodes/ \
  --repo-id my-org/pick-place-task \
  --raw-format hdf5_aloha

# Step 3: Train ACT policy
python -m lerobot.scripts.train \
  policy=act \
  dataset_repo_id=my-org/pick-place-task \
  training.num_epochs=2000 \
  training.batch_size=8 \
  policy.chunk_size=100 \
  policy.n_action_steps=100 \
  policy.dim_model=512

# Step 4: Evaluate
python -m lerobot.scripts.eval \
  --pretrained-policy-name-or-path outputs/train/act_pick-place-task/checkpoints/last/pretrained_model \
  --env-name real_world \
  --n-episodes 20

训练通常在28小时内在单个RTX 4090上进行100200次.

直接 PyTorch 训练配置

对于需要更多控制训练循环的团队或想将ACT集成到自定义管道中:

# ACT training configuration — direct PyTorch implementation
import torch
from act.policy import ACTPolicy
from act.train import train_bc

config = {
    # Architecture
    'chunk_size': 100,          # action chunk length (timesteps)
    'hidden_dim': 512,          # transformer hidden dimension
    'dim_feedforward': 3200,    # feedforward network dimension
    'num_encoder_layers': 4,    # transformer encoder layers
    'num_decoder_layers': 7,    # transformer decoder layers
    'nheads': 8,                # attention heads
    'latent_dim': 32,           # CVAE latent dimension

    # Training
    'lr': 1e-5,                 # learning rate (Adam)
    'weight_decay': 1e-4,       # L2 regularization
    'num_epochs': 2000,         # total training epochs
    'batch_size': 8,            # batch size (8 fits on 24 GB VRAM)
    'kl_weight': 10,            # beta for KL divergence term
    'seed': 42,

    # Data
    'camera_names': ['cam_high', 'cam_wrist'],
    'image_size': [480, 640],   # H, W
    'action_dim': 7,            # 6 DOF + gripper
    'state_dim': 7,             # joint positions

    # Augmentation
    'color_jitter': True,       # random brightness/contrast
    'random_crop': True,        # spatial augmentation
}

# Initialize and train
policy = ACTPolicy(config)
optimizer = torch.optim.AdamW(policy.parameters(), lr=config['lr'], weight_decay=config['weight_decay'])
train_bc(policy, optimizer, dataloader, config)

训练技巧

  • 高 (1e-4) 导致训练不稳定,过低 (1e-6) 过于缓慢收缩.
  • 批量量:使用8用于24GBVRAM (RTX 4090).减少到4用于12GBVRAM (RTX 3060).A100上更大的批量 (1632) 提高了稳定性.
  • 期:至少2000个时代的时间. ACT通常在长期高原后在1000~1500个时代左右出现了突然的改善.
  • 检查点:每500个时代都省钱. 评估所有保存的检查点.
  • 行动正常化:使用数据集统计数据将行动正常化到[-1, 1].不正常化行动以每个关联原因的不同规模的训练失败.

超参数调节指南

ACT的超参数比扩散政策少,但三个参数需要对每项新任务进行仔细调整.

零件大小

根据这个决定过程:

  1. 测量任务中单次子动作的平均持续时间 (例如,达到对象:1.5秒).
  2. 乘以控制频率:1.5s × 50 Hz = 75个时间步骤.
  3. 圆满到最接近25个:
  4. 如果任务有非常不同的阶段 (到达,抓住,撤回),则该部分应覆盖至少一个完整的阶段.

标志着你的小块尺寸是错误的:

  • 机器人在转变时犹,运动不顺利,在运动中被困.
  • 太大:机器人过度预测任务结束,做出过早运动,浪费了对未来不必要的预测的训练能力.

基质量 (kl_重量 / β)

控制CVAE规律化.默认是10.

  • β = 0:没有CVAE规范化.模型退化为标准行为克隆 (没有隐藏变量).使用此为基线,但预计性能更差.
  • β = 10 (默认):对于大多数任务来说,平衡性很好. 隐藏空间可以捕捉到示范变化性,而不会崩.
  • β = 2050:更强的规律化,产生更一致的 (变量较少) 轨迹.
  • 模型忽略了数据,产生了平均行为.

查询数 (查询数)

在原始的ACT中,num_queries等于chunk_size (每时间步骤一个查询).一些实现允许分离这些,使用较少的查询和上层样本.除非你有具体的原因改变这一点,保持num_queries =chunk_size.

视觉脊柱

根据 ResNet-18 标准,它可以在大多数任务中进行操作.

  • **ViT (DINOv2) **:更适用于需要精细的视觉理解 (阅读标签,精确的调整) 任务.
  • ResNet-50:对于大多数操作任务,比ResNet-18有了微小的改善,但使用存储器的使用量翻了一番.
  • 高效网:适用于有限计算的移动部署.

硬件推

通过RCSV提供最好的选项:

Robot Platform Price Configuration Best ACT Use Case Lease from RCSV
OpenArm 1 $4,500 6-DOF, leader-follower, open-source Single-arm ACT research, entry-level imitation learning from $800/mo
DK1 Bimanual $12,000 Dual 6-DOF arms, ALOHA-compatible Bimanual ACT (original ALOHA workflow), folding, assembly from $1,500/mo
Unitree G1 $16,000 23-DOF humanoid, dual arms + locomotion Whole-body ACT, mobile manipulation, loco-manipulation from $2,500/mo
Unitree Go2 $2,800 四足机器人, arm attachment option Locomotion + arm manipulation, outdoor tasks from $800/mo

计算要求

GPU VRAM Max 批大小 Training Time (200 eps) Inference 延迟
RTX 3060 12 GB 4 8–16 hours ~20 ms
RTX 4090 24 GB 8 2–8 hours ~12 ms
A100 40/80 GB 16–32 1–3 hours ~8 ms
H100 80 GB 32–64 <1 hour ~5 ms

ACT是最具计算效率的模仿学习算法之一. 一个消费者RTX 3060足以进行培训和实时部署,使其可供小型实验室和个人研究人员使用.

常见的故障模式和解决方案

虽然ACT培训相对简单,但部署失败是常见的.

机器人在任务中偏离轨道

原因:示范不足或示范质量不一致.

修正:收集50个更多的示范,集中在漂移发生的确切区域.确保所有示范都遵循相同的策略.检查摄像头位置没有转移.

2. 动或振荡运动

原因:时间性重量太高,或小块.

** 修正**:减少时间组合重量 (试用0.005而不是0.01). 增加2550的小部分. 检查操作正常化统计是否正确计算.

3. 机器人在抓/释放过渡时

部分演示程序早些时候抓住,有些晚些时候抓住,从而产生了双模分布,ACT平均将其分为"半开放".

修正:重新收集示范,并保持一致的抓住时间.

训练失败平原,但表现不佳

原因:KL重量太高 (β > 50),导致后部崩.模型学会忽略隐藏变量,预测平均行为.

炼时,炼时的KL减小量应是不为零 (通常是110).

5. 在训练物体上工作,但在新物体上失败

原因: ACT默认不将其通用到新对象. 它是一个单任务算法.

** 修正**:采用各种物体 (不同颜色,尺寸,形状) 进行示范.使用图像增强 (颜色,随机作物).对于真正的物体通用化,请考虑转换到VLA模型 (参见我们的 [模仿学习指南](T17)).

双手协调失败

武器可以独立预测, 失去协调时间.

修正:确保两臂的动作都在同一动作向量中 (14-DOF: 7 个臂).不要每臂训练单独的策略. 增加分量以覆盖完整的协调运动.

行动与传播政策:何时使用哪种

Dimension ACT Diffusion Policy
Data efficiency 50–200 demos 100–500 demos
Multi-modal actions Limited (CVAE helps but not fully multimodal) Excellent (denoising naturally captures multiple modes)
Inference speed 50+ Hz (single forward pass) 10–30 Hz (iterative denoising)
轨迹 smoothness Good (temporal ensembling) Excellent (inherent to diffusion process)
Training time 2–8 hours (RTX 4090) 4–16 hours (RTX 4090)
Hyperparameter sensitivity Low (mainly chunk_size and kl_weight) Medium (noise schedule, denoising steps, network architecture)
Language conditioning Not supported natively Not supported natively (extensions exist)
Framework support LeRobot, robomimic LeRobot, robomimic, diffusion_policy repo
Best for Fast prototyping, single-strategy tasks, limited data budgets Multi-strategy tasks, contact-rich manipulation, diverse operator data

** 指规则**:从ACT开始.它训练得更快,需要更少的数据,并允许您快速验证数据收集管道.只要您观察到多模式故障 (两种策略之间的机器人平均值) 或需要更平稳的轨迹,才能进行接触丰富的任务,只需切换到扩散政策.

实际机器人部署

一旦训练,部署ACT政策需要加载模型并运行它在控制循环中.以下是最小部署脚本:

# ACT deployment on real robot (pseudocode)
import torch
import numpy as np
from act.policy import ACTPolicy

# Load trained policy
policy = ACTPolicy.load("checkpoints/act_epoch_2000.pt")
policy.eval()
policy.cuda()

# Initialize robot and cameras
robot = RobotInterface(port="/dev/ttyUSB0", hz=50)
cameras = CameraInterface(names=["cam_high", "cam_wrist"])

# Action buffer for temporal ensembling
all_actions = {}
temporal_weight = 0.01

for t in range(max_steps):
    # Get observation
    images = cameras.get_images()   # dict of [H, W, 3] arrays
    qpos = robot.get_joint_positions()  # [7]

    # Predict action chunk
    with torch.no_grad():
        obs = preprocess(images, qpos)   # normalize, resize, to_tensor
        action_chunk = policy(obs)       # [chunk_size, action_dim]
        action_chunk = action_chunk.cpu().numpy()

    # Temporal ensembling
    for i in range(len(action_chunk)):
        if (t + i) not in all_actions:
            all_actions[t + i] = []
        all_actions[t + i].append(action_chunk[i])

    if t in all_actions:
        preds = np.array(all_actions[t])
        weights = np.exp(-temporal_weight * np.arange(len(preds)))[::-1]
        action = np.average(preds, weights=weights, axis=0)
    else:
        action = action_chunk[0]

    # Execute action
    robot.set_joint_positions(action[:6])
    robot.set_gripper(action[6])
    robot.step()

robot.go_home()

高级专题

通过VLA预训练进行 ACT

最近的研究 (20252026) 结合了ACT的动作分化与VLA预训练. 想法:使用预训练的视觉语言模型作为视觉编码器,然后将ACT的分化动作解码器连接起来. 这让你ACT的数据效率和推断速度与基础模型的通用能力. 查看我们的[模仿学习指南]T18)

性操纵的行为

应用ACT到精通手 (如17DOF的 Orca Hand 需要调整:

  • 增加动作_dim以匹配手 DOF (例如,为6DOF手臂+17DOF手,23).
  • 提高小块大小到150200 巧妙的操纵运动更慢,更复杂.
  • 头相机无法解决指部配置.
  • 收集500多个示范 更高维度的行动空间需要更多数据.

多任务的行为

标准ACT是单任务操作.在实践中,多任务操作的方法是两种:

  1. 任务条件 ACT:将一个任务嵌入 (单热或学习) 添加到编码器输入中.训练多项任务的混合数据. 适用于35相关任务.
  2. 语言条件 ACT:用一个冷的 CLIP 或 SigLIP 模型编码的语言指示取代嵌入式任务.更灵活,但需要每个任务的更多数据.

常见的问题

变体处理 (ACT) 是什么?

ACT是一个由托尼·和同事在斯坦福大学推出的机器人模仿学习算法.它预测未来行动的序列 (部分) 通常是100个时段步骤在50Hz,覆盖2秒的运动而不是一个下一步的行动.这减少了复合错误,并从50个人类示范中产生了光滑,暂时一致的机器人轨迹.

现在,我们需要多少次演示?

对于简单的选择和放置,50100,双手协调100200,精确插入200400,复杂的多步或精巧的任务500+.质量比数量更重要.

我应该使用什么尺寸?

开始100时50Hz (2秒).对于快速任务,总共低于3秒,减少到50次.对于缓慢精度任务,增加到150200次.

能否处理多个有效的策略?

ACT的CVAE隐形变量提供了一些多模式性,但它基本上是为单模态行动分布而设计的.如果你的任务具有真正不同的有效策略 (例如从左到右抓),ACT将平均它们,产生失败的中轨迹.用于多模态任务,使用[T22]

根据"法定定性"的规定,

HDF5是标准格式.每个集包含联合位置 (qpos),联合速度 (qvel),摄像头图像和目标操作.RCSV的 [数据收集服务]T23) 在此格式中提供数据,准备好进行训练.详细的规格请参阅我们的 [数据格式指南]T24).

从2500美元收集ACT准备训练数据

斯威尔士国家安全委员会为ACT训练提供端到端数据收集:校准式多摄像头设置,训练有素的电话操作员,质量控制和HDF5或LeRobotParquet格式的交付.试点项目为100集开始于2,500美元;全场运动从8,000美元开始500集以上.

数据收集服务 租用你的飞行员的硬件