扩散模型中的去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPM)前向与反向过程数学推导
题目描述
DDPM是一种基于扩散过程的深度生成模型。其核心思想是通过一个固定的前向过程(加噪过程)逐渐将数据分布转换为简单的高斯噪声分布,然后训练一个神经网络学习逆向的去噪过程,从而从噪声中生成数据。本题要求详细推导DDPM中前向过程的数学形式、反向过程的目标函数(变分下界ELBO的分解),并解释如何通过重参数化技巧和简化目标函数来训练模型。
解题过程循序渐进讲解
1. 前向过程(加噪过程)的数学定义
前向过程是一个固定的马尔可夫链,逐步向数据添加高斯噪声。给定原始数据 \(\mathbf{x}_0 \sim q(\mathbf{x}_0)\),前向过程在 \(T\) 步内产生隐变量 \(\mathbf{x}_1, \dots, \mathbf{x}_T\),每一步的条件概率定义为:
\[q(\mathbf{x}_t | \mathbf{x}_{t-1}) = \mathcal{N}(\mathbf{x}_t; \sqrt{1 - \beta_t} \mathbf{x}_{t-1}, \beta_t \mathbf{I}) \]
其中:
- \(\beta_t \in (0, 1)\) 是预先定义的噪声调度参数,控制每一步添加的噪声量。
- \(\sqrt{1 - \beta_t}\) 是保留前一状态信息的系数,确保方差逐渐增大至1。
关键推导:任意步的闭式解
由于每一步都是高斯分布,可以通过重参数化技巧直接计算 \(\mathbf{x}_t\) 关于 \(\mathbf{x}_0\) 的分布,而无需逐步迭代。令 \(\alpha_t = 1 - \beta_t\),\(\bar{\alpha}_t = \prod_{s=1}^{t} \alpha_s\),则:
\[\mathbf{x}_t = \sqrt{\bar{\alpha}_t} \mathbf{x}_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, \quad \epsilon \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) \]
对应的概率分布为:
\[q(\mathbf{x}_t | \mathbf{x}_0) = \mathcal{N}(\mathbf{x}_t; \sqrt{\bar{\alpha}_t} \mathbf{x}_0, (1 - \bar{\alpha}_t) \mathbf{I}) \]
当 \(T\) 足够大时,\(\bar{\alpha}_T \approx 0\),因此 \(\mathbf{x}_T\) 近似为标准高斯噪声 \(\mathcal{N}(\mathbf{0}, \mathbf{I})\)。
2. 反向过程(去噪过程)的建模
反向过程的目标是从噪声 \(\mathbf{x}_T \sim \mathcal{N}(\mathbf{0}, \mathbf{I})\) 逐步恢复出数据分布。我们用一个参数化的马尔可夫链(通常为神经网络)来近似真实的反向转移概率:
\[p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t-1}; \mu_\theta(\mathbf{x}_t, t), \Sigma_\theta(\mathbf{x}_t, t)) \]
其中 \(\mu_\theta\) 和 \(\Sigma_\theta\) 是神经网络输出的均值和方差。为简化训练,通常将方差固定为与 \(\beta_t\) 相关的常数,例如 \(\Sigma_\theta(\mathbf{x}_t, t) = \sigma_t^2 \mathbf{I}\),其中 \(\sigma_t^2 = \beta_t\) 或 \(\tilde{\beta}_t = \frac{1 - \bar{\alpha}_{t-1}}{1 - \bar{\alpha}_t} \beta_t\)。
3. 训练目标:变分下界(ELBO)的推导
DDPM通过最大化对数似然的下界来训练模型。对数似然可分解为:
\[\log p_\theta(\mathbf{x}_0) \geq \mathbb{E}_{q(\mathbf{x}_{1:T} | \mathbf{x}_0)} \left[ \log \frac{p_\theta(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} | \mathbf{x}_0)} \right] = \text{ELBO} \]
将联合分布 \(p_\theta(\mathbf{x}_{0:T}) = p(\mathbf{x}_T) \prod_{t=1}^{T} p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t)\) 和前向过程 \(q(\mathbf{x}_{1:T} | \mathbf{x}_0) = \prod_{t=1}^{T} q(\mathbf{x}_t | \mathbf{x}_{t-1})\) 代入,ELBO可进一步分解为三项:
\[\text{ELBO} = \mathbb{E}_{q} [\underbrace{\log p_\theta(\mathbf{x}_0 | \mathbf{x}_1)}_{\text{重构项}}] - \underbrace{D_\text{KL}(q(\mathbf{x}_T | \mathbf{x}_0) \| p(\mathbf{x}_T))}_{\text{先验匹配项(可忽略)}} - \sum_{t=2}^{T} \underbrace{\mathbb{E}_{q(\mathbf{x}_t | \mathbf{x}_0)} [D_\text{KL}(q(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0) \| p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t))]}_{\text{去噪匹配项}} \]
其中:
- 重构项:表示从 \(\mathbf{x}_1\) 重建 \(\mathbf{x}_0\) 的似然,通常用均方误差或离散化损失。
- 去噪匹配项:是核心项,要求神经网络预测的反向分布 \(p_\theta\) 逼近真实的后验分布 \(q(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0)\)。
4. 真实后验分布 \(q(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0)\) 的闭式解
利用贝叶斯公式和高斯分布的性质,可以推导出真实后验分布也是高斯分布:
\[q(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0) = \mathcal{N}(\mathbf{x}_{t-1}; \tilde{\mu}_t(\mathbf{x}_t, \mathbf{x}_0), \tilde{\beta}_t \mathbf{I}) \]
其中均值和方差为:
\[\tilde{\mu}_t(\mathbf{x}_t, \mathbf{x}_0) = \frac{\sqrt{\bar{\alpha}_{t-1}} \beta_t}{1 - \bar{\alpha}_t} \mathbf{x}_0 + \frac{\sqrt{\alpha_t}(1 - \bar{\alpha}_{t-1})}{1 - \bar{\alpha}_t} \mathbf{x}_t, \quad \tilde{\beta}_t = \frac{1 - \bar{\alpha}_{t-1}}{1 - \bar{\alpha}_t} \beta_t \]
5. 简化训练目标:预测噪声
将 \(\mathbf{x}_0\) 用 \(\mathbf{x}_t\) 和噪声 \(\epsilon\) 表示(根据前向过程闭式解),代入 \(\tilde{\mu}_t\) 可得:
\[\tilde{\mu}_t = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon \right) \]
因此,如果我们用神经网络 \(\epsilon_\theta(\mathbf{x}_t, t)\) 预测添加到 \(\mathbf{x}_t\) 中的噪声 \(\epsilon\),则可参数化反向过程的均值:
\[\mu_\theta(\mathbf{x}_t, t) = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon_\theta(\mathbf{x}_t, t) \right) \]
此时,去噪匹配项中的KL散度可简化为噪声预测的均方误差:
\[\mathbb{E}_{\mathbf{x}_0, \epsilon} \left[ \frac{\beta_t^2}{2 \sigma_t^2 \alpha_t (1 - \bar{\alpha}_t)} \| \epsilon - \epsilon_\theta(\mathbf{x}_t, t) \|^2 \right] \]
其中 \(\mathbf{x}_t = \sqrt{\bar{\alpha}_t} \mathbf{x}_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon\)。为稳定训练,DDPM进一步忽略权重系数,使用简化目标:
\[\mathcal{L}_\text{simple} = \mathbb{E}_{t, \mathbf{x}_0, \epsilon} \left[ \| \epsilon - \epsilon_\theta(\mathbf{x}_t, t) \|^2 \right] \]
这里 \(t\) 均匀采样自 \(\{1, \dots, T\}\)。
6. 训练与生成算法总结
- 训练:重复采样数据 \(\mathbf{x}_0\)、时间步 \(t\)、噪声 \(\epsilon\),计算 \(\mathbf{x}_t\),通过最小化 \(\mathcal{L}_\text{simple}\) 训练噪声预测网络 \(\epsilon_\theta\)。
- 生成:从 \(\mathbf{x}_T \sim \mathcal{N}(\mathbf{0}, \mathbf{I})\) 开始,对 \(t = T, \dots, 1\) 执行:
\[ \mathbf{x}_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon_\theta(\mathbf{x}_t, t) \right) + \sigma_t \mathbf{z}, \quad \mathbf{z} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) \]
其中最后一项为随机噪声(当 \(t > 1\) 时添加),用于模拟概率生成过程。
通过以上推导,DDPM将复杂的生成建模问题转化为对噪声的回归任务,使其能够稳定训练并生成高质量样本。