跳转至

第20章:深度生成模型

20.1 引言

生成模型(Generative Models)是深度学习中一类重要的模型,其目标是学习数据的真实分布 \(p_{\text{data}}(\mathbf{x})\),从而能够生成与真实数据相似的新样本。与判别模型不同,生成模型需要建模联合概率分布 \(p(\mathbf{x})\) 而非条件概率分布 \(p(y \mid \mathbf{x})\)。这一特性使得生成模型在表示学习、异常检测、数据增强和强化学习等领域有着广泛的应用。

深度生成模型的发展经历了多个重要阶段。从早期的玻尔兹曼机(Boltzmann Machines)到变分自编码器(VAE)和生成对抗网络(GAN),再到基于流的模型(Flow Models)和自回归模型(Autoregressive Models),研究者们提出了多种方法来处理复杂的概率分布建模问题。本章将系统性地介绍这些深度生成模型的理论基础、算法原理和关键技术。

深度生成模型的核心挑战在于如何在高维空间中高效地表示和采样复杂的概率分布。不同的模型采用了不同的策略来应对这一挑战:玻尔兹曼机利用能量函数定义概率分布;VAE通过变分推断近似后验分布;GAN通过对抗训练隐式地学习分布;自回归模型将联合分布分解为条件分布的乘积;流模型则通过可逆变换构建精确的对数似然。

20.2 玻尔兹曼机与深度玻尔兹曼机

20.2.1 玻尔兹曼机的基本原理

玻尔兹曼机(Boltzmann Machine)是一类基于能量的无向图模型,最早由Hinton和Sejnowski于1983年提出。其核心思想是通过一个能量函数(Energy Function)来定义概率分布。给定一个二值随机变量集合 \(\mathbf{v} \in \{0,1\}^n\),玻尔兹曼机的能量函数定义为:

\[ E(\mathbf{v}) = -\frac{1}{2}\mathbf{v}^\top \mathbf{W}\mathbf{v} - \mathbf{b}^\top \mathbf{v} \]

其中 \(\mathbf{W}\) 是对称权重矩阵(无自连接,即 \(W_{ii}=0\)),\(\mathbf{b}\) 是偏置向量。模型定义的概率分布为:

\[ p(\mathbf{v}) = \frac{1}{Z}\exp\left(-E(\mathbf{v})\right), \quad Z = \sum_{\mathbf{v'}} \exp\left(-E(\mathbf{v'})\right) \]

其中 \(Z\)配分函数(Partition Function),用于归一化概率分布。

20.2.2 受限玻尔兹曼机

受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)是一种特殊的玻尔兹曼机,其结构被限制为二分图:所有可见单元(Visible Units)和所有隐藏单元(Hidden Units)之间存在连接,但同一层内的单元之间不存在连接。这种结构使得RBM的训练变得相对高效。

RBM的能量函数定义为:

\[ E(\mathbf{v}, \mathbf{h}) = -\mathbf{b}^\top \mathbf{v} - \mathbf{c}^\top \mathbf{h} - \mathbf{h}^\top \mathbf{W}\mathbf{v} \]

其中 \(\mathbf{v}\) 是可见单元,\(\mathbf{h}\) 是隐藏单元,\(\mathbf{b}\)\(\mathbf{c}\) 分别是可见层和隐藏层的偏置。条件概率分布为:

\[ p(\mathbf{h} \mid \mathbf{v}) = \prod_j p(h_j = 1 \mid \mathbf{v}) = \prod_j \sigma\left(c_j + \sum_i W_{ij}v_i\right) \]
\[ p(\mathbf{v} \mid \mathbf{h}) = \prod_i p(v_i = 1 \mid \mathbf{h}) = \prod_i \sigma\left(b_i + \sum_j W_{ij}h_j\right) \]

其中 \(\sigma(x) = 1/(1 + \exp(-x))\) 是sigmoid函数。

RBM的训练通常使用对比散度(Contrastive Divergence, CD)算法,该算法通过Gibbs采样近似梯度:

