判别模型与生成模型
机器学习模型可以分为两大类:
判别模型(Discriminative Models):
生成模型(Generative Models):
生成模型的核心任务
1. 密度估计:学习数据的概率分布$P(X)$
2. 样本生成:从学习的分布中采样新数据
3. 隐表示学习:发现数据的低维潜在结构
生成模型的应用
基本原理
自回归模型基于链式法则,将联合概率分解为条件概率的乘积:
$$P(x_1, x_2, ..., x_n) = P(x_1) \prod_{i=2}^n P(x_i | x_1, ..., x_{i-1})$$
对于图像,可以按扫描线顺序(如PixelCNN)或光栅扫描顺序分解。
特点:
PixelCNN
PixelCNN使用掩码卷积确保每个像素只依赖已生成的像素:
$$p(x_i | x_1, ..., x_{i-1}) = \text{softmax}(f_i(x_1, ..., x_{i-1}))$$
掩码类型:
GPT系列
GPT将自回归思想应用于自然语言:
$$P(w_1, w_2, ..., w_n) = \prod_{i=1}^n P(w_i | w_1, ..., w_{i-1})$$
使用Transformer解码器作为基础架构,通过掩码自注意力实现自回归。
1.3.1 背景与动机
标准自编码器(Autoencoder)可以学习数据的压缩表示,但存在局限:
VAE将自编码器概率化,使潜在空间成为连续的概率分布。
1.3.2 VAE的基本结构
VAE包含两个核心组件:
编码器(推断网络):$q_\phi(z|x)$
解码器(生成网络):$p_\theta(x|z)$
1.3.3 变分推断与ELBO
由于真实后验$P(z|x)$难以计算,VAE使用变分推断近似。
证据下界(Evidence Lower Bound, ELBO):
$$\mathcal{L}(\theta, \phi; x) = \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{KL}(q_\phi(z|x) || p(z))$$
ELBO包含两项:
为什么ELBO是下界:
通过Jensen不等式可证明:
$$\log p(x) = \log \int p(x|z)p(z)dz \geq \mathbb{E}_{q(z|x)}[\log p(x|z)] - D_{KL}(q(z|x)||p(z))$$
最大化ELBO等价于最大化似然的下界。
1.3.4 重参数化技巧
直接从$q_\phi(z|x)$采样会导致梯度无法传播。重参数化技巧将随机性移到输入:
$$z = \mu_\phi(x) + \sigma_\phi(x) \odot \epsilon, \quad \epsilon \sim \mathcal{N}(0, I)$$
这样$z$对$\phi$可微,可以使用梯度下降优化。
1.3.5 VAE的训练与生成
训练过程:
1. 输入$x$经过编码器得到$\mu, \sigma$
2. 使用重参数化技巧采样$z$
3. 解码器从$z$重建$\hat{x}$
4. 计算ELBO损失并反向传播
生成过程:
1. 从先验$P(z) = \mathcal{N}(0, I)$采样$z$
2. 通过解码器生成$\hat{x} \sim p_\theta(x|z)$
3. 可以在潜在空间插值,生成平滑过渡的样本
1.3.6 VAE的改进变体
β-VAE:
条件VAE(CVAE):
VQ-VAE(Vector Quantized VAE):
1.4.1 GAN的基本思想
GAN由Goodfellow于2014年提出,采用博弈论框架,通过两个网络的对抗学习生成数据。
核心思想:
1.4.2 GAN的数学框架
目标函数(极小极大博弈):
$$\min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))]$$
判别器的目标:
生成器的目标:
1.4.3 理论分析
最优判别器:
给定生成器$G$,最优判别器为:
$$D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_g(x)}$$
其中$p_g$是生成样本的分布。
全局最优:
当$p_g = p_{data}$时,达到全局最优:
训练动态:
理论证明,在适当条件下,GAN可以收敛到纳什均衡,生成器学到真实数据分布。
1.4.4 GAN的训练技巧与挑战
训练挑战:
训练技巧:
标签平滑:
谱归一化(Spectral Normalization):
渐进式增长(Progressive Growing):
1.4.5 GAN的重要变体
DCGAN(Deep Convolutional GAN):
条件GAN(cGAN):
WGAN(Wasserstein GAN):
StyleGAN:
CycleGAN:
1.5.1 扩散过程的基本概念
扩散模型受到非平衡热力学启发,通过逐步添加和去除噪声学习数据分布。
前向扩散过程(加噪):
从数据$x_0$开始,逐步添加高斯噪声:
$$q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1-\beta_t}x_{t-1}, \beta_t I)$$
经过$T$步后,$x_T$接近纯噪声。
关键性质:
$$q(x_t | x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t}x_0, (1-\bar{\alpha}_t)I)$$
其中$\bar{\alpha}_t = \prod_{s=1}^t (1-\beta_s)$
1.5.2 反向去噪过程
学习目标是从噪声恢复数据:
$$p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t))$$
简化训练目标:
DDPM(Denoising Diffusion Probabilistic Models)证明,可以训练神经网络$\epsilon_\theta$预测噪声:
$$\mathcal{L} = \mathbb{E}_{x_0, t, \epsilon}[||\epsilon - \epsilon_\theta(\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon, t)||^2]$$
1.5.3 扩散模型的优势
1. 训练稳定:没有对抗训练,优化目标明确
2. 模式覆盖好:不容易出现模式塌陷
3. 生成质量高:在图像生成上超过GAN
4. 可扩展性强:容易扩展到条件生成、图像编辑
1.5.4 加速采样
原始扩散模型需要数千步去噪,采样速度慢。改进方法:
DDIM(Denoising Diffusion Implicit Models):
蒸馏方法:
潜在扩散模型(Latent Diffusion Models):
1.6.1 可逆变换与变量替换
流模型通过可逆神经网络学习从简单分布(如高斯)到数据分布的变换。
变量替换公式:
设$z \sim p_Z(z)$,$x = f(z)$且$f$可逆,则:
$$p_X(x) = p_Z(f^{-1}(x)) \left| \det \frac{\partial f^{-1}(x)}{\partial x} \right|$$
关键要求:
1.6.2 标准化流(Normalizing Flows)
通过组合多个简单的可逆变换构建复杂变换:
$$z = f_K \circ f_{K-1} \circ ... \circ f_1(x)$$
对数似然:
$$\log p_X(x) = \log p_Z(z) + \sum_{i=1}^K \log \left| \det \frac{\partial f_i}{\partial z_{i-1}} \right|^{-1}$$
1.6.3 常用流架构
NICE/RealNVP:
Glow:
1.6.4 流模型的特点
优势:
局限:
1.7.1 定性评估
视觉检查:
插值:
1.7.2 定量评估
Inception Score (IS):
Fréchet Inception Distance (FID):
精确率-召回率(Precision-Recall):
对数似然:
题目:证明VAE的证据下界(ELBO)公式,并解释两项的含义。
分析过程:
步骤1:从边际似然出发
$$\log p_\theta(x) = \log \int p_\theta(x|z)p(z)dz$$
步骤2:引入变分分布
乘以$\frac{q_\phi(z|x)}{q_\phi(z|x)} = 1$:
$$= \log \int p_\theta(x|z)p(z) \frac{q_\phi(z|x)}{q_\phi(z|x)} dz$$
$$= \log \mathbb{E}_{q_\phi(z|x)}\left[\frac{p_\theta(x|z)p(z)}{q_\phi(z|x)}\right]$$
步骤3:应用Jensen不等式
由于对数函数是凹函数,由Jensen不等式:
$$\log \mathbb{E}[X] \geq \mathbb{E}[\log X]$$
因此:
$$\log p_\theta(x) \geq \mathbb{E}_{q_\phi(z|x)}\left[\log \frac{p_\theta(x|z)p(z)}{q_\phi(z|x)}\right]$$
步骤4:分解
$$= \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] + \mathbb{E}_{q_\phi(z|x)}\left[\log \frac{p(z)}{q_\phi(z|x)}\right]$$
$$= \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{KL}(q_\phi(z|x) || p(z))$$
两项含义:
结论:ELBO是边际似然的下界,通过最大化ELBO,我们同时优化重构质量和潜在空间的正则化。
题目:分析GAN的目标函数,说明在最优判别器下生成器的优化目标等价于最小化什么散度。
分析过程:
给定目标函数:
$$V(D, G) = \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))]$$
步骤1:求最优判别器
对于固定的$G$,考虑单个样本$x$:
$$V(D, G) = \int p_{data}(x) \log D(x) dx + \int p_g(x) \log(1 - D(x)) dx$$
对$D(x)$求导并令为0:
$$\frac{\partial V}{\partial D(x)} = \frac{p_{data}(x)}{D(x)} - \frac{p_g(x)}{1-D(x)} = 0$$
解得:
$$D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_g(x)}$$
步骤2:代入最优判别器
将$D^*$代入目标函数:
$$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]$$
步骤3:变形
注意到:
$$\frac{p_{data}}{p_{data} + p_g} = \frac{p_{data}/p_g}{p_{data}/p_g + 1} \cdot \frac{p_g}{p_g}$$
更直接的变形:
$$= \mathbb{E}_{p_{data}}\left[\log \frac{p_{data}}{(p_{data} + p_g)/2} - \log 2\right] + \mathbb{E}_{p_g}\left[\log \frac{p_g}{(p_{data} + p_g)/2} - \log 2\right]$$
$$= -\log 4 + KL(p_{data} || \frac{p_{data} + p_g}{2}) + KL(p_g || \frac{p_{data} + p_g}{2})$$
$$= -\log 4 + 2 \cdot JSD(p_{data} || p_g)$$
其中$JSD$是Jensen-Shannon散度:
$$JSD(P||Q) = \frac{1}{2}KL(P||M) + \frac{1}{2}KL(Q||M), \quad M = \frac{P+Q}{2}$$
结论:
在最优判别器下,生成器的目标等价于最小化$p_{data}$和$p_g$之间的Jensen-Shannon散度。当$JSD = 0$(即$p_{data} = p_g$)时,达到全局最优。
分析:
题目:在扩散模型中,已知$\beta_t = 0.01$对所有$t$,$\alpha_t = 1 - \beta_t = 0.99$。计算$\bar{\alpha}_t$以及$x_t$关于$x_0$的分布参数(设$x_0 = 1$,$t = 100$)。
分析过程:
步骤1:计算$\bar{\alpha}_t$
$$\bar{\alpha}_t = \prod_{s=1}^t \alpha_s = \alpha^t = 0.99^t$$
对于$t = 100$:
$$\bar{\alpha}_{100} = 0.99^{100}$$
计算: $$\ln(\bar{\alpha}_{100}) = 100 \times \ln(0.99) = 100 \times (-0.01005) = -1.005$$ $$\bar{\alpha}_{100} = e^{-1.005} \approx 0.366$$
步骤2:计算分布参数
根据扩散模型的重参数化:
$$q(x_t | x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t}x_0, (1-\bar{\alpha}_t)I)$$
均值: $$\mu = \sqrt{\bar{\alpha}_t} \cdot x_0 = \sqrt{0.366} \times 1 \approx 0.605$$
方差: $$\sigma^2 = 1 - \bar{\alpha}_t = 1 - 0.366 = 0.634$$
标准差: $$\sigma = \sqrt{0.634} \approx 0.796$$
步骤3:解释
当$t = 100$时:
随着$t$增大:
验证:
当$t \to \infty$时,$0.99^t \to 0$,这与理论一致。
1. VAE中KL散度项的主要作用是:
A. 提高重构质量 B. 正则化潜在空间 C. 加速训练 D. 减少参数量
2. GAN训练中的“模式塌陷”是指:
A. 判别器太强 B. 生成器只生成少数几类样本 C. 训练时间过长 D. 内存不足
3. 扩散模型相比GAN的主要优势是:
A. 训练速度更快 B. 没有对抗训练,更稳定 C. 参数量更少 D. 不需要GPU
4. 自回归模型的主要局限是:
A. 无法计算似然 B. 生成需要按顺序进行,速度慢 C. 只能生成图像 D. 需要大量标注数据
5. 流模型的关键要求是:
A. 神经网络必须可逆 B. 必须使用卷积层 C. 必须使用注意力机制 D. 必须使用批归一化
6. VAE的ELBO包含$\_\_\_\_$项和$\_\_\_\_$项。
7. GAN由$\_\_\_\_$和$\_\_\_\_$两个网络组成。
8. 扩散模型的前向过程逐步添加$\_\_\_\_$,反向过程学习$\_\_\_\_$。
9. 评估生成模型质量的常用指标包括IS和$\_\_\_\_$。
10. 重参数化技巧解决了VAE中$\_\_\_\_$的问题。
11. VAE:给定$q(z|x) = \mathcal{N}(0, 1)$,$p(z) = \mathcal{N}(0, 4)$,计算$KL(q||p)$。
12. GAN:若判别器对真实样本输出0.8,对生成样本输出0.3,计算判别器损失(假设各一个样本)。
13. 扩散模型:$\beta_t = 0.02$,$t = 50$,计算$\bar{\alpha}_t$(提示:$0.98^{50} \approx 0.364$)。
一、选择题答案:
1. 答案:B
解析:KL散度使编码器输出接近先验分布,起到正则化作用,确保潜在空间连续完整。
2. 答案:B
解析:模式塌陷是GAN的常见问题,生成器发现某些模式容易欺骗判别器后,就只生成这些模式。
3. 答案:B
解析:扩散模型使用明确的去噪目标,没有对抗训练的不稳定性,训练更稳定。
4. 答案:B
解析:自回归模型需要按顺序生成每个元素,无法并行,生成速度较慢。
5. 答案:A
解析:流模型通过可逆变换学习数据分布,可逆性是计算精确似然的关键。
二、填空题答案:
6. 答案:重构;KL散度
解析:ELBO = $\mathbb{E}[\log p(x|z)] - D_{KL}(q(z|x)||p(z))$
7. 答案:生成器(Generator);判别器(Discriminator)
解析:GAN通过生成器和判别器的对抗学习生成数据。
8. 答案:噪声;去噪
解析:前向过程加噪,反向过程学习从噪声恢复数据。
9. 答案:FID(或Fréchet Inception Distance)
解析:FID是评估生成模型最常用的指标,计算特征空间的分布距离。
10. 答案:采样无法求梯度
解析:重参数化将随机性移到输入,使得梯度可以反向传播。
三、计算题答案:
11. 解答:
KL散度公式:$KL(\mathcal{N}(\mu_1, \sigma_1^2) || \mathcal{N}(\mu_2, \sigma_2^2)) = \log\frac{\sigma_2}{\sigma_1} + \frac{\sigma_1^2 + (\mu_1-\mu_2)^2}{2\sigma_2^2} - \frac{1}{2}$
代入$\mu_1=0, \sigma_1=1, \mu_2=0, \sigma_2=2$:
$= \log\frac{2}{1} + \frac{1 + 0}{2 \times 4} - \frac{1}{2}$
$= 0.693 + 0.125 - 0.5$
$= 0.318$
12. 解答:
判别器损失:$L_D = -\log D(x_{real}) - \log(1 - D(x_{fake}))$
$= -\log(0.8) - \log(1 - 0.3)$
$= -(-0.223) - (-0.357)$
$= 0.223 + 0.357$
$= 0.580$
13. 解答:
$\alpha_t = 1 - \beta_t = 0.98$
$\bar{\alpha}_t = \alpha_t^t = 0.98^{50} \approx 0.364$
这意味着经过50步扩散后,原始信号保留了约36.4%的强度,其余变为噪声。