PyTorch Week 2: 从 Action Chunk 到 Behavior Cloning

今日学习

Week 2 的主题是 Mini-ACT / Action Chunking Transformer,目标是打通 imitation learning 数据与基础 action chunk policy 的最小闭环。

学习进度

天数 主题 状态
W2D1 Action Chunk Dataset ✅ 11/11 检查通过
W2D2 Toy Arm Trajectories ✅ 10/10 检查通过
W2D3 MLP Chunk Policy 🔄 进行中

核心知识点

W2D1: Action Chunk Dataset

  • 把 trajectory 切成 action chunk 样本
  • chunk_size 与输出时间维度的关系
  • 不跨 trajectory 拼接 action chunk
  • Dataset.__len__ / Dataset.__getitem__ 的 shape 约定

W2D2: Toy Arm Trajectories

  • imitation learning / behavior cloning 的监督学习视角
  • expert policy 与 demonstration trajectory
  • state、target、action 的字段设计
  • train / val trajectory split

关键收获

1. Action Chunking 的直觉

传统的 single-step policy 每次只预测一个动作,而 action chunk policy 一次性预测未来 K 步动作:

1
2
single-step:  obs -> [dx, dy, click]         (1 步)
chunk policy: obs -> [K 步的 [dx, dy, click]] (K 步)

这样做的好处是降低控制频率,减少误差累积。在 VLA (Vision-Language-Action) 模型中,LLM 推理一次可能几秒,如果每帧都推理就太慢了。Action chunking 让模型一次输出多步动作,在推理间隔内按序列执行。

2. Behavior Cloning = 回归问题

BC 本质上就是监督学习:

  • 输入:observation
  • 输出:future action chunk [B, chunk_size, action_dim]
  • Loss:MSE 或 L1
1
2
3
4
5
# MSE — 更标准,梯度更平滑
return ((pred - target) ** 2).mean()

# L1 — 对异常值更鲁棒
return (pred - target).abs().mean()

3. Demonstration Data ≠ 分类数据

分类数据是 i.i.d. 采样,shuffle 不会破坏结构。但 trajectory 数据有强时间相关性:

  • trajectory 内的样本不能被打乱
  • 但不同 trajectory 之间可以 shuffle
  • episode boundary 必须正确处理

遇到的问题

MSE vs L2 Norm 的混淆

W2D3 的 behavior_cloning_loss 中,一开始用了 torch.norm(target - pred)(这是 L2 范数,取了平方根),而不是真正的 MSE。两种都能训练收敛,但 MSE 的梯度更标准、更可解释。

输出 Shape 约定

MLP 的输出从 [B, action_dim] 变成了 [B, chunk_size, action_dim]。需要在 forward 的最后一个全连接层输出 [B, chunk_size * action_dim] 然后 reshape:

1
2
3
# MLP 最后一步
out = self.head(x) # [B, chunk_size * action_dim]
out = out.view(*x.shape[:-1], self.chunk_size, self.action_dim) # [B, chunk_size, action_dim]

明日计划

继续 W2D3: MLP Chunk Policy,完成:

  1. 补全 behavior_cloning_loss (MSE + L1)
  2. 实现 evaluate_on_dataset
  3. 进入 W2D4: Behavior Cloning Training Loop

最终目标:从 imitation learning 数据训练一个能预测多步动作的策略,然后在 toy environment 里做 rollout 评估。

长期路线图

阶段 内容 状态
Phase 1 PyTorch 基础 (autograd → training loop) ✅ 完成
Phase 2 W1 Mini-ACT 数据与 policy 🔄 进行中
Phase 2 W2 Transformer ACT + temporal ensembling 待开始
Phase 3 VLA Demo (multimodal → action) 待开始
Phase 4 ZR-0 风格的 VLA 鼠标控制 最终目标

PyTorch Week 2: 从 Action Chunk 到 Behavior Cloning
http://example.com/2026/07/20/2026-07-20-pytorch-week2-reflection/
作者
John Doe
发布于
2026年7月20日
许可协议