简介:扩散模型是一类通过模拟数据逐步加噪与去噪过程来学习复杂数据分布的生成式模型。本文从生成模型的本质出发,系统拆解扩散模型的前向扩散、反向去噪、得分匹配、随机微分方程视角等核心机制,并解释其为何能在生成质量、训练稳定性与任务灵活性之间取得较好平衡,帮助读者理解该类模型“为什么好用”以及适用的边界。
扩散模型(Diffusion Model)是一类生成式模型,其核心目标是从一组有限的观测样本中学习并逼近真实数据的概率分布,从而能够生成与训练数据统计特征相似的新样本。与直接定义概率密度函数的似然模型不同,扩散模型并不试图一步建模整个数据分布,而是通过构造一个“逐步破坏再逐步恢复”的马尔可夫过程,间接地学习数据分布的结构。
在这个过程中,模型需要同时学习两件事:第一,如何将真实数据逐步转化为近似纯噪声;第二,如何从纯噪声出发,沿着相反的方向逐步恢复出结构清晰、语义合理的样本。这种“先加噪、再去噪”的框架看似迂回,但它将原本难以直接建模的高维复杂分布,拆解为一系列相对简单的条件分布变化步骤。每一步只需要学习一个局部可预测的变换,而将所有这些局部变换串接起来后,模型就具备了对整体分布的表达能力。
要理解扩散模型的设计动机,需要先回到生成模型的基本问题。假设我们从一个未知的数据分布 ( p(\mathbf{x}) ) 中独立采样得到一组样本 ( {\mathbf{x}1, \mathbf{x}_2, \dots, \mathbf{x}_n} ),生成模型的目标就是利用这组有限样本,构建一个可采样的分布 ( p\theta(\mathbf{x}) ),使其尽可能接近真实的 ( p(\mathbf{x}) )。
传统方法中,一类是直接定义参数化概率密度函数,并通过最大化似然来训练;另一类是通过对抗博弈让生成器与判别器交替优化。这两类方法各有优势,但也存在各自的困难。直接似然建模往往需要对分布形式做较强的假设,或使用归一化常数等难以计算的结构;对抗训练则对训练稳定性、模式坍塌和超参数敏感。
扩散模型采用的思路避开了这两类困难。它不要求直接定义出一个可归一化的概率密度函数,也不依赖对抗式的最小最大优化。相反,它通过定义“加噪过程”来隐式地探索数据结构,再通过“去噪过程”来逼近数据的条件分布。由于加噪过程是人为定义的,不包含可学习参数,模型唯一的任务就是学习去噪过程,这大大简化了优化目标的构建。
前向扩散过程通常被定义为一个马尔可夫链。给定一个真实样本 ( \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})
]
其中 ( \beta_t ) 是一个预先设定的方差调度参数,控制每一步加入噪声的强度。当总步数 ( T ) 足够大、噪声调度设计合理时,最终的 ( \mathbf{x}_T ) 将近似服从一个各向同性的标准高斯分布。这个过程的显著特点是:它完全由人为定义,不包含可学习参数,并且任意时刻 ( t ) 的分布可以从 ( \mathbf{x}_0 ) 直接解析计算出来。
之所以能够解析计算,是因为每一步加噪都是高斯条件分布,多次高斯变换叠加后仍为高斯分布。因此,给定原始数据 ( \mathbf{x}_0 ),可以直接写出:
[
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})
]
其中 ( \bar{\alpha}_t ) 是噪声调度的累积乘积。这一性质极其重要:它意味着训练阶段不需要逐步模拟完整的前向过程,而只需要随机采样一个时间步 ( t ) 和对应的噪声,就能构造出一个训练样本对。
前向过程定义了数据如何被破坏,反向过程则定义了数据如何被重建。反向过程同样是一个马尔可夫链,但其条件分布 ( p\theta(\mathbf{x}{t-1} | \mathbf{x}_t) ) 是未知的,需要由神经网络来参数化。通常假设反向条件分布也是高斯形式:
[
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 )(协方差有时固定,有时也由网络输出)。在每一步去噪中,模型从当前噪声样本 ( \mathbf{x}_t ) 出发,预测其中包含的噪声成分或直接预测上一步的样本状态,然后通过采样操作得到 ( \mathbf{x}{t-1} )。当这一过程从 ( \mathbf{x}_T ) 开始重复执行 ( T ) 步后,最终得到生成的样本 ( \mathbf{x}_0 )。
扩散模型与一类称为“基于得分的生成模型”的方法有着深刻的联系。得分(score)被定义为对数概率密度对输入的梯度:
[
\nabla_{\mathbf{x}} \log p(\mathbf{x})
]
直觉上,得分指向概率密度增长最快的方向。如果我们能够知道每个数据点处的得分,就可以通过类似朗之万采样的方式,从一个随机初始化点逐步向高概率区域移动,最终得到服从目标分布的样本。
在扩散模型中,去噪过程本质上就是在近似估计不同噪声水平下的得分函数。噪声添加得越多,数据分布被“抹平”得越厉害,对应的得分函数也越容易估计;噪声越少,分布的局部结构越清晰,得分函数估计越困难但越接近目标。因此,扩散模型实际上是在多个噪声尺度上同时学习得分函数,这一多尺度策略有效缓解了高维数据分布中得分估计不稳定的问题。
一个完整的扩散模型训练与生成系统可以拆分为以下几个关键模块。
噪声调度器决定了前向过程中每一步加入噪声的强度,通常用 ( \beta_1, \beta_2, \dots, \beta_T ) 表示。调度策略对模型性能有显著影响。如果噪声增长太慢,后期样本尚未接近纯噪声,反向过程的起始分布与标准高斯存在偏差;如果噪声增长太快,样本在较早阶段就失去大部分结构信息,导致反向过程难以逐步恢复细节。常见的调度方案包括线性调度、余弦调度等,核心目标是在保证终端分布逼近高斯的条件下,尽量保留中间阶段的结构连续性。
去噪网络是唯一包含可学习参数的模块,通常采用具有较强空间感知能力的网络结构。该网络接收当前时间步的噪声样本 ( \mathbf{x}_t ) 和时间步信息 ( t ) 作为输入,输出对噪声的预测、对上一步均值的预测或对得分的估计。时间步信息的嵌入至关重要,因为同一个网络需要同时处理不同噪声水平的去噪任务,必须具备区分当前处于哪一噪声尺度的能力。
训练目标构建模块负责将前向过程与去噪网络连接起来,生成可优化的损失函数。最常用的做法是先采样真实数据、采样时间步、采样随机噪声,然后利用前向解析公式计算出对应的噪声样本,再让网络预测其中包含的噪声,最后计算预测噪声与真实噪声之间的均方误差。这个训练目标等价于对加权变分下界的优化,但实现更简单、训练更稳定。
采样器是在推理阶段使用的组件,它根据训练好的去噪网络,从纯噪声开始逐步生成样本。最简单的方式是逐步执行与训练时相同数量的去噪步骤。但为了提高生成效率,许多改进型采样器会通过跳步、使用确定性微分方程求解器或设计更优的数值积分方案,在保证生成质量的前提下减少迭代次数。
训练阶段的工作流程可以概括为以下步骤:
第一步,从数据集中随机采样一个真实样本 ( \mathbf{x}_0 );
第二步,随机采样一个时间步 ( t ),并从标准高斯分布中采样随机噪声 ( \epsilon );
第三步,利用前向过程的解析公式,直接计算 ( \mathbf{x}_t = \sqrt{\bar{\alpha}_t} \mathbf{x}_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon );
第四步,将 ( \mathbf{x}t ) 和时间步 ( t ) 输入去噪网络,网络输出对噪声的预测 ( \epsilon\theta(\mathbf{x}_t, t) );
第五步,计算预测噪声与真实噪声之间的均方误差,并通过反向传播更新网络参数;
第六步,重复上述过程直至收敛。
这种训练方式的优势在于,每一步只涉及样本级的数据构造和单个网络的参数更新,不存在需要交替优化的判别器,也不需要对分布归一化常数进行复杂的估计。
推理阶段的完整流程如下:
第一步,从标准高斯分布中采样纯噪声 ( \mathbf{x}_T );
第二步,令 ( t = T );
第三步,将当前样本 ( \mathbf{x}t ) 和时间步 ( t ) 输入去噪网络,获得噪声预测 ( \epsilon\theta(\mathbf{x}_t, t) );
第四步,根据噪声预测和预先定义的反向条件分布公式,计算上一步样本的条件均值和条件方差;
第五步,从该条件分布中采样得到 ( \mathbf{x}_{t-1} );
第六步,令 ( t = t - 1 ),如果 ( t > 0 ),返回第三步;否则输出 ( \mathbf{x}_0 ) 作为生成结果。
扩散模型在多个噪声级别上同时学习,这一机制是其生成质量的关键。在噪声水平较高时,数据分布接近于简单的高斯分布,去噪任务相对容易,网络主要学习整体结构的恢复;在噪声水平较低时,数据分布已经接近真实分布,网络需要学习局部细节。不同时间步对应的任务难度形成了一个从易到难的课程式学习路径,这种天然的渐进性使得训练过程比直接在高维复杂分布上做对抗训练更加平稳。
扩散模型的训练目标可以简化为噪声预测的均方误差,而这一简单形式背后对应的是对变分下界的优化。由于不涉及对抗博弈,损失函数的下降通常能直接反映模型能力的提升。此外,该目标不要求网络输出满足归一化条件,也不需要对判别器进行平衡性调控,因此在网络结构选择、数据模态扩展和条件控制等方面表现出较强的灵活性。
从随机微分方程(SDE)的视角看,前向扩散过程可以被描述为一个连续时间的随机过程,而反向去噪过程则对应于该随机过程的反向 SDE。这一视角将离散的扩散步骤推广到连续时间,不仅为采样器设计提供了理论工具,也将扩散模型与基于得分的生成模型在数学框架下统一起来。在这种视角下,去噪网络实际上是在估计不同时间点上的得分函数,采样过程则可以理解为对反向 SDE 或对应的常微分方程进行数值求解。这一统一提升了方法的理论清晰度,也为后续的加速采样、可控生成等改进提供了方向。
为了更直观地理解扩散模型的运行逻辑,可以考虑一个简化的二维数据分布场景。假设真实数据集中存在若干个聚集的簇,生成目标是从中采样新的数据点。
在训练阶段,模型反复观察不同噪声水平下数据点的形态。在高噪声水平下,不同簇的边界被抹平,所有样本趋向于汇聚在原点附近;在低噪声水平下,簇的形态逐渐变得清晰。去噪网络在学习过程中逐渐掌握了“给定一个模糊样本和当前噪声水平,如何将其恢复到噪声稍小的状态”的能力。
在推理阶段,从一个随机点开始,模型首先在纯噪声条件下进行一步粗略的恢复,使样本离开极度混乱的区域;随后在中等噪声条件下继续调整,使样本向某个簇靠拢;最后在低噪声条件下进行精细调整,使样本落入簇内的高概率区域。整个过程是从全局定位到局部细化的逐步收敛,而不是一次性完成。
扩散模型的主要优势可以归纳为以下几点。
第一,生成质量高。通过多步渐进去噪,扩散模型能够在图像、音频等多种数据模态上生成细节丰富、结构合理的样本。与对抗式方法相比,其在多样性保持和训练稳定性方面往往表现更好。
第二,训练过程稳定。由于训练目标是简单且可微的回归损失,不涉及极小极大的对抗博弈,因此对超参数调整的敏感度较低,不容易出现模式坍塌或训练震荡。
第三,条件控制灵活。去噪网络可以方便地引入文本、类别、图像等条件信息,通过在训练阶段将条件嵌入到网络输入中,即可实现条件生成乃至多模态生成。此外,由于得分函数在多个噪声尺度上定义,可以在推理阶段通过引导技术对生成过程施加额外约束,而无需重新训练网络。
第四,具备较强的概率建模基础。扩散模型可以通过变分下界和得分匹配等框架进行理论分析,对数似然的估计和概率推断具有较清晰的数学解释。这一特性使其在一些需要不确定性量化的应用场景中具有吸引力。
第五,可以用于逆问题求解。由于扩散模型学习的是数据分布的得分函数,在一些已知正向观测模型(如图像补全、超分辨率、压缩感知等)的逆问题中,可以将观测约束与得分先验结合,在不重新训练任务专用网络的情况下完成特定恢复任务。
扩散模型也存在一些明显的限制。
第一,推理速度相对较慢。传统扩散模型需要执行数十步甚至上千步去噪迭代才能生成一个样本,每一步都需要经过一次完整的网络前向计算。与单次前向的生成对抗网络相比,推理开销显著较高。尽管后续改进通过跳步采样、蒸馏和更高效的数值求解器缓解了这一问题,但在一些对实时性要求高的场景中仍然构成瓶颈。
第二,训练计算资源需求较大。由于去噪网络需要在多个噪声尺度上学习,网络规模通常较大,训练时间和硬件成本较高。
第三,采样过程的方差与确定性之间存在权衡。反向过程本质上是随机的,采样结果存在一定波动。虽然可以通过使用确定性采样器提高一致性,但可能对生成多样性产生一定影响。在实际应用中需要根据需求在多样性与稳定性之间进行选择。
第四,对噪声调度和迭代策略的敏感性。虽然扩散模型整体训练稳定性较好,但噪声调度设计、损失加权方式以及采样器参数等仍对最终生成质量有明显影响,需要针对不同任务进行适当调整。
一种常见的简化理解认为扩散模型仅仅是一个去噪网络。实际上,扩散模型的核心价值在于它在多个噪声尺度上隐式学习了数据分布的得分函数,其生成能力来自对分布结构的渐进建模,而不仅仅是去除人工添加的噪声。单纯训练一个去噪器并不等同于学习到了完整的生成模型。
增加去噪步骤在一定范围内可以提升生成质量,但超过一定数量后,边际收益递减,且推理成本显著增加。此外,当步骤过多时,采样过程中的累计数值误差和随机波动也可能对最终结果产生不利影响。实际使用中需要在质量和效率之间寻找合适的平衡点。
扩散模型虽然在实现上常以噪声预测的均方误差作为训练目标,但这一目标可以通过变分推导与对数似然下界建立联系。因此,扩散模型并非完全绕开了似然的概念,而是通过一种更易于优化的方式去近似优化似然的变分下界。
扩散模型通过设计“前向扩散—反向去噪”的对称结构,将高维复杂分布的建模问题转化为一系列局部的高斯条件分布变化问题。其核心机制在于:前向过程以人为定义的方式将数据分布平滑为可采样的噪声分布;反向过程通过神经网络逐步估计条件分布或得分函数,从噪声中逐步恢复出数据样本。
该方法之所以受到广泛关注,在于它同时在生成质量、训练稳定性、条件控制灵活性和理论可解释性几个维度上取得了较好的平衡。与对抗式方法相比,它避免了博弈式训练的脆弱性;与直接似然建模相比,它不需要处理复杂的归一化常数。与此同时,其推理效率与计算成本也构成了明显的使用边界。理解扩散模型的这些底层机制,有助于在实践中更合理地选择它、改进它,并在具体任务中发挥其最大价值。