☰
DDPM 扩散模型原理详解
2026/10/2 6:58:35 网站建设 项目流程

DDPM 扩散模型原理详解:正向加噪、反向去噪与 PyTorch 代码实战(AIGC 扩散学习七集笔记)

一句话概览(TL;DR):DDPM(Denoising Diffusion Probabilistic Models,去噪扩散概率模型,2020 年提出)是现代扩散模型的奠基框架。它把"一步生成图像"这个神经网络学不动的难题,拆解成 T 个"预测并扣除一点噪声"的简单回归题:正向过程用一条固定的马尔可夫链把清晰图像逐步加噪成纯高斯噪声(无需学习);反向过程训练一个 UNet,从纯噪声出发逐步预测并减去噪声、还原图像;训练目标就是预测噪声与真实噪声之间的均方误差(MSE)。本文配套 AIGC 扩散学习七集(P24–P30),完整覆盖生成模型演进、正向加噪、一步采样公式、反向去噪、反直觉设计与 PyTorch 实战。

📌适用读者:已了解 Stable Diffusion 大致用法、想吃透扩散模型数学原理与代码实现的学习者。
前置知识:基础概率论(高斯分布、条件概率)、神经网络基础与 PyTorch 入门;所有公式均配自然语言解读。
最后更新:2026 年 10 月。DDPM 原理与公式稳定,代码以 PyTorch / HuggingFace Diffusers 当前版本为准。
系列关系:本文是《Stable Diffusion 原理详解》的内功篇——上篇讲工业系统如何组装,本篇讲发动机的工作原理与制造工艺。

📑 目录

  • 一、全局地图:从"为什么"到"怎么写"
  • 二、第 1 集 · 生成模型四代演进:扩散模型凭什么上位
  • 三、第 2 集 · 正向过程:如何科学地把一张图"毁掉"
  • 四、第 3 集 · 一步加噪公式与重参数化技巧
  • 五、第 4 集 · 反向过程:神经网络唯一要学的本事
  • 六、第 5 集 · 四个反直觉现象:为什么"绕远路"反而最快
  • 七、第 6、7 集 · PyTorch 代码实战:四块骨架
  • 八、七集串讲:一条主线,三次转化
  • 九、核心公式与概念速查表
  • 十、FAQ 高频问答
  • 十一、资料来源与延伸阅读

🧩 配套可交互原理图

本文配有一张可交互的 AIGC 扩散学习全景图,包含四块内容:

  • 生成模型四代演进对比(VAE / GAN / Flow / Diffusion 各自优缺点标签);
  • 正向加噪模拟器:拖动滑块 t,观察一张清晰图像如何被噪声逐步淹没(与 Stable Diffusion 篇的"去噪"滑块互为逆过程);
  • 正向过程 / 反向过程 / 训练目标三栏对照;
  • 第 5 集四个反直觉现象卡片与七集速览。

在线体验(可直接分享访问):AIGC 扩散学习全景 · 在线版


一、全局地图:从"为什么"到"怎么写"

如果说 Stable Diffusion 四集(P20–P23)讲的是"一套工业系统怎么组装",那么 AIGC 扩散学习七集(P24–P30)讲的就是"这台发动机的工作原理和制造工艺":前者带你认识汽车的发动机、变速箱、方向盘各在哪;后者把发动机拆开,讲清每个冲程的物理公式,最后带你亲手装一台出来。

七集的递进逻辑十分工整:

  • 第 1 集回答"为什么是扩散":回顾 VAE、GAN、Flow 三代生成模型的短板,论证扩散模型登场的必然性;
  • 第 2、3 集讲正向过程:纯数学、无需学习的部分,把图像一步步加噪成纯噪声;其中第 3 集的"一步加噪公式"是整个训练效率的命门;
  • 第 4 集讲反向过程:神经网络真正要学的部分,从纯噪声逐步去噪回图像;
  • 第 5 集清理反直觉点:例如"为什么让网络预测噪声而不是预测图像";
  • 第 6、7 集代码实战:把公式翻译成 PyTorch,训练一个真正能从噪声生成图像的模型。

