前置
1. DDPM 的两条链
设数据 x0∈Rd 服从 qdata。DDPM
(Ho et al., 2020) 用固定的非齐次高斯马尔可夫链逐步加噪:
q(x1:T∣x0)=t=1∏Tq(xt∣xt−1),
其中给定噪声日程 0<βt<1,
q(xt∣xt−1)=N(xt;1−βtxt−1,βtI).
记
αt:=1−βt,αˉt:=s=1∏tαs,αˉ0:=1.
则一步重参数化为
xt=αtxt−1+1−αtϵt,ϵt∼N(0,I).
逆向生成链由模型给出:
pθ(x0:T)=p(xT)t=1∏Tpθ(xt−1∣xt),p(xT)=N(0,I).
这里 q 是已知前向核,pθ 是学习得到的逆向核,二者不能混写。过程可概括为:
x0qx1→⋯→xT
x0←⋯←xT−1pθxT
图意:DDPM 扩散模型。 上行逐步加噪,下行用参数化逆向核去噪。
flowchart LR
x0["x_0:数据"] -->|"q(x_1|x_0)"| x1["x_1"]
x1 -->|"q(x_2|x_1)"| x2["⋯"]
x2 -->|"q(x_T|x_{T-1})"| xT["x_T:噪声"]
xT -->|"p_θ(x_{T-1}|x_T)"| x2
x2 -->|"p_θ(x_1|x_2)"| x1
x1 -->|"p_θ(x_0|x_1)"| x0
2. 任意时刻的闭式扰动核
反复代入一步递推可得
xt=αˉtx0+i=1∑t(j=i+1∏tαj)1−αiϵi.
各 ϵi 独立且服从标准高斯,所以上式噪声项仍是高斯。其协方差系数满足
αˉt+i=1∑t(j=i+1∏tαj)(1−αi)=1.
因此存在 ϵ∼N(0,I) 使
xt=αˉtx0+1−αˉtϵ
以及
q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I).
这使训练时能直接抽取任意时刻的 xt,无需模拟前 t−1 步。
“终端接近标准高斯”需要 αˉT 足够小;并非只要步数大就自动成立。对无限日程,
αˉt→0⟺s=1∑∞−logαs=∞,
而在常见的小 βs 条件下,这近似等价于
∑sβs=∞。有限 T 时通常只有
q(xT)≈N(0,I),近似质量还取决于数据尺度是否已标准化。
3. 精确一步后验
训练逆向模型所需的可解后验是
q(xt−1∣xt,x0),
而不是 q(xt−1∣xt)。由
q(xt−1∣x0)=N(αˉt−1x0,(1−αˉt−1)I)
与 q(xt∣xt−1) 的高斯乘积,得到
q(xt−1∣xt,x0)=N(xt−1;μ~t(xt,x0),β~tI),
其中
β~t:=1−αˉt1−αˉt−1βt
且
μ~t=1−αˉtαˉt−1βtx0+1−αˉtαt(1−αˉt−1)xt.
由扰动表示
x0=αˉtxt−1−αˉtϵ,
后验均值也可写为
μ~t=αt1(xt−1−αˉtβtϵ).
完整的一般线性高斯后验及 Tweedie 公式见
线性高斯扩散。
4. 逆向模型的参数化
常用高斯逆向核为
pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t)).
4.1 预测噪声
让神经网络预测前向扰动中的噪声
ϵθ(xt,t),并定义
x^0,θ=αˉtxt−1−αˉtϵθ(xt,t).
将其代入精确后验均值,得到
μθ(xt,t)=αt1(xt−1−αˉtβtϵθ(xt,t)).
4.2 模型方差
原始 DDPM 可固定
Σθ=σt2I
对 t≥2 可取 σt2=βt 或
σt2=β~t;两者是不同的设计选择,不能把精确后验方差
β~t 直接改写成 βt。也可学习方差,例如在
logβ~t 与 logβt 之间插值。无论采用何种选择,
pθ 的方差都属于生成模型参数化,不改变上节 q 后验的
β~t。
对连续数据,若要把 pθ(x0∣x1) 当作普通
Lebesgue 密度并使用下面的精确 ELBO,末步应采用 proper Gaussian
σ1>0 或另行定义离散化解码器。令 σ1=0 会得到 Dirac 核,
它一般不支配真实连续条件律;此时确定性末步只能视为另一种生成约定或采样
启发式,不能同时沿用普通连续密度的 ELBO。
5. ELBO 与简化目标
由 Jensen 不等式,
−logpθ(x0)≤Eq(x1:T∣x0)[logpθ(x0:T)q(x1:T∣x0)]=:LVLB.
记
LTLt−1L0:=DKL(q(xT∣x0)∥p(xT)),:=Eq[DKL(q(xt−1∣xt,x0)∥pθ(xt−1∣xt))],2≤t≤T,:=−Eq[logpθ(x0∣x1)].
则它分解为
LVLB=LT+t=2∑TLt−1+L0.
当模型方差固定时,第 t 个 KL 项关于均值是带时间权重的平方误差。
令 ρ 是 {2,…,T} 上处处为正的时间采样分布。采用噪声参数化后,
内部 KL 项之和可写成
Ex0∼qdata,ϵ∼N(0,I),t∼ρ[ρtwtϵ−ϵθ(αˉtx0+1−αˉtϵ,t)22]+Cinner,
其中在 σt2 固定时
wt=2σt2αt(1−αˉt)βt2
而 Cinner 只包含这些内部 KL 中与 θ 无关的项。
LT 与 L0 仍须在完整 ELBO 中单独保留;尤其
L0 通常依赖 θ,不能吸收到常数中。若 ρ 均匀,
1/ρt=T−1 是报告 ELBO 数值时不能漏掉的全局因子;只比较内部 KL
最优均值时可省略。原始 DDPM 的常用简化目标进一步把 t=1 纳入统一的
噪声预测训练,并去掉解析时间权重:
Lsimple=Et∼Unif{1,…,T},x0∼qdata,ϵ∼N(0,I)[∥ϵ−ϵθ(xt,t)∥22].
简化目标通常更易优化,但它不是逐项保持原 ELBO 权重后的同一个标量目标。它与分数参数化的精确权重关系见
分数匹配。
6. 训练算法
一次训练迭代:
- 采样 x0∼qdata;
- 采样 t∼Unif{1,…,T};
- 采样 ϵ∼N(0,I);
- 构造
xt=αˉtx0+1−αˉtϵ;
- 最小化
∥ϵ−ϵθ(xt,t)∥22
或相应的 ELBO 加权项。
7. 采样算法
先采样
xT∼N(0,I).
然后对 t=T,T−1,…,1:
- 计算
μθ=αt1(xt−1−αˉtβtϵθ(xt,t));
- 若 t>1,采样
z∼N(0,I) 并令
xt−1=μθ+σtz;
- 若 t=1 且模型声明 proper Gaussian 方差 σ1>0,精确采样仍为
x0=μθ+σ1z,z∼N(0,I).
常见实现令 z=0,把均值直接作为输出;这是一种确定性末步
启发式,除非模型本身就定义成 Dirac 解码器,否则它不是从所声明
pθ(x0∣x1) 的精确采样。
若使用学习方差,应使用模型给出的标准差;若对内部步固定为精确后验方差,
则仅对 t≥2 取 σt2=β~t,末步解码器需另行定义。
8. 独立高斯递推公式
更一般地,若
xt=atxt−1+btϵt,ϵt∼iidN(0,I),
则归纳得到
xt=(i=1∏tai)x0+i=1∑t(j=i+1∏taj)biϵi.
噪声和的协方差为
[i=1∑t(j=i+1∏taj2)bi2]I.
若每一步满足 ai2+bi2=1,则
(i=1∏tai)2+i=1∑t(j=i+1∏taj2)bi2=1,
从而
xt=(i=1∏tai)x0+1−(i=1∏tai)2ϵ,ϵ∼N(0,I).
DDPM 对应
at=αt、
bt=1−αt=βt。
Ho, J., Jain, A., & Abbeel, P. (2020). Denoising Diffusion Probabilistic Models. Advances in Neural Information Processing Systems, 33, 6840–6851.