前言
这是我在研究扩散模型(Diffusion Models)过程中的一些心得总结。本文将以Tutorial on Diffusion Models for Imaging and Vision(arxiv:2403.18103v1)的讲解思路为参考,从理论到实践,系统介绍 Diffusion Models 的核心原理与延伸拓展。
Part0 预备知识
0.1 概率论基础
0.1.1 高斯分布及其性质
一维高斯分布
概率密度函数:$\mathcal{N}(x; \mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)$
均值 $\mu$ 和方差 $\sigma^2$ 的几何意义
多维高斯分布
| 概率密度函数:$\mathcal{N}(\mathbf{x}; \boldsymbol{\mu}, \boldsymbol{\Sigma}) = \frac{1}{(2\pi)^{d/2} | \boldsymbol{\Sigma} | ^{1/2}} \exp\left(-\frac{1}{2}(\mathbf{x}-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\mathbf{x}-\boldsymbol{\mu})\right)$ |
协方差矩阵 $\boldsymbol{\Sigma}$ 的性质(对称性、正定性);高斯分布的关键性质
线性变换性质:若 $\mathbf{x} \sim \mathcal{N}(\boldsymbol{\mu}, \boldsymbol{\Sigma})$,则 $\mathbf{A}\mathbf{x} + \mathbf{b} \sim \mathcal{N}(\mathbf{A}\boldsymbol{\mu} + \mathbf{b}, \mathbf{A}\boldsymbol{\Sigma}\mathbf{A}^T)$
边缘分布性质:联合高斯分布的边缘分布仍是高斯分布
条件分布性质:联合高斯分布的条件分布仍是高斯分布
0.1.2 重参数化技巧 (Reparameterization Trick)
动机:如何对含有随机采样节点的计算图进行反向传播?
核心思想:将随机性从参数中分离出来
原始采样:$z \sim \mathcal{N}(\mu, \sigma^2)$(不可导) 重参数化:$z = \mu + \sigma \cdot \epsilon$,其中 $\epsilon \sim \mathcal{N}(0, 1)$(可导) 多维情况:$\mathbf{z} = \boldsymbol{\mu} + \mathbf{L}\boldsymbol{\epsilon}$
其中 $\boldsymbol{\Sigma} = \mathbf{L}\mathbf{L}^T$(Cholesky 分解) 或简化为对角协方差:$\mathbf{z} = \boldsymbol{\mu} + \boldsymbol{\sigma} \odot \boldsymbol{\epsilon}$ 意义:使得神经网络可以通过梯度下降学习分布的参数
0.1.3 条件概率与联合分布
贝叶斯定理:$p(z|x) = \frac{p(x|z)p(z)}{p(x)} = \frac{p(x|z)p(z)}{\int p(x|z)p(z)dz}$
后验 = 似然 × 先验 / 证据 联合分布的链式法则: \(p(x_1, x_2, \ldots, x_T) = p(x_1) \prod_{t=2}^{T} p(x_t | x_{t-1}, \ldots, x_1)\)
| 马尔可夫性简化:若满足马尔可夫性质,则 $$p(x_1, x_2, \ldots, x_T) = p(x_1) \prod_{t=2}^{T} p(x_t | x_{t-1})$$ |
0.2 信息论与变分推断
0.2.1 Kullback-Leibler (KL) 散度
定义:衡量两个分布之间的”距离”(严格说是散度,不满足对称性) \(D_{KL}(p | q) = \int p(x) \log \frac{p(x)}{q(x)} dx = \mathbb{E}_{x \sim p}\left[\log \frac{p(x)}{q(x)}\right]\)
性质
非负性:$D_{KL}(p | q) \geq 0$,当且仅当 $p = q$ 时等号成立 非对称性:$D_{KL}(p | q) \neq D_{KL}(q | p)$ 两个高斯分布的 KL 散度(闭式解,VAE 的核心)
设 $p = \mathcal{N}(\mu_1, \sigma_1^2)$,$q = \mathcal{N}(\mu_2, \sigma_2^2)$
| 则: $$D_{KL}(p | q) = \log \frac{\sigma_2}{\sigma_1} + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2\sigma_2^2} - \frac{1}{2}$$ |
| 多维情况(对角协方差): $$D_{KL}(\mathcal{N}(\boldsymbol{\mu}_1, \boldsymbol{\Sigma}_1) | \mathcal{N}(\boldsymbol{\mu}_2, \boldsymbol{\Sigma}_2)) = \frac{1}{2}\left[\text{tr}(\boldsymbol{\Sigma}_2^{-1}\boldsymbol{\Sigma}_1) + (\boldsymbol{\mu}_2 - \boldsymbol{\mu}_1)^T \boldsymbol{\Sigma}_2^{-1}(\boldsymbol{\mu}_2 - \boldsymbol{\mu}_1) - d + \log \frac{ | \boldsymbol{\Sigma}_2 | }{ | \boldsymbol{\Sigma}_1 | }\right]$$ |
0.2.2 Evidence Lower Bound (ELBO)
问题背景:在隐变量模型中,我们想最大化数据的对数似然 $\log p(x)$,但由于存在隐变量 $z$,边缘化积分难以计算: \(\log p(x) = \log \int p(x, z) dz = \log \int p(x|z)p(z) dz\)
| 变分推断的思路:引入一个近似后验分布 $q(z | x)$ 来逼近真实后验 $p(z | x)$ |
| ELBO 的推导: $\begin{align} \log p(x) &= \log \int p(x, z) dz \ &= \log \int \frac{p(x, z)}{q(z | x)} q(z | x) dz \ &= \log \mathbb{E}{q(z | x)}\left[\frac{p(x, z)}{q(z | x)}\right] \ &\geq \mathbb{E}{q(z | x)}\left[\log \frac{p(x, z)}{q(z | x)}\right] \quad \text{(Jensen’s Inequality)} \ &= \mathbb{E}{q(z | x)}[\log p(x | z)] - D{KL}(q(z | x) | p(z)) \ &\triangleq \mathcal{L}(q, \theta) \quad \text{(ELBO)} \end{align}$ |
ELBO 的两种解读
下界角度:$\log p(x) \geq \mathcal{L}(q, \theta)$,最大化 ELBO 等价于最大化对数似然的下界 KL 散度角度: \(\log p(x) = \mathcal{L}(q, \theta) + D_{KL}(q(z|x) | p(z|x))\) 由于 $\log p(x)$ 与 $q$ 无关,最大化 ELBO 等价于最小化 $q(z|x)$ 与真实后验 $p(z|x)$ 之间的 KL 散度
0.3 随机过程初步
0.3.1 马尔可夫链 (Markov Chain)
| 定义:一个随机过程 ${X_t}{t=0}^{\infty}$,如果满足 $$p(X_t | X{t-1}, X_{t-2}, \ldots, X_0) = p(X_t | X_{t-1})$$ 则称其为马尔可夫链(即”未来只依赖于现在,与过去无关”) |
| 转移核 (Transition Kernel):$p(X_t | X_{t-1})$,描述状态转移的概率分布 |
| 平稳分布 (Stationary Distribution):若 $\pi(x)$ 满足 $$\pi(x) = \int \pi(x’) p(x | x’) dx’$$ 则称 $\pi$ 为该马尔可夫链的平稳分布 |
遍历性 (Ergodicity):如果从任意初始状态出发,链的分布最终都会收敛到平稳分布 $\pi$,则称该链是遍历的
0.3.2 高斯马尔可夫链
扩散模型中最常用的形式:每一步转移都是高斯分布 \(p(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1-\beta_t} x_{t-1}, \beta_t \mathbf{I})\)
性质:
若初始分布是高斯的,则所有 $x_t$ 的边缘分布都是高斯的 条件分布 $p(x_t | x_0)$ 可以解析计算(这是扩散模型的核心技巧)
参考资料
后记
这只是 Diffusion Models 的入门介绍,后续我会继续分享:
- Classifier-Free Guidance (CFG) 详解
- Cifar10/CelebA-64 实战经验
- Dit/Sit 相较 U-Net训练差异
敬请期待!