扩散模型(Diffusion Models)的前向加噪与反向去噪过程
字数 2392 2025-11-14 11:00:58

扩散模型(Diffusion Models)的前向加噪与反向去噪过程

我将为您详细讲解扩散模型中的前向加噪与反向去噪过程。扩散模型是当前生成式AI领域的核心技术,理解其双向过程对掌握该算法至关重要。

题目描述

扩散模型通过两个核心过程实现数据生成:

  1. 前向过程:将原始数据逐步添加高斯噪声,最终转化为纯噪声
  2. 反向过程:从纯噪声开始,通过神经网络学习逐步去噪,最终恢复出原始数据分布

解题过程详解

第一步:前向加噪过程(扩散过程)

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

数学形式化
给定原始数据样本 \(x_0 \sim q(x_0)\),前向过程定义如下:

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

其中:

  • \(\beta_t\) 是噪声调度参数,满足 \(0 < \beta_1 < \beta_2 < \cdots < \beta_T < 1\)
  • \(t = 1, 2, \cdots, T\) 是时间步
  • \(I\) 是单位矩阵

关键推导
通过重参数化技巧,我们可以直接从 \(x_0\) 计算任意时刻 \(t\)\(x_t\)

\[x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon \]

其中:

  • \(\alpha_t = 1 - \beta_t\)
  • \(\bar{\alpha}_t = \prod_{s=1}^{t} \alpha_s\)
  • \(\epsilon \sim \mathcal{N}(0, I)\) 是标准高斯噪声

物理意义
这个闭式解意味着我们不需要逐步计算所有中间状态,可以直接从 \(x_0\) 跳到任意 \(x_t\),极大提高了计算效率。

第二步:反向去噪过程(生成过程)

反向过程是从噪声中恢复数据的关键,通过学习条件分布实现:

数学定义

\[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\) 是神经网络学习的参数。

简化目标
在实践中,通常固定方差 \(\Sigma_\theta(x_t, t) = \sigma_t^2 I\),只学习均值函数。通过变分推断,可以证明优化目标简化为:

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

其中:

  • \(t \sim \text{Uniform}(1, T)\)
  • \(x_0 \sim q(x_0)\)
  • \(\epsilon \sim \mathcal{N}(0, I)\)
  • \(x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon\)

直观理解
神经网络 \(\epsilon_\theta\) 学习预测添加到数据中的噪声 \(\epsilon\)。一旦网络学会了准确预测噪声,就可以从纯噪声开始,逐步去除预测的噪声,最终生成新的数据样本。

第三步:训练算法步骤

  1. 采样训练数据:从训练集中随机选择样本 \(x_0\)
  2. 采样时间步:均匀采样 \(t \sim \text{Uniform}({1, 2, \cdots, T})\)
  3. 采样噪声:从标准高斯分布采样 \(\epsilon \sim \mathcal{N}(0, I)\)
  4. 计算加噪数据\(x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon\)
  5. 计算损失\(\mathcal{L} = \|\epsilon - \epsilon_\theta(x_t, t)\|^2\)
  6. 参数更新:通过梯度下降更新神经网络参数 \(\theta\)

第四步:生成新样本

训练完成后,生成新样本的过程如下:

  1. 从纯噪声开始:\(x_T \sim \mathcal{N}(0, I)\)
  2. 对于 \(t = T, T-1, \cdots, 1\)
    • 使用训练好的网络预测噪声:\(\hat{\epsilon}_t = \epsilon_\theta(x_t, t)\)
    • 计算去噪后的样本:

\[ x_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \hat{\epsilon}_t \right) + \sigma_t z \]

 其中 $ z \sim \mathcal{N}(0, I) $(当 $ t > 1 $ 时)
  1. 最终得到生成样本 \(x_0\)

核心洞见

扩散模型的核心思想是通过学习"逆扩散过程",将简单的噪声分布转化为复杂的数据分布。前向过程确保数据被充分破坏,反向过程则学习如何系统地重建数据,这种双向过程使得模型能够生成高质量、多样化的新样本。

