DAgger (Dataset Aggregation) 改的不是 loss,而是数据采集方式。它反复执行:learner rollout → 收集访问到的状态 → 专家在这些状态上标注正确动作 → 并入数据集重新训练。
因此它训练的是:
而 BC 训练的是 。两者的损失函数可以完全相同。
代价是必须能在训练循环里反复请求专家。具身系统里的 human intervention、corrective demonstration、failure recovery、online correction 都带有这一结构。
关键洞察
DAgger 的核心不是「采更多专家数据」,而是让专家专门覆盖 learner 自己暴露出来的盲区,因此数据 集里会第一次出现 recovery behavior。