ACT解读
2026/9/7 2:32:57 网站建设 项目流程

Docs | LeTools-Learning

1. 模型结构图:ACT 的“大脑”长什么样?

ACT 本质上是一个CVAE (条件变分自编码器) + Transformer Decoder的组合体。我们可以把它想象成一个“压缩-解压”的过程。

【训练阶段】 【推理/部署阶段】 (有老师手把手教) (徒弟自己干活) ┌─────────────────────┐ ┌─────────────────────┐ │ 人类示范动作序列 │ │ │ │ (未来k步关节位置) │ │ │ └──────────┬──────────┘ │ │ ▼ │ │ ┌─────────────────────┐ │ │ │ Action Encoder │ │ │ │ (动作编码器) │ │ │ └──────────┬──────────┘ │ │ ▼ │ │ 隐变量 z (Latent) │ z = 0 │ (代表动作风格/意图) │ (取平均风格) │ │ │ │ │ ▼ ▼ ▼ │ ┌─────────────────────────────────────────────────────────┐ │ │ Transformer Decoder (核心大脑) │ │ │ │ │ │ 输入1: 当前图像特征 (CNN提取) + 本体感觉(关节角) │◄───┤ │ 输入2: 隐变量 z │ │ │ │ │ │ [Self-Attention] ↔ [Cross-Attention] ↔ [FFN] x N层 │ │ └────────────────────────┬────────────────────────────────┘ │ ▼ │ ┌─────────────────────┐ │ │ 输出: 未来k步 │ │ │ 目标关节位置序列 │ │ └─────────────────────┘ │
🔑 关键组件解读
  • Transformer Decoder:这是真正干活的模块。它通过 Cross-Attention 机制,将“当前看到的画面”和“动作意图($z$)”融合在一起,解码出具体的关节轨迹。

2. 训练 vs 推理:两种完全不同的模式

这是理解 ACT 最关键的一点:训练时有两个编码器,推理时只剩一个解码器。

维度🎓 训练阶段🤖 推理阶段
输入当前观测 +人类示范的未来动作仅当前观测
隐变量 z从示范动作中采样得到固定为 0
损失函数L1 Loss (轨迹误差) + KL Loss (正则化)无(直接输出控制指令)
输出处理与Ground Truth对比计算梯度送入时间集成平滑后执行
类比师傅握着徒弟的手教,徒弟感受发力方式徒弟回忆师傅的平均手感,自己操作

3. 时间集成:让动作“丝滑”的秘密武器

时刻 t: 预测 [a₁, a₂, a₃, ..., a₁₀₀] 时刻 t+1: 预测 [b₁, b₂, b₃, ..., b₁₀₀] 时刻 t+2: 预测 [c₁, c₂, c₃, ..., c₁₀₀] ↓ 实际执行的动作 = 加权平均(a₂, b₁) → 执行 = 加权平均(a₃, b₂, c₁) → 下一步执行 ...

为什么这么做?

  • 每次预测都有噪声,单次预测的尾部尤其不准。
  • 但多次预测的重叠区域互相印证,噪声被抵消,信号被增强。
  • 效果等同于一个低通滤波器,消除了高频抖动,让机器人动作像人一样自然流畅,而非机械卡顿。

4. 端到端数据流总结

把整个过程串起来,一帧图像变成机械臂运动的完整链路如下:

📷 RGB图像 ×4 ──→ ResNet-18 ──→ 视觉Token ─┐ ├──→ Transformer ──→ 原始k步轨迹 🦾 关节角度 ×14 ──→ Linear ──→ 本体Token ──┘ Decoder │ ▼ 时间集成(EMA) │ ▼ 平滑后的目标位置 │ ▼ PID控制器 → 🦾 电机

💡 核心洞察

ACT 的精妙之处在于它把“规划”和“控制”合二为一了。传统方法需要先识别物体、再规划路径、再逆运动学求解、再PID控制,每一步都可能出错且延迟叠加。而 ACT 直接从像素映射到关节位置,中间的 Transformer 同时完成了感知、决策和轨迹生成,这就是所谓的“端到端”的威力。配合动作分块和时间集成,它成功绕开了传统方法的误差累积陷阱。

这是一个非常关键的问题。很多人误以为 Transformer 只能处理文本,但实际上在 ACT 中,它被改造成了一个“连续动作序列生成器”。

为了让你彻底看懂,我们抛开复杂的数学符号,用 “翻译机” 的类比来拆解 Transformer Decoder 输出动作的全过程。

核心概念:把“动作”当成“语言”