学完应达到的状态:看到 xt=αˉt,x0+1−αˉt,ϵxt​=αˉt​​,x0​+1−αˉt​​,ϵ 不再发怵,并且知道代码里每一行对应哪个符号。

二、第 1 集 · 生成模型四代演进:扩散模型凭什么上位

这一集本质是一堂"生成模型断代史"。要理解扩散模型为什么赢,先要看清前辈们输在哪。

2.1 VAE(变分自编码器,2013)

VAE(Variational Autoencoder,变分自编码器)**的思路是"先压缩、后重建":编码器把图像压成潜空间里的一个概率分布(均值 + 方差),从该分布采样,解码器再还原成图像。其训练目标是重建误差加KL 散度(Kullback–Leibler Divergence,衡量两个分布差异的正则项)。

这个目标天然鼓励"安全答案":面对不确定的细节,模型倾向于输出所有可能答案的平均,导致生成图像普遍偏模糊、细节发肉。好比让 VAE 画一只猫,它画的是"一万只猫的平均猫"——轮廓对、神韵无。

2.2 GAN(生成对抗网络,2014)

GAN(Generative Adversarial Network,生成对抗网络)**走另一条路:**生成器(Generator)**负责造假,**判别器(Discriminator)**负责鉴伪,二者对抗、共同进化。GAN 图像非常锐利,因为判别器专门盯着模糊处打。

代价是训练极其脆弱:生成器与判别器的实力必须精确平衡,任一方过强训练立刻崩溃;更出名的是模式崩塌(Mode Collapse)——生成器找到骗过判别器的捷径后,反复输出同一类"安全样本",要求生成一万种脸,却得到一万张近乎复制的脸。调参体验近似"在雷区里跳格子"。

2.3 Flow(流模型)

Flow(Normalizing Flow,标准化流)思路最优雅:构造一串可逆变换,把简单的高斯分布精确变换成复杂的数据分布。由于每一步可逆,数据的似然(likelihood)可以精确计算——理论上是巨大优点。

但"可逆"约束过于苛刻:每一层都必须可逆、且**雅可比行列式(Jacobian determinant)**要便于计算,这锁死了网络结构的设计空间,导致表达能力受限、生成质量追不上同时代的 GAN。属于"数学上很美,工程上很憋屈"。

2.4 Diffusion(扩散模型,2020)

扩散模型以 DDPM 一战成名,思路完全不同:不再追求一步生成,而是把生成拆成 T 步渐进式去噪。它借鉴热力学中的扩散现象——墨水在清水里扩散是不可逆的熵增过程,但若把每一步的微小变化都建模出来,就能近似"倒放"这个过程。

扩散模型同时拿下三样东西:

  • 训练稳定:单一回归目标,无需像 GAN 那样走平衡钢丝;
  • 生成质量高:逐步精修,细节丰富;
  • 多样性好:每次从不同随机噪声出发,不会模式崩塌。

它唯一输掉的是速度:GAN 一次前向即出图,扩散要迭代几十上百步。但在"质量为王"的文生图战场,这个代价完全值得,后续的 **DDIM、LCM(Latent Consistency Model,潜一致性模型)、Consistency Model(一致性模型)**等加速采样技术也在不断补齐短板。

历史视角:扩散模型并非天降银弹,而是在"质量、稳定性、多样性、速度"这个不可能四角中,用"牺牲速度"换取了其余三项的当时最优解。

参考:哔哩哔哩 · AIGC 扩散学习(1)

三、第 2 集 · 正向过程:如何科学地把一张图"毁掉"

**正向过程(Forward Process / Forward Diffusion)**是扩散模型中唯一"不需要学习"的部分,但其数学定义必须抠清楚,因为反向过程完全照它反推。

设定:x0x0​ 是真实图片,xTxT​ 是纯高斯噪声,中间有 x1,x2,…,xT−1x1​,x2​,…,xT−1​ 共 T 个状态(DDPM 原文 T=1000)。从 xt−1xt−1​ 到 xtxt​ 的转移定义为:

