引言·从“噪声”中创造“现实”:扩散模型如何颠覆生成式AI?
2022年,Stable Diffusion的爆火让“AI绘画”从小众技术变为全民热点;2023年,Sora以“物理级真实”的视频生成能力震惊行业——这些突破性进展的底层引擎,正是扩散模型(Diffusion Models)。
与GAN(生成对抗网络)的“对抗博弈”、VAE(变分自编码器)的“概率 latent 空间”不同,扩散模型的核心思想异常朴素:通过模拟“噪声污染”与“去噪修复”的逆过程,让AI从纯随机噪声中一步步“雕刻”出清晰图像。其数学本质是“随机过程的逆向采样”,通过严格的概率推导,实现对复杂数据分布(如图像、视频)的精准建模。
本文将穿透“AI生成图像”的表象,从数学原理到直观理解,拆解扩散模型的核心逻辑:前向扩散如何让图像“变模糊”?逆向扩散如何从噪声中“恢复细节”?损失函数如何指导模型学习“去噪规律”?最终,你将明白:为什么扩散模型能生成超越GAN的高清图像,又为何成为AIGC时代的“基础设施”。
一、扩散模型的“直观类比”:从“清晰照片”到“模糊噪声”的逆过程
为理解扩散模型,先从一个生活场景切入:
想象你有一张清晰的猫的照片(数据分布中的一个样本)。
前向过程(Forward Diffusion):模拟“照片被反复曝光”——每次叠加一点随机噪声,照片逐渐变模糊,最终完全变成无法辨认的纯噪声(像电视雪花屏)。
逆向过程(Reverse Diffusion):让AI学习“修复被曝光的照片”——从纯噪声开始,每次移除一点噪声,逐步恢复细节,最终得到一张清晰的猫的照片。

扩散模型的目标,就是让AI掌握“逆向去噪”的规律:给定一张含噪声的模糊图,AI能预测出“原本的清晰图像应该是什么样”。
但“去噪”为何需要数学建模?因为“噪声”是随机的,每次叠加的噪声不同,去噪过程必须通过概率分布描述——这就是扩散模型的数学核心:用马尔可夫链定义前向和逆向的随机过程,通过贝叶斯公式连接两个过程,最终从噪声中采样出数据分布的样本(如图像)。
二、前向扩散过程:数学定义“如何让图像变模糊”
前向扩散过程是“确定性的噪声叠加过程”,目标是将初始数据(如图像)逐步转化为标准高斯噪声。数学上,这是一个马尔可夫链(Markov Chain):每一步的状态仅依赖于前一步,与更早的状态无关。
1. 数学定义:从数据分布到噪声分布的“渐变”
设初始数据为 x0∼q(x)\mathbf{x}_0 \sim q(\mathbf{x})x0∼q(x)(如一张猫的图像,服从真实数据分布 qqq),前向扩散过程通过 TTT 步(通常 T=1000T=1000T=1000)逐渐向 x0\mathbf{x}_0x0 叠加高斯噪声,生成一系列含噪样本 x1,x2,...,xT\mathbf{x}_1, \mathbf{x}_2, ..., \mathbf{x}_Tx1,x2,...,xT,最终 xT\mathbf{x}_TxT 服从标准高斯分布 N(0,I)\mathcal{N}(\mathbf{0}, \mathbf{I})N(0,I)。
每一步 ttt 的噪声叠加规则定义为:
q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)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})q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)
其中:
βt∈(0,1)\beta_t \in (0, 1)βt∈(0,1) 是“噪声强度参数”(预设的单调递增序列,如 β1=0.0001,βT=0.02\beta_1=0.0001, \beta_T=0.02β1=0.0001,βT=0.02),控制每一步叠加的噪声量(早期 βt\beta_tβt 小,噪声少;后期 βt\beta_tβt 大,噪声多);
1−βtxt−1\sqrt{1 - \beta_t} \mathbf{x}_{t-1}1−βtxt−1 是均值,βtI\beta_t \mathbf{I}βtI 是协方差矩阵(对角矩阵,即各像素噪声独立)。

