搞扩散模型的人很多,能把它还原成概率题的人很少。这篇文章把 VAE 和扩散模型的数学地基铺一遍:从随机变量到变分下界,公式全部亲手推过一遍才敢写。生成式模型要学的,本质是"什么样的样本更可能出现"。
四个概率工具
条件概率与边缘化:P(A∩B)=P(A|B)P(B) 是贝叶斯推论的地基;边缘化是把不关心的变量积分掉,p(x)=∫p(x,y)dy——后面 ELBO 推导里反复用。期望:E[f(X)]=∫p(x)f(x)dx,采样评估的数学形式。Jensen 不等式:log E[X] ≥ E[log X],凹函数性质,它是变分下界存在的全部理由——直接算对数似然积不出解析解,只能用不等式圈一个可优化的下界。高斯分布:均值定中心,方差定分散度,扩散模型全程在和它打交道。
VAE 的骨架:编码-解码与下界
VAE 用两个网络夹住分布:编码器把样本映射到潜在空间(输出均值和方差,而不是确定值),解码器从潜在变量重建样本。训练目标是最大化对数似然,但 p(x)=∫p(x|z)p(z)dz 积不出来,于是用 Jensen 不等式推 ELBO:
log p(x) ≥ E[log p(x|z)] − KL(q(z|x) ‖ p(z))
两项各有含义:重建项要求解码器把样本还原回来,KL 项要求后验分布别偏离先验太远。两项此消彼长——重建太强后验自由发散,KL 太强编码信息不够。调 VAE 的手感就来自这个平衡点:KL 项权重就是那个平衡旋钮,权重大了重建发糊,小了潜空间结构散乱,不是单边加大能解决的。
扩散模型:把一步生成拆成一千步
DDPM 的思路反直觉:不是直接学生成,而是学"怎么加噪声"的逆过程。前向过程按 T 步逐步给图片加高斯噪声,每步尺度由 β 调度控制;模型学的是反向去噪的条件分布 p(x_{t-1}|x_t)。训练目标经推导后出奇简单:预测每一步被加进去的噪声——网络拿一张带噪图输入,输出噪声估计,和真实噪声算均方误差。
训练循环展开只有三步:取一张干净图,按当前时间步的噪声尺度加噪得到带噪输入;把带噪图和时间步一起喂给网络,输出对噪声的估计;让估计与真实噪声算均方误差,反传更新。整套推导里最重的数学——变分下界和 KL 项——最后塌缩成一行均方误差:理论负责保证优化方向正确,实现却简单到几十行代码就能复现。读各家实现会发现核心损失几乎一模一样,差异都在 β 调度与采样策略上,不在目标函数上。
为什么拆步有效?一步生成要学"从噪声到图片"的巨大跳跃,分一千小步后,每步只需微调一点噪声,模型的任务简单得多。生成时从纯噪声出发,逐步去噪还原。
采样与判定
采样循环三行伪代码:从纯高斯噪声出发,每步用模型预测噪声,按调度公式更新,循环 T 次得到样本。验证理解是否到位的两个自测:手推一遍 ELBO 的 Jensen 推导(卡在哪一步,说明哪个概率工具没吃透);把 T 从 1000 降到 50 采样验证画质退化——能解释"为什么步数少了画质掉",才真理解了去噪步数和分布逼近的关系。VAE 和扩散共享同一套概率地基,先懂一个再读另一个,成本减半。

评论0