神经网络与深度学习:神经网络基础(第9讲)

3074 个字
15 分钟
神经网络与深度学习:神经网络基础(第9讲)

神经网络与深度学习:深度生成模型(第 9 讲)#

本讲核心内容

深度生成模型旨在学习数据的概率分布 P(x)P(x),从而能够生成新的样本。本讲涵盖三大主流框架:

  • 自回归模型(Autoregressive Models):显式建模可分解密度

  • 变分自编码器(VAE):通过变分推断近似隐变量后验

  • 生成对抗网络(GAN):通过对抗训练隐式学习分布

一、生成模型概述#

1.1 判别模型 vs 生成模型#

判别模型(Discriminative)

  • 建模条件概率 P(yx)P(y|x)

  • 直接学习决策边界

  • 目标:对输入进行分类或回归

  • 代表:Logistic Regression, SVM, CNN 分类器

生成模型(Generative)

  • 建模联合概率 P(x)P(x)P(x,z)P(x, z)

  • 学习数据的完整分布

  • 目标:能够生成新的逼真样本

  • 代表:VAE, GAN, Flow Models

1.2 生成模型分类体系#

| 类别 | 方法 | 核心思想 | 代表模型 | | ------------ | ---------- | ------------------------------- | ------------------- | --------------------------- | | 显式-可解析 | 自回归分解 | P(x)=_iP(xix1,...,xi1)P(x) = \prod\_{i} P(x_i | x*1, ..., x*{i-1}) | PixelRNN, PixelCNN, WaveNet | | 显式-近似 | 变分推断 | 引入隐变量,最大化证据下界 ELBO | VAE, NVIL | | 隐式密度 | 对抗训练 | 生成器与判别器博弈 | GAN, WGAN, DCGAN |


二、变分自编码器(VAE)#

2.1 自编码器回顾#

传统自编码器(Autoencoder)通过编码器将输入压缩为低维表示 z=fθ(x)z = f_\theta(x),再通过解码器重建 x^=gϕ(z)\hat{x} = g_\phi(z)。训练目标是最小化重建误差:

LAE=xgϕ(fθ(x))2\mathcal{L}_{AE} = \|x - g_\phi(f_\theta(x))\|^2

传统自编码器的问题

  • 隐空间缺乏结构:不同样本的编码可能不连续、不规整

  • 无法从隐空间随机采样生成有意义的新样本

  • 没有概率解释,不是真正的生成模型

2.2 VAE 的核心思想#

VAE 的关键创新:不再将输入编码为确定性的点,而是编码为一个概率分布。编码器输出隐变量的均值 μ\mu 和方差 σ2\sigma^2,从该分布中采样得到 zz

2.3 数学框架#

2.3.1 生成模型假设#

假设数据由如下过程生成:

  1. 从先验分布采样隐变量:zp(z)=N(0,I)z \sim p(z) = \mathcal{N}(0, I)

  2. 由隐变量生成观测数据:xpθ(xz)x \sim p_\theta(x|z)

数据的边际似然为:

pθ(x)=pθ(xz)p(z)dzp_\theta(x) = \int p_\theta(x|z) p(z) \, dz

关键困难:该积分在高维空间中不可解析计算(intractable),因为需要对所有可能的 zz 求积分。同样,真实后验 pθ(zx)=pθ(xz)p(z)pθ(x)p_\theta(z|x) = \frac{p_\theta(x|z)p(z)}{p_\theta(x)} 也不可解。

2.3.2 变分推断#

引入一个可学习的近似后验分布 qϕ(zx)q_\phi(z|x)(由编码器参数化),来近似真实后验 pθ(zx)p_\theta(z|x)

对数据对数似然进行分解:

logpθ(x)=Eqϕ(zx)[logpθ(x,z)qϕ(zx)]+DKL(qϕ(zx)pθ(zx))\log p_\theta(x) = \mathbb{E}_{q_\phi(z|x)}\left[\log \frac{p_\theta(x, z)}{q_\phi(z|x)}\right] + D_{KL}(q_\phi(z|x) \| p_\theta(z|x))

由于 KL 散度非负,我们得到证据下界(ELBO)

ELBO(Evidence Lower BOund)

logpθ(x)Eqϕ(zx)[logpθ(xz)]重建项DKL(qϕ(zx)p(z))正则化项=ELBO\log p_\theta(x) \geq \underbrace{\mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)]}_{\text{重建项}} - \underbrace{D_{KL}(q_\phi(z|x) \| p(z))}_{\text{正则化项}} = \text{ELBO}

  • 重建项:鼓励解码器从 z 准确重建 x

  • KL 散度项:迫使近似后验接近先验 N(0,I)\mathcal{N}(0, I),保证隐空间的规整性