2. 关键公式:任意时刻 ttt 的含噪样本 xt\mathbf{x}_txt
直接从 x0\mathbf{x}_0x0 计算 xt\mathbf{x}_txt(无需迭代 ttt 步),是扩散模型的第一个数学简化。通过递推公式和乘积展开,可推导出:
xt=αtx0+1−αtϵ其中ϵ∼N(0,I)\mathbf{x}_t = \sqrt{\alpha_t} \mathbf{x}_0 + \sqrt{1 - \alpha_t} \boldsymbol{\epsilon} \quad \text{其中} \quad \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I})xt=αtx0+1−αtϵ其中ϵ∼N(0,I)
这里:
αt=∏s=1t(1−βs)\alpha_t = \prod_{s=1}^t (1 - \beta_s)αt=∏s=1t(1−βs)(累乘项,随 ttt 增大而减小,因为 1−βs<11 - \beta_s < 11−βs<1);
αtx0\sqrt{\alpha_t} \mathbf{x}_0αtx0:原始图像的“衰减版本”(权重随 ttt 减小);
1−αtϵ\sqrt{1 - \alpha_t} \boldsymbol{\epsilon}1−αtϵ:噪声的“增强版本”(权重随 ttt 增大)。

直观理解:当 t=0t=0t=0 时,α0=1\alpha_0=1α0=1,x0=x0+0\mathbf{x}_0 = \mathbf{x}_0 + 0x0=x0+0(无噪声);当 t=Tt=Tt=T 时,αT≈0\alpha_T \approx 0αT≈0,xT≈ϵ\mathbf{x}_T \approx \boldsymbol{\epsilon}xT≈ϵ(纯噪声)。中间时刻 ttt,xt\mathbf{x}_txt 是“原始图像+噪声”的混合体,且 ttt 越大,噪声占比越高。
3. 分布 q(xt∣x0)q(\mathbf{x}_t | \mathbf{x}_0)q(xt∣x0):前向过程的“捷径”
既然 xt\mathbf{x}_txt 可直接由 x0\mathbf{x}_0x0 和噪声 ϵ\boldsymbol{\epsilon}ϵ 计算,那么给定 x0\mathbf{x}_0x0,xt\mathbf{x}_txt 的分布 q(xt∣x0)q(\mathbf{x}_t | \mathbf{x}_0)q(xt∣x0) 是高斯分布:
q(xt∣x0)=N(xt;αtx0,(1−αt)I)q(\mathbf{x}_t | \mathbf{x}_0) = \mathcal{N}(\mathbf{x}_t; \sqrt{\alpha_t} \mathbf{x}_0, (1 - \alpha_t) \mathbf{I})q(xt∣x0)=N(xt;αtx0,(1−αt)I)
这一公式是前向过程的核心:任意时刻 ttt 的含噪样本,都可视为对原始图像的“加噪版本”,且噪声强度由 αt\alpha_tαt 控制。
三、逆向扩散过程:数学建模“如何从噪声恢复图像”
逆向扩散过程是“从噪声中恢复数据”的核心,目标是学习前向过程的逆:给定 xt\mathbf{x}_txt,逐步采样 xt−1,...,x0\mathbf{x}_{t-1}, ..., \mathbf{x}_0xt−1,...,x0,最终生成数据分布的样本。
1. 逆向过程的概率目标:估计 p(xt−1∣xt)p(\mathbf{x}_{t-1} | \mathbf{x}_t)p(xt−1∣xt)
逆向过程同样定义为马尔可夫链,但每一步的条件分布 p(xt−1∣xt)p(\mathbf{x}_{t-1} | \mathbf{x}_t)p(xt−1∣xt) 未知,需要通过模型学习。扩散模型假设 p(xt−1∣xt)p(\mathbf{x}_{t-1} | \mathbf{x}_t)p(xt−1∣xt) 也是高斯分布:
p(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))p(\mathbf{x}_{t-1} | \mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t-1}; \boldsymbol{\mu}_\theta(\mathbf{x}_t, t), \boldsymbol{\Sigma}_\theta(\mathbf{x}_t, t))p(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))
其中 μθ\boldsymbol{\mu}_\thetaμθ(均值)和 Σθ\boldsymbol{\Sigma}_\thetaΣθ(协方差)由神经网络 θ\thetaθ 参数化,是模型需要学习的核心。
2. 贝叶斯公式:连接前向与逆向过程
如何用前向过程的已知信息(q(xt∣xt−1)q(\mathbf{x}_t | \mathbf{x}_{t-1})q(xt∣xt−1)、q(xt∣x0)q(\mathbf{x}_t | \mathbf{x}_0)q(xt∣x0))推导逆向过程的 p(xt−1∣xt)p(\mathbf{x}_{t-1} | \mathbf{x}_t)p(xt−1∣xt)?
根据贝叶斯规则:
q(xt−1∣xt,x0)=q(xt∣xt−1,x0)q(xt−1∣x0)q(xt∣x0)q(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0) = \frac{q(\mathbf{x}_t | \mathbf{x}_{t-1}, \mathbf{x}_0) q(\mathbf{x}_{t-1} | \mathbf{x}_0)}{q(\mathbf{x}_t | \mathbf{x}_0)}q(xt−1∣xt,x0)=q(xt∣x0)q(xt∣xt−1,x0)q(xt−1∣x0)
但 q(xt∣xt−1,x0)=q(xt∣xt−1)q(\mathbf{x}_t | \mathbf{x}_{t-1}, \mathbf{x}_0) = q(\mathbf{x}_t | \mathbf{x}_{t-1})q(xt∣xt−1,x0)=q(xt∣xt−1)(前向过程的马尔可夫性),代入前向过程的高斯分布公式,可推导出 q(xt−1∣xt,x0)q(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0)q(xt−1∣xt,x0) 也是高斯分布,其均值为:
μq(xt,x0)=αt−1βt1−αtx0+αt(1−αt−1)1−αtxt\boldsymbol{\mu}_q(\mathbf{x}_t, \mathbf{x}_0) = \frac{\sqrt{\alpha_{t-1}} \beta_t}{1 - \alpha_t} \mathbf{x}_0 + \frac{\sqrt{\alpha_t} (1 - \alpha_{t-1})}{1 - \alpha_t} \mathbf{x}_tμq(xt,x0)=1−αtαt−1βtx0+1−αtαt(1−αt−1)xt
3. 核心简化:用“噪声预测”替代“图像预测”
直接学习 μθ(xt,t)\boldsymbol{\mu}_\theta(\mathbf{x}_t, t)μθ(xt,t) 需输入 xt\mathbf{x}_txt 和 ttt,预测均值 μθ\boldsymbol{\mu}_\thetaμθ。但扩散模型做了一个关键简化:用神经网络预测“前向过程中叠加的噪声 ϵ\boldsymbol{\epsilon}ϵ”,而非直接预测 x0\mathbf{x}_0x0 或 μθ\boldsymbol{\mu}_\thetaμθ。
从 xt=αtx0+1−αtϵ\mathbf{x}_t = \sqrt{\alpha_t} \mathbf{x}_0 + \sqrt{1 - \alpha_t} \boldsymbol{\epsilon}xt=αtx0+1−αtϵ 可得 x0=xt−1−αtϵαt\mathbf{x}_0 = \frac{\mathbf{x}_t - \sqrt{1 - \alpha_t} \boldsymbol{\epsilon}}{\sqrt{\alpha_t}}x0=αtxt−1−αtϵ,代入 μq(xt,x0)\boldsymbol{\mu}_q(\mathbf{x}_t, \mathbf{x}_0)μq(xt,x0) 可消去 x0\mathbf{x}_0x0,得到:
μq(xt,x0)=1αt(xt−1−αt1−αtϵ)=1αt(xt−βt1−αtϵ)\boldsymbol{\mu}_q(\mathbf{x}_t, \mathbf{x}_0) = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \alpha_t}} \boldsymbol{\epsilon} \right) = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{\beta_t}{\sqrt{1 - \alpha_t}} \boldsymbol{\epsilon} \right)μq(xt,x0)=αt1(xt−1−αt1−αtϵ)=αt1(xt−1−αtβtϵ)
因此,若模型 ϵθ(xt,t)\epsilon_\theta(\mathbf{x}_t, t)ϵθ(xt,t) 能预测前向过程中的噪声 ϵ\boldsymbol{\epsilon}ϵ,则逆向过程的均值 μθ\boldsymbol{\mu}_\thetaμθ 可表示为:
μθ(xt,t)=1αt(xt−βt1−αtϵθ(xt,t))\boldsymbol{\mu}_\theta(\mathbf{x}_t, t) = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{\beta_t}{\sqrt{1 - \alpha_t}} \epsilon_\theta(\mathbf{x}_t, t) \right)μθ(xt,t)=αt1(xt−1−αtβtϵθ(xt,t))
这一简化至关重要:噪声预测比图像预测更容易(噪声是随机变量,分布更简单;图像含有复杂语义,预测难度大),极大降低了模型学习难度。
4. 逆向采样:从噪声到图像的“迭代去噪”
训练完成后,即可从纯噪声 xT∼N(0,I)\mathbf{x}_T \sim \mathcal{N}(\mathbf{0}, \mathbf{I})xT∼N(0,I) 开始,通过逆向过程采样生成图像:
初始化 t=Tt = Tt=T,xT=ϵ\mathbf{x}_T = \boldsymbol{\epsilon}xT=ϵ(随机噪声);
对 ttt 从 TTT 递减至 1:
a. 用模型 ϵθ(xt,t)\epsilon_\theta(\mathbf{x}_t, t)ϵθ(xt,t) 预测噪声 ϵ\boldsymbol{\epsilon}ϵ;
b. 计算逆向均值 μθ=1αt(xt−βt1−αtϵθ)\boldsymbol{\mu}_\theta = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{\beta_t}{\sqrt{1 - \alpha_t}} \epsilon_\theta \right)μθ=αt1(xt−1−αtβtϵθ);
c. 采样 xt−1∼N(μθ,σt2I)\mathbf{x}_{t-1} \sim \mathcal{N}(\boldsymbol{\mu}_\theta, \sigma_t^2 \mathbf{I})xt−1∼N(μθ,σt2I)(σt2\sigma_t^2σt2 通常设为固定值 βt\beta_tβt 或通过模型预测);
当 t=1t=1t=1 时,直接取 x0=μθ\mathbf{x}_0 = \boldsymbol{\mu}_\thetax0=μθ(无需采样噪声,避免最后一步引入误差)。

