🌊 引言:生成模型的新范式

扩散模型(Diffusion Models)是继 GAN 和 VAE 之后最强大的生成模型范式。其核心思想非常优雅:先逐步将数据加噪到纯噪声,再学习逆向去噪过程从噪声中恢复数据

2020 年 DDPM (Denoising Diffusion Probabilistic Models) 的提出标志着扩散模型的成熟,随后在图像生成(Stable Diffusion)、视频生成、以及自动驾驶场景生成和规划中展现出统治力。


🔄 DDPM 正向过程:逐步加噪

马尔可夫链式加噪

正向过程是一个固定的马尔可夫链,每一步对数据 x₀ 添加少量高斯噪声:

$$q(x_t|x_{t-1}) = \mathcal{N}(x_t; \sqrt{1-\beta_t} x_{t-1}, \beta_t \mathbf{I})$$

其中 $\beta_t \in (0,1)$ 是噪声调度(Noise Schedule),控制每一步的噪声强度。随着 t 增大,$x_t$ 逐渐失去原始数据的信息,最终 $x_T \sim \mathcal{N}(0, \mathbf{I})$。

重参数化:一步到位

利用高斯分布的重参数化技巧,可以直接从 x₀ 计算任意时刻的 x_t:

$$x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0, \mathbf{I})$$

其中 $\bar{\alpha}t = \prod{i=1}^t (1-\beta_i)$。这个公式极其重要——它意味着训练时不需要逐步迭代加噪,可以一步采样出任意时刻的噪声图像。

t 时刻$\bar{\alpha}_t$信号占比噪声占比图像状态
t=01100%0%原始数据
t=T/2~0.5~50%~50%模糊轮廓
t=T~0~0%~100%纯高斯噪声

⏪ 反向过程:去噪生成

学习去噪分布

反向过程同样定义为马尔可夫链,但转移核是未知的,需要用神经网络 p_θ 来近似:

$$p_\theta(x_{t-1}|x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t))$$

训练目标:简化版 ELBO

DDPM 的关键贡献是发现:训练去噪网络 ε_θ 直接预测噪声 $\epsilon$ 比预测均值 $\mu_\theta$ 更简单且效果更好:

$$L_{simple} = \mathbb{E}_{t, x_0, \epsilon} \left[ \|\epsilon - \epsilon_\theta(x_t, t)\|^2 \right]$$

训练流程

  1. 从数据集中采样 x₀
  2. 随机选取时间步 t
  3. 采样噪声 ε,计算 x_t = √ᾱ_t · x₀ + √(1-ᾱ_t) · ε
  4. 网络预测噪声 ε_θ(x_t, t)
  5. 计算 MSE 损失,更新网络

这个过程不依赖任何对抗训练(不像 GAN),训练极其稳定。

采样流程

训练完成后,从 x_T ∼ 𝒩(0, I) 开始逐步去噪:

# 采样核心步骤(简略)
for t in reversed(range(1, T)):
    noise = sample_gaussian() if t > 1 else 0
    eps_pred = model(x_t, t)
    x_{t-1} = 1/α_t * (x_t - β_t/(1-ᾱ_t) * eps_pred) + σ_t * noise

每一步用网络预测噪声,从当前 x_t 中去除一部分噪声,再加上随机扰动,最终恢复出干净的 x₀。

DDPM前向加噪与反向去噪过程示意图


🏗️ 去噪网络架构:U-Net 与 Transformer

U-Net 架构

DDPM 使用 U-Net 作为去噪骨干网络:

  • 编码器:逐步下采样提取层次特征
  • 解码器:逐步上采样恢复空间分辨率
  • 跳跃连接:保留细节信息
  • 时间嵌入:将时间步 t 编码为正弦位置编码后注入各层

关键组件

组件作用实现方式
Time Embedding告知网络当前噪声程度Sinusoidal PE + MLP
ResBlock深层特征提取Conv + GroupNorm + SiLU
Attention Block全局依赖建模Self-Attention(低分辨率层)
Conditional Norm条件信息注入Adaptive Group Norm

DiT:扩散 Transformer