q(xt∣xt−1)=N(xt; 1−βt,xt−1, βtI)q(xt​∣xt−1​)=N(xt​; 1−βt​​,xt−1​, βt​I)

白话解读:每一步把上一时刻图像乘以 1−βt1−βt​​(轻微衰减),再混入方差为 βtβt​ 的高斯噪声。βtβt​ 是预设的噪声强度,从很小(如 10−410−4)线性增大到较大(如 0.02)——前期少加(图像信息还多,要温柔),后期多加(已面目全非)。

两个关键性质:

  1. 这是一条马尔可夫链(Markov Chain):xtxt​ 只依赖 xt−1xt−1​,与更早状态无关。该假设极大简化了推导,整个 DDPM 概率框架都建立其上。
  2. 整条链固定、无参数:βtβt​ 是人工设定的超参数,称为noise schedule(噪声调度表),正向过程没有任何可学习内容。它存在的唯一意义是为反向过程制造"教材"——精确知道图像怎样被一步步毁掉,才能教网络一步步修回来。

直觉要点:每步只加"一点点"噪声是方案成立的前提。若一步就毁成噪声,反向恢复就等于"一步从噪声生成图像",又绕回 GAN 的难题。正因为每步变化微小,逆向条件分布 q(xt−1∣xt)q(xt−1​∣xt​) 在数学上才能用高斯分布很好地近似、神经网络才学得动。核心策略即:用 T 次微小的、可逆近似的破坏,替代一次不可逆的破坏。

参考:哔哩哔哩 · AIGC 扩散学习(2)

四、第 3 集 · 一步加噪公式与重参数化技巧

本集解决一个工程问题:训练时要得到 xtxt​,难道要从 x0x0​ 开始循环加噪 t 次?t 最大为 1000,每个样本都如此,训练将慢到不可行。

答案来自高斯分布的优美性质:两个独立高斯噪声叠加仍是高斯噪声,且方差相加。由此,从 x0x0​ 加噪两次等价于用合并后方差加噪一次;递推 t 次即得著名的"一步加噪公式":

xt=αˉt,x0+1−αˉt,ϵ,ϵ∼N(0,I)xt​=αˉt​​,x0​+1−αˉt​​,ϵ,ϵ∼N(0,I)

其中 αt=1−βtαt​=1−βt​,αˉ∗t=∏∗s=1tαsαˉ∗t=∏∗s=1tαs​ 是从第 1 步到第 t 步所有 αα 的连乘积。

4.1 重参数化技巧

公式中藏着关键的重参数化技巧(Reparameterization Trick):噪声 ϵϵ 从标准正态分布采样、与 t 无关;t 的影响全部收敛到 αˉtαˉt​​ 与 1−αˉt1−αˉt​​ 两个标量系数中。于是采样任意时刻的加噪图 xtxt​,只需一次标准高斯采样 + 一次线性插值。

训练流程因此极其高效(全程 O(1),无需循环):

  1. 随机采一个时间步 t(均匀分布);
  2. 随机采一团噪声 ϵϵ;
  3. 查表取出预计算好的 αˉtαˉt​;
  4. 套公式得到 xtxt​。

4.2 信息留存率与噪声调度

从信息论视角,αˉtαˉt​ 就是"原图信息留存率":

  • t=0 时 αˉ0=1αˉ0​=1,xtxt​ 即原图;
  • t 增大时 αˉtαˉt​ 单调衰减;
  • t=T 时 αˉT≈0αˉT​≈0,xTxT​ 几乎是纯噪声。

这也解释了噪声调度表为何不能乱设:βtβt​ 增长过快,αˉtαˉt​ 会过早塌缩到 0,中间时间步浪费在纯噪声上;增长过慢,则尾部图像毁不干净、生成初始分布对不上。线性 schedule、cosine schedule等经典方案,都是在为 αˉtαˉt​ 设计一条"体面衰减"的曲线。

一句话:正向过程在数学上是马尔可夫链,在工程上被压缩成一行公式——这行公式是训练阶段被调用最频繁的代码。