\[ \Delta W_{ij} = \epsilon \left(\langle v_i h_j \rangle_{\text{data}} - \langle v_i h_j \rangle_{\text{recon}} \right) \]

其中 \(\langle \cdot \rangle_{\text{data}}\) 表示数据分布下的期望,\(\langle \cdot \rangle_{\text{recon}}\) 表示模型重构分布下的期望。

20.2.3 深度玻尔兹曼机

深度玻尔兹曼机(Deep Boltzmann Machine, DBM)是多个RBM堆叠而成的深层无向图模型。与深度信念网络不同,DBM是一个真正的无向模型,所有层之间的连接都是对称的。

DBM的能量函数为:

\[ E(\mathbf{v}, \mathbf{h}^{(1)}, \mathbf{h}^{(2)}, \ldots, \mathbf{h}^{(L)}) = -\sum_{i,j} W^{(1)}_{ij} v_i h^{(1)}_j - \sum_{l=2}^{L}\sum_{j,k} W^{(l)}_{jk} h^{(l-1)}_j h^{(l)}_k \]

DBM的推理通常使用变分推断,通过平均场近似来近似后验分布。DBM的一个重要特性是它是层次化表示学习的有效工具,能够学习越来越抽象的数据表示。

20.3 深度信念网络

深度信念网络(Deep Belief Network, DBN)是由Hinton等人于2006年提出的混合模型。DBN由多个受限玻尔兹曼机堆叠而成,但其顶部是一个真正的无向连接层,形成了一个有向-无向混合结构。

DBN的顶层是一个无向的RBM,底层到顶层之间的连接是有向的(自下而上的识别连接,识别连接是自上而下的生成连接)。具体来说,一个 \(L\) 层的DBN可以看作由 \(L-1\) 个RBM堆叠而成,顶层的RBM定义了联合分布:

\[ P(\mathbf{h}^{(L-1)}, \mathbf{h}^{(L)}) = \frac{1}{Z}\exp\left(\mathbf{h}^{(L-1)\top}\mathbf{W}^{(L)}\mathbf{h}^{(L)}\right) \]

DBN的预训练过程使用贪心逐层训练算法:首先训练第一个RBM,然后将其隐藏单元作为下一个RBM的可见单元进行训练,以此类推。这一过程可以看作是对深度网络进行初始化,避免了随机初始化导致的训练困难。

DBN的一个重要应用是作为特征提取器:训练好的DBN可以将其每层的激活值作为数据的层次化表示,这些表示可以用于分类、检索等下游任务。

20.4 生成对抗网络

20.4.1 GAN的基本框架与 minimax 博弈

生成对抗网络(Generative Adversarial Network, GAN)由Goodfellow等人于2014年提出,是深度生成模型领域的重要突破。GAN的核心思想是通过两个神经网络的对抗训练来学习数据分布。

GAN包含两个网络:生成器(Generator, \(G\))和判别器(Discriminator, \(D\))。生成器 \(G(\mathbf{z})\) 接收随机噪声 \(\mathbf{z} \sim p_z(\mathbf{z})\) 作为输入,输出生成的样本 \(\mathbf{x}_g\)。判别器 \(D(\mathbf{x})\) 接收真实样本或生成样本,输出样本为真实的概率。

GAN的训练目标是一个极小极大博弈(Minimax Game):

\[ \min_G \max_D V(D, G) = \mathbb{E}_{\mathbf{x}\sim p_{\text{data}}(\mathbf{x})}[\log D(\mathbf{x})] + \mathbb{E}_{\mathbf{z}\sim p_z(\mathbf{z})}[\log(1 - D(G(\mathbf{z})))] \]

20.4.2 Jensen-Shannon散度与全局最优解

GAN的优化目标与 Jensen-Shannon散度(JS散度)密切相关。JS散度是两个概率分布相似度的度量,定义为:

\[ \text{JS}(p_{\text{data}} \| p_g) = \frac{1}{2}\text{KL}(p_{\text{data}} \| M) + \frac{1}{2}\text{KL}(p_g \| M) \]

