定义
扩散模型真正想最大化的是数据对数似然 logpθ(x0),但 pθ(x0) 需要对所有中间潜变量 x1:T 积分,无法直接算。于是用变分推断把它松弛成可优化的下界——ELBO(Evidence Lower Bound,证据下界):
logpθ(x0)≥Eq(x1:T∣x0)[logq(x1:T∣x0)pθ(x0:T)]=:L
DDPM 里那个「硬给」的损失 Lsimple=∥ϵ−ϵθ(xt,t)∥2,正是从这个 ELBO 一步步简化出来的。
直观理解
训练的本质是:让反向去噪过程(网络学的)尽可能贴近前向加噪过程的逆(已知的)。
关键洞察在于:前向过程虽然整体是「加噪」,但只要给定 x0 和 xt,就能算出 xt−1 最可能长什么样——即后验 q(xt−1∣xt,x0) 有闭式解(因为加噪是线性高斯的)。这个后验就是去噪的「标准答案」,网络照着它学即可。
所以整个推导的线索是:
后验 q(xt−1∣xt,x0) 可解析算 → 它是高斯,有明确均值 → 网络只需学这个均值 → 均值最终只依赖「加进去的噪声 ϵ」→ 损失退化成预测噪声的 MSE。
公式推导
1. 展开 ELBO 成三项
利用马尔可夫性质与贝叶斯公式,把 L 拆开:
L=L0Eq[logpθ(x0∣x1)]−Lt−1t=2∑TDKL(q(xt−1∣xt,x0)∥pθ(xt−1∣xt))−LTDKL(q(xT∣x0)∥p(xT))
- LT:让 xT 接近标准噪声,不含可训练参数(βt 固定时它接近 0),可忽略
- Lt−1:主体,逐时间步比较「真实后验」与「网络反向」
- L0:最后一步解码,DDPM 里也常近似忽略
2. 后验 q(xt−1∣xt,x0) 的闭式解
前向的三个分布都是高斯:q(xt∣x0)、q(xt−1∣x0)、q(xt∣xt−1)。对高斯套贝叶斯,得后验仍是高斯:
q(xt−1∣xt,x0)=N(μ~t(xt,x0), β~tI)
μ~t=1−αˉtαˉt−1βtx0+1−αˉtαt(1−αˉt−1)xt,β~t=1−αˉt1−αˉt−1βt
其中 αt=1−βt,αˉt=∏s=1tαs(见 diffusion process)。
3. 把 x0 换成噪声表示
由重参数化 xt=αˉtx0+1−αˉtϵ,反解:
x0=αˉtxt−1−αˉtϵ
代入 μ~t,消掉 x0:
μ~t=αt1(xt−1−αˉtβtϵ)
这是关键一步:后验均值被写成「当前 xt 减掉一个可预测的噪声」,于是「学后验」等价于「学噪声」。
4. 网络参数化与 KL 化简
让网络取同样形式,只是把未知的 ϵ 换成网络输出 ϵθ(xt,t):
μθ(xt,t)=αt1(xt−1−αˉtβtϵθ(xt,t))
两个方差相同的高斯,其 DKL 退化为均值差的加权平方:
Lt−1=E[2σt21∥μ~t−μθ∥2]∝E[∥ϵ−ϵθ(xt,t)∥2]
5. 丢掉系数 → Lsimple
DDPM 实验发现,直接丢掉前面的权重系数、均匀采样时间步 t,训练反而更稳:
Lsimple=Et,x0,ϵ[∥ϵ−ϵθ(xt,t)∥2]
[!note] 结论
「预测噪声」不是拍脑袋定的,而是「学反向过程」在数学上等价的结果;Lsimple 是 ELBO 的简化形式,简化掉的是那些 KL 项的权重系数。
相关