扩散模型家族全景图:DDPM、LDM、CFG与Rectified Flow
2026/9/9 13:35:31 网站建设 项目流程

1. 先建立直觉:扩散模型到底在做什么

我在刚接触扩散模型的时候,被一堆术语绕得晕头转向:DDPM、DDIM、Score-Based、SDE、LDM、Classifier Guidance、Rectified Flow……每个名字看起来都像一个新模型,网上的文章又各讲各的,越看越乱。后来自己动手跑代码、复现论文、调参踩坑,才慢慢发现一个关键事实:这些名字本质上是在讲同一件事的不同侧面

这个“同一件事”可以用一句话概括:扩散模型在学习“把一个噪声分布慢慢变成目标数据分布”的过程。大白话讲,就像你有一团揉得乱糟糟的毛线球(纯噪声),经过一系列有规律的操作,最终理成一件完整毛衣(一张图、一段音频、一个分子结构)。整个扩散模型家族的研究,都是在解决三个核心问题:

  • 怎么做这个“从噪声到数据”的转化才稳定、可控?
  • 怎么让转化的速度更快、需要的计算量更小?
  • 怎么在转化过程中加入条件控制(比如“给我生成一张猫的图片”而非“随便生成一张图”)?

这三个问题分别对应了你听到的那一串名词。DDPM解决了第一问,DDIM和Rectified Flow为了解决第二问,LDM为了让模型能跑得动,Classifier Guidance和Classifier-Free Guidance为了第三问,而Score-Based和SDE则是把所有方法统一起来的数学框架。把这些关系捋顺了,你再看任何一篇扩散模型的论文,都不会再觉得它们是孤立的新模型,只是在不同环节上的改进。

这篇文章的目标读者,是那些已经知道扩散模型“大概是干什么的”、但还没把整个家族串起来的人。我会尽量少堆公式,多讲直觉,但数学上该点透的地方也不会回避。毕竟扩散模型的核心确实是个数学框架,绕过数学的讲解最后都会让你在调参和改代码时一脸懵。

2. DDPM:扩散模型的开山之作是怎么运作的

2.1 前向过程和反向过程

DDPM全称Denoising Diffusion Probabilistic Models,是2020年Ho等人提出的。它的思想可以追溯到更早的非平衡热力学,但真正让它在图像生成上大放异彩,靠的是两个非常清晰的阶段:前向过程(加噪)和反向过程(去噪)。

前向过程就是你拿着一张干净图片,逐步往上加高斯噪声,加T步(通常T=1000),直到图片完全变成纯噪声。这个过程在数学上写起来很简单:每一步加一点噪声,整条路径是一个马尔可夫链,而且每一步的噪声强度是预先定好的,不需要学习。你不需要训练任何东西来做加噪,它就是一把固定的“噪声尺子”。

反向过程才是模型真正要学的东西:给定一个几乎全是噪声的图,如何一步步把它还原成干净图片。模型在每一步需要预测的,不是图片本身,而是“刚加进去的那点噪声”。训练目标也因此非常简洁:预测噪声,让预测值和真实加入的噪声之间的均方误差最小。这个设计妙就妙在,它绕过了直接建模复杂图像分布这个难题,把一个生成问题转化成了无数次简单的去噪回归问题。

2.2 方差调度的关键作用

DDPM里有一个反直觉的核心细节:噪声的强度和步数是怎么安排的。这个叫“方差调度”(variance schedule),常见的有线性调度和余弦调度。线性调度就是噪声的方差随时间线性增长;余弦调度则是在中间段增长更快,两头更平缓。

我在实际训练中对比过这两种调度,一个很深的体会是:线性调度实现简单,但前几步的噪声变化太慢,导致模型在训练初期容易浪费算力;余弦调度在中间阶段加噪更猛,模型能更快地区分出不同时间步的特征,收敛明显更稳。后来大家常用的一个经验判断是:如果你画一下噪声强度曲线,会发现理想的调度应该让前向过程在每一步“信息破坏”幅度大致均匀,这样才能保证反向过程每个时间步的难度均衡。

还有一个容易被新手忽略的点——反向过程的每一步,其实都假设是在“上一个时刻的分布”上做条件生成,所以训练时模型需要输入当前时刻t。注意,这个t不只是用于告知模型“你现在在第几步”,还决定了当前步噪声的强度参数。模型一般通过正弦位置编码把t映射成向量,再通过添加(或调整归一化层)的方式注入网络。很多人一开始不理解为什么去噪网络要额外接收t,其实原因很简单:不同的t对应不同的噪声水平,网络必须学会针对不同的噪声水平做不同力度的去噪,就像医生看病得先知道病人受了多重的伤。