其中 \(M = \frac{1}{2}(p_{\text{data}} + p_g)\)\(\text{KL}\) 是KL散度。

当判别器最优时,GAN的优化目标等价于最小化 \(2\text{JS}(p_{\text{data}} \| p_g) - 2\log 2\)。这揭示了GAN与JS散度的内在联系。

全局最优解发生在当 \(p_g = p_{\text{data}}\) 时,此时 \(D^*(\mathbf{x}) = \frac{1}{2}\) 对所有 \(\mathbf{x}\) 成立,生成器的最小值变为 \(-4\log 2\)(加上常数项后为零)。

20.4.3 模式崩溃与训练不稳定

GAN训练面临两个主要问题:模式崩溃(Mode Collapse)和训练不稳定

模式崩溃指生成器开始生成高度相似的样本,忽略了数据分布的某些模式。这发生在JS散度无法准确衡量分布差异时:当两个分布完全不重叠时,JS散度恒为 \(\log 2\),导致梯度消失。

训练不稳定源于判别器和生成器的同步训练问题。当判别器过强时,生成器的梯度消失;当判别器过弱时,梯度方向不可靠。

20.4.4 WGAN与Wasserstein距离

WGAN(Wasserstein GAN)提出使用 Wasserstein距离(也称Earth-Mover距离)替代JS散度来衡量分布差异:

\[ W(p_{\text{data}}, p_g) = \inf_{\gamma \in \Pi(p_{\text{data}}, p_g)} \mathbb{E}_{(\mathbf{x}, \mathbf{y})\sim\gamma}[\|\mathbf{x} - \mathbf{y}\|] \]

WGAN使用权重裁剪(Weight Clipping)来满足判别器的Lipschitz约束,但这种方法可能导致梯度爆炸或消失。WGAN-GP(Wasserstein GAN with Gradient Penalty)通过添加梯度惩罚项来更稳定地满足Lipschitz约束:

\[ L = \mathbb{E}_{\tilde{\mathbf{x}}}[D(\tilde{\mathbf{x}})] - \mathbb{E}_{\mathbf{x}}[D(\mathbf{x})] + \lambda \mathbb{E}_{\hat{\mathbf{x}}}[(\|\nabla_{\hat{\mathbf{x}}}D(\hat{\mathbf{x}})\|_2 - 1)^2] \]

其中 \(\hat{\mathbf{x}}\) 是真实样本和生成样本之间的插值点。

20.4.5 DCGAN与深度卷积架构

DCGAN(Deep Convolutional GAN)将卷积神经网络引入GAN,提出了多项架构改进:

  • 转置卷积(Transposed Convolution)替代生成器中的全连接层
  • 批归一化(Batch Normalization)稳定训练
  • 移除全连接层,使用全局池化
  • 使用LeakyReLU激活函数替代ReLU

DCGAN首次证明了GAN可以在ImageNet等复杂数据集上生成高质量图像。

20.4.6 条件GAN与InfoGAN

CGAN(Conditional GAN)在生成器和判别器中都加入了条件信息 \(\mathbf{y}\)

\[ \min_G \max_D V(D, G) = \mathbb{E}_{\mathbf{x}\sim p_{\text{data}}}[\log D(\mathbf{x} \mid \mathbf{y})] + \mathbb{E}_{\mathbf{z}\sim p_z}[\log(1 - D(G(\mathbf{z} \mid \mathbf{y})))] \]

InfoGAN进一步提出通过最大化互信息(Mutual Information)来学习可解释的隐变量:

\[ \min_G \max_D V_{\text{Info}}(D, G) = V(D, G) - \lambda I(\mathbf{c}; G(\mathbf{z}, \mathbf{c})) \]

其中 \(\mathbf{c}\) 是隐编码,\(I\) 是互信息。通过这一机制,InfoGAN能够无监督地学习有意义的表示(如数字的旋转角度、亮度等)。

20.5 变分自编码器

20.5.1 变分推断与ELBO