直观理解:从噪声 xT\mathbf{x}_TxT 开始,每次用模型预测“当前噪声是多少”,然后从 xt\mathbf{x}_txt 中减去这部分噪声,逐步得到更清晰的 xt−1\mathbf{x}_{t-1}xt−1,最终恢复出 x0\mathbf{x}_0x0(生成的图像)。
四、核心数学组件:噪声预测器与损失函数
逆向过程的核心是“噪声预测器” ϵθ(xt,t)\epsilon_\theta(\mathbf{x}_t, t)ϵθ(xt,t) 和训练它的损失函数。
1. 噪声预测器:神经网络如何“看懂噪声”?
噪声预测器 ϵθ(xt,t)\epsilon_\theta(\mathbf{x}_t, t)ϵθ(xt,t) 通常是一个U-Net架构的神经网络,输入是含噪图像 xt\mathbf{x}_txt 和时间步 ttt(通过位置编码融入网络),输出是预测的噪声 ϵ^\hat{\boldsymbol{\epsilon}}ϵ^。
U-Net结构:通过编码器下采样提取全局特征,解码器上采样恢复细节,跳跃连接保留低层级特征,适合图像到图像的映射(如图像去噪);
时间步 ttt 编码:将 ttt 转化为高维向量(如正弦位置编码),让网络知道“当前处于去噪的哪一步”(早期 ttt 去噪强度大,后期 ttt 去噪强度小);
注意力机制:在U-Net的高层加入自注意力模块(如Stable Diffusion),让模型关注图像中的长距离依赖(如“猫的眼睛”与“耳朵”的位置关系),提升生成质量。