2.3 训练和采样的完整流程

整个DDPM的训练流程我用伪代码写出来,直观得让人惊讶:

# 训练循环 for x0 in data_loader: # x0是干净图片 t = randint(1, T) epsilon = randn_like(x0) # 随机采样噪声 x_t = sqrt(alpha_bar[t]) * x0 + sqrt(1 - alpha_bar[t]) * epsilon loss = MSE(model(x_t, t), epsilon) loss.backward()

这里的alpha_bar[t]是由方差调度预先算好的累积参数。样本x_t不是一步一步加噪得到的,而是一次性直接从x0和噪声的加权和算出来的,这要感谢高斯分布的可加性。这是DDPM训练高效的基石:不需要真的循环跑T步前向过程。

采样时则是真正的反向循环,从纯噪声x_T开始,依次预测噪声、减去噪声、再加回一点随机扰动(这一步是为了保持分布的多样性),最终得到生成图像。这个“每一步都加回一点噪声”的细节很多人讲漏了:如果每一步都完全按照预测去噪,模型只会得到一个确定性的结果,丢失了概率分布的多样性。所以DDPM的采样公式里,除了均值之外还会有一个和噪声水平相关的随机项,它保证了每次采样能得到不同的结果。

3. 从Score-Based到SDE:扩散模型的统一数学视角

3.1 Score意味着什么

如果说DDPM是从“图像像素”出发理解扩散,那Score-Based Model就是从“概率密度”出发的另一种理解方式。它不直接预测噪声或图像,而是去预测“对数概率密度对输入数据的梯度”,也就是score函数,数学上写作∇x log p(x)。

这个概念初看很抽象,但可以用一个地理类比:概率密度分布可以想象成一片地形,高概率区域是山峰,低概率区域是山谷。score函数就是在这个地形上每个点的“上坡方向”。如果我们在山头附近随机扔下一个球,并让它始终沿着score(上坡)方向滚动,最终就会停留在山顶——也就是最可能的样本区域。这就是生成过程:从一个随机的低密度点出发,沿着score函数不断向高密度区域移动。

但问题来了,真实数据的概率密度我们根本不知道,怎么去学它的梯度?答案是用score matching技巧:可以把score函数的训练目标转化为一个去噪回归问题,形式上居然和DDPM的预测噪声几乎一样。这就是为什么后来大家发现DDPM和Score-Based其实是同一个硬币的两面——DDPM预测噪声ε,Score-Based预测的是ε的量级,两者只差一个缩放系数。

3.2 SDE把离散步骤变成连续过程

宋飏等人在2020年发现了更漂亮的统一:把DDPM和Score-Based模型都放进连续时间的框架里,用随机微分方程(SDE)来描述。前向过程是一个持续加噪的随机过程,反向过程则是把这个SDE倒着跑,而score函数恰好是反向SDE里的关键项。

SDE这个视角的威力在于两点。第一,它让理论分析变得干净:所有的离散时间模型(DDPM、NCSN等)都只是同一个连续SDE的不同离散化近似。第二,由SDE可以推导出概率流ODE(Probability Flow ODE):一个和数据分布完全等价的确定性轨迹。也就是说,原本随机扩散的过程,可以改写成一个确定性的常微分方程。这个ODE的意义在于,它保留了生成分布的准确性,但采样时不再需要随机性,而且可以用任意数值求解器大步长加速。

从工程角度看,这个发现直接催生了更快的采样方法。DDPM跑一个完整采样需要1000步,使用概率流ODE后,同等质量下可以把步数压到50步甚至20步。今天的很多加速采样器本质上都在这个框架里做文章。

3.3 为什么统一视角这么重要

我见过很多人跳过这一节直接去看LDM和CFG,结果后面遇到问题就卡住了。统一视角真正的价值是:当你想改进某个环节时,你能精准定位自己动的是哪个变量。比如你想让采样更快,你动的是反向过程的离散化方式;你想让生成更稳,你动的是噪声调度和模型架构;你想加强条件控制,你动的是引导项的形式。如果没有这张“统一地图”,所有改进都像盲人摸象,你会在GitHub上不断试错,却不知道为什么有些代码改了有效、有些改了反而崩。