变分自编码器(Variational Autoencoder, VAE)是一种结合了自编码器和变分推断的生成模型。VAE的核心思想是将隐变量 \(\mathbf{z}\) 引入生成过程,通过变分推断近似后验分布。

VAE假设数据由以下生成过程产生:

  1. 从先验分布 \(p(\mathbf{z})\) 中采样隐变量 \(\mathbf{z}\)
  2. 从条件分布 \(p(\mathbf{x} \mid \mathbf{z})\) 中生成数据 \(\mathbf{x}\)

然而,直接计算后验分布 \(p(\mathbf{z} \mid \mathbf{x}) = \frac{p(\mathbf{x} \mid \mathbf{z})p(\mathbf{z})}{p(\mathbf{x})}\) 是 intractable 的,因为 \(p(\mathbf{x}) = \int p(\mathbf{x} \mid \mathbf{z})p(\mathbf{z})d\mathbf{z}\) 难以计算。

VAE使用变分推断,引入近似后验 \(q_\phi(\mathbf{z} \mid \mathbf{x})\) 来近似真实的 \(p(\theta \mid \mathbf{x})\)。通过最大化证据下界(Evidence Lower Bound, ELBO)来训练模型:

\[ \log p_\theta(\mathbf{x}) \geq \mathcal{L}(\theta, \phi; \mathbf{x}) = \mathbb{E}_{q_\phi(\mathbf{z} \mid \mathbf{x})}[\log p_\theta(\mathbf{x} \mid \mathbf{z})] - \text{KL}(q_\phi(\mathbf{z} \mid \mathbf{x}) \| p(\mathbf{z})) \]

ELBO包含两项:重构项(Reconstruction Term)和正则化项(Regularization Term)。

20.5.2 重参数化技巧

变分推断中的一个关键挑战是从 \(q_\phi(\mathbf{z} \mid \mathbf{x})\) 中采样 \(\mathbf{z}\) 的操作不可导。重参数化技巧(Reparameterization Trick)通过将随机变量表示为确定性变换解决了这一问题:

\[ \mathbf{z} = \mu_\phi(\mathbf{x}) + \sigma_\phi(\mathbf{x}) \odot \boldsymbol{\epsilon}, \quad \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) \]

其中 \(\mu_\phi\)\(\sigma_\phi\) 是由神经网络参数化的函数,\(\odot\) 表示逐元素乘法。

20.5.3 后验collapse问题

后验collapse(Posterior Collapse)是VAE训练中的一个常见问题,指近似后验 \(q_\phi(\mathbf{z} \mid \mathbf{x})\) 退化为先验分布 \(p(\mathbf{z})\),导致重构项失效。这一问题在高容量生成器或弱编码器时尤为严重。

解决后验collapse的方法包括:

  • β-VAE:引入加权系数 \(\beta\) 平衡重构和正则化
  • 跳过连接:在编码器和解码器之间添加直接连接
  • 优化顺序:先训练编码器再训练解码器

20.6 自回归模型

20.6.1 自回归模型的基本原理

自回归模型(Autoregressive Models)将联合概率分布分解为条件概率的乘积:

\[ p(\mathbf{x}) = \prod_{i=1}^{n} p(x_i \mid x_1, x_2, \ldots, x_{i-1}) \]

这种分解避免了对归一化常数 \(p(\mathbf{x})\) 的直接计算,使得模型可以精确计算对数似然 \(\log p(\mathbf{x})\)。自回归模型的核心是建模每个条件分布 \(p(x_i \mid \mathbf{x}_{<i})\)

20.6.2 NADE与MADE

NADE(Neural Autoregressive Density Estimator)使用神经网络参数化条件分布:

\[ p(x_i \mid \mathbf{x}_{<i}) = \sigma\left(W_{:,i}\mathbf{h}_i + b_i\right) \]

其中 \(\mathbf{h}_i = \sigma\left(W_{:,<i}\mathbf{x}_{<i} + \mathbf{b}\right)\) 是隐藏激活。

