DDPM 扩散模型原理详解

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 集 · 生成模型四代演进:扩散模型凭什么上位](#二、第 1 集 · 生成模型四代演进:扩散模型凭什么上位)
  • [三、第 2 集 · 正向过程:如何科学地把一张图"毁掉"](#三、第 2 集 · 正向过程:如何科学地把一张图"毁掉")
  • [四、第 3 集 · 一步加噪公式与重参数化技巧](#四、第 3 集 · 一步加噪公式与重参数化技巧)
  • [五、第 4 集 · 反向过程:神经网络唯一要学的本事](#五、第 4 集 · 反向过程:神经网络唯一要学的本事)
  • [六、第 5 集 · 四个反直觉现象:为什么"绕远路"反而最快](#六、第 5 集 · 四个反直觉现象:为什么"绕远路"反而最快)
  • [七、第 6、7 集 · PyTorch 代码实战:四块骨架](#七、第 6、7 集 · PyTorch 代码实战:四块骨架)
  • 八、七集串讲:一条主线,三次转化
  • 九、核心公式与概念速查表
  • [十、FAQ 高频问答](#十、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)∣2L=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 sampling xt=αˉ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 step xt−1=1αt(xt−1−αt(1−αˉt)ϵ^)+σtzxt−1​=αt​​1​(xt​−(1−αˉt​​1−αt​​)ϵ^)+σt​z 反向去噪一步 4
证据下界 ELBO 训练损失的概率推导起点 化简后得到简单 MSE 4
工程实现 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 半精度也能显著降低单步成本。

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

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

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

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


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

相关推荐
科技强国、科技兴国1 小时前
《思维机器:英伟达如何开启人工智能革命》
人工智能
yl45301 小时前
水下清淤机器人设备制造商哪家靠谱
大数据·人工智能·机器人
桃西西呀1 小时前
LangChain 之三:模型与消息抽象
人工智能·langchain·llm
龙亘川1 小时前
数智赋能文化服务:构建全域一体化智慧文旅新范式
大数据·人工智能·智慧城市·数据可视化
小小小小钰儿1 小时前
2.2-模型微调
人工智能·深度学习·机器学习·计算机·网络安全·操作系统·编程
samforce1 小时前
天使之眼:稳态结构与训练函数的耦合——一个同时解释AI与人的公式
人工智能·哲学·结构认知
桃西西呀1 小时前
LangChain 之二:组合原语深拆
人工智能·llm·ai编程
推送者1 小时前
真人转 Q 版桌宠定制:AI 一键生成,技术实现与本地抠像经验
人工智能
胡家伟++1 小时前
RL 让人形机器人学踢球:13 轮实验、三次仪器级 Bug,触球率从 0 到 100%
人工智能·机器人·机器人足球