Action Chunking
了解动作分块(action chunking)如何提高机器人精度和模仿学习。探索如何使用 Ultralytics YOLO26 来减少 AI 代理中的累积误差。
动作分块是一种先进的 深度学习 技术,在机器人技术和模仿学习中得到广泛应用。在这种技术中,模型预测的是未来动作的序列(或“块”)而非每个时间步的单一动作。通过预测多步轨迹,动作分块使 AI 智能体 能够更平滑、更可靠地执行复杂的长周期任务。随着 基于 Transformer 的动作分块 (ACT) 的引入,这种方法获得了显著的发展。该模型架构将时间预测与高维 计算机视觉 输入相结合。
Link to this section缓解累积误差#
在传统的行为克隆中,模型根据当前状态预测下一个直接步骤。然而,在 实时推理 过程中,微小的预测偏差会将系统推向未观测到的状态。这些错误会迅速累积,导致任务失败——这种现象被称为累积误差。
动作分块直接解决了这一局限性。通过同时预测多个动作(例如,覆盖 1 秒运动的 50 个关节运动),有效的控制周期得以缩短。系统基于单一可靠的视觉观察执行连贯的短期计划,极大地降低了反应性错误的发生频率。当集成 Ultralytics YOLO26 等视觉骨干网络进行空间感知和 边界框 定位时,最终的预测结果对过程噪声具有极强的稳定性。
Link to this section实际应用#
Action chunking has unlocked new capabilities in physical automation, particularly when deployed on edge AI hardware optimized by frameworks like Intel Edge:
- 精细机器人操控: 在工业自动化中,机器人使用分块预测来执行需要高精度的接触式任务,例如穿线、电池插槽安装或处理由 包裹分割数据集 追踪的物品。生成连贯的动作序列可以避免单步 模仿学习 中典型的生硬、不一致的移动。
- 自主导航: 在自动驾驶和无人机飞行中,预测一系列控制命令(如转向和加速)可以实现更平滑的轨迹规划,这一概念在最近的 IEEE 机器人论文 中得到了深入探讨。结合连续的 目标追踪 和 深度估计,车辆可以安全地在复杂的动态环境中导航。
Link to this section区分相关概念#
为了更好地理解该技术如何融入更广泛的 人工智能 生态系统,将其与类似术语区分开来很有帮助:
- 动作分块 vs. 动作识别: 动作分块 生成 机器执行的未来指令序列,而 动作识别 则是 识别 视频流中正在发生的操作的分析过程。
- 动作分块 vs. 序列到序列模型: 序列到序列架构将输入序列映射到输出序列,广泛应用于 机器翻译。动作分块大量利用了这些架构——特别是 Transformers——但将输出严格限制为低级运动控制和运动学,而非文本。
- 动作分块 vs. 强化学习: 强化学习 依赖奖励信号通过试错来教导智能体。相反,动作分块主要部署在监督行为克隆中,模型直接从人类演示中学习,无需明确的奖励最大化。
Link to this section实现动作分块#
在实践中,视觉系统评估环境,序列解码器生成分块轨迹。以下 Python 代码片段演示了一个概念性的 PyTorch 模块(TensorFlow 的替代方案),它接收环境状态(例如从 目标检测 传递中获得的状态),并输出未来动作序列。
import torch
import torch.nn as nn
class ActionChunker(nn.Module):
def __init__(self, state_dim, action_dim, chunk_size):
super().__init__()
# Maps the current state to a sequence of future actions
self.decoder = nn.Linear(state_dim, chunk_size * action_dim)
self.chunk_size = chunk_size
self.action_dim = action_dim
def forward(self, state):
# Predict the entire action chunk at once
chunk = self.decoder(state)
return chunk.view(-1, self.chunk_size, self.action_dim)
# Example: 128-dim state, 6 degrees of freedom, 50-step chunk
model = ActionChunker(state_dim=128, action_dim=6, chunk_size=50)
# Generate a 50-step action trajectory from a single observation
current_state = torch.randn(1, 128)
action_trajectory = model(current_state)
print(f"Action Chunk Shape: {action_trajectory.shape}")管理训练这些机器人策略所需的海量数据集是资源密集型的。像 OpenAI 和 Anthropic 这样的行业领导者引领着大规模模型的发展,但普通开发者依赖于易用的工具。Ultralytics Platform 简化了视觉输入的数据生命周期,提供了自动化的 数据标注 和无缝的 模型训练 能力。随着模型向统一的视觉-语言-动作 (VLA) 架构演进,将高效的视觉系统与强大的动作分块相结合,将继续定义下一代智能自动化。






