差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 深度学习:生成模型 [2026/03/02 20:29] – 创建 张叶安 | 深度学习:生成模型 [2026/03/02 22:41] (当前版本) – 张叶安 | ||
|---|---|---|---|
| 行 10: | 行 10: | ||
| **判别模型(Discriminative Models)**: | **判别模型(Discriminative Models)**: | ||
| - | - 学习目标:$P(Y|X)$,即在给定输入$X$条件下输出$Y$的概率 | + | |
| - | - 关注决策边界,直接建模类别之间的区分 | + | - 关注决策边界,直接建模类别之间的区分 |
| - | - 典型代表:逻辑回归、SVM、神经网络分类器 | + | - 典型代表:逻辑回归、SVM、神经网络分类器 |
| **生成模型(Generative Models)**: | **生成模型(Generative Models)**: | ||
| - | - 学习目标:$P(X)$或$P(X|Y)$,即数据的分布 | + | |
| - | - 通过学习数据分布,可以生成新的、相似的数据样本 | + | - 通过学习数据分布,可以生成新的、相似的数据样本 |
| - | - 典型代表:朴素贝叶斯、高斯混合模型、VAE、GAN、扩散模型 | + | - 典型代表:朴素贝叶斯、高斯混合模型、VAE、GAN、扩散模型 |
| **生成模型的核心任务** | **生成模型的核心任务** | ||
| 1. **密度估计**:学习数据的概率分布$P(X)$ | 1. **密度估计**:学习数据的概率分布$P(X)$ | ||
| + | |||
| 2. **样本生成**:从学习的分布中采样新数据 | 2. **样本生成**:从学习的分布中采样新数据 | ||
| + | |||
| 3. **隐表示学习**:发现数据的低维潜在结构 | 3. **隐表示学习**:发现数据的低维潜在结构 | ||
| **生成模型的应用** | **生成模型的应用** | ||
| - | - **图像生成**:人脸生成、艺术创作、图像修复 | + | |
| - | - **文本生成**:对话系统、文章写作、代码生成 | + | - **文本生成**:对话系统、文章写作、代码生成 |
| - | - **音频生成**:音乐创作、语音合成 | + | - **音频生成**:音乐创作、语音合成 |
| - | - **药物设计**:分子生成 | + | - **药物设计**:分子生成 |
| - | - **数据增强**:扩充训练数据集 | + | - **数据增强**:扩充训练数据集 |
| ==== 1.2 自回归模型(Autoregressive Models) ==== | ==== 1.2 自回归模型(Autoregressive Models) ==== | ||
| 行 44: | 行 46: | ||
| **特点**: | **特点**: | ||
| - | - 建模精确,似然可精确计算 | + | |
| - | - 生成需要按顺序逐个采样,速度较慢 | + | - 生成需要按顺序逐个采样,速度较慢 |
| - | - 典型模型:NADE、PixelCNN、PixelRNN、GPT | + | - 典型模型:NADE、PixelCNN、PixelRNN、GPT |
| **PixelCNN** | **PixelCNN** | ||
| 行 55: | 行 57: | ||
| 掩码类型: | 掩码类型: | ||
| - | - A型掩码:当前像素不包含在感受野内 | + | |
| - | - B型掩码:当前像素包含在感受野内 | + | - B型掩码:当前像素包含在感受野内 |
| **GPT系列** | **GPT系列** | ||
| 行 71: | 行 73: | ||
| 标准自编码器(Autoencoder)可以学习数据的压缩表示,但存在局限: | 标准自编码器(Autoencoder)可以学习数据的压缩表示,但存在局限: | ||
| - | - 编码器输出是确定性的点 | + | |
| - | - 潜在空间不连续,插值效果差 | + | - 潜在空间不连续,插值效果差 |
| - | - 无法生成新样本(没有概率解释) | + | - 无法生成新样本(没有概率解释) |
| VAE将自编码器概率化,使潜在空间成为连续的概率分布。 | VAE将自编码器概率化,使潜在空间成为连续的概率分布。 | ||
| 行 82: | 行 84: | ||
| **编码器(推断网络)**:$q_\phi(z|x)$ | **编码器(推断网络)**:$q_\phi(z|x)$ | ||
| - | - 将输入$x$映射到潜在变量$z$的后验分布 | + | |
| - | - 通常假设为高斯分布:$q_\phi(z|x) = \mathcal{N}(z; | + | - 通常假设为高斯分布:$q_\phi(z|x) = \mathcal{N}(z; |
| - | - 输出均值$\mu$和方差$\sigma^2$ | + | - 输出均值$\mu$和方差$\sigma^2$ |
| **解码器(生成网络)**:$p_\theta(x|z)$ | **解码器(生成网络)**:$p_\theta(x|z)$ | ||
| - | - 从潜在变量$z$重建输入$x$ | + | |
| - | - 根据数据类型选择分布(如图像用伯努利或高斯分布) | + | - 根据数据类型选择分布(如图像用伯努利或高斯分布) |
| **1.3.3 变分推断与ELBO** | **1.3.3 变分推断与ELBO** | ||
| 行 100: | 行 102: | ||
| ELBO包含两项: | ELBO包含两项: | ||
| - | 1. **重构项**(期望对数似然): | + | - **重构项**(期望对数似然): |
| - 衡量解码器从$z$重建$x$的能力 | - 衡量解码器从$z$重建$x$的能力 | ||
| - 类似于自编码器的重构损失 | - 类似于自编码器的重构损失 | ||
| - | 2. **KL散度项**: | + | - **KL散度项**: |
| - 使近似后验接近先验$P(z)$(通常为标准正态) | - 使近似后验接近先验$P(z)$(通常为标准正态) | ||
| - 充当正则化,防止后验塌陷 | - 充当正则化,防止后验塌陷 | ||
| 行 127: | 行 129: | ||
| **训练过程**: | **训练过程**: | ||
| + | |||
| 1. 输入$x$经过编码器得到$\mu, | 1. 输入$x$经过编码器得到$\mu, | ||
| + | |||
| 2. 使用重参数化技巧采样$z$ | 2. 使用重参数化技巧采样$z$ | ||
| + | |||
| 3. 解码器从$z$重建$\hat{x}$ | 3. 解码器从$z$重建$\hat{x}$ | ||
| + | |||
| 4. 计算ELBO损失并反向传播 | 4. 计算ELBO损失并反向传播 | ||
| **生成过程**: | **生成过程**: | ||
| + | |||
| 1. 从先验$P(z) = \mathcal{N}(0, | 1. 从先验$P(z) = \mathcal{N}(0, | ||
| + | |||
| 2. 通过解码器生成$\hat{x} \sim p_\theta(x|z)$ | 2. 通过解码器生成$\hat{x} \sim p_\theta(x|z)$ | ||
| + | |||
| 3. 可以在潜在空间插值,生成平滑过渡的样本 | 3. 可以在潜在空间插值,生成平滑过渡的样本 | ||
| + | |||
| **1.3.6 VAE的改进变体** | **1.3.6 VAE的改进变体** | ||
| **β-VAE**: | **β-VAE**: | ||
| - | - 在KL项前乘系数$\beta$ | + | |
| - | - $\beta > 1$增强解耦能力 | + | - $\beta > 1$增强解耦能力 |
| - | - 代价是重构质量下降 | + | - 代价是重构质量下降 |
| **条件VAE(CVAE)**: | **条件VAE(CVAE)**: | ||
| - | - 引入条件变量$c$(如类别标签) | + | |
| - | - $q_\phi(z|x, | + | - $q_\phi(z|x, |
| - | - 可以生成指定类别的样本 | + | - 可以生成指定类别的样本 |
| **VQ-VAE(Vector Quantized VAE)**: | **VQ-VAE(Vector Quantized VAE)**: | ||
| - | - 使用离散潜在空间 | + | |
| - | - 潜在变量从可学习的码本中选择 | + | - 潜在变量从可学习的码本中选择 |
| - | - 避免后验塌陷,生成质量更高 | + | - 避免后验塌陷,生成质量更高 |
| ==== 1.4 生成对抗网络(Generative Adversarial Networks, GAN) ==== | ==== 1.4 生成对抗网络(Generative Adversarial Networks, GAN) ==== | ||
| 行 161: | 行 171: | ||
| **核心思想**: | **核心思想**: | ||
| - | - **生成器(Generator, | + | |
| - | - **判别器(Discriminator, | + | - **判别器(Discriminator, |
| - | - 两者相互对抗,共同提升 | + | - 两者相互对抗,共同提升 |
| **1.4.2 GAN的数学框架** | **1.4.2 GAN的数学框架** | ||
| 行 172: | 行 182: | ||
| **判别器的目标**: | **判别器的目标**: | ||
| - | - 对于真实样本$x$,最大化$\log D(x)$(使$D(x) \to 1$) | + | |
| - | - 对于生成样本$G(z)$,最大化$\log(1 - D(G(z)))$(使$D(G(z)) \to 0$) | + | - 对于生成样本$G(z)$,最大化$\log(1 - D(G(z)))$(使$D(G(z)) \to 0$) |
| **生成器的目标**: | **生成器的目标**: | ||
| - | - 最小化$\log(1 - D(G(z)))$(使$D(G(z)) \to 1$,欺骗判别器) | + | |
| **1.4.3 理论分析** | **1.4.3 理论分析** | ||
| 行 191: | 行 201: | ||
| 当$p_g = p_{data}$时,达到全局最优: | 当$p_g = p_{data}$时,达到全局最优: | ||
| - | - $D^*(x) = 1/ | + | |
| - | - 此时目标函数值为$-\log 4$ | + | - 此时目标函数值为$-\log 4$ |
| **训练动态**: | **训练动态**: | ||
| 行 202: | 行 212: | ||
| **训练挑战**: | **训练挑战**: | ||
| - | 1. **模式塌陷(Mode Collapse)**: | + | - |
| - | | + | - 生成器只生成少数几类样本 |
| - | | + | - 判别器对某些模式过强,生成器放弃这些模式 |
| - | 2. **训练不稳定**: | + | - **训练不稳定**: |
| - | | + | - 生成器和判别器需要平衡 |
| - | | + | - 一方过强会导致另一方梯度消失 |
| - | 3. **评估困难**: | + | - **评估困难**: |
| - | | + | - 没有显式的似然函数 |
| - | | + | - 难以量化生成质量 |
| **训练技巧**: | **训练技巧**: | ||
| **标签平滑**: | **标签平滑**: | ||
| - | - 将真实标签从1改为0.9,假标签从0改为0.1 | + | |
| - | - 防止判别器过于自信 | + | - 防止判别器过于自信 |
| **谱归一化(Spectral Normalization)**: | **谱归一化(Spectral Normalization)**: | ||
| - | - 限制判别器Lipschitz常数 | + | |
| - | - 提高训练稳定性 | + | - 提高训练稳定性 |
| **渐进式增长(Progressive Growing)**: | **渐进式增长(Progressive Growing)**: | ||
| - | - 从低分辨率开始,逐渐增加分辨率 | + | |
| - | - 稳定高分辨率图像生成 | + | - 稳定高分辨率图像生成 |
| **1.4.5 GAN的重要变体** | **1.4.5 GAN的重要变体** | ||
| **DCGAN(Deep Convolutional GAN)**: | **DCGAN(Deep Convolutional GAN)**: | ||
| - | - 首次成功将CNN用于GAN | + | |
| - | - 提出一系列架构设计准则 | + | - 提出一系列架构设计准则 |
| - | - 使用转置卷积进行上采样 | + | - 使用转置卷积进行上采样 |
| **条件GAN(cGAN)**: | **条件GAN(cGAN)**: | ||
| - | - 将类别信息$c$同时输入G和D | + | |
| - | - 可以生成指定类别的样本 | + | - 可以生成指定类别的样本 |
| - | - $G(z, c) \to x$,$D(x, c) \to [0, 1]$ | + | - $G(z, c) \to x$,$D(x, c) \to [0, 1]$ |
| **WGAN(Wasserstein GAN)**: | **WGAN(Wasserstein GAN)**: | ||
| - | - 使用Wasserstein距离替代JS散度 | + | |
| - | - 解决梯度消失问题 | + | - 解决梯度消失问题 |
| - | - 判别器改为Critic,输出实数值 | + | - 判别器改为Critic,输出实数值 |
| **StyleGAN**: | **StyleGAN**: | ||
| - | - 引入风格迁移思想 | + | |
| - | - 解耦潜在空间的不同属性 | + | - 解耦潜在空间的不同属性 |
| - | - 高质量人脸生成 | + | - 高质量人脸生成 |
| **CycleGAN**: | **CycleGAN**: | ||
| - | - 无配对数据的图像到图像翻译 | + | |
| - | - 循环一致性损失 | + | - 循环一致性损失 |
| - | - 适用于风格转换、季节转换等 | + | - 适用于风格转换、季节转换等 |
| ==== 1.5 扩散模型(Diffusion Models) ==== | ==== 1.5 扩散模型(Diffusion Models) ==== | ||
| 行 270: | 行 280: | ||
| **关键性质**: | **关键性质**: | ||
| - | - 可以直接采样任意时刻$t$的状态: | + | |
| - | $$q(x_t | x_0) = \mathcal{N}(x_t; | + | |
| - | 其中$\bar{\alpha}_t = \prod_{s=1}^t (1-\beta_s)$ | + | $$q(x_t | x_0) = \mathcal{N}(x_t; |
| + | |||
| + | 其中$\bar{\alpha}_t = \prod_{s=1}^t (1-\beta_s)$ | ||
| **1.5.2 反向去噪过程** | **1.5.2 反向去噪过程** | ||
| 行 289: | 行 301: | ||
| 1. **训练稳定**:没有对抗训练,优化目标明确 | 1. **训练稳定**:没有对抗训练,优化目标明确 | ||
| + | |||
| 2. **模式覆盖好**:不容易出现模式塌陷 | 2. **模式覆盖好**:不容易出现模式塌陷 | ||
| + | |||
| 3. **生成质量高**:在图像生成上超过GAN | 3. **生成质量高**:在图像生成上超过GAN | ||
| + | |||
| 4. **可扩展性强**:容易扩展到条件生成、图像编辑 | 4. **可扩展性强**:容易扩展到条件生成、图像编辑 | ||
| 行 298: | 行 313: | ||
| **DDIM(Denoising Diffusion Implicit Models)**: | **DDIM(Denoising Diffusion Implicit Models)**: | ||
| - | - 将扩散过程视为隐式概率模型 | + | |
| - | - 可以少步采样(50步甚至更少) | + | - 可以少步采样(50步甚至更少) |
| **蒸馏方法**: | **蒸馏方法**: | ||
| - | - 学习学生模型直接预测多步结果 | + | |
| - | - Progressive Distillation、Consistency Models | + | - Progressive Distillation、Consistency Models |
| **潜在扩散模型(Latent Diffusion Models)**: | **潜在扩散模型(Latent Diffusion Models)**: | ||
| - | - 在VAE的潜在空间进行扩散 | + | |
| - | - 大幅降低计算成本 | + | - 大幅降低计算成本 |
| - | - Stable Diffusion基于此 | + | - Stable Diffusion基于此 |
| ==== 1.6 流模型(Flow-based Models) ==== | ==== 1.6 流模型(Flow-based Models) ==== | ||
| 行 323: | 行 338: | ||
| **关键要求**: | **关键要求**: | ||
| - | - 变换$f$必须可逆 | + | |
| - | - 雅可比行列式容易计算 | + | - 雅可比行列式容易计算 |
| **1.6.2 标准化流(Normalizing Flows)** | **1.6.2 标准化流(Normalizing Flows)** | ||
| 行 339: | 行 354: | ||
| **NICE/ | **NICE/ | ||
| - | - 使用耦合层(Coupling Layer) | + | |
| - | - 一部分维度保持不变,用于变换另一部分 | + | - 一部分维度保持不变,用于变换另一部分 |
| - | - 雅可比行列式为对角阵,容易计算 | + | - 雅可比行列式为对角阵,容易计算 |
| **Glow**: | **Glow**: | ||
| - | - 引入可学习的1×1卷积 | + | |
| - | - 高质量的图像生成 | + | - 高质量的图像生成 |
| **1.6.4 流模型的特点** | **1.6.4 流模型的特点** | ||
| 优势: | 优势: | ||
| - | - 精确的对数似然计算 | + | |
| - | - 可逆,支持精确推断潜在变量 | + | - 可逆,支持精确推断潜在变量 |
| - | - 支持并行生成 | + | - 支持并行生成 |
| 局限: | 局限: | ||
| - | - 架构设计受限(必须可逆) | + | |
| - | - 通常参数量较大 | + | - 通常参数量较大 |
| ==== 1.7 生成模型的评估 ==== | ==== 1.7 生成模型的评估 ==== | ||
| 行 363: | 行 378: | ||
| **视觉检查**: | **视觉检查**: | ||
| - | - 生成样本的视觉质量 | + | |
| - | - 多样性(避免模式塌陷) | + | - 多样性(避免模式塌陷) |
| **插值**: | **插值**: | ||
| - | - 潜在空间插值的平滑性 | + | |
| - | - 反映潜在空间的连续性 | + | - 反映潜在空间的连续性 |
| **1.7.2 定量评估** | **1.7.2 定量评估** | ||
| **Inception Score (IS)**: | **Inception Score (IS)**: | ||
| - | - 基于预训练Inception网络 | + | |
| - | - 评估生成样本的质量和多样性 | + | - 评估生成样本的质量和多样性 |
| - | - $IS = \exp(\mathbb{E}_x D_{KL}(p(y|x) || p(y)))$ | + | - $IS = \exp(\mathbb{E}_x D_{KL}(p(y|x) || p(y)))$ |
| **Fréchet Inception Distance (FID)**: | **Fréchet Inception Distance (FID)**: | ||
| - | - 比较真实和生成样本在特征空间的分布 | + | |
| - | - 计算两个高斯分布的Fréchet距离 | + | - 计算两个高斯分布的Fréchet距离 |
| - | - 越低越好,与视觉质量高度相关 | + | - 越低越好,与视觉质量高度相关 |
| **精确率-召回率(Precision-Recall)**: | **精确率-召回率(Precision-Recall)**: | ||
| - | - 精确率:生成样本中有多少是真实的 | + | |
| - | - 召回率:真实样本中有多少被生成覆盖 | + | - 召回率:真实样本中有多少被生成覆盖 |
| - | - 区分质量和多样性 | + | - 区分质量和多样性 |
| **对数似然**: | **对数似然**: | ||
| - | - 适用于VAE、流模型、自回归模型 | + | |
| - | - 在测试集上计算$\log p(x)$ | + | - 在测试集上计算$\log p(x)$ |
| ===== 2. 例题分析 ===== | ===== 2. 例题分析 ===== | ||
| 行 429: | 行 444: | ||
| **两项含义**: | **两项含义**: | ||
| - | 1. **重构项**:$\mathbb{E}[\log p_\theta(x|z)]$ | + | - |
| - | | + | - 表示从潜在变量$z$重建输入$x$的能力 |
| - | | + | - 类似于自编码器的重构损失 |
| - | | + | - 鼓励生成的数据接近真实数据 |
| - | 2. **KL散度项**:$D_{KL}(q_\phi(z|x) || p(z))$ | + | - |
| - | | + | - 使编码器输出接近先验分布(通常是标准正态) |
| - | | + | - 正则化项,防止后验分布过于分散或集中 |
| - | | + | - 确保潜在空间的连续性和完整性 |
| **结论**:ELBO是边际似然的下界,通过最大化ELBO,我们同时优化重构质量和潜在空间的正则化。 | **结论**:ELBO是边际似然的下界,通过最大化ELBO,我们同时优化重构质量和潜在空间的正则化。 | ||
| 行 494: | 行 509: | ||
| **分析**: | **分析**: | ||
| - | - 这为GAN的训练提供了理论保证 | + | |
| - | - 但在实践中,JS散度在分布不重叠时梯度消失 | + | - 但在实践中,JS散度在分布不重叠时梯度消失 |
| - | - 这是WGAN使用Wasserstein距离的动机 | + | - 这是WGAN使用Wasserstein距离的动机 |
| ==== 例题3:扩散模型前向过程 ==== | ==== 例题3:扩散模型前向过程 ==== | ||
| 行 534: | 行 549: | ||
| 当$t = 100$时: | 当$t = 100$时: | ||
| - | - 均值从1衰减到约0.605 | + | |
| - | - 方差增加到0.634 | + | - 方差增加到0.634 |
| - | - $x_t$的分布为$\mathcal{N}(0.605, | + | - $x_t$的分布为$\mathcal{N}(0.605, |
| 随着$t$增大: | 随着$t$增大: | ||
| - | - $\bar{\alpha}_t \to 0$ | + | |
| - | - 均值$\to 0$ | + | - 均值$\to 0$ |
| - | - 方差$\to 1$ | + | - 方差$\to 1$ |
| - | - $x_t$趋近于标准正态分布(纯噪声) | + | - $x_t$趋近于标准正态分布(纯噪声) |
| **验证**: | **验证**: | ||
| + | |||
| 当$t \to \infty$时,$0.99^t \to 0$,这与理论一致。 | 当$t \to \infty$时,$0.99^t \to 0$,这与理论一致。 | ||
| 行 583: | 行 599: | ||
| ==== 二、填空题 ==== | ==== 二、填空题 ==== | ||
| - | 6. VAE的ELBO包含________项和________项。 | + | 6. VAE的ELBO包含$\_\_\_\_$项和$\_\_\_\_$项。 |
| - | 7. GAN由________和________两个网络组成。 | + | 7. GAN由$\_\_\_\_$和$\_\_\_\_$两个网络组成。 |
| - | 8. 扩散模型的前向过程逐步添加________,反向过程学习________。 | + | 8. 扩散模型的前向过程逐步添加$\_\_\_\_$,反向过程学习$\_\_\_\_$。 |
| - | 9. 评估生成模型质量的常用指标包括IS和________。 | + | 9. 评估生成模型质量的常用指标包括IS和$\_\_\_\_$。 |
| - | 10. 重参数化技巧解决了VAE中________的问题。 | + | 10. 重参数化技巧解决了VAE中$\_\_\_\_$的问题。 |
| ==== 三、计算题 ==== | ==== 三、计算题 ==== | ||
| 行 623: | 行 639: | ||
| 6. **答案:**重构;KL散度 | 6. **答案:**重构;KL散度 | ||
| - | 解析:ELBO = $\mathbb{E}[\log p(x|z)] - D_{KL}(q(z|x)||p(z))$ | + | |
| + | 解析:ELBO = $\mathbb{E}[\log p(x|z)] - D_{KL}(q(z|x)||p(z))$ | ||
| 7. **答案:**生成器(Generator);判别器(Discriminator) | 7. **答案:**生成器(Generator);判别器(Discriminator) | ||
| 行 641: | 行 658: | ||
| 11. **解答:** | 11. **解答:** | ||
| | | ||
| - | | + | KL散度公式:$KL(\mathcal{N}(\mu_1, |
| | | ||
| - | | + | 代入$\mu_1=0, |
| | | ||
| - | | + | $= \log\frac{2}{1} + \frac{1 + 0}{2 \times 4} - \frac{1}{2}$ |
| | | ||
| - | | + | $= 0.693 + 0.125 - 0.5$ |
| | | ||
| - | | + | $= 0.318$ |
| 12. **解答:** | 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. **解答:** | 13. **解答:** | ||
| | | ||
| - | | + | $\alpha_t = 1 - \beta_t = 0.98$ |
| | | ||
| - | | + | $\bar{\alpha}_t = \alpha_t^t = 0.98^{50} \approx 0.364$ |
| | | ||
| - | | + | 这意味着经过50步扩散后,原始信号保留了约36.4%的强度,其余变为噪声。 |