参考:哔哩哔哩 · AIGC 扩散学习(3)

五、第 4 集 · 反向过程:神经网络唯一要学的本事

反向过程(Reverse Process)**把噪声修回图像:从 xT∼N(0,I)xT​∼N(0,I) 出发,逐步由 xtxt​ 推出 xt−1xt−1​,直到 x0x0​。

理论目标是学习 pθ(xt−1∣xt)pθ​(xt−1​∣xt​)。真实逆向分布 q(xt−1∣xt)q(xt−1​∣xt​) 依赖整个数据集、无法直接计算,故用神经网络逼近。数学上可证明:当每步加噪足够小时,真实逆向分布也近似高斯分布,问题遂简化为预测该高斯分布的均值和方差。DDPM 进一步简化:方差固定为与时间步相关的常数,网络只预测均值;而预测均值又等价于预测噪声——这正是下一集的主角。

5.1 训练目标

严格推导需从**变分下界(ELBO,Evidence Lower Bound,证据下界)**出发,但 DDPM 经一系列化简与加权后,最终损失函数异常简洁:

L=E∗t,,x0,,ϵ[∣ϵ−ϵ∗θ(αˉt,x0+1−αˉt,ϵ, t)∣2]L=E∗t,,x0​,,ϵ[​ϵ−ϵ∗θ(αˉt​​,x0​+1−αˉt​​,ϵ, t)​2]

拆开读:

  • ϵϵ 是加噪时真实混入的噪声(训练时已知的"标准答案");
  • ϵθ(xt,t)ϵθ​(xt​,t) 是网络看到加噪图 xtxt​ 与时间步 t 后预测的噪声;
  • 损失即二者的均方误差(MSE,Mean Squared Error)。

没有判别器、没有对抗、没有花哨正则项——一个教科书级别的回归问题。

5.2 采样(推理)迭代

从纯噪声 xTxT​ 开始,每一步执行:

xt−1=1αt(xt−1−αt(1−αˉ∗t),ϵ∗θ(xt,t))+σtzxt−1​=αt​​1​(xt​−(1−αˉ∗t​1−αt​​),ϵ∗θ(xt​,t))+σt​z

读法:用当前 xtxt​ 减去"按系数缩放后的预测噪声",得到去噪一步后的均值;σtzσt​z 项在 t>1 时额外补一点随机噪声,保证过程是随机采样而非确定性输出,有助于多样性。将此操作从 t=T 迭代到 t=1,即得生成图 x0x0​。

5.3 为什么扩散模型慢

反向过程每一步都要完整跑一遍 UNet 前向传播。T=1000 意味着生成一张图要跑 1000 次网络——这就是扩散模型慢的物理本质,也是所有加速技术(DDIM 跳步采样、蒸馏、Consistency Model)要解决的对象。工程上常用 DDIM 等采样器把 1000 步压缩到 20~50 步,画质损失可控、速度提升数十倍。

一句话:正向过程是"已知答案的出题",反向过程是"照着答案学解题",训练与采样都围绕"预测噪声"这一件事展开。

参考:哔哩哔哩 · AIGC 扩散学习(4)

六、第 5 集 · 四个反直觉现象:为什么"绕远路"反而最快

6.1 反直觉一:预测噪声比预测图像更好

最直观的思路是让网络从 xtxt​ 直接预测 xt−1xt−1​(甚至 x0x0​),为何要绕一圈预测噪声 ϵϵ?三个原因:

  1. 目标难度:xtxt​ 与 xt−1xt−1​ 差异极小,预测一张"和输入几乎一样的图"梯度微弱、目标模糊;而噪声 ϵϵ 是从图像中"剥离"出的独立成分,预测它等价于回答边界清晰的问题——“这张混合物里哪些成分是噪声?”
  2. 优化稳定性:预测噪声的参数化在 ELBO 化简后恰好消去复杂加权系数,得到各时间步权重均衡的简单 MSE;直接预测 x0x0​ 则在不同时间步误差尺度差异巨大、优化困难。
  3. 实测效果:相同网络容量下,预测噪声的生成质量明显更好。

