- 动机:SMLD 属于 基于分数(Score-based)的生成模型,是另一种从期望分布中生成数据的方法。
-
核心思想:SMLD 旨在估计和学习 得分(Score)(即对数概率密度函数
$\log p(\mathbf{x})$ 对数据$\mathbf{x}$ 的梯度$\nabla_{\mathbf{x}} \log p(\mathbf{x})$ )。 - 生成过程:通过 Langevin Dynamics (朗之万动力学) 从一系列逐步去噪的特征中采样,最终生成图像。
| 特征 | VAE (变分自编码器) | SMLD (基于分数的模型) | 来源 |
|---|---|---|---|
| 理论基础 | 变分推断 (VI),优化 ELBO。 | 分数匹配 (Score Matching),优化分数函数与真实分数的 L2 距离。 | |
| 核心预测对象 | Encoder 预测潜变量 |
网络 $\mathbf{s}{\theta}(\mathbf{x})$ 预测对数概率密度函数的梯度(Score)$\nabla{\mathbf{x}} \log p(\mathbf{x})$。 | |
| 生成过程 | 一步生成(一次 Decoder 采样)。 | 多步迭代采样(Langevin Dynamics 逐步去噪)。 | |
| 生成质量 | 易产生模糊图像。 | 依赖于朗之万动力学的步长和迭代次数。 |
SMLD 的框架核心是训练一个 噪声条件分数网络 (NCSN)
-
分数函数 (Score):定义为对数概率密度函数的梯度: $$\displaystyle \mathbf{s}{\theta}(\mathbf{x}) \stackrel{\mathrm{def}}{=} \nabla{\mathbf{x}} \log p(\mathbf{x}) ;;;;;;$$
-
朗之万方程 (Langevin Dynamics):用于从真实分布
$p(\mathbf{x})$ 中采样,它结合了梯度上升和随机噪声: $$\displaystyle \mathbf{x}t = \mathbf{x}{t-1} + \tau \nabla_{\mathbf{x}_{t-1}} \log p(\mathbf{x}) + \sqrt{2 \tau}\mathbf{z} ;;;;;;$$- 该方程直观上包括了梯度上升项(趋向于高概率区域)和噪声项(避免陷入局部最优)。
- 通过足够大的时间步
$t$ ,可以从真实分布中提取样本。
-
挑战:由于真实分布
$p(\mathbf{x})$ 未知,无法直接计算$\nabla_{\mathbf{x}} \log p(\mathbf{x})$ 。因此引入了 Denoising Score Matching (DSM) 来解决这个问题。
SMLD 的训练目标是最小化 带权重的 Denoising Score Matching (DSM) 损失。
为了解决真实 Score 无法计算的问题,我们使用 DSM,它假设有一个预定义的噪声分布
假设噪声分布为高斯
通过代入
为了推广到各种方差
最终优化损失:最小化以下损失:
$$\displaystyle \frac{1}{M} \sum_{n=1}^M \sigma_{i_n}^2 \mathbb{E}{p(\mathbf{x})} \left[ \frac{1}{2} \left| \mathbf{s}{\theta}(\mathbf{x} + \sigma_{i_n} \mathbf{z}, {i_n}) + \frac{\mathbf{z}}{\sigma_{i_n}} \right|^2 \right] ;;;;;;$$
其中
SMLD 使用 RefineNet 架构(U-Net 的变体)作为其噪声条件分数网络
- 动机:RefineNet 最初用于语义分割,旨在解决深层 CNNs(如 ResNet)中特征分辨率降低导致重要视觉信息丢失的问题。
- 主体结构:是一个 U-Net 结构,但包含多个特殊的残差块和融合块。
| 组件 | 动机与核心思想 | 来源 |
|---|---|---|
| 条件归一化 (Conditional Normalization) |
动机:实现网络对噪声水平 |
|
| 实现 | 在每个卷积层和池化层中,用依赖于 |
|
| RCUBlock (Residual Conv Unit) | 在 RefineNet Block 中使用,应用两次残差卷积。 | |
| MultiResolutionFusionBlock (多分辨率融合) | 动机:融合来自不同分辨率的特征图。 | |
| 实现 | 对不同输入应用卷积,并将所有结果上采样/插值到相同的较高分辨率后求和。 | |
| ChainedResidualPoolingBlock (链式残差池化) | 动机:通过链式残差方式的多次池化,从大图像区域捕获背景上下文信息。 | |
| Residual blocks | 用于 RefineNet 的 顶向下路径 (Encoder)。在最后两层使用了空洞卷积 (dilated convolutions)。 |
SMLD 的推理过程(图像生成)通过 嵌套循环 迭代应用朗之万方程,逐步减小噪声
- 初始化:随机选取初始样本 $\mathbf{x}0$(或 $\mathbf{x}{t-1}$)。
-
外循环:遍历噪声水平
$i=1, \ldots, L$ 。$\sigma_i$ 在迭代中减小。 -
内循环:在每个噪声水平
$\sigma_i$ 下,执行$T$ 步朗之万采样 ($t=1, \ldots, T$ )。
朗之万采样公式: $$\displaystyle \mathbf{x}t = \mathbf{x}{t-1} + \frac{\alpha_i}{2} \mathbf{s}{\theta}(\mathbf{x}{t-1}, i) + \sqrt{\alpha_i}\mathbf{z}_t ;;;;;;$$ 其中:
- $\mathbf{s}{\theta}(\mathbf{x}{t-1}, i)$ 是 NCSN 预测的 Score。
-
$\mathbf{z}_t \sim \mathcal{N}(\mathbf{0},\mathbf{I})$ 是高斯噪声。 -
$\alpha_i = \epsilon \cdot \sigma_i^2 / \sigma_L^2$ 是步长。
SMLD 是 DDPM 之前的早期工作。
| 特征 | SMLD (基于分数) | DDPM (基于扩散) | 来源 |
|---|---|---|---|
| 生成质量 | 样本质量通常被 DDPM 报告更高。 | 样本质量高。 | |
| 训练稳定性 | 训练稳定(分数匹配)。 | 训练更稳定,生成过程更稳定。 | |
| 生成速度 | 采样依赖于朗之万动力学的迭代,可能需要较多步骤。 |
生成速度慢:逆向扩散过程需要大量的去噪迭代次数 ( |
|
| 核心优化 | 优化分数网络预测 |
优化 U-Net 预测噪声 |
|
| 改进 | NCSNv2, NCSN++ 改进了 SMLD 架构。 | DDIM 通过转换为非马尔可夫过程来减少生成所需的迭代次数。 |