第12章

第12章:扩散策略 (Diffusion Policy)

从零实现 DDPM/DDIM,构建 Diffusion Policy 用于驾驶动作生成,掌握条件扩散与 Classifier-Free Guidance。

DDPMDDIMDiffusion PolicyDiTClassifier-Free Guidance

DDPM, CFG, Action Generation — 用扩散模型生成驾驶动作


第一部分: DDPM 原理

1.1 核心思想

扩散模型通过两个过程学习数据分布:


前向 (加噪): x_0 → x_1 → ... → x_T (逐步加噪声)
反向 (去噪): x_T → x_{T-1} → ... → x_0 (逐步去噪声)

训练: 学习反向过程如何去噪

推理: 从随机噪声 x_T ~ N(0,I) 开始, 逐步去噪得到 x_0

1.2 数学定义

前向过程:


q(x_t | x_{t-1}) = N(rt(1-b_t) * x_{t-1}, b_t * I)
x_t = sqrt(a_bar_t) * x_0 + sqrt(1-a_bar_t) * eps

反向过程:


p(x_{t-1} | x_t) = N(mu_theta(x_t, t), sigma_t^2 * I)
mu_theta = 1/sqrt(a_t) * (x_t - (1-a_t)/sqrt(1-a_bar_t) * eps_theta)

训练目标: 最小化 ||eps_theta(x_t, t) - eps||^2


第二部分: Classifier-Free Guidance

2.1 动机

无条件扩散生成随机样本, 条件扩散生成特定类别样本。CFG 允许在两者之间插值:


eps_cfg = eps_uncond + w * (eps_cond - eps_uncond)

2.2 训练技巧

训练时以概率 p_drop 随机丢弃条件标签:

- p_drop = 0: 纯条件生成

- p_drop = 0.1: CFG 训练 (推理时 w > 1)

2.3 推理行为

w 行为
w = 0 无条件生成 (随机)
w = 1 正常条件生成
w = 1.5-2.0 增强条件 (更"自信")
w >> 2 过度强调条件 (可能质量下降)

第三部分: Diffusion Policy

3.1 架构


观测 → Encoder → obs_feat (条件)
                         ↓
x_T ~ N(0,I) → 去噪器(obs_feat, t) → x_{T-1} → ... → x_0 (动作序列)

3.2 相比 BC 的优势

方面 BC Diffusion Policy
输出 单点预测 完整分布
多模态 困难 天然支持
动作平滑 有抖动 逐步去噪, 平滑
可控性 CFG 控制风格

第四部分: 自动驾驶应用

4.1 工作流程


摄像头 → 特征提取 → obs_feat
                        ↓
          随机噪声 → N 步去噪 → 动作序列 (steer, throttle, brake)

4.2 实际部署

- DDIM 10 步采样实现实时推理 (~50ms)

- CFG 控制谨慎/激进风格

- 多模态采样 + 安全性过滤


总结

1. ✅ DDPM: 前向加噪 + 反向去噪

2. ✅ 噪声调度: cosine/linear/sigmoid

3. ✅ CFG: 条件-无条件插值控制生成

4. ✅ Diffusion Policy: 扩散模型生成动作序列

5. ✅ DDIM: 10 步加速采样


下一章: RL Planning — 强化学习驾驶策略优化