当一个问题太难时,把它改述成等价的简单问题,是深度学习里最值钱的工程智慧。

6.2 反直觉二:毁掉的东西居然能算回来

直觉上加 1000 步噪声后信息应彻底丢失、不可逆。关键仍在每步只加"一点点":每步破坏微小且局部,逆向分布可被高斯逼近。这类似热力学的准静态过程——变化足够缓慢,系统始终处于可近似的平衡态。信息不是被"删除",而是被"打散"进噪声里,且打散方式完全已知(noise schedule),故逆向工程有据可依。

6.3 反直觉三:慢,竟然是优点的一部分

逐步生成带来两个 GAN 不具备的东西:

  • 质量上限更高:每步小幅精修,构图先成形、细节后补全,类似画家起稿再层层深入,而非一笔定生死;
  • 可控性强:去噪每一步都可注入条件(文本、布局、边缘图),为ControlNet、Inpainting(局部重绘)、图生图等可控生成玩法打开大门——GAN 的一步生成架构里没有这些"插手"位置。

"慢"换来的不只是画质,还有整个可控生成的生态位。

6.4 反直觉四:随机性不是缺陷,是特性

采样时每步注入的 σtzσt​z 随机噪声、以及初始纯噪声 xTxT​,保证同一模型每次生成结果不同。扩散模型的多样性被写进算法定义;相比之下,GAN 的模式崩塌恰恰是把多样性"卷没了"。

参考:哔哩哔哩 · AIGC 扩散学习(5)

七、第 6、7 集 · PyTorch 代码实战:四块骨架

最后两集手写一个最小可用 DDPM。代码骨架与公式一一对应,主要分四块。

7.1 噪声调度表(Noise Schedule)

用几行代码定义 βtβt​ 序列(线性从 10−410−4 增长到 0.02,长度 T=1000),再预计算 αt=1−βtαt​=1−βt​、αˉt=cumprod(α)αˉt​=cumprod(α),以及采样公式所需的 αˉtαˉt​​、1−αˉt1−αˉt​​、1αtαt​​1​ 等系数——全部提前算好存成 tensor buffer,训练/采样时按 t 索引查表。所谓采样技巧,落到代码里就是一张预计算查找表。

7.2 加噪函数

给定 x0x0​、时间步 t、噪声 ϵϵ,一行实现 xt=αˉt,x0+1−αˉt,ϵxt​=αˉt​​,x0​+1−αˉt​​,ϵ。需注意张量广播:系数是[batch]维、图像是[batch, C, H, W],要 reshape 对齐。此处一旦出错往往是静默的维度广播 bug——画面全是雪花却难定位。

7.3 UNet 模型与训练循环

网络采用带时间嵌入的 UNet(即 Stable Diffusion 篇讲过的结构):时间步 t 经正弦位置编码 + MLP 注入每个残差块。训练循环是教科书式五步:

  1. 从数据加载器取一批真实图 x0x0​;
  2. 为每张图随机采一个时间步 t;
  3. 随机采高斯噪声 ϵϵ;
  4. 用加噪函数造出 xtxt​;
  5. 把 (xt,t)(xt​,t) 喂给 UNet 得到预测噪声 ϵ^ϵ^,与真实 ϵϵ 算 MSE 损失,反向传播更新参数。

去掉注释后核心逻辑不足十行——数学全部前置到第 2~4 集,代码只是忠实执行。这正是扩散代码的普遍观感:推导三天,实现三十行。

7.4 采样生成函数

先采 xT∼N(0,I)xT​∼N(0,I),再写 t 从 T 到 1 的循环:每步调 UNet 预测 ϵθ(xt,t)ϵθ​(xt​,t),代入采样公式算出 xt−1xt−1​ 的均值,t>1 时补 σtzσt​z 随机项;循环结束,x0x0​ 即生成结果,反归一化后存图。

