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