🎓 总站 🏠 本课目录 01 图像基础 02 空间滤波 03 频率滤波 04 彩色处理 05 神经网络 06 表征学习 07 Transformer 08 CNN 09 目标识别 10 生成式模型
视觉计算 · 第10章

生成式模型

从判别式与生成式的本质区别出发,理解生成式建模目标(极大似然 ⟺ 最小化 KL 散度)、变分自编码器(ELBO、重构+先验匹配、重参数化)、扩散模型(前向加噪、反向去噪、DDPM),再到能量模型、分数匹配与连续化的随机微分方程(SDE)。

📚 学习进度
0%

🎯学习目标

  • 区分判别式 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、扩散模型。

贝叶斯关系:P(Y|X) = P(Y)·P(X|Y) / P(X)。判别式直接拟合左式;生成式分别拟合分子两项,再相除。

生成式建模目标 ⭐

生成式模型的挑战:对于一个输入,输出有很多可能的"正确"结果;训练集没有严格准确的答案;输出空间维度往往很高。

隐变量 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)]

暴力采样的困境:完全随机从 z 采样、与训练样本比较似然,所需样本数 K 大得离谱,实际不可行 → 这正是 VAE 和扩散模型要解决的。

变分自编码器 VAE ⭐

VAE 的思想:放弃盲目从 Z 采样,改成先"看一眼"目标 x,划定一个极小的专属片区去采样(推断分布 q(z|x));同时放弃计算绝对完美的概率积分,改成优化一个相对容易的数学下界

结构与 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))
         ├── 重构项:解码器重建得越好越大
         └── 先验匹配:编码分布越接近标准正态越大
交替优化:固定 w 优化 φ(让推断分布更好);固定 φ 优化 w(让生成更准)。两者共同最大化 ELBO。

重参数化(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 实际采用的形式。

训练目标:让网络学会从带噪图 z_t 预测出加进去的噪声 ε。采样时从纯噪声开始,反复"减去预测噪声",逐步还原出清晰图像。

能量模型与分数匹配

能量模型

传统概率模型必须满足归一化 ∫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) └── 反向注入噪声
核心:反向 SDE 用连续的得分向量场 ∇ ln p(z) 作为引力,把粒子从噪声极其平滑地"吹回"真实数据流形。这正是"基于分数的生成"与扩散模型的统一连续视角。

参考:Song et al., Score-Based Generative Modeling through SDE, ICLR 2021 杰出论文奖。

重点例题

例1 为什么最小化 KL(p_data ‖ p_model) 等价于极大似然?
答案
D_KL = E[log p_data] − E[log p_model],第一项是常量(与参数无关),所以最小化 KL ⟺ 最大化 E[log p_model](对数似然)。
例2 写出 VAE 的 ELBO 分解,并解释两项含义。
答案
ELBO = E[log p(x|z)] − D_KL(q(z|x)‖p(z))。第一项是重构项(重建越好越大);第二项是先验匹配(推断分布越接近标准正态越大)。
例3 为什么 VAE 需要重参数化?
答案
直接从 q(z|x) 采样的随机性会阻断梯度反向传播。重参数化 z=μ+σ·ε 把随机性隔离在 ε 中(与参数无关),μ、σ 变成可微的确定性变换,从而能用梯度下降训练。
例4 DDPM 固定方差后 KL 散度退化为什么?
答案
两个方差相同的高斯分布的 KL 散度,数学上严格等价于拉近它们均值向量的 L2(欧氏)距离。
例5 反向 SDE 中的"得分引导"项是什么?
答案
是 ∇_z ln p(z)(得分向量场),它像引力把粒子从纯噪声拉回真实数据流形,实现去噪生成。

🎯自测(点击展开)

判别式与生成式分别建模什么?
判别式建模 P(Y|X)(划定边界);生成式建模 P(X|Y) 和 P(Y)(理解生成规律)。
生成式建模中隐变量 z 的作用?
z 指定标签外的所有属性(大小/颜色/姿态/背景),决定"具体生成哪一个"样本;噪声就是信号。
为什么直接随机采样训练 VAE 不可行?
需要采样的 K 大得离谱(高维空间覆盖率极低),计算量不可行,所以 VAE 用推断分布 q(z|x) 划定小片区。
ELBO 为什么是"下界"?
因为 log p(x) = ELBO + KL(q(z|x)‖p(z|x)),而 KL 项非负,所以 ELBO ≤ log p(x)。
DDPM 网络最终预测的是什么?
预测噪声 ε(等价于预测去噪图像),采样时反复"减去预测噪声"逐步还原清晰图像。
能量模型为什么抛弃归一化条件?
高维空间找积分等于 1 的复杂函数极其困难,所以直接定义不受限的能量函数 E(x,w),把归一化项 Z(w) 留给采样处理。
反向 SDE 的"得分引导"对应哪个量?
∇_z ln p(z),即得分向量场,作为引力把粒子从噪声拉回数据流形。

📝强化题库

选择题点选即时判分;填空题输入后"检查"或"显示答案"。

已答 0/0答对 0正确率
已答 0/0答对 0