模仿学习使用演示中的行为信息学习策略。行为克隆(BC)直接把观测映射到动作:输入可以是状态、关节位置、图像或一段历史;输出可以是离散动作、速度、关节目标或动作序列。输入输出的物理含义必须在数据集和控制接口之间一致。
一个完整样本需要什么
至少记录episode ID、时间、观测、动作、终止/成功信息和必要元数据。图像、关节状态和动作存在延迟时,要说明动作对应哪个观测时刻;不能把数据到达进程的先后顺序当成采样对齐。
连续单峰动作常用均方误差,离散动作用交叉熵。但“绕障碍从左或从右都行”的多峰数据,经均方误差平均后,可能生成正好穿过障碍的动作。数据和策略表示必须能表达任务所需的多模态,而不只是减小平均预测误差。BC与视觉动作策略的关系见MIT模仿学习章节。
假设三动作的策略概率为[0.1,0.2,0.7],正确演示动作为第三个,交叉熵为-log(0.7)≈0.357。对softmax前的logits,梯度是预测概率-one_hot(正确动作)。因此第三个logit会被推高,另外两个被压低。这个梯度在小型训练项目中由NumPy明确实现,PyTorch对照则使用自动求导。
离线准确不代表闭环能完成
演示往往处于好状态,学到的策略执行时会有误差;偏离之后遇到的状态可能没出现在演示中,新的错误又使它偏离更多。数据量大并不自动覆盖这种由策略自己诱发的分布变化。
解决方法可以是扩大演示覆盖、加入扰动恢复轨迹、使用观测历史,或在学习策略访问的状态上请求专家标签。DAgger将后者组织成迭代数据聚合,但它需要可查询的专家,并要考虑采样成本与实际设备条件。方法及假设见Ross等人的原始论文。不能把专家从未给过标签的危险状态直接加入数据后就认为解决了偏移。
数据中也可能包含多个操作风格、失败轨迹或动作频率差异。删除“难学样本”可能删掉最需要的恢复行为,应该先判断标签质量和任务含义,再决定筛选规则。
训练流程与验证
按episode或场景拆分训练、验证和测试,统计归一化参数时只使用训练集。若同一轨迹的相邻帧分别进入训练和测试,离线指标可能非常好,却没测到新场景。仅按episode分开仍不等于物体、布局或设备分布独立,需要根据目标设计切分。
先检查小批量过拟合,确认标签、维度、单位和损失能工作;再做完整训练。部署时冻结训练用的归一化和动作约定,使用eval与无梯度推理,检查非有限值、范围、执行频率和延迟。离线误差之外,还要运行闭环episode,记录成功、碰撞、重试及异常停止。
本专区的BC示例使用合成离散控制数据,没有采集真人遥操作或真实机器人数据。真实演示的数据许可、设备限制与隐私信息需要单独记录。
练习与面试自查
在训练项目中只保留接近目标的演示,测试远离目标的起点;再加入恢复轨迹,对比离线损失与闭环成功率是否同步变化。解释为什么测试起点没出现在训练起点列表中,也不意味着该状态从未出现在训练轨迹里。
面试自查:BC什么时候适合,什么时候奖励优化更自然?观测历史可以弥补哪些部分可观测性,又不能弥补哪些缺失信息?为什么动作单位和时间对齐错误可能比模型容量更重要?