ACT模仿学习 核心功能与关键配置项
三、核心功能与关键配置项
ACT 模型的结构参数不多,但每一个都影响明显,值得逐一理解。
| 参数 | 作用 | 调节感受 |
|---|---|---|
chunk_size | 动作块长度 | 增大让动作更连贯但反应变慢;减小更灵敏但抖动更多 |
kl_weight | KL 散度项权重 | 增大动作更平滑但更僵硬;减小更灵活但可能抖动 |
hidden_dim | Transformer 隐层维度 | 增大容量更强但更吃显存 |
dim_feedforward | 前馈层维度 | 与隐层维度配套,通常数倍于隐层维度 |
nheads | 注意力头数 | 需能整除隐层维度 |
num_encoder_layers / num_decoder_layers | 编码器与解码器层数 | 层数越多容量越强,训练越慢 |
lr / lr_backbone | 主干与主干外部分的学习率 | 主干是小学习率,随机初始化的部分学习率较大 |
batch_size | 批大小 | 受显存限制,过小会让训练不稳定 |
num_epochs | 训练轮数 | 精细任务往往需要较长的训练 |
--temporal_agg | 时间集成开关 | 评估阶段开启可明显提升平滑性 |
--eval | 评估模式 | 不加则是训练模式 |
时间集成(Temporal Ensembling)值得单独解释。由于模型每次预测的是未来 k 步,相邻两次预测会在时间上重叠。简单做法是每次只执行第一段就丢弃其余部分,缺点是浪费了预测信息。时间集成则把所有覆盖到当前时刻的预测按指数权重加权平均,越新的预测权重越高。它的效果是动作明显更平滑,代价是推理时要保存最近若干次预测并做加权,计算开销增加,在算力紧张时可能影响控制频率。
关于超参的调节顺序,建议按这个优先级:先固定一个能跑通的 chunk_size(可从几十步起步)把训练跑起来,观察 loss 收敛情况;再调 kl_weight 看动作平滑度的变化;最后才考虑增大模型容量。反过来先堆大模型,往往训练慢、显存紧张,还没办法判断问题出在哪。
还有一个工程要点是动作的表示方式。动作可以表示为绝对关节位置,也可以表示为相对当前位置的增量。绝对位置的好处是模型直接输出目标,推理时不受当前误差影响;增量表示的好处是便于在不同初始构型下泛化。两种方式各有适用场景,关键是训练与推理必须统一,不能在训练时用绝对位置、推理时又去叠加增量。