2023 年后的趋势是用 Transformer 替代 U-Net。DiT(Diffusion Transformer)将图像打成 patch 后通过 ViT 处理,在图像质量上超越了 U-Net 架构,为后续 DiffusionDrive 等自动驾驶方法奠定了基础。


🎨 条件生成:可控生成的关键

Classifier Guidance

条件生成要求 $p(x|y)$,其中 y 是类别标签或文本描述。

分类器引导:在采样时利用一个额外的分类器 p(y|x_t) 的梯度来引导去噪方向:

$$\nabla_{x_t} \log p(x_t|y) = \nabla_{x_t} \log p(x_t) + s \cdot \nabla_{x_t} \log p(y|x_t)$$

其中 s 是引导强度。但这种方法需要额外训练一个分类器,且对分类器鲁棒性要求高。

Classifier-Free Guidance (CFG)

更优雅的方案:同时训练条件模型 ε_θ(x_t, t, y) 和无条件模型 ε_θ(x_t, t, ∅),采样时将两者插值:

$$\tilde{\epsilon}_\theta = \epsilon_\theta(x_t, t, \varnothing) + w \cdot (\epsilon_\theta(x_t, t, y) - \epsilon_\theta(x_t, t, \varnothing))$$
  • w = 1:普通条件生成
  • w > 1:强条件引导,生成更符合条件但多样性降低
  • w = 0:无条件生成

CFG 是 Stable Diffusion 和大多数图像扩散模型的标配。

方法额外模型训练成本可控性代表性应用
Classifier Guidance分类器GLIDE
CFGSD, DALL·E 3
CLIP GuidanceCLIPunCLIP

Classifier-free guidance原理:条件与无条件预测的插值


📈 Score-Based 模型:另一种视角

从 Score 函数理解扩散

Score Matching 为扩散模型提供了理论支撑。定义 score 函数为对数概率密度的梯度:

$$s(x) = \nabla_x \log p(x)$$

直观理解:score 指向概率密度增长最快的方向。从低密度区(噪声)沿着 score 方向移动,就能到达高密度区(数据)。

DDPM = Score-Based 模型的离散版本

DDPM 的去噪网络 ε_θ 实际上在估计 score 函数:

$$\epsilon_\theta(x_t, t) \approx -\sqrt{1-\bar{\alpha}_t} \cdot \nabla_{x_t} \log p(x_t)$$

这建立了去噪分数匹配之间的等价关系,是扩散模型理论深化的重要里程碑。


🚗 扩散模型在自动驾驶中的应用

1. 场景生成

用扩散模型生成多样化的驾驶场景用于仿真测试:

  • SceneDiffuser:生成交互式交通场景
  • DriveDreamer:根据文本描述生成视频场景
  • Panacea:多视角驾驶视频生成

2. Diffusion for Planning

将扩散模型用作轨迹规划器

  • 将轨迹看作"图像"(时间 × 状态维度)
  • 正向加噪:模糊轨迹
  • 反向去噪:在约束条件引导下恢复可行轨迹

代表性工作

  • Diffuser:开创性工作,将扩散用于轨迹规划
  • DiffusionDrive:专为自动驾驶设计的扩散规划器,在轨迹分布中采样多模态行为

3. 对比:扩散规划 vs 传统规划

维度传统优化规划扩散规划
多模态需显式枚举天然多模态
约束处理精确但复杂概率满足
实时性可做 50Hz通常 10-20Hz
泛化性固定规则数据驱动

💭 个人思考

扩散模型的"暴力美学"令人印象深刻——通过大量计算和简单的去噪目标,就能生成令人惊艳的结果。但它面临三个核心挑战:

  1. 采样速度:需数十到上千步迭代,难以满足自动驾驶实时需求。一致性模型(Consistency Models)和潜在扩散(LDM)是重要的加速方向
  2. 安全保证:概率生成无法提供碰撞避免的形式化保证,需要结合规则约束
  3. 分布外泛化:扩散模型在训练分布覆盖的场景表现好,但在罕见场景可能生成不可行轨迹

我认为扩散模型在自动驾驶中最现实的角色是数据增强和离线评估(生成极端场景测试规划器),而非实时规划引擎。但随着蒸馏技术和硬件加速的进步,扩散在线规划可能在 2-3 年内成为可行方案。