扩散模型(Diffusion Model)中的去噪过程与DDPM(Denoising Diffusion Probabilistic Models)算法原理
字数 2664 2025-11-03 08:34:44

扩散模型(Diffusion Model)中的去噪过程与DDPM(Denoising Diffusion Probabilistic Models)算法原理

题目描述
扩散模型是一种生成模型,通过模拟数据分布的噪声添加和去噪过程生成样本。DDPM是其经典实现,核心分为两个过程:

  1. 前向过程(扩散过程):逐步向输入数据添加高斯噪声,最终将数据转化为纯噪声。
  2. 反向过程(去噪过程):训练神经网络从噪声中逐步还原数据分布。
    本题要求详细解释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\) 的嵌入向量(通过正弦位置编码)。

训练流程

  1. 从数据集中采样真实样本 \(x_0\)
  2. 随机采样时间步 \(t \sim \text{Uniform}(1, T)\)
  3. 采样噪声 \(\epsilon \sim \mathcal{N}(0,I)\),构造 \(x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1-\bar{\alpha}_t} \epsilon\)
  4. 网络输入 \(x_t\)\(t\),输出预测噪声 \(\epsilon_\theta\)
  5. 计算均方误差损失 \(\| \epsilon - \epsilon_\theta \|^2\) 并反向传播更新参数。

5. 采样生成新样本

从随机噪声 \(x_T \sim \mathcal{N}(0,I)\) 开始,逐步执行以下迭代(\(t=T,\dots,1\)):

  1. 计算当前步的噪声预测: \(\epsilon_\theta(x_t, t)\)
  2. 根据公式计算 \(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通过简化的噪声预测目标,将复杂的生成问题转化为可优化的神经网络训练任务,奠定了扩散模型的基础框架。

扩散模型(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 \))。 重复直至得到 \( x_ 0 \)。 6. 关键改进与扩展 方差调度优化 :使用余弦调度避免噪声添加过快,提升生成质量。 条件生成 :在输入中引入类别标签或文本编码,实现可控生成。 加速采样 :DDIM(Denoising Diffusion Implicit Models)通过非马尔可夫过程减少采样步数。 总结 :DDPM通过简化的噪声预测目标,将复杂的生成问题转化为可优化的神经网络训练任务,奠定了扩散模型的基础框架。