2.3.3 KL 散度解析解#

qϕ(zx)=N(μ,diag(σ2))q_\phi(z|x) = \mathcal{N}(\mu, \text{diag}(\sigma^2))p(z)=N(0,I)p(z) = \mathcal{N}(0, I) 时,KL 散度有解析解:

DKL(qϕ(zx)p(z))=12j=1J(1+logσj2μj2σj2)D_{KL}(q_\phi(z|x) \| p(z)) = -\frac{1}{2} \sum_{j=1}^{J} \left(1 + \log \sigma_j^2 - \mu_j^2 - \sigma_j^2\right)

其中 JJ 是隐变量维度。

2.4 重参数化技巧(Reparameterization Trick)#

问题:训练中需要对 ELBO 求梯度,但采样操作 zqϕ(zx)z \sim q_\phi(z|x) 是随机的,梯度无法通过随机采样节点反向传播。

解决方案:将随机性从计算图中分离出来:

z=μ+σϵ,ϵN(0,I)z = \mu + \sigma \odot \epsilon, \quad \epsilon \sim \mathcal{N}(0, I)

不可微路径

zN(μ,σ2)z \sim \mathcal{N}(\mu, \sigma^2)

梯度被随机采样阻断

重参数化路径

z=μ+σϵz = \mu + \sigma \odot \epsilon

梯度可通过 μ\muσ\sigma 正常流动

2.5 VAE 训练目标#

最终的训练损失为负 ELBO:

LVAE(θ,ϕ;x)=Eqϕ(zx)[logpθ(xz)]+DKL(qϕ(zx)p(z))\mathcal{L}_{VAE}(\theta, \phi; x) = -\mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] + D_{KL}(q_\phi(z|x) \| p(z))

实际训练中使用蒙特卡洛估计重建项(通常单次采样即可):

Llogpθ(xz(l))+DKL(qϕ(zx)p(z)),z(l)=μ+σϵ(l)\mathcal{L} \approx -\log p_\theta(x | z^{(l)}) + D_{KL}(q_\phi(z|x) \| p(z)), \quad z^{(l)} = \mu + \sigma \odot \epsilon^{(l)}

| 组件 | 具体形式 | 作用 | | ------------------- | ------------------- | -------------------------------- | ---------------- | | 编码器 q_ϕ(zx)q\_\phi(z | x) | 输出 μ,logσ2\mu, \log\sigma^2 | 近似后验推断 | | 解码器 p_θ(xz)p\_\theta(x | z) | Bernoulli(二值图像)或 Gaussian | 由隐变量重建数据 | | 先验 p(z)p(z) | N(0,I)\mathcal{N}(0, I) | 正则化隐空间 | | 重建损失 | 交叉熵或 MSE | 保证重建质量 | | KL 损失 | 解析公式 | 保证隐空间连续可采样 |


三、生成对抗网络(GAN)#

3.1 基本思想#

GAN 的核心思想来源于博弈论:训练两个相互对抗的网络。

生成器 G(Generator)

  • 输入:随机噪声 zpz(z)z \sim p_z(z)(通常为高斯或均匀分布)

  • 输出:伪造样本 G(z)G(z)

  • 目标:生成尽可能逼真的样本,欺骗判别器

判别器 D(Discriminator)

  • 输入:真实样本 x 或生成样本 G(z)

  • 输出:样本为真实的概率 D(x)[0,1]D(x) \in [0, 1]

  • 目标:准确区分真实样本和伪造样本

3.2 目标函数(Minimax Game)#

GAN 目标函数

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

  • 判别器 D 试图最大化V(D,G)V(D,G):正确分类真假样本

  • 生成器 G 试图最小化V(D,G)V(D,G):让 D(G(z))D(G(z)) 尽可能大

3.3 最优判别器#

固定 G,对 V(D,G)V(D, G) 关于 D 求最优解:

D(x)=pdata(x)pdata(x)+pg(x)D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_g(x)}

推导:对于任意 x,VV 关于 D(x)D(x) 的被积函数为 f(D)=pdata(x)logD+pg(x)log(1D)f(D) = p_{data}(x)\log D + p_g(x)\log(1-D),对 D 求导令其为零:

pdata(x)Dpg(x)1D=0    D(x)=pdata(x)pdata(x)+pg(x)\frac{p_{data}(x)}{D} - \frac{p_g(x)}{1-D} = 0 \implies D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_g(x)}

3.4 全局最优与 JS 散度#

