深度生成模型中的扩散模型(Diffusion Model)原理与去噪过程
字数 2731 2025-10-28 11:34:06

深度生成模型中的扩散模型(Diffusion Model)原理与去噪过程

题目描述
扩散模型(Diffusion Model)是一种生成模型,通过模拟数据从噪声中逐步恢复的过程生成新样本。其核心思想是:先对输入数据逐步添加噪声(前向过程),再训练一个神经网络逐步去噪(反向过程),最终从纯噪声中重构出数据。本题要求详细解释扩散模型的原理,尤其是前向与反向过程的数学推导及去噪步骤的实现细节。


1. 前向过程(加噪)

前向过程是一个固定的马尔可夫链,逐步向数据添加高斯噪声:

  • 设原始数据为 \(x_0\),经过 \(T\) 步加噪后得到纯噪声 \(x_T\)
  • 每一步的加噪公式为:

\[ x_t = \sqrt{\alpha_t} x_{t-1} + \sqrt{1 - \alpha_t} \epsilon_t, \quad \epsilon_t \sim \mathcal{N}(0, I) \]

其中 \(\alpha_t\) 是预先设定的噪声调度参数(满足 \(\alpha_t \in (0, 1)\) 且逐渐减小),控制每一步的噪声强度。

  • 通过递归推导,可以直接从 \(x_0\) 计算 \(x_t\)

\[ x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, \quad \bar{\alpha}_t = \prod_{i=1}^t \alpha_i \]

这一性质允许在训练时随机采样任意时间步 \(t\) 的噪声数据,无需逐步计算。

关键点:前向过程无需学习,其目的是为反向过程提供训练目标——即如何从 \(x_t\) 预测 \(x_{t-1}\)


2. 反向过程(去噪)

反向过程是扩散模型的核心,通过学习高斯分布的均值和方差逐步去噪:

  • 目标是从 \(x_T \sim \mathcal{N}(0, I)\) 开始,逐步生成 \(x_{t-1}\) 直到 \(x_0\)
  • 每一步的反向条件概率定义为:

\[ p_\theta(x_{t-1} \mid x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t)) \]

其中 \(\mu_\theta\)\(\Sigma_\theta\) 由神经网络参数化。

  • 为了训练 \(\mu_\theta\),需利用前向过程的性质:已知 \(x_t\)\(x_0\) 时,\(x_{t-1}\) 的后验分布可解析表示为:

\[ q(x_{t-1} \mid x_t, x_0) = \mathcal{N}(x_{t-1}; \tilde{\mu}(x_t, x_0), \tilde{\beta}_t I) \]

其中:

\[ \tilde{\mu}(x_t, x_0) = \frac{\sqrt{\bar{\alpha}_{t-1}}(1 - \alpha_t)}{1 - \bar{\alpha}_t} x_0 + \frac{\sqrt{\alpha_t}(1 - \bar{\alpha}_{t-1})}{1 - \bar{\alpha}_t} x_t \]

  • 通过将 \(x_0 = \frac{x_t - \sqrt{1 - \bar{\alpha}_t} \epsilon}{\sqrt{\bar{\alpha}_t}}\) 代入上式,可得:

\[ \tilde{\mu}(x_t, \epsilon) = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon \right) \]

此时,神经网络只需预测添加的噪声 \(\epsilon\),即:

\[ \mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon_\theta(x_t, t) \right) \]


3. 训练与损失函数

扩散模型的训练目标是最小化噪声预测误差:

  • 损失函数为均方误差(MSE):

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

其中 \(t\) 均匀采样自 \(\{1, \dots, T\}\)\(x_t\) 由前向过程生成。

  • 训练时,随机采样 \(x_0\)(来自数据集)、时间步 \(t\) 和噪声 \(\epsilon\),计算 \(x_t\) 后输入网络预测 \(\epsilon_\theta\),并更新参数。

4. 生成过程(采样)

从噪声 \(x_T \sim \mathcal{N}(0, I)\) 开始,逐步执行以下步骤:

  1. 输入当前 \(x_t\)\(t\) 到网络,得到预测的噪声 \(\epsilon_\theta(x_t, t)\)
  2. 计算 \(\mu_\theta(x_t, t)\) 并采样 \(x_{t-1}\)

\[ x_{t-1} = \mu_\theta(x_t, t) + \sigma_t z, \quad z \sim \mathcal{N}(0, I) \]

其中 \(\sigma_t\) 通常取 \(\sqrt{1 - \alpha_t}\) 或根据调度策略调整。
3. 重复直到 \(t=1\),最终得到生成样本 \(x_0\)


5. 关键改进与变体

  • DDPM:原始扩散模型使用固定方差,简化训练。
  • Improved DDPM:引入可学习的方差和噪声调度优化。
  • 条件生成:通过输入类别标签或文本描述(如CLIP引导)控制生成内容。

总结:扩散模型通过前向过程破坏数据、反向过程学习去噪,实现了高质量的生成能力,其核心在于对噪声的预测而非直接生成数据。