在 NLP(自然语言处理)中,Transformer 预测的是下一个单词;而在 ACT 中,每一个“关节位置”就是一个“词”。
词表大小:不再是几万个英文单词,而是14个关节维度(6个手臂关节 + 1个夹爪 + ... × 2臂)。
句子长度:不再是文本段落,而是未来 k 步的时间序列(例如 k=100)。
语义:不再是语法逻辑,而是物理运动的连贯性。

🔍 Transformer Decoder 输出动作的 4 个具体步骤

输入嵌入:把“看到的世界”变成“Token”
Decoder 不直接吃像素或电压值,它需要统一的“语言”:
输入源 处理方式 生成的 Token 含义
4路RGB图像 ResNet-18 提取特征 + 空间展平 N_{img} 个视觉Token “桌子上有个红杯子”

当前关节角 Linear层映射 14 个本体Token “我的手现在在这里”

隐变量 z Linear层映射 1 个风格Token “用轻柔的方式拿”

历史动作 Linear层 + 位置编码 k 个动作Query “接下来该动哪里?”

⚠️ 关键区别: 与 GPT 不同,ACT 的 Decoder 不是自回归地一个接一个生成动作。它是一次性并行输出未来 k 步的所有动作!这得益于下面的特殊设计。

Attention 机制:三种信息的“融合反应炉”

这是 Decoder 的核心引擎,每一层都包含三个子模块:

┌──────────────────────────────────────────────────────┐
│ Transformer Decoder Layer │
│ │
│ ① Self-Attention (动作Token之间互相看) │
│ "第50步的动作应该和第49步、第51步保持连贯" │
│ ↓ │
│ ② Cross-Attention (动作Token去看视觉+本体Token) │
│ "要移动到那个位置,我得看看杯子的像素在哪" │
│ "我的关节现在这个角度,能不能够得着?" │
│ ↓ │
│ ③ FFN (非线性变换) │
│ 将融合后的信息转化为具体的数值 │
│ ↓ │
│ 输出: 更新后的动作Token表示 │
└──────────────────────────────────────────────────────┘
× N 层 (论文中 N=4)

Self-Attention 的作用:保证输出的100步轨迹在时间上是平滑连贯的,不会出现第50步突然跳到天花板再回来的荒谬结果。
Cross-Attention 的作用:这是 “眼手协调” 的计算本质。动作Query作为 Query,视觉和本体特征作为 Key/Value。模型在这里学会了“看到红色像素 → 对应关节角变化”的映射关系。

输出头:从“抽象表示”到“具体数字”

经过 N 层 Decoder 后,每个动作 Token 已经融合了足够的信息。最后通过一个 MLP 输出头:

text{Output}_t = text{MLP}(text{DecoderOutput}_t) in mathbb{R}^{14}

输出是一个 14维向量,代表该时刻所有关节的目标位置。
不是分类问题,是回归问题! 输出头没有 Softmax,而是直接输出连续浮点数。
训练时用 L1 Loss(而非 Cross-Entropy),因为我们要最小化的是“预测位置”和“真实位置”之间的绝对误差。

为什么能“一次性并行输出”?

这是 ACT 区别于 GPT 的最大设计差异:
特性 GPT (文本生成) ACT (动作生成)
生成方式 自回归:生成第t个词才能生成第t+1个 非自回归:k步同时生成

Mask Causal Mask(只看过去) 无Mask(全局可见)

原因 语言有严格先后依赖 物理轨迹是整体优化的结果

速度 慢(串行) 快(并行,50Hz实时)

💡 直觉理解: 人在伸手拿杯子时,大脑不是先想“手指弯10度”,再想“手腕转5度”。而是整条运动轨迹作为一个整体被规划出来。ACT 模仿了这一点,Self-Attention 让所有时间步互相协商,一次性达成最优解。

🎯 总结:一张图看懂动作输出全流程

[视觉Tokens] [本体Tokens] [z-Token]
↓ ↓ ↓
┌─── Cross-Attention ◄────┘
│ ↑
│ [动作Query Tokens] ←── Self-Attention (时间连贯性)
│ ↓
│ FFN
│ ↓
│ × 4 layers
│ ↓
└──→ MLP Output Head

[Δq₁, Δq₂, ..., Δq₁₀₀] ← 100步×14维 目标关节位置

时间集成(EMA平滑)

发送给PID控制器 → 🦾

一句话总结: Transformer Decoder 通过 Cross-Attention 将视觉感知注入动作序列,通过 Self-Attention 保证时间维度的物理连贯性,最终通过 回归输出头一次性并行生成一段完整的、可直接执行的关节轨迹。这就是它能把“图像”翻译成“动作”的底层机制。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询