Diffusion Model

一、写在前面

虽然参数量规模上,Diffusion貌似还不是很够格,至少不能和任何一款商用大语言模型竞争,但许多人,许多公司会将其纳入“大模型”这一范畴。这是由于:

  1. 领域归属:Diffusion 属于“AIGC”(人工智能生成内容)领域。
  2. 模型规模:其模型参数量和训练需求(如硬件资源 GPU、服务器,以及高质量标注数据集的需求)已达到了“大模型”的门槛。

高校实验室的算力和数据储备通常只能进行特定模块的研发(如 AnimateDiff)或能力分析,很难独立复现像 Stable Diffusion 或 Open-Sora 这类的项目。究其原因,是因为 Diffusion 模型的工程成果具有极高的商业变现潜力,速度甚至超过 LLM(大语言模型)。

实操建议:

如果想真正上手 Diffusion 模型,可尝试复现 AudioLDM(Audio Latent Diffusion Model) 并自行训练。原因是音频模型对显存要求较低,相关研究开展时间较长,数据集易采集且详尽。

关于误区:

请不要将“使用过 Stable Diffusion 的 ComfyUI”或对 Diffusion 原理有浅显理解视作掌握了 Diffusion 技术。无论是有丰富 prompt 使用心得,还是了解部分数学概念,甚至参加了“AI 使用课程”,都不足以称为对 Diffusion 的掌握。真正的掌握需要深入理解具体原理和代码,形成务实、严谨且深度的见解。

接下来为 Diffusion 模型相关的原理部分。


二、Diffusion Model数学模型详细推导

1. 发展历程

  • Diffusion Model不是某个大牛某天晚上拍脑袋冒出来的想法。在本质上,Diffusion Model是一种对于VAE改写,原理上,只是将VAE的损失函数改写成了Diffusion Model定义的数学模型中的损失。
  • 具体来讲,它改写的是VAE中最重要的损失函数,证据下界ELBO (Evidence Lower Bound),其目标是通过一个潜在空间 (latent space) 对数据的真实分布p(x)p(x)进行建模,找到近似分布qϕ(zx)q_ϕ(z|x)和生成模型pθ(xz)p_θ(x|z):

L=Eqϕ(zx)[log pθ(xz)]DKL(qϕ(zx)p(z))L=E_{q_{ϕ}}(z|x)[log\ p_{θ} (x|z)]-D_{KL}(q_{ϕ}(z|x)∥p(z))

  • 文章作者试图将以上的损失函数改写成了如下函数:

LDiffusion=Ex0,ϵ,t[ϵϵθ(xt,t)2]L_{Diffusion}=E_{x_0,ϵ,t}[∥ϵ−ϵ_θ(x_t,t)∥^{2}]

  • 其中,ϵ\epsilonϵθ\epsilon_{\theta} 为实际时间步 tt 时的真实噪声和模型预测噪声。

2. 数学模型建立

扩散模型是一种概率生成模型,是通过一系列正向逐步加噪破坏原始数据,然后一步步训练模型预测噪声能力,将噪声一步步去除并获得原始数据的模型。其中,该数学模型主要包括两部分,分为正向扩散和逆向扩散。

  • 首先,正向扩散过程,即为前向逐步加噪过程,其定义如下:假设原始数据为 x0x_0 ,前向过程通过 TT 次累计加入高斯噪声,获得x1,x2,...,xTx_1, x_2,...,x_T。前向过程每个时刻 tt 只和 t1t-1时刻相关即只和上一时刻相关,所以前向过程为马尔可夫过程,满足:

q(xtxt1)=N(xt;(1βt)xt1,βtI)q(x_t|x_{t−1})=N(x_t;(1−β_t) x_{t−1},β_t I)

q(x1:Tx0)=t=1,...,Tq(xtxt1)=t=1,...,TN(xt;(1βt)xt1,βtI)q(x1:T|x0)=∏_{t=1,...,T}q(x_t|x_{t−1})=∏_{t=1,...,T}N(x_t;(1−β_t)x_{t−1},β_t I)

其中,βt\beta_t为随时间递增的,在区间 [0,1][0,1]中的超参。同时假设αt=1βt\alpha_{t}=1-\beta_{t}
考虑到:

xt=αtxt1+1αtϵ1=αt(αt1xt2+1αt1ϵ2)+1αtϵ1=αtαt1xt2+(αt(1αt1)ϵ2+1αtϵ1).\begin{aligned} x_{t} &= \sqrt{\alpha_{t}}x_{t-1} + \sqrt{1-\alpha_t} \epsilon_{1} \\ &= \sqrt{\alpha_{t}} \left( \sqrt{\alpha_{t-1}}x_{t-2} + \sqrt{1-\alpha_{t-1}} \epsilon_{2} \right) + \sqrt{1-\alpha_t} \epsilon_{1} \\ &= \sqrt{\alpha_{t} \alpha_{t-1}}x_{t-2} + \left( \sqrt{\alpha_{t}(1-\alpha_{t-1})} \epsilon_{2} + \sqrt{1-\alpha_t} \epsilon_{1} \right). \end{aligned}

