ACT模仿学习 使用方式与典型场景
四、使用方式与典型场景
下面用一个完整的小规模训练配置展示各参数如何协同,并说明典型的使用流程。
示例一,精细插拔任务的小批量训练配置。精细任务的特点是动作幅度小、对位置精度要求高,因此动作块可以适当取短一些以保证反应速度,同时训练轮数需要足够多:
python imitate_episodes.py \
--task_name insert_peg \
--ckpt_dir ckpt/act_insert_peg \
--policy_class ACT \
--kl_weight 10 \
--chunk_size 60 \
--hidden_dim 512 \
--batch_size 8 \
--dim_feedforward 3200 \
--num_epochs 3000 \
--lr 1e-5 \
--lr_backbone 1e-5 \
--seed 0
示例二,评估时开启时间集成,并对比开关前后的差异。评估阶段建议至少跑若干次完整任务,记录成功率而不是只看单次表现,因为模仿学习策略在边界情况上的方差往往很大:
# 开启时间集成评估
python imitate_episodes.py \
--task_name insert_peg \
--ckpt_dir ckpt/act_insert_peg \
--policy_class ACT --kl_weight 10 --chunk_size 60 \
--hidden_dim 512 --dim_feedforward 3200 \
--batch_size 8 --eval --temporal_agg
# 关闭时间集成作为对照
python imitate_episodes.py \
--task_name insert_peg \
--ckpt_dir ckpt/act_insert_peg \
--policy_class ACT --kl_weight 10 --chunk_size 60 \
--hidden_dim 512 --dim_feedforward 3200 \
--batch_size 8 --eval
示例三,数据格式检查脚本。在训练之前先用一段短脚本确认每条演示的字段、长度与图像尺寸都一致,能省下大量排查时间:
import h5py, glob
for f in sorted(glob.glob("data/insert_peg/episode_*.hdf5")):
with h5py.File(f, "r") as d:
qpos = d["/observations/qpos"]
act = d["/action"]
print(f, qpos.shape, act.shape,
list(d["/observations/images"].keys()))
适用与不适用场景对照。
| 场景 | 是否合适 | 说明 |
|---|---|---|
| 桌面精细操作(插拔、装配、开盖) | 非常合适 | ACT 的强项,动作分块对精度帮助明显 |
| 双臂协同任务 | 合适 | 动作维度高,分块预测能保持协调性 |
| 位置变化有限的重复作业 | 合适 | 固定的相机与工作台条件下效果好 |
| 需要长时序推理的多阶段任务 | 一般 | 单次预测时间窗有限,长任务的衔接需要额外设计 |
| 物体位置大幅随机变化 | 不合适 | 演示覆盖不到的位置泛化能力弱 |
| 需要毫秒级力反馈控制 | 不合适 | 策略推理频率有限,需底层力控配合 |
| 完全没有演示数据 | 不适用 | 模仿学习的前提是有演示 |