工程细节:

  • 用torch.no_grad()包裹采样循环,避免显存爆炸;
  • 先用小数据集(如MNIST手写数字或小型花卉数据集)验证收敛;
  • 观察损失曲线与定期采样的中间效果图。扩散模型的损失通常不会降得很低,判断训练成败的黄金标准是看采样出的图,而非 loss 数字——这与多数判别式任务经验相反,新手常在此误判训练失败。

两集代码课的价值,是把"正向加噪 → 预测噪声 → 反向采样"的抽象链条变成可单步调试的张量流。调通一遍后,再读 DDIM、Stable Diffusion、**DiT(Diffusion Transformer)**等源码,看到的都只是这套骨架的"精装修版本"。

参考:哔哩哔哩 · AIGC 扩散学习(6) | (7)

八、七集串讲:一条主线,三次转化

七集内容可压缩为三次"问题转化",这也是扩散模型方法论的精髓。

图 1 | 扩散模型方法论的三次转化:从"一步生成"的原始难题出发,依次转化为"T 步去噪"“每步预测噪声”“几十行 PyTorch”,分别换来了稳定性、可优化性与工程速度。

flowchart LR A["原始难题:一步生成图像<br/>(GAN 在此翻车)"] --> B["转化为:T 步渐进去噪<br/>第1-2集 · 马尔可夫加噪链"] B --> C["转化为:每步预测噪声<br/>第3-5集 · 一步加噪公式 + MSE"] C --> D["转化为:几十行 PyTorch<br/>第6-7集 · 训练循环 + 采样循环"] style A stroke:#E65C53,stroke-width:1.5px style D stroke:#40B43E,stroke-width:1.5px
  • 第一次转化用"分步"换"稳定";
  • 第二次转化用"改述目标"换"可优化性";
  • 第三次转化用"预计算"换"工程速度"。

生成模型还会继续换代,但"把难题拆成一串小题"的思维方式不会过时。

九、核心公式与概念速查表

概念英文 / 全称符号 / 公式作用集数
噪声强度beta / noise scheduleβtβt​每步加多少噪声,人工设定2
噪声留存系数alpha barαˉ∗t=∏∗s=1tαsαˉ∗t=∏∗s=1tαs​原图在 t 时刻的信息留存率2、3
一步加噪forward samplingxt=αˉtx0+1−αˉtϵxt​=αˉt​​x0​+1−αˉt​​ϵ训练提速的命门、O(1) 采样3
重参数化Reparameterization随机性只放在 ϵϵ,t 只影响系数让采样可一步完成、可反向传播3
训练损失denoising loss(MSE)L=∣ϵ−ϵθ(xt,t)∣2L=∣ϵ−ϵθ​(xt​,t)∣2让网络预测噪声4、5
采样迭代reverse stepxt−1=1αt(xt−1−αt(1−αˉt)ϵ^)+σtzxt−1​=αt​​1​(xt​−(1−αˉt​​1−αt​​)ϵ^)+σt​z反向去噪一步4
证据下界ELBO训练损失的概率推导起点化简后得到简单 MSE4
工程实现PyTorch DDPM预计算系数表 + UNet + 训练/采样两循环公式落地6、7

十、FAQ 高频问答

Q1:DDPM 和 Stable Diffusion 是什么关系?
DDPM 是 2020 年确立扩散范式的开山之作,在像素空间去噪;Stable Diffusion 属于潜扩散模型(Latent Diffusion),把去噪搬进 VAE 压缩后的潜空间,并加入 CLIP 文本条件。可把 DDPM 理解为发动机原理样机,Stable Diffusion 是量产车型——本文七集讲的正是那台原理样机。

Q2:训练时为什么要随机采样时间步 t,而不是按顺序学?
每个时间步对应一个独立的"去噪难度等级"(晚期步是起稿、早期步是精修),网络需同时胜任所有难度。随机采样等价于在每个 batch 里随机抽考一个难度,保证各难度均匀训练;按顺序学反而容易造成灾难性遗忘(catastrophic forgetting)。