我自己是在复现DDIM的时候真正体会到了统一视角的实用价值。DDIM的核心推导过程比较繁琐,但当你从概率流ODE出发,会发现DDIM其实就是对这个ODE的一种特殊离散化方式。理解了这一层,就很容易推导出每个采样步的更新公式,也能很自然地理解为什么DDIM在采样步数特别少时容易出现细节丢失。

4. 加速采样与潜在空间:从DDIM到LDM

4.1 DDIM为什么能“跳步”

DDPM慢在采样需要1000步,而DDIM通过改变反向过程的随机性设计,可以让采样步数大幅减少。它的关键洞察是:去噪过程不一定需要严格遵循前向的马尔可夫链,可以从任意两步之间直接跳。只要你构造出的“跳步路径”最终边缘分布是合理的,就能用更少的步数完成采样。

DDIM最特殊的地方是它设定了“采样过程无随机性”,也就是说每步去噪都是确定的,这正好对应了前文提到的概率流ODE的某个离散化版本。这样有两个好处:一是采样步数大幅减少,20到50步就能出不错的效果;二是采样过程变成了确定性的映射,可以做语义插值——给定两张图的噪声向量,线性插值得到的中间向量生成出来的图像,自然表现出平滑的内容过渡。这一点在实际应用(比如图像编辑和风格混合)中非常有用。

我在实际使用中的体会是:DDIM在步数从1000降到50时,FID基本不会有太大劣化;但如果继续降到10步,就开始出现局部模糊、纹理丢失的问题。这不是说DDIM不够好,而是任何确定性采样器在极少的步数下都难以恢复高频细节。后来的一些方法(比如DPM-Solver)利用高阶数值解算器把步数压到了10步以内而质量不崩,原理就是在概率流ODE上用更聪明的离散化格式。

4.2 LDM为什么选择在潜空间干活

LDM(Latent Diffusion Model)是Stable Diffusion底层的核心技术。它在做一个看起来有点绕的决策:不直接在像素空间做扩散,而是先用一个自编码器把图像压缩到低维潜空间,在潜空间里跑扩散过程,最后再用解码器把潜变量还原成图像。为什么要绕这么一圈?核心原因是计算量和细节学习难度。

像素空间的图像动辄512×512×3,要在这么大的张量上运行1000步扩散,训练和推理的开销都非常大。而潜空间通常只有64×64×4或者更小,计算量直接降了一个数量级。更关键的是,自编码器已经学会了什么是“常见的视觉结构”,潜空间里的特征不像像素那么冗余,扩散模型只需要在这个紧凑但信息完整的空间里建模,训练效率高得多。

但我必须提醒一个反直觉的点:LDM并不是纯粹的“先压缩再扩散”这么简单。它在潜空间上加了一点约束——用KL散度正则化(或者向量量化),让潜变量的分布不至于太松散。这个设计直接影响后续的采样质量,如果潜空间分布和标准高斯差别太大,扩散模型会很难学习。

4.3 LDM的多条件控制架构

LDM不仅改进了速度和效率,还为条件生成提供了一个非常优雅的框架。它引入了一个交叉注意力机制,让扩散模型可以接受文本、分割图、深度图、边缘图等各种形式的条件输入。文本被编码成一组向量序列后,通过交叉注意力层与潜特征交互,模型每个时间步的“注意力焦点”由条件信息引导,从而生成的图像在语义上符合文本描述。

这是我能理解的Stable Diffusion的工作方式:它在训练时会把图像和对应的文字描述一起喂进去,让模型学会从“文本条件”+“当前噪声状态”逐步还原图像。这个架构最大的优势是通用——换一个条件编码器,就能支持新的条件模态,比如用姿态骨架控制人物姿势、用深度图控制空间布局。LDM论文在一个很大的视角下做了演示,后面ControlNet等社区成果也都是在这个交叉注意力架构上生长出来的。

5. 必要条件控制:Classifier Guidance与Classifier-Free Guidance

5.1 Classifier Guidance的核心思路与局限

扩散模型本身学的是无条件分布p(x),也就是“随便生成一张图”。但我们应用时几乎总是需要条件生成,比如“一只戴帽子的猫”。最早的做法是用一个额外的分类器来引导采样过程,这就是Classifier Guidance。