DD^* 代入 V(D,G)V(D^*, G)

V(D,G)=Expdata[logpdata(x)pdata(x)+pg(x)]+Expg[logpg(x)pdata(x)+pg(x)]V(D^*, G) = \mathbb{E}_{x \sim p_{data}}\left[\log \frac{p_{data}(x)}{p_{data}(x) + p_g(x)}\right] + \mathbb{E}_{x \sim p_g}\left[\log \frac{p_g(x)}{p_{data}(x) + p_g(x)}\right]

=log4+2DJS(pdatapg)= -\log 4 + 2 \cdot D_{JS}(p_{data} \| p_g)

关键结论:在最优判别器下,最小化生成器的目标等价于最小化 pdatap_{data}pgp_g 之间的 Jensen-Shannon 散度。当且仅当 pg=pdatap_g = p_{data} 时,V(D,G)V(D^*, G) 达到全局最小值 log4-\log 4

3.5 训练算法#

GAN 的训练采用交替优化:

  1. 从真实数据采样 mini-batch {x(1),...,x(m)}\{x^{(1)}, ..., x^{(m)}\}

  2. 从噪声分布采样 {z(1),...,z(m)}\{z^{(1)}, ..., z^{(m)}\}

  3. 更新判别器(梯度上升):θd1mi=1m[logD(x(i))+log(1D(G(z(i))))]\nabla_{\theta_d} \frac{1}{m} \sum_{i=1}^{m} \left[\log D(x^{(i)}) + \log(1 - D(G(z^{(i)})))\right]

  4. 重新采样噪声 {z(1),...,z(m)}\{z^{(1)}, ..., z^{(m)}\}

  5. 更新生成器(梯度下降):θg1mi=1mlog(1D(G(z(i))))\nabla_{\theta_g} \frac{1}{m} \sum_{i=1}^{m} \log(1 - D(G(z^{(i)})))

实践技巧:在训练初期,GG 很弱,D(G(z))0D(G(z)) \approx 0,此时 log(1D(G(z)))\log(1-D(G(z))) 的梯度饱和(接近于 0)。实践中**最大化 **logD(G(z))\log D(G(z)) 代替最小化 log(1D(G(z)))\log(1-D(G(z))),能提供更强的梯度信号。

3.6 GAN 的主要问题#

问题描述表现
模式崩塌
Mode Collapse
生成器只学会生成少数几种样本,忽略数据分布的多样性生成的图像缺乏多样性
训练不稳定G 和 D 的平衡难以维持,容易出现振荡损失曲线震荡不收敛
无收敛保证minimax 博弈在一般神经网络参数化下不保证收敛到纳什均衡训练难以判断何时终止
评估困难缺乏明确的量化指标判断生成质量需要 FID、IS 等辅助指标

四、GAN 变体#

4.1 DCGAN(Deep Convolutional GAN)#

DCGAN 将卷积网络引入 GAN 框架,是第一个成功稳定训练 GAN 的卷积架构。

DCGAN 架构指南

  • 步幅卷积(strided convolution)替代池化层

  • G 和 D 中均使用 Batch Normalization

  • 去除全连接层(最后一层除外)

  • 生成器使用 ReLU 激活(最后一层 Tanh)

  • 判别器使用 LeakyReLU 激活

生成器结构:噪声向量 zR100z \in \mathbb{R}^{100} 经过多层转置卷积(反卷积)逐步上采样为图像:

zReshape4×4×1024DeConv8×8×512DeConv16×16×256DeConv32×32×128DeConv64×64×3z \xrightarrow{\text{Reshape}} 4\times4\times1024 \xrightarrow{\text{DeConv}} 8\times8\times512 \xrightarrow{\text{DeConv}} 16\times16\times256 \xrightarrow{\text{DeConv}} 32\times32\times128 \xrightarrow{\text{DeConv}} 64\times64\times3

4.2 WGAN(Wasserstein GAN)#

JS 散度的缺陷#

问题:当 pdatap_{data}pgp_g 的支撑集不重叠时(高维空间中几乎总是如此),JS 散度恒等于 log2\log 2,梯度为 0,导致生成器无法学习。

Wasserstein 距离#

Earth Mover’s Distance(推土机距离):衡量将一个分布”搬运”成另一个分布所需的最小工作量:

W(pdata,pg)=infγΠ(pdata,pg)E(x,y)γ[xy]W(p_{data}, p_g) = \inf_{\gamma \in \Pi(p_{data}, p_g)} \mathbb{E}_{(x,y) \sim \gamma}[\|x - y\|]