由于正态分布的可叠加性,αt(1αt1)ϵ2+1αtϵ1\sqrt{\alpha_{t}(1-\alpha_{t-1})} \epsilon_{2} + \sqrt{1-\alpha_t} \epsilon_{1}可以合并为总方差相同的一个分布,即为1αtαt1ϵˉ2\sqrt{1-\alpha_t \alpha_{t-1}}\bar\epsilon_{2} 。所以我们可以有:

q(xtxt2)=N(xt;(α)xt1,βtI)q(x_t|x_{t−2})=N(x_t;(\alpha) x_{t−1},β_t I)


三、各类 Diffusion 模型原理问题篇(基础常识类问题)

1. DDPM(Denoising Diffusion Probabilistic Models)

算法流程简述

  1. 初始化:从纯高斯噪声或带噪图像开始。
  2. 正向扩散:逐步向数据添加高斯噪声,直到数据完全变为无结构的噪声。

    xt+1=αtxt+βtϵt, ϵtN(0,I)x_{t+1} = \alpha_t \cdot x_t + \beta_t \cdot \epsilon_t,\ \epsilon_t \sim \mathcal{N}(0, \mathcal{I})

    xt=αˉtx0+βˉtϵ, ϵN(0,I)x_t = \bar{\alpha}_t \cdot x_0 + \bar{\beta}_t \cdot \epsilon,\ \epsilon \sim \mathcal{N}(0, \mathcal{I})

    (注:αt+βt=1\alpha_t + \beta_t = 1, αt\alpha_t 递减,αˉt\bar{\alpha}_tα0\alpha_0αt\alpha_t 的累乘结果。)
  3. 反向去噪:通过神经网络预测并逐步去除噪声,还原为无噪声图像。

    pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t))p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t))

  4. 训练:通过反向传播更新模型参数,最小化噪声预测误差。
  5. 测试:对新图像应用训练好的模型去噪。

实现条件

  1. 马尔可夫链:每一步只依赖于前一步,满足无记忆性。
  2. 微小变化:噪声添加逐步进行,变化幅度受 βt\beta_t 控制。
  3. 高斯噪声:扩散过程模拟为高斯噪声添加。

其他问题

  • 为什么加噪幅度不一致?
    前期加噪少以保持数据结构完整性,后期加噪多以加速扩散。

  • DDPM 本质上是预测噪声还是当前分布?
    本质上是预测噪声,分布预测只是中间步骤。


2. DDIM(Denoising Diffusion Implicit Models)

DDIM 如何实现加速采样?

  1. 确定性逆扩散:去除采样过程中的随机性。
  2. 非马尔可夫跳步采样:允许时间步大幅跳跃,从 xtx_t 直接跳到 xtsx_{t-s}
  3. 减少步骤:采样过程减少计算量。
  4. 多样性牺牲:确定性路径限制了输出的多样性。

DDIM 是不是确定性生成?为什么?
是。因为其逆扩散公式去除了随机性,结果固定。


3. Score-Based Diffusion Model

模型理解
将去噪过程视为沿着分数(概率梯度)前进,即扩散模型是一种导向地图,指示如何攀向概率高峰。


4. 高阶采样方案(如 DPM++)

通过 ODE(常微分方程)建模扩散过程,解析求解步骤以加速采样。


5. 特征编码篇

  • CLIP 编码:构建图像-文本对,提升 zero-shot 泛化能力。
  • CLIP 的优缺点
    • 优点:特征一致性强,模型无需额外训练。
    • 缺点:文本描述简单,图文理解能力弱。
  • BLIP/BLIP2 的原理
    • BLIP:多路损失函数和图像分块理解。
    • BLIP2:用 Q-Former 连接图像与大语言模型(LLM)。

6. Stable Diffusion 相关

核心优化

  • 使用 VAE 将特征映射到潜空间(Latent Space),降低运算量。
  • 使用 U-Net 引导生成过程。

VAE 导致图像模糊的原因
VAE 编解码是有损过程,可通过优化模型结构减少损失。

Stable Diffusion 和 DALL-E 2 异同

  • DALL-E 2:自回归逐像素生成。
  • Stable Diffusion:使用潜空间、交叉注意力机制,更精细可控。

文本/图像条件控制
通过编码器将文本或图像信息引入扩散模型,使用交叉注意力机制对生成结果施加影响。