具体来说,在反向采样时,对于当前时刻的噪声图像,除了用去噪网络调整它,还要让某个预训练好的图像分类器对当前图像的分类概率达到我们想要的类别,并沿着让分类概率增大的方向调整图像。这样扩散模型的每次去噪不仅追求“更像数据”,还追求“更符合目标类别”。

这个方法在GAN时代也被广泛使用,但它有几个明显的痛点。第一,你必须额外训练(或找到一个可用的)分类器,而且这个分类器要能处理任意噪声水平的图像,普通分类器在这方面效果并不好,需要专门在加噪图像上做训练。第二,分类器的梯度有时会过于激进,把生成结果推向对抗样本式的伪像——图像看起来有人类的形状,但纹理和逻辑完全错乱。第三,这种引导天然只能支持离散类别(比如“猫”或“狗”),很难扩展到大范围的自由文本描述。

5.2 Classifier-Free Guidance的简洁与强大

为了绕过上述问题,Classifier-Free Guidance(CFG)抛弃了外部分类器,把条件直接注入扩散模型本身。思想很直接:训练同一个模型,既学习无条件生成(condition为空),也学习条件生成(condition为文本),然后在采样时把两者的预测结果做加权外推。

权重公式是:epsilon_guided = epsilon_uncond + scale * (epsilon_cond - epsilon_uncond)。当scale=1时就是纯条件生成,scale>1时则把“条件与无条件之间的差距”放大。实际操作时可以理解为:无条件预测给出了生成内容的“基础倾向”,条件预测给出了“符合描述的方向”,两者之间的差值就是这个条件带来的增益。放大这个增益,生成的图像就会更贴合条件,但代价是多样性下降、图像容易出现过度饱和和伪影。

CFG在图像生成领域如今是标配,几乎所有文生图模型都用它加上一个大于1的权重(常见值在3到7.5之间)来提升样本与条件的对齐度。我自己的使用经验里,一个值得注意的细节是:CFG的最优权重和采样步数高度相关。用DDIM采样50步时scale=5往往足够;换成一个更激进的加速采样器(比如DPM-Solver)时,要适当降低scale,否则颜色会溢出、高光区域会发白。

5.3 引导参数的实际调优观察

CFG的scale并不是越大越好。当scale从3增加到7时,图像的语义一致性通常明显提升;但一旦超过10,图像的对比度上升、边缘变硬、纹理出现油画的过度锐利感。而且条件模棱两可时,高scale会放大模型对条件的错误解读,把“一只猫”强行理解成“一只像猫的狗”。反过来,scale过低(接近1),生成结果又趋向于忽略条件,变成“接近无条件分布的随机生成”。

在实践中,我倾向于把CFG scale当作一个“内容一致性和多样性之间的旋钮”来理解:scale高,忠实条件但多样性和自然度下降;scale低,自然度高但可能跑题。这个旋钮没有一个普适的“最佳值”,只能根据任务和模型版本反复试验。另外,训练时如果无条件dropout的比例设置不当(常见值是10%),会导致无条件分支的预测不稳定,CFG的效果也会明显变差。这个看似不起眼的dropout率,实际上是CFG能不能work的关键超参数之一。

6. 新方向:Rectified Flow与直线概率路径

6.1 从弯曲轨迹到直线轨迹

Rectified Flow是近年来的一个新兴方向,它的核心思想非常直观:既然扩散模型的反向轨迹是一条从噪声到数据的复杂路径,能不能把它拉直成一条直线?如果轨迹是直线,采样就变得极其简单——从噪声点出发,沿直线走固定步数,每步都是恒定的更新,一步到位甚至都能出图。

从数学上看,扩散模型定义的概率路径一般是一条弯曲的曲线。弯曲意味着轨迹在不同阶段的速度方向不一样,模型要学到每个位置该往哪里走。Rectified Flow的思路是用一个更直接的插值构造:把数据点x0和噪声点x1线性插值,定义一条直线路径,然后训练一个网络去学习这个直线路径上的速度场。

训练完毕之后,采样就是从噪声点开始,沿着学习到的速度场走固定几步甚至一步。由于路径基本是直线,每一步几乎都指向目标方向,所以采样可以非常少而不损失质量。这也是“一步生成模型”研究的重要基础。

6.2 蒸馏与重流机制

Rectified Flow里还有一个非常有用的“重流”(reflow)技巧:用训练好的速度场做一次确定性生成,得到一批(噪声,生成数据)配对,然后用这批配对重新训练一个更“直”的速度场模型。这个过程可以迭代,每次都会让轨迹更接近直线,采样步数进一步减少。