其中 Π(pdata,pg)\Pi(p_{data}, p_g) 是所有以 pdatap_{data}pgp_g 为边际分布的联合分布集合。

WGAN 目标函数#

利用 Kantorovich-Rubinstein 对偶性:

W(pdata,pg)=supfL1Expdata[f(x)]Expg[f(x)]W(p_{data}, p_g) = \sup_{\|f\|_L \leq 1} \mathbb{E}_{x \sim p_{data}}[f(x)] - \mathbb{E}_{x \sim p_g}[f(x)]

WGAN 目标

minGmaxDL1Expdata[D(x)]Ezpz[D(G(z))]\min_G \max_{\|D\|_L \leq 1} \mathbb{E}_{x \sim p_{data}}[D(x)] - \mathbb{E}_{z \sim p_z}[D(G(z))]

判别器(Critic)不再输出概率,而是输出实数得分。通过权重裁剪(weight clipping)w[c,c]w \in [-c, c] 来强制 Lipschitz 约束。

WGAN 的优势#

  • Wasserstein 距离在分布不重叠时仍能提供有意义的梯度

  • 训练更稳定,损失曲线与生成质量相关

  • 减少模式崩塌

4.3 CGAN(Conditional GAN)#

通过引入条件信息 yy(如类别标签),控制生成内容:

minGmaxDV(D,G)=Expdata[logD(xy)]+Ezpz[log(1D(G(zy)y))]\min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}}[\log D(x|y)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z|y)|y))]

  • 生成器:G(z,y)G(z, y),将噪声 z 和条件 y 拼接后生成

  • 判别器:D(x,y)D(x, y),同时接收样本和条件来判断真假

  • 应用:按类别生成特定数字、按文本描述生成图像

4.4 InfoGAN#

InfoGAN 通过最大化互信息来学习解耦的隐表示:

将噪声分为两部分:zz(不可压缩噪声)和 cc(隐编码)。目标是使 ccG(z,c)G(z, c) 之间的互信息最大:

minGmaxDV(D,G)λI(c;G(z,c))\min_G \max_D V(D, G) - \lambda I(c; G(z, c))

由于互信息不可直接计算,使用变分下界近似:

I(c;G(z,c))Ecp(c),xG(z,c)[logQ(cx)]+H(c)=LI(G,Q)I(c; G(z, c)) \geq \mathbb{E}_{c \sim p(c), x \sim G(z,c)}[\log Q(c|x)] + H(c) = L_I(G, Q)

其中 Q(cx)Q(c|x) 是辅助网络,用于从生成样本预测隐编码。

InfoGAN 的价值:无需标签即可自动发现数据中有意义的变化因子(如 MNIST 中的数字类型、倾斜角度、笔画粗细等)。

4.5 GAN 变体对比#

模型核心创新目标函数改进优势局限
DCGAN卷积架构设计原则无(原始 GAN 目标)训练更稳定,图像质量提升仍有模式崩塌
WGANWasserstein 距离替代 JS 散度Critic + weight clipping梯度有意义,损失可监控weight clipping 限制网络容量
CGAN条件信息引导生成G(z,y) 和 D(x,y)可控生成需要标签数据
InfoGAN最大化互信息学习解耦表示增加互信息正则项无监督发现语义因子训练复杂度增加

五、VAE vs GAN 对比#

维度VAEGAN
密度建模显式(近似):最大化 ELBO隐式:不直接建模密度
训练方式最大似然(变分推断)对抗博弈(minimax)
生成质量倾向模糊(均值回归效应)图像锐利、细节丰富
多样性覆盖性好(mode covering)易模式崩塌(mode dropping)
隐空间结构化、连续、可插值不保证连续性
训练稳定性稳定(标准 SGD 优化)不稳定(需精心调参)
评估可计算 ELBO 作为指标缺乏内在评估指标
数学基础变分推断、贝叶斯框架博弈论、对偶理论
典型应用表示学习、异常检测、插值高质量图像生成、超分辨率

六、GAN 应用#

6.1 图像超分辨率(SRGAN)#

SRGAN 使用对抗训练将低分辨率图像恢复为高分辨率图像。损失函数包含:

  • 内容损失:基于 VGG 特征的感知损失 LVGG=F(IHR)F(G(ILR))2\mathcal{L}_{VGG} = \|F(I^{HR}) - F(G(I^{LR}))\|^2

  • 对抗损失:使超分结果在判别器看来像真实高清图

6.2 图像修复(Image Inpainting)#

利用 GAN 填补图像中缺失或损坏的区域。生成器学习根据周围上下文信息合理补全内容,判别器确保补全部分与原图风格一致。

6.3 风格迁移(CycleGAN)#

