扩散模型为什么好用?从加噪到去噪的原理拆解
作者:rousong2026.11.13 03:41浏览量:1简介:本文系统拆解扩散模型的底层机制:它用无需学习的前向加噪过程,把任意复杂的数据分布变成容易解析的高斯分布,再让一个网络反复预测噪声以逆转该过程,从而间接估计数据分布对数的梯度(score)。文章会说明简化的训练目标为什么成立、分数与噪声预测为何等价、采样器与引导机制如何影响生成结果,并梳理主要技术边界和常见误区。阅读本文,你会理解扩散模型“好用”背后的原理来源。
原理概述:扩散模型用“加噪—去噪”间接建模数据分布
本文讨论的技术原理是:扩散模型(diffusion model)如何通过对数据分布梯度的估计来完成生成建模,以及为什么这种设计能兼顾生成质量与训练稳定性。
它的核心思想可以概括为两条链:
- 前向扩散过程:从真实数据出发,一步步加入高斯噪声,直到数据变成近似标准正态分布的纯噪声。
- 反向去噪过程:训练一个神经网络学会“每一步去掉一点噪声”,再从纯噪声出发一步步还原,得到新的样本。
扩散模型并不直接去写“这张图长什么样”这样的生成公式,也不去直接估计一个归一化后的概率密度。它转而学习数据分布对数的梯度(即 score,分数函数),再根据这个梯度场一步步引导采样。这个“绕路”的设计,是它训练稳定、生成质量高的根本原因。
背景问题:为什么直接建模 p(x) 这么难
从数据集到数据分布
假设从未知的数据分布 p(x) 中独立采集到一批样本 {x₁, x₂, …, xₙ},这就是数据集。生成模型的目标是从有限样本出发拟合 p(x),再合成更多“像”原始数据的样本。
以图像为例,x 是一个像素张量。分辨率越高,x 的维度越大,p(x) 的定义域就越庞大。真实图像在这个高维空间里只占极小一部分,所以 p(x) 极不规则:存在大量陡峭边界、近似低维的流形结构,甚至可能有尖锐的峰。直接建模这样的分布非常困难,主流路线都只能各取一个侧面。
四条主流路线各自的难点
- 似然模型:直接定义密度或质量函数。
- 自回归模型按 x = (x₁, …, x_d) 的顺序,用概率乘法公式把联合分布拆成一系列条件分布 ∏ p(xᵢ | x₁, …, xᵢ₋₁),再逐个参数化。它的对数似然可以精确计算,但像素要按固定顺序逐个生成。空间顺序不同的样本会被当成完全不同的序列,推理时也缺少并行性。
- 归一化流用一系列可逆变换,把简单分布映射为复杂分布,再通过变量替换公式精确算出密度。这要求每一步变换都可逆,并且雅可比行列式容易计算。因此网络架构受很强的结构性约束,对“精细纹理”这类高频细节的建模能力有限。
- 变分自编码器(VAE)用一个编码器把输入映射为隐变量分布,再训练一个解码器还原数据。它优化的是对数似然的一个下界,为了得到可解析的目标,近似后验通常被限制为高斯分布。结果是训练稳定、推理快,但生成结果偏模糊。
- 隐式模型:生成对抗网络类方法。
- 它不直接写概率密度,而是训练一个生成器把简单噪声映射成样本,再用判别器区分真假,两者对抗博弈。生成质量可以很高,采样也只需一次前向计算。
- 它的代价是:对抗训练本身不稳定,容易出现模式坍塌,需要大量技巧调参。而且模型只学了一个映射,没有显式的密度表达,难以直接做似然评估或概率推断。
- 能量模型:把分布写成 exp(−E(x))/Z。 它对 x 的梯度只依赖能量函数 E(x),配分函数 Z 会自然消去,因此可以用朗之万动力学采样。但训练本身需要朗之万采样,而采样步数、步长、初始化都对结果影响很大,训练过程很难稳定。
- 扩散模型:换个角度建模。
- 先设计一个固定的加噪链,把数据变成高斯分布;再训练网络估计加噪分布的梯度。
- 由此得到一个“阶梯式”的生成过程:每一步只需解决一个“小问题”。
扩散模型解决的具体问题
- 训练问题:每一步的优化目标可以化简为带权重的回归损失,不需要判别器参与对抗。
- 稳定性问题:即使某一步网络预测有误差,后续的加噪和多次迭代也有平滑作用,误差不会一次性毁掉整个样本。
- 解耦问题:网络架构与扩散框架可以分开设计,改进任一方都不必推翻另一方。
- 复用问题:网络学到的“梯度场”描述了数据分布的整体几何,换任务时通常不用重新训练网络。
核心概念:理解扩散模型的前置知识
| 概念 | 含义 | 在扩散模型中的作用 |
|---|---|---|
| 数据分布 p(x) | 真实样本背后的概率分布 | 生成建模要拟合的对象 |
| 似然 | 给定参数下观测到数据的概率 | 判断模型对数据分布的拟合程度 |
| 噪声调度 | 每一步加入多少噪声,通常用 β_t 或 α_t = 1 − β_t 表示 | 决定前向链的“台阶大小” |
| 马尔可夫链 | 下一步只依赖当前步状态 | 让前向过程与反向过程可以逐步分解 |
| 分数函数 score | 对数密度对输入的梯度 ∇ₓ log p(x) | 指向“密度上升最快”的方向 |
| 朗之万动力学 | 沿分数方向移动、再加入少量噪声的采样迭代 | 说明“有梯度就能采样” |
| 去噪分数匹配 | 用加入已知噪声后的样本估计分数 | 把不可算的分数变成可回归的目标 |
| 随机微分方程(SDE) | 用漂移项加扩散项描述连续时间随机过程 | 统一离散链与连续时间视角 |
下面几个概念需要重点解释。
分数函数“指向哪里”。 在一维情形下,如果某处的密度高,对数密度在该点的导数就大于零。这意味着沿着导数方向移动,密度会变大。把这一结论推广到高维,梯度场就像一片地形上的“下坡方向”:顺着它走会到达“山峰”,也就是高密度区域。因此只要知道各处的分数,就能从任意起点出发,一步步走向数据分布的典型区域。从几何上看,分数大致指向离当前位置最近的数据流形,所以从纯噪声出发反复“追踪”分数,就能逐步靠近真实数据流形。
为什么不能直接算分数。 分数是 ∇ₓ log p(x),需要先知道 p(x)。归一化流的密度能精确算出,自回归模型的联合密度也能精确算出;而 VAE 和生成对抗网络都没有显式的 p(x)。另一方面,能量模型的形式是 p(x) = exp(−E(x)) / Z。对它取对数再对 x 求导,得到 ∇ₓ log p(x) = −∇ₓ E(x)。与 x 无关的配分函数 Z 在求导后直接消失,梯度只依赖网络本身。这说明分数估计天然绕开了最难的归一化问题。扩散模型正是沿着这条思路:不去估 p(x),而让网络直接输出梯度。
朗之万动力学:有梯度就能采样。 拿到分数估计 s(x) ≈ ∇ₓ log p(x) 后,可以按下面这条迭代规则反复更新:
x ← x + (step_size / 2) · s(x) + sqrt(step_size) · z, z ~ N(0, I)
直观地说,沿分数方向走一小步“爬坡”,再加入一点随机噪声防止样本塌缩到少数几个点上。这条规则就是扩散模型采样的原型,它说明采样问题可以转化成“估计梯度”的问题。
从“爬坡”到“一步走太远”的矛盾。 如果只对原始数据估计一次分数,再用朗之万动力学迭代,会遇到问题:
- 数据分布支撑集之外(比如随机噪声所在的位置)几乎没有样本,分数无法可靠估计。此时朗之万链很容易发散,或者陷在噪声里。
- 分布很尖锐时,单个分数场既要覆盖高密度区,又要覆盖低密度区,很难兼顾。
加噪:给分数估计“搭梯子”。 在数据上逐步加入高斯噪声,分布会被逐渐平滑、铺开。每一步只解决一个小尺度的问题,网络容易学,误差也小。采样时再从高斯的纯噪声出发,让分数场逐级把样本“收拢”回数据流形。这条“从易到难”的路径,是扩散模型区别于早期分数模型的关键。
系统组成:扩散模型的模块拆解
扩散模型不是单个网络,而是由若干职责清晰的模块组成的一套系统。
| 模块 | 职责 | 关键输入与输出 | 是否含可学习参数 |
|---|---|---|---|
| 噪声调度模块 | 定义每一步的噪声强度与累积系数 | 总步数、噪声表;输出 α_t、ᾱ_t 等系数 | 否 |
| 前向加噪模块 | 把干净数据变成带噪数据 | 输入 x₀ 与时刻 t;输出 x_t | 否 |
| 去噪网络 | 预测当前带噪样本中的噪声,等价于预测分数 | 输入 xt、t(及可选条件 c);输出 εθ 或 s_θ | 是 |
| 条件注入模块 | 把类别、文本编码等条件信息送入网络 | 输入条件 c;输出融入主干的特征 | 视设计而定 |
| 训练与目标计算模块 | 采样时刻、构造带噪样本、计算损失、更新参数 | 输入数据批次;输出梯度更新 | 复用去噪网络参数 |
| 采样器(反向链) | 按学习到的分数场逐步去噪 | 初始噪声;输出生成样本 | 否 |
| 条件引导模块 | 推理时加强条件的作用 | 条件预测与无条件预测;输出修正后的预测 | 否 |
| 评估与监控模块 | 衡量生成质量、似然与训练健康度 | 生成样本、参考集、损失曲线;输出指标 | 否 |
各模块的协作关系可以用文字流程表示:
数据侧:数据集 → 前向加噪模块(无参数) → 带噪样本对 (x_t, t)模型侧:带噪样本 + 时间信息 + 条件信息 → 去噪网络 → 噪声/分数预测训练侧:预测与真实加入的噪声比较 → 损失 → 反向传播 → 更新去噪网络推理侧:初始纯噪声 → 采样器反复调用去噪网络 → 生成样本 → 评估模块
工作流程:训练与采样是怎么跑起来的
训练流程:五步
第一步:定义前向加噪链。 把总步数记为 T,第 t 步的噪声强度记为 β_t,令 α_t = 1 − β_t,累积系数 ᾱ_t = α₁ · α₂ · … · α_t。单步加噪写作:
q(x_t | x_{t-1}) = N( x_t ; sqrt(α_t) · x_{t-1}, (1 − α_t) · I )
因为都是高斯,多步可以合并成一个闭式表达:任意时刻 t 的带噪样本,可以直接从干净数据 x₀ 一步算出,不必真的循环 t 次。
q(x_t | x_0) = N( x_t ; sqrt(ᾱ_t) · x_0, (1 − ᾱ_t) · I )即 x_t = sqrt(ᾱ_t) · x_0 + sqrt(1 − ᾱ_t) · ε, ε ~ N(0, I)
第二步:采样时刻 t。 每个训练步从 1…T 中随机抽一个 t。这样做有两个作用:让网络见到各种噪声水平;把“一次性还原整条链”的难题拆成“任意单步 denoising”的简单任务。
第三步:构造带噪样本。 用闭式公式和随机噪声 ε 算出 x_t,并把 ε 记录下来作为回归标签。
第四步:网络预测并算损失。 把 xt、t(通常编码成向量后注入网络)和可选的条件 c 送进网络,得到预测 εθ(xt, t)(或 εθ(x_t, t, c)),然后计算预测与真实噪声的均方误差。
第五步:反向传播更新参数。 随机梯度下降或自适应优化器更新网络参数,循环往复。下面是通用伪代码:
# 通用伪代码,只描述机制,不代表任何具体框架的接口for x0 in data_loader: # 取一个干净数据批次t = randint(1, T, size=batch) # 随机采样时间步eps = randn_like(x0) # 真实加入的噪声,作为回归标签x_t = sqrt(alpha_bar[t]) * x0 + sqrt(1 - alpha_bar[t]) * epspred = denoiser(x_t, t) # 可选地再传入条件 closs = mean((pred - eps) ** 2) # 等价于加权的分数匹配损失loss.backward()optimizer.step()
这里没有任何判别器,也没有对抗博弈。训练目标就是一个普通的回归问题。
采样流程:反向链怎么走
第一步:初始化。 从标准正态噪声中采出 x_T。由于 ᾱ_T 接近 0,x_T 已经近似纯高斯。
第二步:循环去噪。 对 t = T, T−1, …, 1,用网络预测噪声(或分数),再计算 x_{t−1}:
x_{t-1} = (1 / sqrt(α_t)) · ( x_t − (β_t / sqrt(1 − ᾱ_t)) · ε_θ(x_t, t) ) + σ_t · zz ~ N(0, I),最后一步通常取 z = 0
第三步:输出样本。 得到 x₀,它应当落在数据流形的典型区域。
简化采样(DDIM 式确定性采样)。 用同样的分数场,也可以沿一条“确定性”路径从 x_T 走到 x₀:给定当前预测出的“干净估计”,重新按目标噪声水平加噪,再预测、再更新。它不注入随机噪声,因此同一个初始点会稳定地生成同一个结果,也便于在隐空间中做插值。更重要的是,它允许把 T 步压缩到几十步甚至更少。这直接回应了“扩散模型必须跑上千步”的误解:训练时的步数与推理时的步数可以不同。
关键机制:这些设计为什么能成立
机制一:简化目标为什么能训
反向链理论上要最大化数据的对数似然。对数似然可以写成若干项之和,其中每一项都是“在给定 xt 的条件下,真实反向分布 q(x{t−1} | xt, x₀) 与模型分布 pθ(x_{t−1} | x_t) 之间的 KL 散度”。
两个高斯之间的 KL 散度只取决于均值和协方差之差,因此这一项可以化简成“均值差平方”的形式,再按误差的方差加权。由于真实反向分布的均值本身可以写成“x₀ 的线性项 + ε 的线性项”,而 x₀ 无法直接获得,所以等价地把网络改成预测 ε,再由此推算 x₀。进一步去掉与参数无关的权重,就得到实践中常用的噪声预测损失:
L = E_{x0, t, ε} [ || ε − ε_θ( sqrt(ᾱ_t)·x0 + sqrt(1−ᾱ_t)·ε , t ) ||² ]
它之所以“好用”,原因在于:
- 它是无偏的采样式估计:每个样本只随机一个 t,期望等于完整目标,不需要遍历 T 个时刻。
- 它是闭式的回归目标:标签 ε 已知,不需要积分、采样内循环或辅助网络。
- 它数值稳定:损失量级大致恒定,不像对抗训练那样随博弈状态剧烈波动。
- 它可加噪地复用:把 θ 换成条件版本,就能在同一框架下做条件生成。
机制二:噪声预测与分数预测是等价的
由 q(x_t | x₀) 的表达式,对 x_t 求对数再求导,可以得到真实分数的闭式形式:
∇_{x_t} log q(x_t | x_0) = − ( x_t − sqrt(ᾱ_t) · x_0 ) / (1 − ᾱ_t) = − ε / sqrt(1 − ᾱ_t)
也就是说,带噪样本中的噪声与分数只差一个与时刻有关的系数。于是网络输出 εθ 与输出 sθ 完全等价:
s_θ(x_t, t) = − ε_θ(x_t, t) / sqrt(1 − ᾱ_t)
这解释了一个关键事实:扩散模型的训练目标本质上是去噪分数匹配。模型不需要知道归一化常数,就能学到一个可用的梯度场。两个视角可以互换:说它在“预测噪声”,和说它在“估计数据分布的梯度”,指的是同一件事。
机制三:多尺度加噪为什么解决了分数估计的稳定性
把“一次估计全局分数”改成“在 T 个噪声尺度上分别估计分数”,带来三个直接好处:
- 覆盖度:加噪让概率质量扩散到全空间,低密度区域也有样本可供回归,避免了朗之万链在数据支撑集外发散。
- 难度递进:t 很大时任务接近“去高斯噪声”,t 很小时任务接近“细节修复”,每一步的难度都适中。
- 误差可控:反向链每步只需处理相邻尺度之间的差异,前面步骤的偏差会被后续步骤的加噪平滑掉一部分,而不是像单步映射那样一次成型。
机制四:为什么同一套框架能做逆问题
采样时得到的不是“一个固定输出”,而是一个可以被条件化的过程。因为网络学的是 p(x_t) 的梯度,而逆问题关心的是后验分布 p(x | y)(y 为观测)。按贝叶斯规则:
∇_x log p(x | y) = ∇_x log p(x) + ∇_x log p(y | x)
第一项由去噪网络提供,第二项由观测算子(比如“加模糊核”“下采样”“投影测量”)给出。因此在每一步去噪时,沿着数据流方向对观测误差求梯度,做一次修正,就能把采样过程“拉向”满足观测的样本。这类做法的好处是:
- 先验部分(分数场)与观测部分(数据一致性项)解耦,可以分别设计。
- 换一种退化方式时,通常不需要重新训练网络,只需要替换数据一致性项。
- 输出是一个分布上的样本集合,可以从中读出不确定性,而不是只给一个点估计。
机制五:条件引导为什么能增强可控性
分类器引导:在采样时用分类器对 x_t 的对数概率求梯度,把它加到分数上。它需要一个对带噪样本可用的分类器,而且分类器本身要在带噪数据上训练。
无分类器引导:训练时以一定概率丢弃条件,得到同一个网络既会条件预测也会无条件预测。推理时把两者之差按权重 w 放大:
ε̃ = ε_θ(x_t, t, ∅) + w · ( ε_θ(x_t, t, c) − ε_θ(x_t, t, ∅) )
直观理解是“先算出条件带来的方向增量,再放大它”。w = 1 相当于不做放大;w 越大,条件贴合度越高,但多样性会下降,过大还会出现饱和、失真等伪影。这条推理技巧不需要重新训练,也说明框架与条件是正交的两层设计。
机制六:连续时间视角的统一
把离散链推广到连续时间,前向过程可以写成随机微分方程:
dx = f(x, t) dt + g(t) dw
对应的反向过程是:
dx = [ f(x, t) − g(t)² · ∇_x log p_t(x) ] dt + g(t) dw̄
其中唯一需要学习的量仍然是分数 ∇ log p_t(x)。若把随机项去掉,就得到“概率流 ODE”:它的轨迹与随机采样共享相同的边缘分布,但采样是确定性的,可以用成熟的 ODE 求解器按任意步数求解。这条视角的价值在于:
- 不同加噪方式(方差保持型、方差爆炸型等)只是 f 与 g 的不同选择。
- 不同采样器(祖先采样、确定性采样、高阶求解器)只是对同一个反向过程的不同离散化。
- 训练目标可以写成时间上的积分形式,便于分析信噪比随时间的权衡。
示意:从纯噪声到样本的过程
用一个一维示意帮助理解“为什么能生成”。
- 假设真实数据集中在两个窄峰附近,整体分布很尖锐。
- 加噪后:t 较小时分布仍是两个模糊的峰;t 较大时两个峰合并成一个宽的单峰;t 接近 T 时近似标准高斯。
- 网络在不同 t 上学到的梯度场分别是:宽单峰时“指向中心”;中尺度时“指向两个峰之间的骨架”;小尺度时“精确指向某一个峰”。
- 采样时从标准高斯的一个点出发,先被拉向中心区域,再被分流到某个峰的附近,最后被精确对齐到峰值。不同初始噪声落到不同峰上,因此生成结果多样且合理。
对比一下,如果只对原始数据估计一次分数,在纯噪声区域没有可靠的梯度,这一步“被拉回数据流形”的过程就无法完成。这正是多尺度设计的意义。
各路线机制对比
| 路线 | 是否显式建模 p(x) | 训练方式 | 采样开销 | 主要机制特征 |
|---|---|---|---|---|
| 自回归模型 | 是(精确似然) | 最大似然 | 逐元素串行,较慢 | 按固定顺序分解联合分布 |
| 归一化流 | 是(精确似然) | 最大似然 | 一次前向/反向 | 可逆变换 + 雅可比修正 |
| 变分自编码器 | 近似(下界) | 变分推断 | 一次前向,快 | 编码到隐空间再解码 |
| 生成对抗网络类方法 | 否 | 对抗博弈 | 一次前向,快 | 生成器与判别器博弈 |
| 扩散模型 | 隐式(通过梯度) | 去噪回归(等价的似然下界) | 多步迭代,可加速 | 多尺度加噪 + 分数估计 + 反向链 |
技术优势与限制
优势来自哪些具体机制
- 生成质量高:多尺度分数场让模型先抓整体结构、再补细节,避免了单次映射时“结构错、细节糊”的问题;采样过程中还不断注入少量随机性,因此多样性不靠牺牲保真度换取。
- 训练稳定:优化目标是带噪样本上的回归问题,不含对抗博弈,也不需要在训练内循环里做长链采样,超参数敏感性明显低于对抗训练。
- 架构灵活:网络只需满足“输入带噪样本 + 时间信息 → 输出同形状张量”的接口。卷积主干、带注意力机制的主干、序列化主干都可以接入,框架与主干可以分开迭代。
- 似然可算,适合做逆问题:由于训练目标等价于对数似然的一个下界,模型可以用于比较不同样本的可能性;同时,作为先验的分数场可以叠加观测算子,直接用于修复、超分辨率、重建等任务,且通常不必重训。
- 任务切换成本低:条件信息只在推理或轻量微调层面注入,不必为每个条件组合重新设计一个生成器。
限制与需要额外设计的地方
- 采样开销:默认需要几十到上千次网络前向。需要靠更少的采样步数、在隐空间中进行扩散,或分阶段级联(先低分辨率再高分辨率)来降低单样本成本。
- 训练成本高:要覆盖从纯噪声到干净数据的所有尺度,网络容量和数据量需求都较大。
- 离散化误差:步数过少时,反向链的离散化误差会累积,表现为结构崩坏或纹理缺失;步长过大也会让“单步去噪量”超出网络的可靠范围。
- 低信噪比区域难学:t 很大时,信号在 x_t 中占比极低,分数估计的方差大,损失权重设置不当会让训练把注意力过度放在这些“学不动”的样本上。
- 条件强度需要折衷:引导越强,条件贴合度越高,但多样性下降、伪影增多;需要在具体任务上实测取值。
- 评测不能只看单一指标:似然好不等于观感好,观感好也不等于似然好。工程上通常同时观察分布距离类指标、样本多样性、任务指标(如重建误差)以及人工评估。
- 记忆与泛化边界:当训练数据规模有限时,模型可能把训练样本的细节记住,生成的“多样性”会被高估。判断泛化能力需要检查生成样本与训练集的接近程度。
常见误区
- “扩散模型就是给图片加噪再去噪。” 加噪只是训练时的辅助手段,真正被学习的是梯度场;前向过程完全没有参数,不参与学习。
- “扩散模型一定要上千步。” 上千步是早期配置的默认值,不是原理要求。确定性采样、高阶求解器、隐空间扩散都能显著降低步数。
- “网络直接输出了概率密度。” 它输出的是噪声或分数。密度需要通过对分数做路径积分等方式间接获得,不是网络的显式输出。
- “分数就是普通的梯度下降方向。” 分数是对数密度对输入的梯度,描述的是概率地形,与“损失对参数”的梯度是两回事,不能混用。
- “似然越高,生成质量越好。” 两者优化的目标并不完全等价,模型可能把概率质量堆在“平均化”的样本上,导致模糊。评测需要多维指标结合。
- “扩散模型只能做图像。” 同一套机制已经用于音频、语音、时间序列、三维结构、分子构型和决策策略等;只要能把数据写成“向量/张量 + 可加高斯噪声”,就可以套用。
- “条件生成必须重新训练。” 训练时保留无条件分支,就能在推理时通过引导系数调节条件强度;逆问题任务还可以直接复用已有分数场。
- “噪声必须是高斯的。” 高斯只是最常用、推导最干净的选择,也存在其他前向过程的设计。但高斯带来的闭式解与解析梯度,是这套机制容易实现的重要原因。
工程落地时的关注点
在把扩散模型接入实际系统时,除了算法本身,还需要关注工程链路:
- 数据链路:训练数据的采集、清洗与去重会直接影响“记忆”风险;大规模样本通常需要对象存储与消息队列做异步缓冲。
- 训练侧:多机多卡的同步训练需要稳定的分布式通信与弹性算力;训练日志、损失曲线和样本可视化应接入日志服务与监控告警,便于发现发散或坍塌。
- 推理侧:采样是多步串行调用,显存与延迟压力大,通常靠批处理、模型量化、缓存中间结果或容器化弹性伸缩来提升吞吐。
- 安全侧:模型服务需要身份认证与访问控制,推理接口应做限流;日志审计要记录调用来源与内容标识,避免滥用。
- 版本治理:数据版本、噪声调度配置、采样步数与引导系数都应作为可复现的实验配置固定下来,否则结果无法追溯。
总结
扩散模型“好用”的本质,可以归纳成一条因果链:
- 高维数据分布难以直接建模,但它的梯度可以绕开归一化常数,而梯度又足以驱动采样。
- 单尺度分数估计在数据支撑集外不可靠,于是用多尺度加噪把难题拆成一系列易学的小问题。
- 每一步的小问题都可以写成带噪样本上的回归,因此训练稳定、目标可算、无需对抗。
- 采样时把学到的梯度场当作“地形”,从纯噪声出发反复爬坡,就能逐级生成新样本。
- 由于梯度场可以被条件化和被观测项修正,同一套网络可以在不重训的前提下迁移到逆问题与条件生成。
理解这套机制的价值,不仅在于知道扩散模型“能生成图片”,更在于掌握一种通用的建模思路:当一个量难以直接估计时,转而估计它的梯度;当一个目标难以一步达成时,用一系列可控的小步骤逼近它。 这种思路在概率建模、优化算法和物理仿真中反复出现,也是扩散模型能够扩展到多种数据形态的根本原因。

登录后可评论,请前往 登录 或 注册