扩散模型(Diffusion Model)中的去噪过程与DDPM(Denoising Diffusion Probabilistic Models)算法原理
题目描述
扩散模型是一种生成模型,通过模拟数据分布的噪声添加和去噪过程生成样本。DDPM是其经典实现,核心分为两个过程:
- 前向过程(扩散过程):逐步向输入数据添加高斯噪声,最终将数据转化为纯噪声。
- 反向过程(去噪过程):训练神经网络从噪声中逐步还原数据分布。
本题要求详细解释DDPM的反向去噪过程,包括目标函数设计、网络训练方法及采样步骤。
解题过程
1. 前向过程的形式化定义
假设原始数据为 \(x_0 \sim q(x_0)\),前向过程通过 \(T\) 步添加噪声,每步的噪声强度由方差调度 \(\beta_t \in (0,1)\) 控制:
\[q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1-\beta_t} x_{t-1}, \beta_t I) \]
利用重参数化技巧,可直接从 \(x_0\) 计算 \(x_t\):
\[x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1-\bar{\alpha}_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0,I) \]
其中 \(\alpha_t = 1-\beta_t\),\(\bar{\alpha}_t = \prod_{i=1}^t \alpha_i\)。当 \(T \to \infty\),\(x_T\) 近似为标准高斯分布。
2. 反向过程的概率建模
反向过程的目标是从 \(x_T \sim \mathcal{N}(0,I)\) 逐步还原 \(x_0\)。每一步定义为:
\[p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t)) \]
其中 \(\mu_\theta\) 和 \(\Sigma_\theta\) 由神经网络学习。DDPM固定方差为 \(\Sigma_t = \sigma_t^2 I\),仅学习均值 \(\mu_\theta\)。
3. 训练目标:优化变分下界(ELBO)
通过最小化负对数似然的变分下界推导训练损失:
\[\mathbb{E}_{q(x_0)} [-\log p_\theta(x_0)] \leq \mathbb{E}_q \left[ -\log \frac{p_\theta(x_{0:T})}{q(x_{1:T}|x_0)} \right] \]
展开后,损失函数可简化为对噪声的预测任务:
\[L(\theta) = \mathbb{E}_{t,x_0,\epsilon} \left[ \| \epsilon - \epsilon_\theta(x_t, t) \|^2 \right] \]
其中 \(\epsilon_\theta\) 是网络预测的噪声,\(t\) 均匀采样自 \(\{1, \dots, T\}\)。
推导细节:
- 前向过程条件下,\(x_t\) 可表示为 \(x_0\) 和噪声 \(\epsilon\) 的线性组合。
- 反向过程的均值参数化為 \(\mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}} \epsilon_\theta(x_t, t) \right)\),代入ELBO后与噪声预测损失等价。
4. 网络架构与训练步骤
网络设计:
- 使用U-Net结构,包含下采样和上采样模块,通过残差连接保留细节。
- 输入为当前噪声图像 \(x_t\) 和时间步 \(t\) 的嵌入向量(通过正弦位置编码)。
训练流程:
- 从数据集中采样真实样本 \(x_0\)。
- 随机采样时间步 \(t \sim \text{Uniform}(1, T)\)。
- 采样噪声 \(\epsilon \sim \mathcal{N}(0,I)\),构造 \(x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1-\bar{\alpha}_t} \epsilon\)。
- 网络输入 \(x_t\) 和 \(t\),输出预测噪声 \(\epsilon_\theta\)。
- 计算均方误差损失 \(\| \epsilon - \epsilon_\theta \|^2\) 并反向传播更新参数。
5. 采样生成新样本
从随机噪声 \(x_T \sim \mathcal{N}(0,I)\) 开始,逐步执行以下迭代(\(t=T,\dots,1\)):
- 计算当前步的噪声预测: \(\epsilon_\theta(x_t, t)\)。
- 根据公式计算 \(x_{t-1}\):
\[x_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}} \epsilon_\theta(x_t, t) \right) + \sigma_t z \]
其中 \(z \sim \mathcal{N}(0,I)\)(当 \(t>1\) 时添加随机噪声,\(t=1\) 时 \(z=0\))。
3. 重复直至得到 \(x_0\)。
6. 关键改进与扩展
- 方差调度优化:使用余弦调度避免噪声添加过快,提升生成质量。
- 条件生成:在输入中引入类别标签或文本编码,实现可控生成。
- 加速采样:DDIM(Denoising Diffusion Implicit Models)通过非马尔可夫过程减少采样步数。
总结:DDPM通过简化的噪声预测目标,将复杂的生成问题转化为可优化的神经网络训练任务,奠定了扩散模型的基础框架。