CycleGAN 实现无配对的图像到图像翻译(如照片到油画、马到斑马)。核心创新:

  • 两对生成器-判别器:G:XYG: X \to YF:YXF: Y \to X

  • 循环一致性损失Lcyc=F(G(x))x1+G(F(y))y1\mathcal{L}_{cyc} = \|F(G(x)) - x\|_1 + \|G(F(y)) - y\|_1

  • 无需成对训练数据,只需两组无关联的图像集合

6.4 文本到图像生成(StackGAN)#

StackGAN 将文本描述转换为高分辨率图像,采用两阶段生成:

  1. Stage-I:根据文本编码生成低分辨率草图(64×6464 \times 64

  2. Stage-II:在草图基础上细化生成高分辨率图像(256×256256 \times 256


七、公式总结#

| 公式名称 | 表达式 | | ------------------- | --------------------------------------------------------------------------- | ------------ | ----------------- | ------------ | | VAE ELBO | logp(x)E_q(zx)[logp(xz)]D_KL(q(zx)p(z))\log p(x) \geq \mathbb{E}\_{q(z | x)}[\log p(x | z)] - D\_{KL}(q(z | x) \| p(z)) | | 重参数化 | z=μ+σϵ,ϵN(0,I)z = \mu + \sigma \odot \epsilon, \quad \epsilon \sim \mathcal{N}(0, I) | | KL 散度(高斯) | DKL=12j(1+logσj2μj2σj2)D_{KL} = -\frac{1}{2}\sum_j(1 + \log\sigma_j^2 - \mu_j^2 - \sigma_j^2) | | GAN 目标 | minGmaxDEx[logD(x)]+Ez[log(1D(G(z)))]\min_G \max_D \mathbb{E}_{x}[\log D(x)] + \mathbb{E}_{z}[\log(1-D(G(z)))] | | 最优判别器 | D(x)=pdata(x)pdata(x)+pg(x)D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_g(x)} | | WGAN 目标 | minGmaxDL1Ex[D(x)]Ez[D(G(z))]\min_G \max_{\|D\|_L \leq 1} \mathbb{E}_x[D(x)] - \mathbb{E}_z[D(G(z))] | | CycleGAN 循环一致性 | F(G(x))x1+G(F(y))y1\|F(G(x)) - x\|_1 + \|G(F(y)) - y\|_1 |

(注:内容由 AI 生成,请谨慎参考)

分享到社交平台

将本文分享给你的朋友们

神经网络与深度学习:神经网络基础(第9讲)
https://firefly.cuteleaf.cn/posts/神经网络/神经网络与深度学习深度生成模型第9讲/
作者
Zhongye
发布于
2026-06-07
版权声明
CC BY-NC-SA 4.0
相关文章 智能推荐
1
神经网络与深度学习:神经网络基础(第7-8讲)
神经网络 本节涵盖循环神经网络(RNN)的核心内容,包括基本RNN结构与训练方法、梯度消失/爆炸问题、LSTM与GRU门控机制、以及RNN的主要应用模式。掌握这些内容是理解序列建模和后续Transformer架构的基础
2
神经网络与深度学习:神经网络基础(第5-6讲)
神经网络 本文从全连接网络的局限性出发,介绍卷积操作、池化层等基础组件,并系统梳理 LeNet-5、AlexNet、VGGNet、GoogLeNet/Inception、ResNet 五大经典架构的设计思想与演进脉络。
3
神经网络与深度学习:神经网络基础(第3-4讲)
神经网络 本文聚焦于"如何改进神经网络的学习",涵盖以下核心主题:交叉熵代价函数、Softmax与对数似然、过拟合与正则化(L1/L2/Dropout)、数据增强、权重初始化、数据预处理、优化算法(Hessian/动量)、以及其他激活函数(tanh/ReLU)。掌握这些技术能显著提升网络的训练速度与泛化能力。
4
神经网络与深度学习:神经网络基础(第1-2讲)
神经网络 本文介绍神经网络入门知识,包括感知机、Sigmoid神经元、网络架构、手写数字识别以及梯度下降算法;第二部分深入讲解反向传播算法,包括符号定义、四个基本方程、算法步骤及其全局直觉理解
5
2025-11-20-关于滑动窗口
算法 2025-11-20
随机文章 随便看看

评论

Profile Image of the Author
Zhongye
南漂中
公告
新的博客站!旧站点传送门 zhongye1.github.io/Arknight-notes
音乐
专辑封面

音乐

暂无播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章数
147
分类数
15
标签数
214
总字数
365,610
运行天数
0
最后更新
0 天前

目录