我第一次读到reflow时觉得有点绕,后来类比成“优秀学生的笔记”:第一次训练相当于自己摸索出一条笔记路径,路径可能绕来绕去;把这条路走通之后,再照着这条已经验证过的路走一遍,记录下准确的转向点和距离,下次就能不走弯路,直接奔目标。反复几轮后,路径越来越直,教学(采样)效率越来越高。

值得一提的是,这样的框架还与模型的跨步蒸馏兼容。Rectified Flow并不限定于特定网络结构,任何能够输出向量场的模型都可以套用。这也是为什么它在视频生成、音频生成等需要快速采样的场景里受到越来越多的关注。

6.3 Rectified Flow、流匹配和扩散的联系

严格来说,Rectified Flow属于“流匹配”(Flow Matching)这一大类方法的代表之一。流匹配不再需要严格满足扩散模型的噪声调度和马尔可夫性质,而是直接设计一个从噪声到数据的插值路径,然后用回归损失学习速度场。扩散模型可以看成一种特殊的流匹配,只不过它定义的路径是“逐步加噪再逐步去噪”的曲线。

这种视角让整个家族的统一地图又清晰了一片:DDPM走的是曲线路径,DDIM是对曲线的确定性离散化,LDM把路径搬到了潜空间,CFG在采样时调整条件权重,而Rectified Flow则主动把曲线拉直,追求极致采样速度。每一个改进点都非常明确。

在实际项目中,Rectified Flow最适合的场景是“需要低延迟的生成服务”。比如实时交互式生成或视频流式生成,用户不愿意等几十次迭代,一步或几步生成就极其珍贵。但与纯质量导向的DDPM/DDIM相比,它在非常复杂的分布(高度多模态的高分辨率图像)上一步生成的质量仍有退化,需要配合蒸馏和重流迭代逐步逼近。

7. 实操经验:从零训练和微调扩散模型的踩坑记录

7.1 关键超参数的一手经验

说实话,理论讲得再多,真正动手训练扩散模型时,第一个感受往往是“怎么这么不稳定”。下面是我在多个项目里总结出的关键参数经验,虽然不是放之四海皆准,但能让新人少走很多弯路。

训练步数(T)是一个容易理解但容易被低估的参数。T越大,每一步加噪幅度越小,模型的任务更精细,理论上生成质量更高,但训练和采样的开销也同步增加。DDPM论文用1000步是在质量和速度之间找到的平衡点。在低分辨率小数据集(比如32×32的CIFAR)上,500步也能work;在256×256以上高分辨率,步数太少会让反向去噪每一步的尺度失衡。

学习率也需要注意:扩散模型通常使用比常规分类模型更小的学习率(1e-4级别附近),并用Adam优化器。更关键的是,如果使用EMA(指数移动平均)来维护一套模型参数的滑动平均,生成质量通常会有明显提升。EMA的衰减系数一般取0.9999左右,这会直接决定生成样本的稳定度和细节锐度。很多人只看loss大小,却忽略了EMA版本和真实版本在采样上的巨大差异。

还有一个冷门但很重要的参数:数据归一化。扩散模型的输入和噪声都需要在固定的数值范围内建模,一般会把图像像素归一化到[-1, 1],高斯噪声也在同一量级。这个细节看起来不起眼,但如果不统一,模型在去噪时会出现系统性偏移,导致生成的图像整体偏亮或偏暗。

7.2 训练不稳定与生成质量差的排查思路

新手训练扩散模型最常见的失败模式是:loss降了,但采样出来的是全噪声或者一片糊。这个问题通常有几个原因。

第一,网络对时间步t的感知不足。t如果不参与条件化,模型无法区分不同噪声水平,自然学不到“先恢复轮廓再恢复细节”的阶梯式策略。建议检查t的编码维度是否足够(至少要128维以上),以及注入方式(通常是加权相加进特征图)是否生效。

第二,噪声调度的动态范围失衡。如果调度选择的累积噪声方差在后期增长过快,会导致大量训练样本在“几乎全是噪声”的状态下出现,模型花太多精力学习无意义的细节。建议画出alpha_bar[t]曲线检查,如果在t均匀分布时信息破坏速度不均匀,就需要调整。