MADE(Masked Autoregressive Density Estimator)通过掩码(Masking)技术使标准前馈网络能够执行自回归计算。通过在网络的权重矩阵上应用二元掩码,MADE确保每个输出只依赖于对应的输入子集。

20.6.3 PixelCNN与WaveNet

PixelCNN使用卷积神经网络建模图像像素的条件分布。PixelCNN采用因果卷积(Causal Convolution),确保每个像素只依赖于其前面的像素:

\[ p(\mathbf{x}) = \prod_{i=1}^{n^2} p(x_i \mid x_1, \ldots, x_{i-1}) \]

WaveNet进一步将因果卷积扩展到音频生成,使用膨胀因果卷积(Dilated Causal Convolution)来增加感受野:

\[ \mathbf{h}_{i+1} = \text{DilatedConv}(\mathbf{h}_i, \text{dilation} = 2^i) \]

20.6.4 Transformer与自注意力

Transformer完全基于自注意力机制(Self-Attention)建模序列数据。给定输入序列 \(\mathbf{x} = (x_1, \ldots, x_n)\),Transformer计算:

\[ \text{Attention}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{softmax}\left(\frac{\mathbf{Q}\mathbf{K}^\top}{\sqrt{d_k}}\right)\mathbf{V} \]

其中 \(\mathbf{Q} = \mathbf{X}\mathbf{W}_Q\)\(\mathbf{K} = \mathbf{X}\mathbf{W}_K\)\(\mathbf{V} = \mathbf{X}\mathbf{W}_V\) 是查询、键、值矩阵。Transformer通过多层自注意力和前馈网络建模复杂的条件依赖关系。

20.7 流模型与分数匹配

20.7.1 可逆流模型的基本原理

流模型(Flow Models)通过一系列可逆变换(Invertible Transformations)将简单分布转换为复杂分布。给定一个可逆变换 \(f: \mathbf{x} \mapsto \mathbf{z}\),其逆为 \(f^{-1}: \mathbf{z} \mapsto \mathbf{x}\),则:

\[ \log p_\theta(\mathbf{x}) = \log p(\mathbf{z}) + \log\left|\det\frac{\partial f^{-1}}{\partial \mathbf{x}}\right| = \log p(\mathbf{z}) - \log\left|\det\frac{\partial f}{\partial \mathbf{z}}\right| \]

其中 \(\mathbf{z} = f(\mathbf{x})\) 服从简单先验分布 \(p(\mathbf{z})\)

20.7.2 NICE与RealNVP

NICE(Non-linear Independent Components Estimation)提出了加性耦合层(Additive Coupling Layer):

\[ \mathbf{z}_{1:d} = \mathbf{x}_{1:d} $$ $$ \mathbf{z}_{d+1:n} = \mathbf{x}_{d+1:n} + m(\mathbf{x}_{1:d}) \]

其中 \(m\) 是一个神经网络。这种变换的雅可比行列式为1,对数行列式为零。

RealNVP(Real-valued Non-Volume Preserving)进一步提出了仿射耦合层(Affine Coupling Layer):

\[ \mathbf{z}_{1:d} = \mathbf{x}_{1:d} $$ $$ \mathbf{z}_{d+1:n} = \mathbf{x}_{d+1:n} \odot \exp(s(\mathbf{x}_{1:d})) + t(\mathbf{x}_{1:d}) \]

其中 \(s\)\(t\) 是神经网络。其对数行列式为 \(\sum_j s(\mathbf{x}_{1:d})_j\)

20.7.3 Glow与多尺度架构

Glow(Generative Flow with Invertible 1x1 Convolutions)引入了可逆1x1卷积来增强模型容量:

\[ \mathbf{z} = \mathbf{W}\mathbf{x} \]

其中 \(\mathbf{W}\) 是可学习的 \(c \times c\) 矩阵,其对数行列式为 \(\log|\det(\mathbf{W})|\)。Glow还采用了多尺度架构,在多个尺度上分别进行变换,提高了生成效率。

20.7.4 分数匹配与Langevin动力学