扩散模型(Diffusion Models)的前向加噪与反向去噪过程 我将为您详细讲解扩散模型中的前向加噪与反向去噪过程。扩散模型是当前生成式AI领域的核心技术,理解其双向过程对掌握该算法至关重要。 题目描述 扩散模型通过两个核心过程实现数据生成: 前向过程 :将原始数据逐步添加高斯噪声,最终转化为纯噪声 反向过程 :从纯噪声开始,通过神经网络学习逐步去噪,最终恢复出原始数据分布 解题过程详解 第一步:前向加噪过程(扩散过程) 前向过程是一个固定的马尔可夫链,逐步向数据添加噪声: 数学形式化 : 给定原始数据样本 \( x_ 0 \sim q(x_ 0) \),前向过程定义如下: \[ q(x_ t | x_ {t-1}) = \mathcal{N}(x_ t; \sqrt{1-\beta_ t}x_ {t-1}, \beta_ t I) \] 其中: \( \beta_ t \) 是噪声调度参数,满足 \( 0 < \beta_ 1 < \beta_ 2 < \cdots < \beta_ T < 1 \) \( t = 1, 2, \cdots, T \) 是时间步 \( I \) 是单位矩阵 关键推导 : 通过重参数化技巧,我们可以直接从 \( x_ 0 \) 计算任意时刻 \( t \) 的 \( x_ t \): \[ x_ t = \sqrt{\bar{\alpha}_ t}x_ 0 + \sqrt{1-\bar{\alpha}_ t}\epsilon \] 其中: \( \alpha_ t = 1 - \beta_ t \) \( \bar{\alpha} t = \prod {s=1}^{t} \alpha_ s \) \( \epsilon \sim \mathcal{N}(0, I) \) 是标准高斯噪声 物理意义 : 这个闭式解意味着我们不需要逐步计算所有中间状态,可以直接从 \( x_ 0 \) 跳到任意 \( x_ t \),极大提高了计算效率。 第二步:反向去噪过程(生成过程) 反向过程是从噪声中恢复数据的关键,通过学习条件分布实现: 数学定义 : \[ 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 \) 是神经网络学习的参数。 简化目标 : 在实践中,通常固定方差 \( \Sigma_ \theta(x_ t, t) = \sigma_ t^2 I \),只学习均值函数。通过变分推断,可以证明优化目标简化为: \[ \mathcal{L}(\theta) = \mathbb{E} {t,x_ 0,\epsilon} \left[ \|\epsilon - \epsilon \theta(x_ t, t)\|^2 \right ] \] 其中: \( t \sim \text{Uniform}(1, T) \) \( x_ 0 \sim q(x_ 0) \) \( \epsilon \sim \mathcal{N}(0, I) \) \( x_ t = \sqrt{\bar{\alpha}_ t}x_ 0 + \sqrt{1-\bar{\alpha}_ t}\epsilon \) 直观理解 : 神经网络 \( \epsilon_ \theta \) 学习预测添加到数据中的噪声 \( \epsilon \)。一旦网络学会了准确预测噪声,就可以从纯噪声开始,逐步去除预测的噪声,最终生成新的数据样本。 第三步:训练算法步骤 采样训练数据 :从训练集中随机选择样本 \( x_ 0 \) 采样时间步 :均匀采样 \( t \sim \text{Uniform}({1, 2, \cdots, T}) \) 采样噪声 :从标准高斯分布采样 \( \epsilon \sim \mathcal{N}(0, I) \) 计算加噪数据 :\( x_ t = \sqrt{\bar{\alpha}_ t}x_ 0 + \sqrt{1-\bar{\alpha}_ t}\epsilon \) 计算损失 :\( \mathcal{L} = \|\epsilon - \epsilon_ \theta(x_ t, t)\|^2 \) 参数更新 :通过梯度下降更新神经网络参数 \( \theta \) 第四步:生成新样本 训练完成后,生成新样本的过程如下: 从纯噪声开始:\( x_ T \sim \mathcal{N}(0, I) \) 对于 \( t = T, T-1, \cdots, 1 \): 使用训练好的网络预测噪声:\( \hat{\epsilon} t = \epsilon \theta(x_ t, t) \) 计算去噪后的样本: \[ x_ {t-1} = \frac{1}{\sqrt{\alpha_ t}} \left( x_ t - \frac{1-\alpha_ t}{\sqrt{1-\bar{\alpha}_ t}} \hat{\epsilon}_ t \right) + \sigma_ t z \] 其中 \( z \sim \mathcal{N}(0, I) \)(当 \( t > 1 \) 时) 最终得到生成样本 \( x_ 0 \) 核心洞见 扩散模型的核心思想是通过学习"逆扩散过程",将简单的噪声分布转化为复杂的数据分布。前向过程确保数据被充分破坏,反向过程则学习如何系统地重建数据,这种双向过程使得模型能够生成高质量、多样化的新样本。