生成式模型
从判别式与生成式的本质区别出发,理解生成式建模目标(极大似然 ⟺ 最小化 KL 散度)、变分自编码器(ELBO、重构+先验匹配、重参数化)、扩散模型(前向加噪、反向去噪、DDPM),再到能量模型、分数匹配与连续化的随机微分方程(SDE)。
🎯学习目标
- 区分判别式 P(Y|X) 与生成式 P(X|Y),理解"判别划定边界、生成理解规律";
- 掌握生成式建模目标:最小化 KL 散度 ⟺ 极大似然;
- 理解隐变量 z、非条件/条件生成;
- 掌握 VAE:证据下界 ELBO = 重构项 − KL(q(z|x)‖p(z))、重参数化技巧;
- 掌握扩散模型:前向加噪(扩散核)、反向去噪、DDPM 预测噪声;
- 理解能量模型、分数函数、郎之万动力学、去噪分数匹配;
- 了解把离散 DDPM 连续化为SDE,反向 SDE 用得分场引导采样。
①判别式 vs 生成式 ⭐
判别式模型 P(Y|X)
多对一:给定输入 X,预测标签 Y。不分别建模 P(Y) 和 P(X|Y),只划定事物边界(判别)。
典型:逻辑回归、SVM、神经网络分类器。
生成式模型 P(X|Y)
一对多:对类条件概率 P(x|y) 与先验 P(y) 分别建模,理解事物诞生的底层规律(生成)。
典型:朴素贝叶斯、GMM、HMM、贝叶斯网络、VAE、扩散模型。
②生成式建模目标 ⭐
生成式模型的挑战:对于一个输入,输出有很多可能的"正确"结果;训练集没有严格准确的答案;输出空间维度往往很高。
隐变量 z 与生成过程
- 从简单分布采样 z ~ p(Z) = 𝒩(0, 1)(高斯噪声);
- z 是隐变量向量,指定除标签外的所有属性(大小、颜色、姿态、背景…);
- 标签 y 告诉生成器 g "造一只鸟",z 决定"具体哪一只"鸟;
- 在生成式建模中,噪声就是信号,决定生成哪张图。
非条件生成
对 P(X) 建模:z~P(Z) → x~g(Z)。
条件生成
对 P(X|Y) 建模:z~P(Z) → x~g(Z, Y)。
核心目标:极大似然 ⟺ 最小化 KL 散度
设真实未知分布 p_data(x),模型分布 p(x;w)。目标是最小化两者 KL 散度:
D_KL(p_data ‖ p(x;w)) = E[log p_data(x)] − E[log p(x;w)]
第一项是真实样本熵(与参数 w 无关的常量),所以最小化 KL 散度 ⟺ 最大化对数似然 E[log p(x;w)]。
③变分自编码器 VAE ⭐
结构与 ELBO
编码器 q(z|x)
给定 x 推断隐变量 z 的分布("看一眼目标")。
解码器 p(x|z)
从 z 生成 x(生成器)。
先验 p(z)
标准正态 𝒩(0,1)。
由于真实后验 p(z|x) 不可计算,VAE 引入证据下界(ELBO):
log p(x) = L(w,φ) + D_KL(q(z|x) ‖ p(z|x)) (后验项 ≥ 0)
≥ L(w,φ) = ELBO
ELBO 分解:重构 + 先验匹配
L(w,φ) = E[log p(x|z)] − D_KL(q(z|x) ‖ p(z))
├── 重构项:解码器重建得越好越大
└── 先验匹配:编码分布越接近标准正态越大
重参数化(Reparameterization)
q(z|x) 输出均值 μ 和方差 σ。为能用反向传播训练,把采样改写为:z = μ + σ·ε,其中 ε ~ 𝒩(0,1) 是与参数无关的噪声。这样梯度可以流过 μ、σ。
④扩散模型 DDPM ⭐
扩散模型把编码过程变成一个确定的加噪声过程(前向过程),再用神经网络学习反向去噪过程。
前向过程(加噪 / 编码)
- 逐步给数据加高斯噪声:q(z_t | z_{t−1}) = 𝒩(√(1−β_t)·z_{t−1}, β_t·I),β_t 为噪声方差;
- 扩散核:可一步从 x 跳到任意 z_t,q(z_t|x) 是完全的标准正态分布;
- 逆向分布 q(z_{t−1}|z_t) 需要对 p(x) 积分 → 难以计算。
反向过程(去噪 / 解码)
- 用神经网络建模 p(z_{t−1}|z_t, w) 来近似 q(z_{t−1}|z_t);
- 当每步方差很小时,q(z_{t−1}|z_t) 也近似为高斯;
- 似然难算(对复杂神经网络算积分困难),改用 ELBO 近似优化。
DDPM 的关键简化
固定方差
设定正向、反向两个分布的方差一样,KL 散度退化为均值向量的 L2 距离。
预测去噪图像
神经网络直接预测去噪后的图像(即 z_{t−1} 的均值)。
预测噪声 ε(等价且更稳)
用 z_t 和噪声 ε_t 表示均值 → 网络改为预测噪声 ε,这是 DDPM 实际采用的形式。
⑤能量模型与分数匹配
能量模型
传统概率模型必须满足归一化 ∫p(x;w)dx=1,高维空间里极难。能量模型抛弃归一化,定义不受限的实数函数 E(x,w):
ln P(x|w) = −E(x,w) − ln Z(w)
├── 能量函数 └── 归一化项(难算)
似然梯度含两项:从数据分布采样的样本要让 E 减小(概率增大);从模型分布采样的样本要让 E 增大(概率减小)。当两分布相等时梯度为 0。
分数函数与郎之万动力学
- 分数函数 S(x,w) = ∇_x ln p(x):log 似然相对样本 x 的梯度,是向量场;
- 郎之万采样:沿分数场迭代更新 x,最终收敛到模型分布(但需从 p(x;w) 采样,而采样本身又依赖分数 → 需要"分数匹配"训练)。
分数匹配(Score Matching)
真数据分数 ∇ln p(x) 未知。用核密度估计:以每个训练样本 x 为中心扣一个方差 σ 的高斯核,叠加成平滑分布 q_σ(z) 代替 p(x)。由此得到去噪分数匹配:训练模型分数去匹配加了噪声后的数据的分数。
⑥随机微分方程 SDE
把 DDPM 离散的加噪过程(t 离散)推广为连续时间 t。把总时间切成无数微小步 Δt,β_t 变成随时间连续变化的函数。
正向 SDE(加噪)
dz = −½β(t)·z·dt + √β(t)·dw
├── 漂移项(drift) └── 扩散项(diffusion, 布朗运动)
描述把清晰图像(数据流形)变成一团纯噪声的过程。
反向 SDE(去噪)
dz = [−½β(t)·z − β(t)·∇_z ln p(z)]·dt + √β(t)·dw̄
├── 反向漂移 ├── 得分引导(score) └── 反向注入噪声
参考:Song et al., Score-Based Generative Modeling through SDE, ICLR 2021 杰出论文奖。
⭐重点例题
答案
答案
答案
答案
答案
🎯自测(点击展开)
判别式与生成式分别建模什么?
生成式建模中隐变量 z 的作用?
为什么直接随机采样训练 VAE 不可行?
ELBO 为什么是"下界"?
DDPM 网络最终预测的是什么?
能量模型为什么抛弃归一化条件?
反向 SDE 的"得分引导"对应哪个量?
📝强化题库
选择题点选即时判分;填空题输入后"检查"或"显示答案"。