返回专辑
·Johan·4 分钟阅读

模仿学习:BC 与 DAgger

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

模仿学习:BC 与 DAgger

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 前几百万步。

相关

也可以看看

← 全部文章

johan's blog