模仿学习:BC 与 DAgger
行为克隆 warm start 省样本;covariate shift 会让策略漂移,DAgger 或 RL fine-tune 常接在后面。

1. BC 训到极低 loss,rollout 却乱动
Behavior Cloning (BC):监督学习,最小化负对数似然在示范状态动作对上。实现简单,但 covariate shift:训练分布是 expert 访问的状态,部署时 small error 累积,访问 OOD 状态,误差雪崩。BC val loss 上升 while train loss 降是 overfit demo 分布,不是「还能训」。有大量高质量示范、RL 从零太慢时,IL 是务实路径;但 BC 是 warm start,不是终点。
2. 三种路径:DAgger、RL fine-tune、GAIL
DAgger:迭代收集当前策略 rollout,由 expert 标注 corrective action,混合进数据集再训 BC。需要 expert 可查询(sim 或人类在环)。成本高,但比纯 BC 更能纠 covariate shift。RL fine-tune:BC 初始化 policy,再用 PPO/SAC 在 env reward 上微调。Reward 和 BC loss 早期可加权,BC auxiliary loss 权重 decay 写进 schedule。Early stop BC 再 RL 往往比 BC 训到极低 train loss 更好——过低 train loss 可能 memorizing demo noise。GAIL:用 discriminator 区分 demo vs policy,比 BC 更能纠 shift,但 GAN 式不稳定。
3. Demo 质量与覆盖
Demo 质量差(抖动、次优)时,BC 上限低,RL fine-tune 应用 task reward 拉离 demo 错误,而不是纯模仿。我会把 demo 按 scene 分层切 train/val,看 BC 在 held-out scene 上的 action error。若 val 误差大,RL fine-tune 也可能只在 train 分布附近有效。Demo 采集时同步录 obs、action、done、timestamp;BC 训练发现错一条对齐,整段 demo 废。Demo 覆盖的 state 空间边界要测:held-out initial pose 上 BC error 是 sim2real IL 的常见 killer。
4. 何时用 IL 与真机安全
有大量高质量示范、RL 从零太慢。真机安全:BC 策略先硬限幅验证,再少量 RL。示范和 env 动力学不一致(不同控制器)时,BC 上限更低。DAgger 需要 sim 里能调 expert 或人类标注——成本高。GAIL 需要 demo 多样,训练 GAN 式不稳定。真机 demo 贵时,BC 加少量 RL fine-tune 仍是务实路径。只 BC 不 fine-tune,性能天花板是 expert。
5. 案例:scene 分层 val
某 pick-place 任务,demo 按 scene 分层切 train/val,held-out scene 上 BC action error 大,RL fine-tune 也只在 train 分布附近有效。泛化别期望太高。Demo 按 scene 分层切 train/val,held-out scene 上 action error 决定 IL 泛化上限。RL fine-tune 阶段 BC auxiliary loss 权重 decay 写进 schedule,避免 hand-tuned 每 run 不同无法复现。Demo 元数据 JSON schema 固定字段,缺字段的 dataset 拒绝进训练 pipeline。
6. 与 GAIL 和 DAgger 的取舍
GAIL 用 discriminator 区分 demo vs policy,比 BC 更能纠 shift,但 GAN 式不稳定。DAgger 需要 expert query;GAIL 需要 demo 多样。Early stop BC 再 RL 往往比 BC 训到极低 train loss 更好。示范覆盖不全,BC 在 rare 状态乱动。Rollout 100 episode 看是否偏离训练流形。
Early stop BC 再 RL 往往比 BC 训到极低 train loss 更好——过低 train loss 可能 memorizing demo noise。Demo 按 scene 分层切 train/val,held-out scene 上 action error 决定 IL 泛化上限。Demo 元数据 JSON schema 固定字段,缺字段的 dataset 拒绝进训练 pipeline。GAIL 需要 demo 多样;DAgger 需要 expert query。真机 demo 贵时,BC 加少量 RL fine-tune 仍是务实路径。
7. 示范质量与协变量偏移
示范按场景分层切训练与验证,held-out 场景上的动作误差决定模仿学习泛化上限。示范采集时同步记录观测、动作、终止标志与时间戳;对齐错一条整段示范作废。示范质量差(抖动、次优)时行为克隆上限低,强化学习微调应用任务回报拉离示范错误而非纯模仿。真机示范贵时,行为克隆加少量强化学习微调仍是务实路径。协变量偏移不纠,示范再多也会在分布外状态雪崩——达agger 或生成式 adversarial 模仿学习是纠偏移的路径,但成本和稳定性各不同。
8. 验收
- Held-out 示范上的 action accuracy。
- Rollout 100 episode 看是否偏离训练流形。
- BC + PPO 微调曲线应优于纯 PPO 前几百万步。
- RL fine-tune 阶段 BC loss decay schedule 可复现。
- Held-out scene 上 BC error 决定 IL 泛化上限。
BC 是 warm start,不是终点。Covariate shift 不纠,demo 再多也会在 OOD 状态雪崩。示范与 env 动力学不一致(不同控制器)时,BC 上限更低,RL fine-tune 要用 task reward 拉离示范错误。Rollout 一百个 episode 看是否偏离训练流形,是 held-out 动作精度之外的必要检查。Early stop BC 再 RL 往往比 BC 训到极低 train loss 更好。BC 加 PPO 微调曲线应优于纯 PPO 前几百万步。
相关
也可以看看
- ·16 分钟阅读
约束 MDP 的代价估计偏差:安全层看起来在工作
区分期望约束、条件风险与硬屏蔽,解释代价 critic 偏差如何让可行集虚胖;用约束违反轨迹占比、拉格朗日乘子轨迹和安全层旁路注入验收。
- ·17 分钟阅读
离线强化学习的支持集外动作:为什么 Q 值会自我抬高
从 Bellman backup 的分布外 maximization 解释外推误差;比较行为约束、保守价值与策略正则,并用覆盖率切片与 FQE 交叉验证部署边界。
- ·10 分钟阅读
离策略评估:部署前别只看行为数据上的平均回报
从重要性采样的支持集与方差出发,比较 self-normalized、per-decision、DR 和 FQE,并建立部署前的统计验收。
johan's blog