2. 损失函数:如何训练“准确预测噪声”?
扩散模型的训练目标是最小化“预测噪声”与“真实噪声”的均方误差(MSE):
Lsimple=Et,x0,ϵ[∥ϵ−ϵθ(xt,t)∥2]L_\text{simple} = \mathbb{E}_{t, \mathbf{x}_0, \boldsymbol{\epsilon}} \left[ \|\boldsymbol{\epsilon} - \epsilon_\theta(\mathbf{x}_t, t)\|^2 \right]Lsimple=Et,x0,ϵ[∥ϵ−ϵθ(xt,t)∥2]
其中:
ttt 从 1 到 TTT 随机采样;
x0∼q(x)\mathbf{x}_0 \sim q(\mathbf{x})x0∼q(x)(真实数据样本);
ϵ∼N(0,I)\boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I})ϵ∼N(0,I)(真实噪声);
xt=αtx0+1−αtϵ\mathbf{x}_t = \sqrt{\alpha_t} \mathbf{x}_0 + \sqrt{1 - \alpha_t} \boldsymbol{\epsilon}xt=αtx0+1−αtϵ(前向过程生成的含噪样本)。

为何用MSE损失?
因为前向过程中 xt\mathbf{x}_txt 的噪声 ϵ\boldsymbol{\epsilon}ϵ 是已知的(可直接计算),通过最小化 ∥ϵ−ϵθ(xt,t)∥2\|\boldsymbol{\epsilon} - \epsilon_\theta(\mathbf{x}_t, t)\|^2∥ϵ−ϵθ(xt,t)∥2,模型就能学会从 xt\mathbf{x}_txt 中“识别”出噪声,进而在逆向过程中“移除”噪声。
这一损失函数极其简单(相比GAN的对抗损失),但效果卓越——正是这种“易于优化”的特性,让扩散模型训练更稳定,生成质量超越GAN。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