分数匹配(Score Matching)是一种无需计算归一化常数即可学习能量模型的方法。对于能量函数 \(E_\theta(\mathbf{x})\) 定义的概率分布 \(p_\theta(\mathbf{x}) = \frac{1}{Z(\theta)}\exp(-E_\theta(\mathbf{x}))\),分数匹配目标为:

\[ \mathcal{L}(\theta) = \mathbb{E}_{p_{\text{data}}}\left[\frac{1}{2}\|\nabla_\mathbf{x}\log p_\theta(\mathbf{x})\|^2 + \text{tr}(\nabla_\mathbf{x}^2 E_\theta(\mathbf{x}))\right] \]

Langevin动力学是一种基于分数的采样方法:

\[ \mathbf{x}_{t+1} = \mathbf{x}_t + \epsilon \nabla_\mathbf{x}\log p(\mathbf{x}_t) + \sqrt{2\epsilon}\mathbf{z}_t, \quad \mathbf{z}_t \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) \]

去噪分数匹配(Denoising Score Matching)通过添加噪声来稳定训练:

\[ \mathcal{L}(\theta) = \mathbb{E}_{p_{\text{data}}, \tilde{\mathbf{x}}}[\|\nabla_{\tilde{\mathbf{x}}}\log p_\theta(\tilde{\mathbf{x}} \mid \tilde{\mathbf{x}} - \mathbf{x})\|^2] \]

公式汇总表

模型类别 核心公式 关键特性
RBM \(p(\mathbf{h}\|\mathbf{v}) = \sigma(\mathbf{c} + \mathbf{W}\mathbf{v})\) 对比散度训练
DBN \(P(\mathbf{h}^{(L-1)}, \mathbf{h}^{(L)}) = \frac{1}{Z}\exp(\mathbf{h}^{(L-1)\top}\mathbf{W}^{(L)}\mathbf{h}^{(L)})\) 贪心逐层预训练
GAN \(\min_G\max_D V(D,G) = \mathbb{E}[\log D(\mathbf{x})] + \mathbb{E}[\log(1-D(G(\mathbf{z})))]\) 对抗训练
WGAN $W(p,q) = \inf_{\gamma\in\Pi(p,q)}\mathbb{E}_{(\mathbf{x},\mathbf{y})\sim\gamma}[\ \mathbf{x}-\mathbf{y}\
VAE \(\log p(\mathbf{x}) \geq \mathcal{L} = \mathbb{E}_q[\log p(\mathbf{x}\|\mathbf{z})] - \text{KL}(q\|p)\) 重参数化技巧
NADE \(p(x_i\|\mathbf{x}_{<i}) = \sigma(\mathbf{W}_{:,i}\mathbf{h}_i + b_i)\) 神经网络参数化
Flow \(\log p_\theta(\mathbf{x}) = \log p(\mathbf{z}) - \log\|\det\frac{\partial f}{\partial\mathbf{z}}\|\) 可逆变换
Score Matching $\mathcal{L} = \mathbb{E}[\frac{1}{2}\ \nabla\log p_\theta(\mathbf{x})\

20.8 小结

深度生成模型是现代深度学习的重要组成部分,在图像生成、音频合成、自然语言处理等领域取得了显著成就。本章介绍了主要的深度生成模型家族:玻尔兹曼机深度玻尔兹曼机通过能量函数建模概率分布;深度信念网络利用贪心逐层训练初始化深层网络;生成对抗网络通过对抗训练学习复杂分布;变分自编码器结合变分推断和自编码器结构;自回归模型通过分解联合分布精确计算似然;流模型通过可逆变换构建精确可解的生成过程;分数匹配和Langevin动力学提供了无需归一化常数的学习框架。

每种模型都有其优势和局限:GAN能够生成高质量样本但训练困难;VAE具有编码器-解码器结构但可能遭受后验崩塌;自回归模型精确可解但采样慢;流模型精确可逆但计算量大。选择合适的模型需要根据具体应用场景权衡生成质量、计算效率和模型灵活性等因素。