深度生成模型中的扩散模型(Diffusion Model)原理与去噪过程 题目描述 扩散模型(Diffusion Model)是一种生成模型,通过模拟数据从噪声中逐步恢复的过程生成新样本。其核心思想是:先对输入数据逐步添加噪声(前向过程),再训练一个神经网络逐步去噪(反向过程),最终从纯噪声中重构出数据。本题要求详细解释扩散模型的原理,尤其是前向与反向过程的数学推导及去噪步骤的实现细节。 1. 前向过程(加噪) 前向过程是一个固定的马尔可夫链,逐步向数据添加高斯噪声: 设原始数据为 \( x_ 0 \),经过 \( T \) 步加噪后得到纯噪声 \( x_ T \)。 每一步的加噪公式为: \[ x_ t = \sqrt{\alpha_ t} x_ {t-1} + \sqrt{1 - \alpha_ t} \epsilon_ t, \quad \epsilon_ t \sim \mathcal{N}(0, I) \] 其中 \( \alpha_ t \) 是预先设定的噪声调度参数(满足 \( \alpha_ t \in (0, 1) \) 且逐渐减小),控制每一步的噪声强度。 通过递归推导,可以直接从 \( x_ 0 \) 计算 \( x_ t \): \[ x_ t = \sqrt{\bar{\alpha}_ t} x_ 0 + \sqrt{1 - \bar{\alpha}_ t} \epsilon, \quad \bar{\alpha} t = \prod {i=1}^t \alpha_ i \] 这一性质允许在训练时随机采样任意时间步 \( t \) 的噪声数据,无需逐步计算。 关键点 :前向过程无需学习,其目的是为反向过程提供训练目标——即如何从 \( x_ t \) 预测 \( x_ {t-1} \)。 2. 反向过程(去噪) 反向过程是扩散模型的核心,通过学习高斯分布的均值和方差逐步去噪: 目标是从 \( x_ T \sim \mathcal{N}(0, I) \) 开始,逐步生成 \( x_ {t-1} \) 直到 \( x_ 0 \)。 每一步的反向条件概率定义为: \[ p_ \theta(x_ {t-1} \mid x_ t) = \mathcal{N}(x_ {t-1}; \mu_ \theta(x_ t, t), \Sigma_ \theta(x_ t, t)) \] 其中 \( \mu_ \theta \) 和 \( \Sigma_ \theta \) 由神经网络参数化。 为了训练 \( \mu_ \theta \),需利用前向过程的性质:已知 \( x_ t \) 和 \( x_ 0 \) 时,\( x_ {t-1} \) 的后验分布可解析表示为: \[ q(x_ {t-1} \mid x_ t, x_ 0) = \mathcal{N}(x_ {t-1}; \tilde{\mu}(x_ t, x_ 0), \tilde{\beta} t I) \] 其中: \[ \tilde{\mu}(x_ t, x_ 0) = \frac{\sqrt{\bar{\alpha} {t-1}}(1 - \alpha_ t)}{1 - \bar{\alpha} t} x_ 0 + \frac{\sqrt{\alpha_ t}(1 - \bar{\alpha} {t-1})}{1 - \bar{\alpha}_ t} x_ t \] 通过将 \( x_ 0 = \frac{x_ t - \sqrt{1 - \bar{\alpha}_ t} \epsilon}{\sqrt{\bar{\alpha}_ t}} \) 代入上式,可得: \[ \tilde{\mu}(x_ t, \epsilon) = \frac{1}{\sqrt{\alpha_ t}} \left( x_ t - \frac{1 - \alpha_ t}{\sqrt{1 - \bar{\alpha} t}} \epsilon \right) \] 此时,神经网络只需预测添加的噪声 \( \epsilon \),即: \[ \mu \theta(x_ t, t) = \frac{1}{\sqrt{\alpha_ t}} \left( x_ t - \frac{1 - \alpha_ t}{\sqrt{1 - \bar{\alpha} t}} \epsilon \theta(x_ t, t) \right) \] 3. 训练与损失函数 扩散模型的训练目标是最小化噪声预测误差: 损失函数为均方误差(MSE): \[ L(\theta) = \mathbb{E} {t, x_ 0, \epsilon} \left[ \| \epsilon - \epsilon \theta(x_ t, t) \|^2 \right ] \] 其中 \( t \) 均匀采样自 \( \{1, \dots, T\} \),\( x_ t \) 由前向过程生成。 训练时,随机采样 \( x_ 0 \)(来自数据集)、时间步 \( t \) 和噪声 \( \epsilon \),计算 \( x_ t \) 后输入网络预测 \( \epsilon_ \theta \),并更新参数。 4. 生成过程(采样) 从噪声 \( x_ T \sim \mathcal{N}(0, I) \) 开始,逐步执行以下步骤: 输入当前 \( x_ t \) 和 \( t \) 到网络,得到预测的噪声 \( \epsilon_ \theta(x_ t, t) \)。 计算 \( \mu_ \theta(x_ t, t) \) 并采样 \( x_ {t-1} \): \[ x_ {t-1} = \mu_ \theta(x_ t, t) + \sigma_ t z, \quad z \sim \mathcal{N}(0, I) \] 其中 \( \sigma_ t \) 通常取 \( \sqrt{1 - \alpha_ t} \) 或根据调度策略调整。 重复直到 \( t=1 \),最终得到生成样本 \( x_ 0 \)。 5. 关键改进与变体 DDPM :原始扩散模型使用固定方差,简化训练。 Improved DDPM :引入可学习的方差和噪声调度优化。 条件生成 :通过输入类别标签或文本描述(如CLIP引导)控制生成内容。 总结 :扩散模型通过前向过程破坏数据、反向过程学习去噪,实现了高质量的生成能力,其核心在于对噪声的预测而非直接生成数据。