第三,采样器的迭代步数过少。这些年在社区里有个很常见的毛病:复现时为了快速看效果把步数调低到10步,但使用的是纯DDPM采样器,结果生成一片乱。要明确一点:DDPM在低步数下就是质量差,这不是模型没训好,而是采样器本身没有做加速优化。遇到这种情况先换DDIM或DPM-Solver验证,再回来评估模型。

定位这类问题,我建议每次实验固定一个“基准采样配置”:比如DDIM 50步、CFG scale=1,图像分辨率用训练分辨率。先确认这个基准能否work,再去做加速或调比例的实验,这样能极大减少变量混淆带来的迷惑。

7.3 评估指标使用的门道

训练扩散模型,不能只看loss。常用的评估指标是FID(Fréchet Inception Distance),它衡量生成图像分布和真实图像分布在Inception特征空间上的距离,越低越好。但FID的计算有几个明显的坑:样本数量太少(少于1万)时方差很大;采样方式(随机噪声种子)不同会导致FID波动;CFG scale也会大幅影响FID,所以评估时必须在同一条件下对比。

除了FID,配合IS(Inception Score)、CLIP Score等指标从不同角度评估,必要时还要加人工主观评估。因为FID对“模式塌缩”不够敏感,可能生成结果全部相同但FID仍然不错。对于条件生成,CLIP Score可以作为语义对齐的参考,但它也不完美——有些图像明显错乱,CLIP Score反而很高。

我自己踩过最大的坑是:在10000张生成图上计算FID,结果因为某一batch的种子采出了极端值,导致FID异常差,差点误判一个模型训练失败。后来我改成固定的多组种子,取平均值并记录标准差,才让评估变得可靠。

8. 选型参考:不同应用场景怎么选扩散模型家族成员

面对这么多变体,做项目时该怎么选?很多人一开始就想“把SOTA全部用上”,但实际工程里最关键的是在效果、速度和资源之间做权衡。我整理一个实操性的选择框架。

如果你的目标是高质量离线生成,比如做封面图、商品图、科研可视化,计算资源相对充足,那首选就是LDM加DDIM采样(50步),配合CFG(scale在可接受范围内调高)。这种组合兼顾了质量、稳定性和可控性。视频生成或音频生成场景也类似,LDM架构在跨模态条件生成上表现得非常稳定。

如果你的目标是实时或低延迟场景,比如在线编辑工具、实时风格迁移,那么需要重点考虑Rectified Flow或进一步蒸馏后的少步采样器。可以先训练一个标准扩散模型,再用reflow迭代拉直轨迹,最后蒸馏到2到4步。虽然前期训练成本更高,但推理时延迟直接降低到接近GAN的水平。

如果是研究原型或教学演示,最推荐的还是从DDPM+MNIST/CIFAR这类小数据开始跑通,然后逐渐切换到DDIM、Score-Based、SDE的代码,体会不同实现之间的等价性。这样做一遍之后,你对所有变体的理解会是几何级提升。

另外提一个很多教程没点透的细节:现在开源社区有许多高质量的预训练模型(Stable Diffusion系列、SDXL等),绝大多数时候不需要从零训练。真正需要做的是微调(finetuning)或基于这些模型的推理管线做适配。这种情况下,你重点要掌握的反而不再是模型训练,而是采样器、CFG参数、分辨率和条件编码器的设置。不要因为看多了理论就非要自己从零训一个模型——工程上能用现成预训练模型解决就绝不要重复造轮子。

9. 最后分享一点实操体会

这几年来回折腾扩散模型,我的一个很深的体会是:理解整个家族的最好方式,不是一篇篇看论文,而是亲手改一改现有代码中几个关键的变量——把DDPM改成DDIM的采样公式、把普通条件生成改成CFG、把像素空间换成潜空间。每改一次,你都会对“为什么论文要这么写”有新的理解。

举个例子,我第一次把DDPM采样换成DDIM的时候,只改了几行代码,却发现同样的模型、同样的t,生成的图片从模糊变得清晰锐利。那一刻我才真正理解了“马尔可夫链的随机性不是必需的,它只是保障分布准确性的充分条件”这句话背后的含义。

如果你现在正准备进入这个领域,建议选一个小数据集,用一个轻量级U-Net,完整跑一遍无条件生成的训练和采样。这个过程会让你把所有概念串起来。之后再往上加条件、加加速采样器、加潜空间压缩,每一步都扎实落地,而不是浮在概念表面。扩散模型的数学看起来门槛高,但只要从直觉入手、在代码里反复验证,它其实没有想象中那么遥不可及。

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

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

立即咨询