Q3:noise schedule 用线性还是 cosine,差别大吗?
有差别。线性 schedule 在小分辨率(如 32×32)上表现好,但在大图上信息毁得过快;cosine schedule让 αˉtαˉt​ 衰减更平缓、首尾更精细,大分辨率质量更好。复现时建议先严格跟随原论文设置,调优阶段再动 schedule。

Q4:为什么采样时 t>1 要加随机噪声 σtzσt​z,最后一步却不加?
中间步的随机注入保证反向过程的马尔可夫性质与样本多样性;最后一步 t=1 的目标是输出确定性的干净图像 x0x0​,此时再加噪声等于往成品上撒雪花点。

Q5:只看 loss 能判断扩散模型训练好了吗?
不能。扩散模型的 loss 是各时间步噪声预测误差的混合,收敛后仍维持在"看起来不低"的水平,这是正常现象。真正的验收标准是定期跑采样、肉眼看生成图——loss 平滑下降 + 样本逐渐清晰,才是健康训练的双重信号。

Q6:VAE、GAN、Flow、Diffusion 四代模型的核心差别,一句话怎么记?
VAE 学"压缩—重建",快但糊;GAN 学"造假—鉴伪"对抗,锐利但训练易崩、会模式崩塌;Flow 学"可逆变换",似然精确但结构受限;Diffusion 学"逐步去噪",用速度换来了稳定、高质量与多样性三者兼得。

Q7:重参数化技巧到底解决了什么问题?
它把"随机采样"这个不可求导的操作,改写为"从固定分布采样 ϵϵ + 确定性线性变换",使随机性与待学参数解耦,梯度可以正常回传;在 DDPM 中更进一步让任意时刻 xtxt​ 都能 O(1) 直接算出,无需迭代加噪。它也是 VAE 等模型的标准技巧。

Q8:DDPM 要跑上千步太慢,实际怎么加速?
主流三条路线:①更快的采样器,如 DDIM 用非马尔可夫跳步把 1000 步压到 20~50 步;②蒸馏,让少步学生网络模仿多步教师,如 LCM(潜一致性模型);③一致性模型(Consistency Model),单步或少步即可出图。此外在潜空间去噪(Stable Diffusion 路线)、fp16 半精度也能显著降低单步成本。

十一、资料来源与延伸阅读

课程视频(本文整理依据):

  • AIGC 扩散学习(1)· 生成模型发展
  • AIGC 扩散学习(2)· 正向过程
  • AIGC 扩散学习(3)· 正向采样技巧
  • AIGC 扩散学习(4)· 反向过程
  • AIGC 扩散学习(5)· 反直觉现象
  • AIGC 扩散学习(6)· 代码实战(上)
  • AIGC 扩散学习(7)· 代码实战(下)

权威一手论文(延伸阅读):

  • 扩散模型奠基论文:Denoising Diffusion Probabilistic Models (DDPM), arXiv:2006.11239
  • 经典加速采样器:Denoising Diffusion Implicit Models (DDIM), arXiv:2010.02502
  • 少步加速:Consistency Models, arXiv:2303.01469
  • VAE 原始论文:Auto-Encoding Variational Bayes, arXiv:1312.6114
  • GAN 原始论文:Generative Adversarial Networks, arXiv:1406.2661
  • 代码实践:HuggingFace Diffusers 官方文档

内容说明:本文撰写时 B 站分 P 字幕接口暂不可用(两轮抓取均仅返回页面骨架),故内容依据课程选集标题与 DDPM 标准技术体系(DDPM / DDIM 原始论文及 PyTorch 官方实现口径)整理,核心概念、公式与课程讲解一致,可作为学习笔记使用。


这七集与前面的 Stable Diffusion 四集合在一起,构成完整的"扩散模型从原理到工业落地"闭环:AIGC 七集把 DDPM 的数学与代码讲透,SD 四集展示工业界如何在这台发动机上加装 CLIP 条件、潜空间压缩与 UNet 精装修。建议配合可交互全景图的加噪滑块多拖几遍——把"图像如何被噪声淹没"看顺眼,反向去噪自然就成了镜像直觉。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询