实现驾驶行为克隆(BC/DAgger/ACT),掌握动作分块、自回归策略与驾驶风格迁移。
给定专家驾驶数据 D = {(o_i, a_i)}, 学习 policy pi_theta(a|o):
loss = MSE(pi_theta(o_i), a_i) # 直接回归
问题: 训练时模型只见过专家分布的状态; 测试时一旦偏离, 误差迅速累积:
train: o_i ~ expert_dist → a_i ~ expert
test: o_t ~ pi_dist → a_t 可能越来越偏离
action = (steer, throttle, brake, gear)
steer: [-1.0, 1.0] (左满舵 → 右满舵)
throttle: [0.0, 1.0]
brake: [0.0, 1.0]
gear: {0, 1} (前进/倒车)
单步预测的问题:
- 高频推理 (每帧), 计算量大
- 动作不连贯 (抖动)
- 累积误差使轨迹偏离
obs → Encoder → obs_feat
↓
z ~ N(0, I) → Decoder → action_chunk (a_t, ..., a_{t+K-1})
训练时: z 从 CVAE encoder 采样 (有真值动作)
推理时: z 从 N(0, I) 采样
L = L_recon(action_chunk_pred, action_chunk_gt) + beta * KL(N(mu, sigma) || N(0, I))
KL 项鼓励潜在空间接近标准正态分布。
BC 的问题是训练数据只包含专家状态, DAgger 通过迭代纠正这一点。
Round 0: 训练 pi_0 on expert data D_0
Round r:
1. 运行 pi_r, 收集 o (可能偏离)
2. 专家标签 a_expert for each o
3. D_r = D_{r-1} ∪ {(o, a_expert)}
4. 训练 pi_{r+1} on D_r
D_r = beta * D_new + (1-beta) * D_old
beta = 0.5^r, 随轮数指数衰减。
- 人类驾驶数据: 摄像头 + 方向盘/油门/刹车记录
- 典型场景: 城市道路、高速公路、停车场
- 无法超越专家水平
- 长尾场景泛化差
- 需要大量高质量数据
- 不能探索更好的策略
- 第12章: Diffusion Policy (生成式动作)
- 第13章: RL Planning (强化学到更好的策略)
1. ✅ BC: 直接从专家数据回归动作
2. ✅ ACT: CVAE + 动作块预测 (减少误差累积)
3. ✅ DAgger: 在线数据聚合纠正分布偏移
4. ✅ Action Chunking: K 步一次推理, 动作平滑
下一章: Diffusion Policy — 用扩散模型生成驾驶动作