想象你站在一座云雾缭绕的山顶,脚下是陡峭的山坡,山脚下是一座宁静的村庄——一张清晰的图像。这座山,就是高维空间中的“数据分布地形”:山顶是纯噪声,山脚是真实图像的聚集地。生成图像,本质上就是一次从山顶到山脚的下山之旅。 传统的DDPM采样,像一位喝得醉醺醺的登山者:每一步都东倒西歪、踉踉跄跄(随机噪声),靠着惊人的耐心和运气,走上整整一千步才能摸到村口。更尴尬的是,他每次走的路线都不同,耗时极长,想实时出图简直天方夜谭。 DDIM(Denoising Diffusion Implicit Models,去噪扩散隐式模型)则像一位手持精确地图的清醒向导:他先看清整座山的轮廓,每一步都踩在确定的落脚点上,走出一条几乎笔直的专属路线。奇妙的是,向导手里的地图(训练好的扩散模型)和醉汉的完全相同——只是换了个走法,步数就从千步压缩到几十步,画质却几乎不掉。这就是DDIM的核心魔法:训练不变,只换采样。
掌握DDIM,意味着你能让扩散模型从“实验室奢侈品”变成“生产环境利器”。它是Stable Diffusion等产品级模型实现秒级出图的幕后功臣,也是每一位生成模型工程师绕不开的必修课。
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
DDPM朴素采样
让我们先认识那位醉汉——DDPM。站在山顶的纯噪声处,他要走到山脚的村庄(真实图像)。他的每一步都这样走:先大致判断村庄在哪个方向(模型预测噪声),然后朝那个方向迈一步,但脚底总是不稳,会随机晃动一下(高斯噪声)。这个晃动虽然每次都不大,但千步累积下来,路线变得极其蜿蜒。
技术地说,DDPM定义了一个马尔可夫链:正向过程逐步给图像加噪,直到完全变成高斯噪声;反向过程则训练一个网络 ε_θ(x_t, t) 来预测每个时刻的噪声,再沿着预测方向逐步去噪。这里“马尔可夫”的意思是:每一步都只依赖当前这步的状态,完全不记得之前走过的路。醉汉就是这样——他只看得见脚底下,不看远方的路径。
DDPM的反向采样公式为:
千步的漫长旅程让生成过程极慢:在GPU上生成一张图需要数秒甚至更久。这正是DDIM要解决的痛点——我们能不能把醉汉换成一个清醒的向导,让他少走弯路?
- 缩放平衡项$\frac{1}{\sqrt{\alpha_t}}$ 将当前状态恢复到“无缩放”的尺度上,抵消正向加噪过程中累积的幅度变化,相当于醉汉站稳身体。
- 方向预测修正$x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\varepsilon_\theta(x_t,t)$ 是核心去噪步——用模型预测的噪声 $\varepsilon_\theta$ 从当前状态中扣除,相当于醉汉判断“村庄在那个方向,我先往那边迈”。
- 随机晃动项$\sigma_t z$ 引入标准高斯噪声 $z$,这就是醉汉脚下“不稳”的来源。正是这一项,让采样过程充满随机性,也让千步路线每次都不重样。
非马尔可夫扩散
向导之所以能抄近道,是因为他看懂了整个山坡的等高线。而醉汉只盯着脚下一步。在数学上,DDPM的“醉汉视野”就是马尔可夫假设:每一步 $x_{t-1}$ 只依赖于当前 $x_t$,完全不参考更早的信息(尤其是出发点 $x_0$)。
DDIM的一个重要突破是构造了一个非马尔可夫的扩散过程族。所谓非马尔可夫,就是“每一步都可以回头参考原点 $x_0$”。向导虽然走在下山的路上,但他总记得村庄的位置,所以每一步都走得很笃定。
关键设计在于:DDIM定义了一个新的条件分布族 $q_\sigma$,使得 $x_t$ 可以直接由 $x_0$ 生成,而无需逐级依赖中间状态:
这个看似简单的重构,为后面的加速采样铺平了道路。它好比向导在山顶看了全图后,规划出一条“两点之间直线最短”的路——虽然路上有些地方没走过,但他知道终点在哪,所以每一步都敢迈大步。
- 条件分布$q_\sigma(x_t \mid x_0)$ 表示在已知干净样本 $x_0$ 时,噪声层 $x_t$ 的分布——即“从村庄看山坡上某一点,它大概在哪”。
- 均值项$\sqrt{\bar{\alpha}_t}\,x_0$ 是分布的均值,表明 $x_t$ 围绕 $x_0$ 的缩放版本分布,缩放系数 $\sqrt{\bar{\alpha}_t}$ 随时间衰减——离村庄越远($t$ 越大),看得越模糊。
- 协方差项$(1-\bar{\alpha}_t)\mathbf{I}$ 是各向同性的高斯噪声协方差,代表偏差程度;当 $t=0$ 时方差为0(站在村庄),当 $t=T$ 时方差接近1(到了山顶纯噪声)。
DDIM目标保留
向导能复用醉汉的旧地图吗?这是DDIM最精妙的地方:可以。虽然采样策略变了(路线变了),但训练目标完全不变——因为两种方法的“地图绘制方式”是同一套。
DDPM训练时,模型学的是:给定任意噪声程度 $t$ 的加噪图像 $x_t$,预测注入的噪声 $\varepsilon$。这个训练目标可以写成:
既然训练毫无变化,那么所有在DDPM上训练好的模型(包括各种Stable Diffusion底座模型)都可以直接拿来配DDIM采样器使用。这就是“零成本换采样”——不用重新训练,只改几十行采样代码,推理速度立刻提升一个量级。对工程师来说,这是最令人心动的一点。
- 期望遍历$\mathbb{E}_{t,x_0,\varepsilon}$ 表示对所有时刻 $t$、所有训练样本 $x_0$、所有噪声 $\varepsilon$ 求平均——相当于带醉汉把整座山所有角落都走了一遍。
- 预测误差核心$\varepsilon - \varepsilon_\theta(x_t,t)$ 是真实噪声与模型预测噪声的差。模型的目标是“猜中醉汉刚才走的晃动方向”。
- 范数平方$\left\|\cdot\right\|^2$ 将每个维度的差值平方相加,变成单个标量损失。值越小,说明地图画得越准。
确定性采样
现在轮到向导的核心走法了。DDIM把DDPM采样公式中的随机晃动项 $\sigma_t z$ 直接置零,得到一个完全确定性的更新规则。每一步都像棋谱上的定式,一丝不苟:
由于去掉了 $\sigma_t z$,给定初始噪声 $x_T$ 后,整条采样轨迹就完全确定了。同一个起点,永远得到同一个终点。这带来了两个天然优势:一是一次生成结果可精确复现,方便调试与测试;二是隐空间($x_T$ 所在的高维空间)有了稳定的结构,可以做有意义的插值和编辑——这就像向导的路线被刻进了地图,你可以在任意两个点之间画线。
- 反推干净样本$\frac{x_t - \sqrt{1-\bar{\alpha}_t}\,\varepsilon_\theta}{\sqrt{\bar{\alpha}_t}}$ 是从当前噪声状态 $x_t$ 出发,扣除噪声后还原出 $x_0$ 的估计 $\hat{x}_0$——向导没到村庄,但心里清楚村庄的方向。
- 重新加噪$\sqrt{\bar{\alpha}_{t-1}}\,\hat{x}_0$ 把干净估计按提前一个时刻的缩放系数“推回”山坡上——相当于向导决定下一个落脚点。
- 噪声分量补充$\sqrt{1-\bar{\alpha}_{t-1}}\,\varepsilon_\theta$ 把残差噪声也缩放后加回,保证新状态仍处于合理噪声水平——这是确定性路线中的“扶正”动作。
加速采样机制
有了确定性路线,加速就顺理成章了。既然每一步都走得很准,就没必要每米都停下来确认方向——向导可以一次跨过十个台阶。数学上,这就是从全部时刻 $\{1,2,\ldots,T\}$ 中挑选一个子序列:
然后只在这些时刻上做确定性更新。原来需要走1000步的路,现在跳着走50步就到达了。这个跳步公式可以写为:
实际工程中,SD系列模型通常默认使用20~50步DDIM采样,就能生成视觉质量接近甚至超过1000步DDPM的结果。速度提升了20~50倍,而质量几乎没有肉眼可见的损失。这就是向导与醉汉的差距:同样的路程,同样的地图,清醒的头脑决定了下山的速度。
- 子序列选取$\{\tau_1, \tau_2, \ldots, \tau_S\}$ 是从原节奏中抽取的“节拍点”,相邻采样时刻的间隔可以很大——这就是“大步跳台阶”。
- 跳步缩放$\sqrt{\bar{\alpha}_{\tau_{i-1}}}$ 和 $\sqrt{1-\bar{\alpha}_{\tau_{i-1}}}$ 都使用目标时刻 $\tau_{i-1}$ 的系数,保证跨到的新位置仍然符合该时刻的噪声分布。
- 噪声预测复用$\varepsilon_\theta(x_{\tau_i},\tau_i)$ 在一步中被用两次(一次反推 $\hat{x}_0$,一次补充噪声),一次前向传播完成两步操作——计算成本直接减半。
DDIM与ODE
如果我们把向导的脚步越迈越密,步长越来越小,那条确定性的折线轨迹就会趋向一条光滑的连续曲线。在数学上,这就是一个常微分方程(ODE)。它描述的不是“醉汉的随机行走”,而是“流场”中一条确定的流线:
这个方程被称为概率流ODE(Probability Flow ODE)。它把随机生成过程改写成了确定性的演化过程——每个时刻,点 $x(t)$ 沿着概率密度上升的方向(score,即 $\nabla_x \log p_t(x)$)流动。
有了ODE视角,DDIM就不仅是一个采样技巧,而是连接离散采样与连续动力学的桥梁。ODE轨迹的可逆性也催生了图像编辑、潜在空间操作等高级玩法——既然轨迹是确定的函数,就可以沿轨迹往前推(加噪)再往后推(去噪),实现“变形”而非“重生”。
- 变化率$\frac{\mathrm{d}x}{\mathrm{d}t}$ 是采样轨迹随时间的变化速度——相当于向导每一步的“瞬时步伐”。
- 噪声尺度函数$g(t)^2$ 是扩散过程的噪声强度随时间的变化曲线,决定流场的大小——就像山坡的陡峭程度。
- 分数函数$\nabla_x \log p_t(x)$ 是 $t$ 时刻概率密度在点 $x$ 处的梯度方向——指向概率密度更大的方向。模型预测的噪声 $\varepsilon_\theta$ 经过缩放后,正是这个分数函数的估计。
实际应用与部署
向导上岗后的效果立竿见影。在Stable Diffusion系列模型中,DDIM早已成为默认采样器之一。从用户输入文本到生成图片,从原来的十几秒缩短到两到三秒,实时交互成为可能。
除了速度,确定性采样还解锁了两个实用场景。其一是潜在空间插值:取两张图像对应的初始噪声 $x_T^{(1)}$ 和 $x_T^{(2)}$,在潜空间做线性插值 $x_T = (1-\lambda)x_T^{(1)} + \lambda x_T^{(2)}$,再走DDIM轨迹,就能得到两张图“中间过渡”的效果——像用幻灯机在两幅画之间渐变。其二是隐变量编辑:因为同一个 $x_T$ 总是生成同一张图,用户可以在潜空间调整某些维度(如把 “猫” 的噪声方向朝 “狗” 的方向偏移一点),得到平滑的属性变换。
效率对比也很直观。在同等硬件条件下,DDPM需要1000次网络前向传播,而DDIM只需50次甚至更少。对于部署在Web服务或移动端的产品,这意味着同样的GPU可以服务20倍的用户,或者将延迟从“不可用”降到“流畅”。许多工业级管线正是基于这一点,才敢于把扩散模型放入实时交互的产品中。
局限与展望
向导虽然厉害,但并非没有边界。如果把步数压到极端(比如5步),DDIM的生成质量也会明显下滑——因为每一步要跨越太大的噪声差距,模型预测的误差会被放大。这就像向导在浓雾中一次性跨过悬崖,再好的地图也救不了。
此外,DDIM的质量上限受限于它所复用的DDPM训练权重。如果我们追求极致的少步数采样,往往需要更高级的数值求解器。DDIM之后,DPM-Solver、DPM-Solver++ 等基于高阶ODE求解的方法进一步将步数压缩到10~20步。但它们都站在DDIM开辟的确定性采样思想之上——先有“确定性”的框架,才有后续迭代优化的空间。
在实践中,工程师常采用混合策略:靠近起点(噪声阶段)用确定性大步快走,接近终点(图像阶段)适当增加随机性以提高多样性。这也提醒我们,任何工具都有其适用边界,理解原理才能用好工具。
AI 应用场景
Stable Diffusion WebUI 实时出图
阶段:推理部署阶段
解决的问题:Stable Diffusion最初采用DDPM采样,生成一张512×512图像需要1000次去噪迭代,在消费级GPU上耗时10秒以上,用户等待体验差。DDIM将采样步数从1000降到30~50,出图时间压缩到1~2秒,让“边输入边出图”的互动式创作成为可能。
具体案例:设计师在WebUI中调节提示词,每调整一次描述,模型在2秒内重新生成预览图。以前改一次提示词要等10秒,现在几乎无感刷新,创作流被打断的频次大幅降低。SDXL、SD 3等模型默认内置DDIM采样器选项,用户只需在界面下拉菜单中选择即可享受加速。
AI绘画平台的潜空间风格融合
阶段:后处理与编辑阶段
解决的问题:传统风格迁移需要额外训练一批风格专属模型,成本高昂。借助DDIM的确定性轨迹,平台可以在潜空间对不同图像的初始噪声做插值,无需重新训练即可实现“两张图融合成一张新图”的创意功能。
具体案例:美图类App推出“图生图”功能:用户上传一张猫和一张风景照,平台分别求出两张图所需的初始噪声,在潜空间按用户滑动的比例进行插值,然后用DDIM确定性采样生成融合图像。因为轨迹确定,插值结果平滑自然,不会出现随机跳变。
广告素材大规模批量生成
阶段:数据生产与质检阶段
解决的问题:电商平台每天需要生成海量商品展示图,DDPM采样单张图耗时长且生成结果不可复现,质检困难。DDIM的确定性采样让同一初始噪声对应唯一输出,工程师可以先小批量抽样审核,再固定种子大规模批量生产,保证质量一致。
具体案例:某电商广告团队用Stable Diffusion搭配DDIM采样器,预先筛选100个固定噪声种子,每次生成同款商品不同角度的展示图。由于确定性采样保证可复现,在A/B测试中能精确对比不同提示词的效果,大大缩短了实验周期。
Python 演示
"""DDIM确定性采样演示:训练极小扩散模型,对比千步随机采样与五十步确定性采样"""import torchimport torch.nn as nnimport numpy as np torch.manual_seed(0) # 1. 构造三簇合成数据(模拟真实图像的分布模式)centers = torch.tensor([[2., 2.], [-2., 2.], [0., -2.5]])X = centers[torch.randint(0, 3, (4096,))] + torch.randn(4096, 2) * 0.3 def alpha_bar(t): """噪声调度:t 时刻保留原信号的比例(平方)""" return torch.exp(-10.0 * t * t) # 2. 极简噪声预测网络:输入 (x, t),输出噪声 epsclass NoiseNet(nn.Module): def __init__(self): super().__init__() self.mlp = nn.Sequential(nn.Linear(3, 64), nn.SiLU(), nn.Linear(64, 64), nn.SiLU(), nn.Linear(64, 2)) def forward(self, x, t): return self.mlp(torch.cat([x, t], dim=1)) model = NoiseNet()opt = torch.optim.Adam(model.parameters(), lr=1e-3) # 3. 训练:DDPM 目标(预测注入的噪声)for step in range(500): idx = torch.randint(0, len(X), (256,)) x0 = X[idx] t = torch.rand(len(x0), 1) ab = alpha_bar(t) eps = torch.randn_like(x0) xt = torch.sqrt(ab) * x0 + torch.sqrt(1 - ab) * eps loss = ((model(xt, t) - eps) ** 2).mean() opt.zero_grad(); loss.backward(); opt.step() def sample(steps, eta, seed=42): """通用采样:eta=0 为 DDIM 确定性采样,eta=1 为 DDPM 随机采样""" g = torch.Generator().manual_seed(seed) ts = torch.tensor(np.linspace(1, 0.001, steps), dtype=torch.float32).view(-1, 1) x = torch.randn(800, 2, generator=g) for i in range(steps - 1): t = ts[i].expand(x.shape[0], 1) tn = ts[i + 1].expand(x.shape[0], 1) ab, abn = alpha_bar(t), alpha_bar(tn) eps_hat = model(x, t) x0_hat = (x - torch.sqrt(1 - ab) * eps_hat) / torch.sqrt(ab) sigma = eta * torch.sqrt((1 - abn) / (1 - ab) * (1 - ab / abn + 1e-8)) noise = torch.randn_like(x, generator=g) if eta > 0 else 0 x = torch.sqrt(abn) * x0_hat + torch.sqrt(1 - abn - sigma ** 2) * eps_hat + sigma * noise return x.numpy() with torch.no_grad(): ddim = sample(50, 0.0) ddpm = sample(1000, 1.0) print("DDIM(50步) 均值: %.2f 标准差: %.2f" % (ddim.mean(), ddim.std()))print("DDPM(1000步)均值: %.2f 标准差: %.2f" % (ddpm.mean(), ddpm.std()))print("DDIM 用 1/20 的步数,分布质量与 DDPM 相当")
X = centers[torch.randint(0, 3, (4096,))] + torch.randn(4096, 2) * 0.3用三个高斯簇模拟真实图像在高维空间中的聚集分布。def alpha_bar(t): return torch.exp(-10.0 * t * t)定义噪声调度函数,$t$ 越大保留原信号的比例越小,控制加噪速度。xt = torch.sqrt(ab) * x0 + torch.sqrt(1 - ab) * eps正向加噪过程的闭式表达:直接从干净数据生成任意 $t$ 时刻的噪声样本,不用逐步迭代。loss = ((model(xt, t) - eps) ** 2).mean()DDPM训练目标:让网络准确预测注入的噪声 $\varepsilon$,这就是“画地图”的过程。ts = torch.tensor(np.linspace(1, 0.001, steps))采样时刻网格;DDIM只选50个时刻,而DDPM密集取1000个时刻。x0_hat = (x - torch.sqrt(1 - ab) * eps_hat) / torch.sqrt(ab)从当前噪声状态反推“干净样本”估计 $\hat{x}_0$,向导认准村庄方向的一步。sigma = eta * torch.sqrt((1 - abn) / (1 - ab) * (1 - ab / abn))随机项强度标定:$\eta=0$ 时完全确定性(DDIM),$\eta=1$ 时退化为DDPM的随机噪声量。x = torch.sqrt(abn) * x0_hat + torch.sqrt(1 - abn - sigma ** 2) * eps_hat + sigma * noise一步采样更新:沿 $\hat{x}_0$ 方向重建,再按目标时刻的噪声水平补充残差。
常见误区
误区“DDIM 和 DDPM 是两种不同的扩散模型,想用 DDIM 必须重新训练,那我之前的模型不是白训了?”
正解DDIM 不是新模型,而是一套新的采样器(向导的走法)。它的训练目标与 DDPM 完全一致,训练时看到的边缘分布也一致,因此所有用 DDPM 目标训练好的权重都能直接套用。你只需要在推理阶段把采样循环换成 DDIM 公式,不需要动任何训练代码。
为何常见:人们习惯把“模型”和“采样器”混为一谈。看到论文标题里有新名字,就误以为又是一套要从头训的大网络。实际上 DDIM 论文的插图几乎都在画采样轨迹对比,权重是同一个。
误区“DDIM 是确定性采样,所以每次生成图片都一模一样,太死板了。”
正解确定性指的是“给定初始噪声 $x_T$ 后,后续每一步都被唯一确定”。但初始噪声 $x_T \sim \mathcal{N}(0, I)$ 本身仍是随机采样的——这是多样性的来源。同一个 $x_T$ 永远生成同一张图,但每次运行程序都会重新抽取 $x_T$,所以一般用户看到的依然是不同的图片。真正方便的是:固定随机种子后,结果可复现。
为何常见:把“确定性”误解为“丢弃全部随机性”。事实上丢弃的只是采样过程中途加入的噪声($\sigma_t z$),起点仍然由随机性控制。
误区“DDIM 把 1000 步减到 50 步,那继续减到 5 步、3 步,不是更快吗?”
正解步数太少时,相邻采样时刻之间的噪声差距过大,模型预测误差被显著放大,生成图像会出现伪影或失真。DDIM 论文的实验显示,50 步左右能在速度和质量之间取得良好平衡,20 步以下质量明显下滑。业界后续的 DPM-Solver 等方案通过高阶数值解法进一步压低步数,但那已经超出了 DDIM 本身的适用范围。
为何常见:速度诱惑太大,容易忽视数值方法的精度边界。人们直觉上认为“确定性推导可以任意大步跳”,却忘了模型的预测能力有限。
误区“既然 DDIM 更快,那它的图像质量应该也比 DDPM 更好,毕竟更先进。”
正解在步数充足(比如 1000 步)时,DDPM 的随机采样理论上能达到与 DDIM 相当甚至更高的质量上限。DDIM 的价值在于用少得多的步数逼近这一上限,而不是突破上限。从 FID 等指标看,相同步数下 DDIM 往往优于 DDPM,但 DDIM 的优势是“效率换质量比”,不是绝对质量碾压。
为何常见:把“更先进的方法”等同于“全面超越”。实际上任何采样方法都受限于训练阶段学到的分布精度,采样器只能决定如何走,不能决定山的高度。
误区“DDIM 是确定性的,那我直接把 $x_T$ 设成全零向量,输出应该就是均值图像吧?”
正解把初始噪声设为零是错误操作。$x_T$ 必须服从(或近似服从)标准高斯分布,这是模型训练时见过的前置分布。全零向量在分布外,会引导模型走入从未见过的区域,生成结果通常是奇怪的灰色模糊图像。确定性采样确实允许你把同一个随机种子反复用,但种子本身必须来自正确的噪声分布。
为何常见:“确定性”三个字容易让人联想到“可以用固定值”,忘记扩散模型的前置条件仍是随机高斯噪声。
面试题
Q1. DDIM 中的字母"I"代表什么?
- A.Independent(独立)
- B.Implicit(隐式)← 正确答案
- C.Incremental(增量)
- D.Iterative(迭代)
答案:B。DDIM 全称是 Denoising Diffusion Implicit Models,I 代表 Implicit(隐式)。所谓“隐式”是指它构造了一个隐式的生成过程,不再像 DDPM 那样显式地逐级依赖马尔可夫链上的每一步。选项 A 的“独立”、C 的“增量”、D 的“迭代”虽以 I 开头,但都与 DDIM 论文命名的本意无关。
Q2. DDIM 能复用 DDPM 已训练模型权重的根本原因是什么?
- A.二者的采样公式完全相同
- B.二者的训练目标与边缘分布一致← 正确答案
- C.二者都使用马尔可夫链进行采样
- D.二者的网络结构完全相同
答案:B。DDIM 构造的非马尔可夫扩散过程保持了与 DDPM 相同的边缘分布 $q(x_t|x_0)$,因此训练时模型看到的样本分布一致,训练目标 $L_{\\text{simple}}$ 等价,所以可以直接复用权重。A 错误——采样公式并不相同;C 错误——DDIM 恰恰是非马尔可夫;D 虽是事实,但不是“能复用权重”的根本原因。
Q3. 在 DDIM 采样公式中,将噪声项系数 $\sigma_t$ 设为 0 的后果是什么?
- A.采样过程变为完全随机
- B.采样过程退化为确定性的映射← 正确答案
- C.采样步数必须增加
- D.生成质量必然下降
答案:B。$\sigma_t=0$ 意味着采样公式中的随机扰动项消失,每一步从 $x_t$ 到 $x_{t-1}$ 都是确定性的计算。给定相同的初始噪声 $x_T$,最终生成结果完全可复现。A 正好说反了;C 没有必然联系,步数由子序列选取控制;D 也不一定——许多场景下 50 步 DDIM 质量与千步 DDPM 相当。
Q4. DDIM 实现采样加速的核心机制是什么?
- A.减少网络参数量
- B.在时间序列中跳步选取子序列← 正确答案
- C.把图像先压缩再生成
- D.用更小的图像尺寸训练
答案:B。DDIM 加速的关键是从完整时间网格 $\{1,...,T\}$ 中选取更稀疏的子序列 $\{\\tau_1,...,\\tau_S\}$,每一步跨越多层噪声。网络参数量不变、图像尺寸不变,只是“少走几步”。A、C、D 都属于其他加速思路(模型压缩、潜在空间、分辨率),不是 DDIM 的机制。
Q5. 从数学视角看,当采样步长趋于零时,DDIM 的确定性轨迹收敛为什么?
- A.随机微分方程(SDE)
- B.常微分方程(ODE)← 正确答案
- C.偏微分方程(PDE)
- D.变分不等式
答案:B。DDIM 确定性采样在连续时间极限下收敛为一个常微分方程(概率流 ODE)。SDE 包含噪声项,对应 DDPM 类随机采样的极限;PDE 在扩散模型中通常描述概率密度的时间演化而非单个样本轨迹。DDIM 消除随机性后,轨迹满足的就是一个确定性 ODE,因此答案为 B。
Q6. DDPM 采样过程中的“马尔可夫假设”指什么?
- A.每一步状态依赖全部历史状态
- B.每一步状态只依赖上一步状态← 正确答案
- C.每一步状态相互独立
- D.每一步状态依赖初始状态
答案:B。马尔可夫性质的核心是“无记忆性”:当前状态 $x_t$ 已知时,下一步 $x_{t-1}$ 只依赖 $x_t$,与更早的状态无关。这就像醉汉只看脚下、不看走过的路。A 是“长记忆”假设;C 是完全独立(无依赖);D 是 DDIM 的非马尔可夫特征而非 DDPM 的马尔可夫特征。
Q7. DDIM 的确定性采样中,生成多样性的来源是什么?
- A.采样中期的随机噪声
- B.初始噪声 $x_T$ 的随机抽取← 正确答案
- C.模型权重的随机初始化
- D.训练数据的随机顺序
答案:B。初始 $x_T \\sim \\mathcal{N}(0, I)$ 是唯一保留随机性的入口。一旦 $x_T$ 确定,DDIM 每一步都按确定性公式推进,因此不同生成结果之间的差异完全来自 $x_T$ 的差异。A 是 DDPM 的多样性来源;C、D 属于训练阶段的因素,与采样阶段的多样性无关。
Q8. 以下哪些是 DDIM 相对于 DDPM 的改进?
- A.采样步数大幅减少← 正确答案
- B.完全不需要随机数
- C.相同初始噪声下生成结果可复现← 正确答案
- D.训练速度更快
答案:AC。A 正确,DDIM 可将 1000 步压缩到 50 步左右。C 正确,确定性轨迹保证同起点同终点。B 错误——初始噪声 $x_T$ 仍需随机采样,只是采样中不再加噪声。D 错误——DDIM 不改变训练过程,训练速度没有提升。
Q9. 关于 DDIM 的 ODE 视角,下列说法正确的是?
- A.DDIM 轨迹可视为概率流 ODE 的离散化← 正确答案
- B.ODE 轨迹是可逆的← 正确答案
- C.ODE 代表了一条随机行走路径
- D.分数函数是 ODE 中的核心驱动项← 正确答案
答案:ABD。A 正确,概率流 ODE 正是确定性采样在连续极限下的方程。B 正确,ODE 是确定性的可逆映射,沿轨迹可前向加噪或反向去噪。C 错误——ODE 轨迹不含随机性。D 正确,方程中的驱动项正是分数函数 $\\nabla_x\\log p_t(x)$,而噪声预测网络是它的估计器。
Q10. 在实际部署中使用 DDIM 时,以下哪些做法是合理的?
- A.固定随机种子进行质量回归测试← 正确答案
- B.把步数压到 5 步以获得最大加速
- C.在 20~50 步区间权衡速度与质量← 正确答案
- D.利用确定性轨迹做潜空间插值← 正确答案
答案:ACD。A 合理,确定性采样让相同种子可复现,适合测试与排障。C 合理,50 步左右是经验上质量/速度的平衡点。D 合理,确定性轨迹让潜空间插值结果稳定平滑。B 不合理——极端少步数会放大预测误差,5 步时质量通常退化严重,不是“合理部署策略”。