← 返回目录 | 第1章 / 共14章 | 下一章 → |
欢迎来到扩散模型的世界。本章将为您打开一扇通往现代生成模型前沿的大门。我们将从最基本的概念出发,探索扩散模型如何通过模拟一个有序到无序、再从无序中恢复有序的优雅过程,实现惊人的生成效果。您将学习到其背后的核心数学原理,包括前向加噪和反向去噪过程,并初步接触到该领域激动人心的开放性研究问题。本章旨在为您后续深入学习DDPM、分数模型和更高级的主题奠定坚实的直觉和理论基础。
扩散模型(Diffusion Models)是一类强大的生成模型,它通过学习数据的逐步去噪过程来生成高质量的样本。这个过程可以类比为物理学中的扩散现象:就像墨水在水中逐渐扩散直至均匀分布,扩散模型将数据逐步添加噪声直至变成纯噪声,然后学习如何反转这个过程。
让我们从一个直观的例子开始。想象你有一张清晰的照片,现在你要对它进行一系列操作:第一步,添加一点点噪声,图像变得略微模糊;第二步,再添加一些噪声,细节开始消失;如此反复,经过足够多的步骤后,原始图像完全被噪声淹没,变成了纯粹的随机像素。这就是扩散模型的前向过程——一个逐渐破坏信息的过程。
神奇的是,如果我们能学会如何在每一步精确地去除添加的噪声,那么就可以从纯噪声开始,一步步恢复出原始图像。更重要的是,一旦学会了这种去噪能力,我们就可以从任意的随机噪声开始,生成全新的、从未见过但却逼真的图像。这就是扩散模型的核心思想:通过学习破坏的逆过程来实现创造。
扩散模型的数学根源可以追溯到1827年罗伯特·布朗(Robert Brown)对花粉微粒在水中无规则运动的观察。当时,布朗用显微镜观察悬浮在水中的花粉颗粒,发现它们在不停地做着看似毫无规律的运动。这种现象困扰了科学界近80年,直到1905年,爱因斯坦(Einstein)在其奇迹之年中不仅发表了相对论,还给出了布朗运动的严格数学描述。
爱因斯坦的洞察是革命性的:他意识到这种无规则运动源于水分子对花粉的不断碰撞。由于分子运动的随机性,花粉在各个方向受到的撞击力不平衡,导致了观察到的随机运动。他通过扩散方程 $\frac{\partial p}{\partial t} = D\nabla^2 p$ 刻画了粒子密度的演化,其中 $p$ 是粒子的概率密度, $D$ 是扩散系数。这个方程告诉我们,粒子会从高浓度区域向低浓度区域扩散,最终达到均匀分布。
值得注意的是,这里的扩散过程遵循菲克定律(Fick’s law),描述的是浓度梯度驱动的纯扩散现象,而非Navier-Stokes方程中的对流-扩散耦合过程。在机器学习的扩散模型中,我们关注的正是这种纯粹的随机扩散:没有外力驱动的定向流动,只有随机热运动导致的均匀化过程。这种纯扩散的特性使得数学处理更加优雅,也保证了前向过程的可逆性。
三年后的1908年,保罗·朗之万(Paul Langevin)提出了另一种描述布朗运动的方法——不再关注粒子群体的密度演化,而是追踪单个粒子的轨迹。他提出的随机微分方程: $d\mathbf{x}_t = -\nabla U(\mathbf{x}_t)dt + \sqrt{2D}d\mathbf{W}_t$ ,其中第一项 $-\nabla U(\mathbf{x}_t)dt$ 是确定性的漂移项,表示粒子在势能场 $U$ 中受到的力;第二项 $\sqrt{2D}d\mathbf{W}_t$ 是随机的扩散项,表示分子碰撞带来的随机扰动, $\mathbf{W}_t$ 是维纳过程(Wiener process)。
这个方程奠定了随机过程理论的基础,也成为了现代扩散模型的理论支柱。从朗之万动力学到今天的去噪扩散概率模型(DDPM),核心思想一脉相承:通过在数据上添加精心设计的噪声(对应朗之万方程中的随机项),并学习反向的去噪过程(对应漂移项),我们可以从简单的噪声分布生成复杂的数据分布。这种优雅的对称性不仅在数学上令人着迷,更在实践中展现出了惊人的生成能力。
扩散模型最深刻的洞察在于对时间可逆性的利用。在物理学中,许多微观过程都是时间可逆的——如果你能精确地知道系统的状态,理论上可以逆转时间的流向。扩散模型将这一物理直觉转化为算法:如果我们知道噪声是如何一步步添加的,那么就能学会如何一步步去除它。
这种可逆性并非显而易见。在宏观世界中,我们看到的大多是不可逆过程:墨水滴入水中会扩散,但扩散的墨水不会自发聚集;玻璃杯摔碎了不会自动复原。这是因为宏观过程涉及的粒子数量巨大,精确逆转每个粒子的运动在实践中是不可能的。但在扩散模型的数学框架中,我们处理的是概率分布的演化,而非单个粒子的轨迹。通过学习分布之间的映射关系,我们可以实现宏观上的”时间逆转”。
🔬 研究线索:物理扩散与概率扩散的深层联系
扩散模型与物理扩散方程的联系不仅仅是类比。实际上,Fokker-Planck方程和Schrödinger桥问题揭示了两者的数学等价性。Fokker-Planck方程描述了概率密度在朗之万动力学下的演化,而Schrödinger桥问题寻找连接两个概率分布的最优随机过程。这种联系在最优传输理论中有深刻体现,但目前仍缺乏统一的几何理论框架。特别是,如何从信息几何的角度理解扩散过程在概率流形上的测地线性质?PyTorch中的torchdiffeq.odeint
可用于探索连续时间扩散的数值实现。
定义 1.1(扩散模型) 扩散模型是一类概率生成模型,它定义了两个马尔可夫过程:
- 前向过程(Forward Process):一个固定的马尔可夫链,将数据分布 $q(\mathbf{x}_0)$ 通过逐步添加高斯噪声转换为已知的先验分布(通常是标准高斯分布)。
- 反向过程(Reverse Process):一个参数化的马尔可夫链,学习前向过程的逆过程,从先验分布开始逐步去噪,最终生成数据分布的样本。
模型的训练目标是最大化数据的对数似然下界,这等价于学习在每个时间步精确预测和去除噪声的能力。
在理解了扩散模型的直观概念后,让我们深入其数学原理。扩散模型的数学框架优雅而深刻,它将看似复杂的生成过程分解为一系列简单的概率变换。我们将从前向扩散过程开始,逐步揭示这个框架的精妙之处。
前向过程是扩散模型的第一个关键组成部分。它定义了如何将数据逐步转化为噪声,这个过程必须满足两个关键要求:首先,它必须是可控的,让我们能够精确知道每一步发生了什么;其次,它必须最终将任何数据都转化为相同的简单分布(通常是标准高斯分布)。
给定数据点 $\mathbf{x}_0 \sim q(\mathbf{x}_0)$ ,前向过程通过 $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})\]让我们仔细解析这个公式的含义。这个条件分布告诉我们,给定第 $t-1$ 步的状态 $\mathbf{x}_{t-1}$ ,第 $t$ 步的状态 $\mathbf{x}_t$ 是如何生成的:
其中 ${\beta_t}_{t=1}^T$ 是预先设定的噪声调度(noise schedule),控制每一步添加噪声的量。通常 $\beta_t$ 的值很小(如0.0001到0.02之间),这保证了相邻时间步之间的变化是渐进的。
这种设计的巧妙之处在于,它在每一步都在做两件事:削弱原始信号(通过乘以小于1的系数)和添加随机噪声。经过足够多的步骤后,原始信号的影响会指数级衰减,而累积的噪声会主导整个分布。
在实际训练中,如果要采样 $\mathbf{x}_t$ ,按照马尔可夫链的定义需要从 $\mathbf{x}_0$ 开始逐步计算到 $\mathbf{x}_t$ ,这会非常低效。幸运的是,高斯分布的良好性质允许我们使用重参数化技巧,直接从 $\mathbf{x}_0$ “跳跃”到任意时刻 $t$ :
\[\mathbf{x}\_t = \sqrt{\bar{\alpha}\_t}\mathbf{x}\_0 + \sqrt{1-\bar{\alpha}\_t}\boldsymbol{\epsilon}, \quad \boldsymbol{\epsilon} \sim \mathcal{N}(0, \mathbf{I})\]这个公式的推导基于高斯分布的可加性。让我们通过一个简单的例子来理解:如果 $X \sim \mathcal{N}(\mu_1, \sigma_1^2)$ 和 $Y \sim \mathcal{N}(\mu_2, \sigma_2^2)$ 是独立的高斯随机变量,那么 $aX + bY \sim \mathcal{N}(a\mu_1 + b\mu_2, a^2\sigma_1^2 + b^2\sigma_2^2)$ 。
应用这个性质,我们可以证明上述重参数化公式等价于条件概率:
\[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})\]其中 $\alpha_t = 1 - \beta_t$ 表示每一步保留的信息比例, $\bar{\alpha}_t = \prod_{s=1}^{t}\alpha_s$ 表示从初始状态到时刻 $t$ 累积保留的信息比例。
理解前向过程的一个关键视角是信噪比(Signal-to-Noise Ratio, SNR)。在时刻 $t$ ,数据的信噪比可以定义为:
\[\text{SNR}(t) = \frac{\text{Signal Power}}{\text{Noise Power}} = \frac{\bar{\alpha}\_t}{1-\bar{\alpha}\_t}\]这个比值直观地刻画了原始信号和噪声的相对强度。当 $t=0$ 时, $\text{SNR}(0) = \infty$ (纯信号,无噪声);当 $t \to T$ 且 $\bar{\alpha}_T \to 0$ 时, $\text{SNR}(T) \to 0$ (纯噪声,无信号)。
在对数尺度下观察SNR特别有意义: $\log \text{SNR}(t) = \log \bar{\alpha}_t - \log(1-\bar{\alpha}_t)$ 。好的噪声调度应该使得 $\log \text{SNR}(t)$ 近似线性下降,这样可以保证:
当 $t \to T$ 时,若设计得当使 $\bar{\alpha}_T \to 0$ ,则 $\mathbf{x}_T$ 的分布将趋向于各向同性的标准高斯分布 $\mathcal{N}(0, \mathbf{I})$ ,完全独立于原始数据 $\mathbf{x}_0$ 。这正是我们想要的:无论起点是什么样的复杂数据,终点都是相同的简单分布。
💡 开放问题:最优噪声调度的理论基础
虽然实践中余弦调度效果良好,但缺乏理论指导原则。信息论视角下,噪声调度应该如何与数据的固有维度相适应?是否存在数据相关的自适应调度算法?
🌟 理论空白:扩散速度的几何含义
前向扩散过程在数据流形上的速度场有何几何意义?与Ricci流的联系如何?这个联系源于两者都描述了几何结构的演化:Ricci流通过 $\frac{\partial g_{ij}}{\partial t} = -2R_{ij}$ 使流形曲率均匀化,最终趋向常曲率空间;而扩散过程使数据分布从复杂流形逐渐”展平”到各向同性高斯分布。两者都涉及从复杂几何到简单几何的演化,且都可用PDE描述。理解这种深层联系可能启发新的采样算法,例如利用流形的曲率信息来设计自适应的噪声调度。
如果前向过程是将数据逐步转化为噪声的”破坏”过程,那么反向过程就是扩散模型的”创造”过程——它学习如何从纯噪声中逐步恢复出有意义的数据。这个过程的数学描述既优雅又富有挑战性。
反向过程的目标是学习条件分布 $p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t)$ ,即给定时刻 $t$ 的状态,如何推断时刻 $t-1$ 的状态。整个反向过程从纯噪声 $\mathbf{x}_T \sim \mathcal{N}(0, \mathbf{I})$ 开始,逐步去除噪声,最终生成数据样本 $\mathbf{x}_0$ 。 |
数学上,反向过程的联合分布可以写作:
\[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}_{t-1} | \mathbf{x}_t)$ 很难直接计算(它依赖于整个数据分布),但我们可以用神经网络来学习近似它。 |
为了使问题可解,我们假设每一步的反向过程仍然是高斯分布:
\[p\_\theta(\mathbf{x}\_{t-1} | \mathbf{x}\_t) = \mathcal{N}(\mathbf{x}\_{t-1}; \boldsymbol{\mu}\_\theta(\mathbf{x}\_t, t), \sigma\_t^2\mathbf{I})\]这个假设看似限制性很强,但实际上有深刻的理论基础:
其中,均值 $\boldsymbol{\mu}_\theta(\mathbf{x}_t, t)$ 由一个参数化的神经网络(通常是U-Net或Transformer)预测。这个网络接收当前的噪声图像 $\mathbf{x}_t$ 和时间步 $t$ 作为输入,输出去噪后的均值。
有趣的是,预测均值 $\boldsymbol{\mu}_\theta(\mathbf{x}_t, t)$ 有多种等价的参数化方式,每种方式都有其独特的视角:
第三种方式特别优雅。回忆重参数化公式 $\mathbf{x}_t = \sqrt{\bar{\alpha}_t}\mathbf{x}_0 + \sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon}$ ,如果我们能预测出噪声 $\boldsymbol{\epsilon}$ ,就可以恢复出 $\mathbf{x}_0$ :
\[\hat{\mathbf{x}}\_0 = \frac{\mathbf{x}\_t - \sqrt{1-\bar{\alpha}\_t}\boldsymbol{\epsilon}\_\theta(\mathbf{x}\_t, t)}{\sqrt{\bar{\alpha}\_t}}\]这种参数化的优势在于:
方差 $\sigma_t^2$ 的选择是一个微妙的设计决策:
固定方差策略(DDPM采用):
学习方差策略(Improved DDPM等):
⚡ 实现挑战:方差参数化的选择
固定方差vs学习方差是一个未解决的权衡问题。理论上,最优的方差应该反映模型在每个位置和时间步的不确定性。但实践中,学习方差可能导致训练不稳定。一个折中方案是学习方差的插值系数:$\sigma_t^2 = \exp(v_\theta \log \beta_t + (1-v_\theta) \log \tilde{\beta}_t)$,其中 $v_\theta \in [0,1]$ 由网络预测。这涉及到torch.nn.Parameter
的灵活使用和梯度流的稳定性分析。
从贝叶斯推断的角度看,反向过程实际上是在做后验推断。如果我们知道 $\mathbf{x}_0$ ,那么真实的后验分布 $q(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0)$ 有闭式解: |
其中后验均值和方差为: \(\tilde{\boldsymbol{\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\)
\[\tilde{\beta}\_t = \frac{1-\bar{\alpha}\_{t-1}}{1-\bar{\alpha}\_t} \beta\_t\]这个公式揭示了一个重要事实:如果我们能准确预测 $\mathbf{x}_0$ (或等价地,预测噪声 $\boldsymbol{\epsilon}$ ),就能计算出最优的去噪方向。这正是神经网络需要学习的核心能力。
扩散模型的训练目标源于最大似然估计。给定观测数据 $\mathbf{x}0$ ,我们希望最大化其在模型下的对数似然 $\log p\theta(\mathbf{x}_0)$ 。由于直接计算这个似然涉及对所有可能的扩散路径进行积分,在计算上是不可行的。因此,我们转而优化其变分下界(Evidence Lower Bound, ELBO)。
通过巧妙的数学推导,ELBO可以分解为一系列更简单的项。最终,DDPM将复杂的优化问题简化为一个优雅的去噪目标:
\[L_{\text{simple}} = \mathbb{E}_{t, \mathbf{x}_0, \boldsymbol{\epsilon}} \left[ \|\boldsymbol{\epsilon} - \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t)\|^2 \right]\]其中 $t$ 从 ${1, …, T}$ 均匀采样, $\boldsymbol{\epsilon} \sim \mathcal{N}(0, \mathbf{I})$ 是添加的噪声, $\mathbf{x}_t$ 是通过重参数化得到的噪声数据。
这个损失函数的美妙之处在于其简单性:
🌟 理论空白:扩散速度的几何含义
前向扩散过程在数据流形上的速度场有何几何意义?与Ricci流的联系如何?这个联系源于两者都描述了几何结构的演化:Ricci流通过 $\frac{\partial g_{ij}}{\partial t} = -2R_{ij}$ 使流形曲率均匀化,最终趋向常曲率空间;而扩散过程使数据分布从复杂流形逐渐”展平”到各向同性高斯分布。两者都涉及从复杂几何到简单几何的演化,且都可用PDE描述。理解这种深层联系可能启发新的采样算法,例如利用流形的曲率信息来设计自适应的噪声调度。
训练完成后,我们可以通过反向过程生成新的样本。采样算法从标准高斯噪声开始,迭代应用学习到的去噪网络:
这个采样过程展现了扩散模型的核心魅力:通过学习去噪,我们实现了生成。每一步去噪都在逐渐揭示数据的结构,就像雕塑家从大理石中雕刻出雕像一样。
扩散模型在生成模型领域的崛起并非偶然。它解决了许多困扰早期生成模型的核心问题,同时带来了新的可能性。让我们深入分析扩散模型的独特优势,理解为什么它能够在短时间内成为生成AI的主流选择。
扩散模型最引人注目的优势是其卓越的生成质量。在FID(Fréchet Inception Distance)、IS(Inception Score)等标准评测指标上,扩散模型consistently超越了GAN。但更重要的是,扩散模型在生成细节方面的表现尤为出色:
这种质量优势源于扩散模型的渐进式生成过程。不同于GAN的一步到位,扩散模型通过数百甚至上千步的迭代细化,每一步都在改善生成质量。这种”慢工出细活”的方式虽然计算成本较高,但换来了无与伦比的生成质量。
如果你曾经训练过GAN,一定对其训练的不稳定性深有体会。生成器和判别器之间的对抗博弈常常导致:
扩散模型彻底改变了这一局面。其训练目标是一个简单的去噪任务,没有对抗网络的不稳定性:
\[L = \mathbb{E}_{t, \mathbf{x}_0, \boldsymbol{\epsilon}} \left[ \|\boldsymbol{\epsilon} - \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t)\|^2 \right]\]这个L2损失函数:
扩散模型建立在坚实的概率论基础之上。每个设计选择都有明确的理论依据:
这种理论基础带来的好处是:
扩散模型的框架极其灵活,可以轻松适应各种生成任务:
条件生成:通过在去噪网络中注入条件信息,可以实现:
图像编辑:利用扩散模型的迭代特性,可以实现:
精确似然估计:不同于GAN,扩散模型可以:
扩散模型提供了前所未有的生成控制能力:
这种可控性在实际应用中极为重要,使得扩散模型不仅是研究工具,更是实用的生产力工具。
🔬 研究前沿:效率与质量的平衡
尽管扩散模型有诸多优势,但其主要劣势是采样速度慢。当前的研究热点包括:
扩散模型的发展并非一蹴而就,而是经历了一个从理论探索到实践突破的漫长过程。
🔬 历史视角的研究机会
早期基于热力学的方法与现代DDPM的联系尚未完全被挖掘。非平衡统计物理中的Jarzynski恒等式或Crooks涨落定理(Fluctuation Theorems)能否为理解反向过程、设计新的损失函数或采样策略提供新的理论洞察?
在本章中,我们对扩散模型进行了初步的探索:
通过本章的学习,我们已经掌握了扩散模型的基本词汇和核心思想。下一章,我们将深入学习U-Net和Transformer这两种在扩散模型中至关重要的神经网络架构,为后续理解模型的具体实现打下基础。
← 返回目录 | 第1章 / 共14章 | 下一章 → |