DDIM
相同前向的 ODE 算法,加速采样
钟祚栋 / 学习笔记
GO UP! Diffusion + RL学习 02 ↗
上一篇梳理了 DDPM 的完整推导。这一次继续问一个很自然的问题:能不能沿用已经训练好的噪声预测模型,让采样快一点?
我原来的直观理解是:前向过程从干净图像出发,为不同噪声程度的样本建立去噪的学习目标;反向过程再利用学到的方向,逐步生成图像。DDIM 就是在这两件事之间找到了更大的自由度。
PAPER · JIAMING SONG, CHENLIN MENG & STEFANO ERMONDenoising Diffusion Implicit ModelsICLR 2021 · arXiv:2010.02502 ↗
DDPM 通常按相邻时间步逐次去噪。如果想加速,可以改变采样过程,同时让训练时用到的加噪分布保持一致。关键就在于:相同的前向边缘分布,并不唯一决定整条随机轨迹。
#保持前向边缘分布
全文延续 DDPM 的标准记号,αt=1−βt,αˉt=∏i=1tαi,并令 αˉ0=1。我们希望保留:
q(xt∣x0)xt=N(αˉtx0,(1−αˉt)I),=αˉtx0+1−αˉtϵ,ϵ∼N(0,I).
训练时,随机选一个时间步,再从这个条件分布直接得到加噪样本。常用的简化噪声预测损失是:
Lsimple=Ex0,t,ϵ[ϵ−ϵθ(αˉtx0+1−αˉtϵ,t)22].
它用到的是各个时间步的加噪样本,而不是一条完整的加噪轨迹。因此,只要沿用相同的噪声日程和这个训练目标,就可以复用同一个噪声预测网络。
DDIM 不再要求沿用 DDPM 原来的相邻前向转移。它直接构造一个带 x0 条件的反向分布,让它满足边缘一致性:
∫qσ(xs∣xt,x0)q(xt∣x0)dxt=q(xs∣x0),0≤s<t.
先把 s 理解为 t−1;后面会看到,它也可以是更早的时间步。这就是原文手写推导最上方的那条等式。
#待定系数法:构造可行的反向过程
这里同样沿着苏神的推导来理解 (っ´ω`)ノ。原文截图中的系数记号与 DDPM 不同,下面统一写成 at=αˉt、bt=1−αˉt,减少混淆。
原文参考 · 苏剑林生成扩散模型漫谈(四):DDIM = 高观点 DDPM科学空间 · 待定系数法推导 ↗
先设一个高斯条件分布
qσ(xs∣xt,x0)=N(κxt+λx0,σ2I).
其中 κ,λ,σ 是这一对时间步对应的系数。取两个相互独立的标准高斯噪声,代入采样式:
ϵ1,ϵ2xtxs∼iidN(0,I),=atx0+btϵ1,=κxt+λx0+σϵ2=(κat+λ)x0+κbtϵ1+σϵ2.
为了让它与 xs=asx0+bsϵ 同分布,只需要匹配条件均值和方差:
{κat+λ=as,κ2bt2+σ2=bs2.
三个未知数、两个方程,多出来的自由度就交给 σ。取通常使用的非负根:
κλ=btbs2−σ2,=as−atbtbs2−σ2,0≤σ2≤bs2.
于是,原截图中的完整条件分布就可以排成:
qσ(xs∣xt,x0)=N(μσ(xt,x0),σ2I),μσ(xt,x0)=asx0+btbs2−σ2(xt−atx0).
代回 DDPM 的标准记号,采样式会更直观:
xsz=αˉsx0+1−αˉs−σ21−αˉtxt−αˉtx0+σz,∼N(0,I).
这里没有用到“s=t−1”这一条件,所以可以直接为两个相隔更远的噪声级构造转移。σ=0 时,高斯条件分布退化为一个确定性映射。
#从公式到跳步采样
用网络估计未知的原图
现在求出的是 qσ(xs∣xt,x0),但推理时并不知道 x0。参考 DDPM,把前向公式里的真实噪声替换成网络的预测:
x^0(xt,t)=αˉtxt−1−αˉtϵθ(xt,t).
原笔记里的 ξ 在这里统一记为 ϵ,网络输出则记为 ϵθ。代回后,得到实际使用的更新:
xs=预测的干净图像αˉsx^0(xt,t)+指向下一噪声级的方向1−αˉs−σt→s2ϵθ(xt,t)+额外随机噪声σt→sz,z∼N(0,I).
这三项也对应了原手写总结中的“均值”和“方差”:前两项组成条件均值,最后一项控制条件方差。
用一个参数控制随机性
常用的标准差选取如下,这里考虑 0≤η≤1:
σt→s(η)=η1−αˉt1−αˉs1−αˉsαˉt.
当 η=0 时不再注入新噪声,这就是确定性的 DDIM 采样。当 s=t−1 且 η=1 时:
σt→t−12=1−αˉt1−αˉt−1βt=β~t.
此时均值与 DDPM 的噪声预测形式一致,并使用后验方差 β~t。如果 DDPM 实现使用的是另一种方差约定,随机项需要相应区分。
Algorithm · DDIM 跳步采样
输入:已训练的噪声预测网络、原训练噪声日程、随机性参数 η,以及时间步子序列:
0=τ0<τ1<⋯<τS=T,S≤T.
- 从 xT∼N(0,I) 开始。
- 对 i=S,…,1,令 t=τi、s=τi−1,计算 ϵθ(xt,t) 和 x^0(xt,t)。
- 按上式计算 σt→s(η),再更新到 xs;最后一步 s=0 时返回预测的干净样本。
注意,跳步以后仍使用原来时间步对应的 αˉτi 和时间条件,不是把较短序列直接重新编号后套入原公式。
减少网络调用就能加快生成,但步子不能无限放大。噪声预测有误差,有限步更新也有离散化误差;跨度过大时,一次预测无法充分描述整段生成路径。原文推荐 Double 童发发的讲解,把这点说得很清楚:
原文推荐 · DOUBLE 童发发为什么 DDPM、DDIM 不能一步求得 X₀?为什么 DDIM 不能跳步过大?AI 知识分享 · Bilibili ↗
#确定性与 ODE
当 η=0 时,给定初始噪声、网络、时间步序列和实现,后续采样路径就是确定的。不过,初始的 xT 仍是随机变量,因此仍然可以生成一个分布。
为了理解标题中的 ODE,可以把确定性更新改写一下。令:
yt=αˉtxt,ut=αˉt1−αˉt.
把 x^0 展开并整理,得到:
ys−yt=(us−ut)ϵθ(xt,t).
它具有 Euler 离散步的形式。在连续噪声日程及合适的时间插值下,可以对应到:
dudy=ϵθ(1+u2y,t(u)).
采样时沿着从大到小的 u 积分。这个视角解释了为什么确定性 DDIM 可以用更少的时间步沿路径前进,也提醒我们:有限步 DDIM 只是离散近似,改变步数不保证得到完全相同的像素结果。
这样再回看 DDPM → DDIM,核心就很清楚了:保留噪声预测的训练方式,重新构造生成路径;确定性路径让加速采样和连续时间的理解联系起来。下一篇继续从 Score-based Generative Models 的梯度视角理解这件事。
#参考与延伸阅读
- Jiaming Song, Chenlin Meng & Stefano Ermon. Denoising Diffusion Implicit Models, ICLR 2021. 第 3–4 节:非马尔可夫前向过程、采样与 ODE 联系。
- 苏剑林,生成扩散模型漫谈(四):DDIM = 高观点 DDPM。原文截图中的待定系数法来源;本文统一记号后重排。
- Double 童发发,理解扩散模型两大问题:为什么不能一步求得 X₀,为什么 DDIM 不能跳步过大。原文推荐视频。