mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
7972 字
21 分钟
生成模型:让AI学会创造

说明:本文以李宏毅老师《李宏毅深度学习教程》第 8 章“生成对抗网络(GAN)”为主线,补充加入 VAE 与更现代生成模型谱系(如自回归、Flow、Diffusion)的对比视角,帮助建立“生成模型全景图”。其中 VAE/谱系对比属于作者扩展内容。

引言:监督学习的局限#

”两面讨好”问题#

传统监督学习在面对开放式任务时会遇到根本性困难。

考虑这样一个任务:预测游戏的下一帧画面。同一帧画面,角色可能向左走,也可能向右走——两种结果都是合理的。

1771839667004

如果用均方误差训练,模型会输出两种可能的平均值:一个模糊的、角色在中间位置的残影。这是”两面讨好”——模型尝试生成多个可能答案,导致结果模糊不清。

同类问题

  • 聊天机器人:对同一问题,“好的”和”没问题”都是正确回复,平均后变成无意义输出
  • AI绘画:同一描述对应无数种合理图像
  • 广告素材生成:利用生成模型批量生成海量、差异化的广告创意图,以极低成本快速进行 A/B 测试,是当前数字营销领域的高频落地场景

根本原因:这些任务的输出本质上是概率分布,而非唯一的确定性结果。

生成模型的解法#

核心思想:生成模型通过引入噪声变量 zz,在**潜在空间(Latent Space)**中对输出进行采样,使模型能够处理具有内在不确定性的任务,并生成多样化的合理输出。

传统监督学习:输入 x → 确定输出 y(单一映射)
生成模型: 输入 x + 噪声 z → 从潜在空间采样的输出 y(概率分布)

zz 从简单分布(如标准高斯分布)中采样,经过神经网络的非线性变换,映射为复杂的数据分布。zz 的不同取值对应不同的合理输出——这种灵活性正是生成模型处理开放式任务的关键:模型不再给出唯一答案,而是学会了整个合理答案的分布空间。

那么,如何具体实现这种”从分布中采样生成”的能力?生成对抗网络(GAN)给出了一个优雅的答案:用两个网络相互博弈来驱动生成质量的提升。


一、GAN基础#

整体架构#

GAN(Generative Adversarial Network) 由 Ian Goodfellow 于 2014 年提出,包含两个相互博弈的网络:

造假者(Generator):制造假钞,目标是以假乱真
鉴别者(Discriminator):识别真假,目标是识破假钞
两者相互砥砺,共同进步

生成器(Generator)#

1771839589515

输入:从简单分布采样的随机向量 zz(无限制生成时无需其他输入)

输出:高维数据,如一张 64×6464 \times 64 的图像(64×64×3=1228864 \times 64 \times 3 = 12288 维向量)

关键特性zz​ 不同,生成的图像也不同。通过神经网络的非线性变换,将简单的噪声分布映射为复杂的数据分布:

G:zxfakeG: z \mapsto x_{fake}

判别器(Discriminator)#

1771839709165

在原始 GAN 中,判别器常实现为二分类概率(或 0–1 打分);在 WGAN 中则改为输出实数的 critic(评分)。

输入:一张图片(真实图片或生成图片)

输出:一个标量得分,得分越高代表该图片越像真实的训练数据

目标

  • 对真实样本:输出高分
  • 对生成样本:输出低分

二、GAN的训练过程#

交替训练机制#

1771839721607

GAN 的训练是动态且交替进行的,两者互相砥砺:

Step 1:训练判别器(固定生成器)

1771839830714

判别器的目标是学会分辨真假:

  • 对真实训练图片打高分
  • 对生成器当前产生的假图片打低分

可视为一个二分类任务。

Step 2:训练生成器(固定判别器)

1771839841987

生成器的目标是调整自身参数,使其生成的假图片在经过当前判别器时,能够得到尽可能高的分数,以此来”骗过”判别器。

梯度传播路径:判别器对生成图片的打分,通过反向传播将梯度信号传回生成器。判别器相当于一个”动态损失函数”——它告诉生成器”哪里不像真实图片”,生成器据此调整参数。这也是为什么训练时通常采用交替固定的策略:若两者同时更新,梯度信号容易相互干扰,导致训练不稳定。

目标函数#

GAN 的训练本质上是一个二人零和博弈(Two-Player Zero-Sum Game):判别器的收益恰好等于生成器的损失,两者利益完全对立。博弈论告诉我们,这类博弈存在纳什均衡(Nash Equilibrium)——当生成器产生的分布与真实数据分布完全一致(PG=PdataP_G = P_{data})时,判别器无法区分真假(D(x)=0.5D^*(x) = 0.5),双方均无法通过单方面改变策略来获益,博弈达到均衡。

minGmaxDV(D,G)=ExPdata[logD(x)]+EzP(z)[log(1D(G(z)))]\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)))]

直观理解

以造假钞为例:

  • 判别器 DD 希望最大化 VV:对真钞(xPdatax \sim P_{data})打高分,使 logD(x)\log D(x) 大;对假钞(G(z)G(z))打低分,使 log(1D(G(z)))\log(1 - D(G(z)))
  • 生成器 GG 希望最小化 VV:让假钞得分 D(G(z))D(G(z)) 尽量接近 1,使 log(1D(G(z)))\log(1 - D(G(z))) 趋向 -\infty,从而拉低整体 VV

实践中:通常 DD 训练多步,GG 训练一步。

应用案例#

无限制生成:动漫人物头像生成。机器仅通过吸纳大量动漫人脸数据,便能利用随机噪声向量从无到有地绘制出各种不同特征组合的高质量动漫人脸。


三、GAN的理论分析#

最优判别器#

定理:固定 GG,最优判别器为:

D(x)=Pdata(x)Pdata(x)+PG(x)D^*(x) = \frac{P_{data}(x)}{P_{data}(x) + P_G(x)}

推导:对每个 xx,最大化:

Pdata(x)logD(x)+PG(x)log(1D(x))P_{data}(x) \log D(x) + P_G(x) \log(1 - D(x))

D(x)D(x) 求导并令其为零,得到上述结果。

理论起点:极大似然估计(MLE)#

在理解 GAN 的目标之前,需要先回到一个更宏观的起点。

训练生成器的本质:希望在真实数据分布 PdataP_{data} 下,最大化生成分布 PGP_G 的似然——即极大似然估计(MLE):

θ=argmaxθExPdata[logPG(x;θ)]\theta^* = \arg\max_\theta \mathbb{E}_{x \sim P_{data}}[\log P_G(x;\theta)]

数学等价性:可以证明,最大化似然等价于最小化 PdataP_{data}PGP_G 之间的 KL 散度:

argmaxθExPdata[logPG(x)]argminθKL(PdataPG)\arg\max_\theta \mathbb{E}_{x \sim P_{data}}[\log P_G(x)] \equiv \arg\min_\theta KL(P_{data} \| P_G)

传统方法的失效:由于真实分布 PdataP_{data} 往往无法显式写出方程,KL 散度无法直接计算。

GAN 的伟大之处:用一个判别器巧妙地近似计算出了无法直接求解的散度。这正是下面推导的核心。

JS散度与GAN目标#

将最优 DD^* 代入目标函数:

maxDV(D,G)=2JS(PdataPG)2log2\max_D V(D, G) = 2 \cdot JS(P_{data} \| P_G) - 2\log 2

其中 JS 散度定义为:

JS(PQ)=12KL(PP+Q2)+12KL(QP+Q2)JS(P \| Q) = \frac{1}{2} KL\left(P \| \frac{P+Q}{2}\right) + \frac{1}{2} KL\left(Q \| \frac{P+Q}{2}\right)

结论(理论视角)

  • 在判别器达到最优 (D^*) 的假设下,GAN 的极大极小目标与 (JS(P_{data}|P_G)) 存在严格对应关系:最大化判别器等价于把目标变成某个关于 JS 的表达式。
  • 生成器的更新可以理解为:在“判别器足够好”的前提下,推动 (P_G) 逼近 (P_{data})(从而间接降低 JS)。但在实际训练中,我们做的是交替优化对抗损失,并不会显式计算散度。

JS散度的致命缺陷#

关键问题:图像数据在高维空间中通常是低维流形。真实数据和生成数据的分布重叠部分极少甚至完全不重叠。

直观示例:想象真实图像分布是一条细线,生成图像分布是另一条细线,两者都漂浮在一个巨大的高维空间中。两条线几乎不可能相交——此时 JS 散度无法区分”两条线相距 1 米”和”相距 100 米”,都返回同一个常数 log2\log 2

此时,两者的 JS 散度恒定为常数 log2\log 2,导致:

  • 判别器无法提供有效的梯度
  • 生成器停止进化,训练崩溃

这一根本缺陷促使研究者寻找更好的距离度量,WGAN 正是为此而生。


四、WGAN:改进的GAN训练#

推土机距离(Wasserstein Distance)#

动机:用一种更好的距离度量替代 JS 散度。

直观理解:将分布 PP 变为分布 QQ,有无数种”推土方案 γ\gamma“——有的方案舍近求远,有的路径最短。Wasserstein 距离的严谨定义是:在所有可能的搬运方案中,寻找使平均移动距离最小的那个”最优传输方案”的成本。

W(P,Q)=infγΠ(P,Q)E(x,y)γ[xy]W(P, Q) = \inf_{\gamma \sim \Pi(P, Q)} \mathbb{E}_{(x,y) \sim \gamma}[\|x - y\|]

公式中的 infγ\inf_\gamma(取下确界)正是”穷举所有搬运方案,取最优者”的数学表达。

核心优势:即使两个分布完全不重叠,Wasserstein 距离依然能反映它们之间的远近关系,从而持续提供有效的梯度

WGAN目标函数#

minGmaxDDExPdata[D(x)]EzP(z)[D(G(z))]\min_G \max_{D \in \mathcal{D}} \mathbb{E}_{x \sim P_{data}}[D(x)] - \mathbb{E}_{z \sim P(z)}[D(G(z))]

关键变化:判别器 DD 不再输出概率,而是输出一个实数评分,且必须满足 1-Lipschitz 限制(函数必须足够平滑)。

为什么 Wasserstein 距离能解决 JS 散度的问题?

回顾 JS 散度的致命缺陷:当 PdataP_{data}PGP_G 不重叠时,JS 散度恒为常数 log2\log 2,梯度为零。这是因为 JS 散度本质上是一种”是否重叠”的二元判断,无法感知两个分布之间的”远近”。

Wasserstein 距离则不同——它度量的是将一个分布”搬运”成另一个分布所需的最小代价。即使两个分布完全不重叠,这个搬运代价依然随着分布间距离的变化而连续变化,从而提供有意义的梯度信号。直观地说:JS 散度只能告诉生成器”你错了”,而 Wasserstein 距离还能告诉生成器”你错了多少、往哪个方向改”。

1-Lipschitz 限制的实现方法#

方法描述评价
权重裁剪(Weight Clipping)强行将参数裁剪到 [c,c][-c, c]原始粗糙做法,不一定真正满足1-Lipschitz
梯度惩罚(Gradient Penalty)在真假数据连线上采样,惩罚梯度范数偏离1更稳定(WGAN-GP),教程重点介绍
谱归一化(Spectral Normalization)对权重矩阵做谱范数约束,限制每层 Lipschitz 上界常用工程约束手段(补充内容),能显著提升稳定性

梯度惩罚的目标函数

L=ExPdata[D(x)]EzP(z)[D(G(z))]+λEx^[(x^D(x^)21)2]\mathcal{L} = \mathbb{E}_{x \sim P_{data}}[D(x)] - \mathbb{E}_{z \sim P(z)}[D(G(z))] + \lambda \mathbb{E}_{\hat{x}}[(\|\nabla_{\hat{x}} D(\hat{x})\|_2 - 1)^2]

其中 x^\hat{x} 是真实样本和生成样本之间的插值点,惩罚项迫使梯度范数接近于 1。

实践经验:惩罚系数 (\lambda) 是超参数;在 WGAN-GP 原论文(Gulrajani et al., 2017)中常用 (\lambda=10) 作为默认设置。工程上它通常是一个不错的调参起点,但不同数据分辨率/网络容量/归一化方式下仍可能需要微调。

GAN vs WGAN 对比#

维度原始 GANWGAN
距离度量JS 散度Wasserstein 距离
分布不重叠时梯度消失,训练崩溃仍能提供有效梯度
判别器输出概率值 [0,1][0,1]任意实数(评分)
训练稳定性脆弱,依赖超参数调节显著更稳定
Lipschitz 约束必须满足(权重裁剪/梯度惩罚/谱归一化)
损失函数意义无直接意义近似等于 Wasserstein 距离,可监控训练进度

五、训练GAN的难点与技巧#

动态平衡的脆弱性#

GAN 的训练极度依赖两个网络的动态平衡

  • 判别器太强:生成器的梯度消失,难有进步方向
  • 判别器崩溃:无法区分真假,生成器失去优化目标
  • 生成器太强:判别器被完全欺骗,同样停止进化

训练诊断与处方(实战)#

症状(你观察到什么)常见原因(发生了什么)处方(怎么改)
D 很快接近“完美”(几乎全判对),G 的梯度很弱、生成停滞D 过强 / 学习率过大 / 正则不足 / 数据增强不足降低 D 学习率;减少 D 更新步数;对 D 加正则(如 gradient penalty / R1);加数据增强;增大 batch 或用 EMA 稳定 G
生成结果高度重复(Mode Collapse)对抗训练震荡;D 的反馈过于“尖锐”;G 找到局部捷径尝试 WGAN-GP 或 Hinge loss;对 D 加谱归一化;引入 minibatch 相关技巧;使用更强数据增强;降低 G 学习率并加 EMA
生成质量变好但多样性下降(Mode Dropping)训练目标偏向“容易骗 D 的模式”,覆盖不足增强多样性正则;提高数据多样性与增强;提高采样/判别覆盖(更强 D 或更长训练);用 FID + 多样性指标联合监控
loss 不断震荡,偶尔突然崩掉学习率/优化器不匹配;梯度爆炸;对抗不平衡降低学习率;用 TTUR(D/G 不同学习率);梯度裁剪;使用 WGAN-GP/R1;检查归一化(BN/IN)与初始化
训练看似正常,但 FID 波动大、指标不可信评估样本数不足;预处理不一致;随机性太大固定评估 pipeline(resize/normalize);增大评估样本数;同一 checkpoint 多次采样取均值;用定性可视化辅助判断

序列生成(文字生成)的极大挑战#

用 GAN 生成离散文本时面临根本性困难:

问题根源:生成器参数的微调无法改变经过 argmax\text{argmax} 输出的离散词元(Token)。

生成器参数微调 → 输出概率分布略微变化
→ argmax 选出的词元不变
→ 判别器打分不变
→ 梯度为零,无法更新

解决方案对比

方案描述评价
强化学习(RL)将词元选择视为动作,用判别器得分作为奖励训练不稳定,难以收敛
ScratchGAN通过超大 Batch Size 等技巧从零训练文本 GAN特例,工程代价极高
VAE / Flow 模型在连续隐空间中操作,天然支持梯度传播生成文本序列的更优选择
自回归模型(Autoregressive)逐词预测下一个词元,如 GPT 系列(Transformer Decoder)当前 NLP 文本生成的绝对主流

实践结论:如果目标是生成文本序列,VAE 或流模型往往比 GAN 更容易取得成功。


六、GAN的性能评估#

为什么不能用损失函数评估?#

GAN 的损失函数反映的是博弈状态,并不能直接反映生成效果。必须采用客观指标。

质量与多样性的评估框架#

将生成的图片输入预训练好的分类器(如 Inception Net)。之所以选用 Inception Net,是因为我们希望评估的是图像的高级语义特征(如”这是不是一只狗”),而非像素级差异——Inception Net 隐藏层提取的特征正好代表了人类视觉感知的抽象语义,与人类对图像质量的主观判断高度吻合。

质量评估(Quality)

  • 若图片质量高,分类器输出的概率分布应非常集中
  • 例如:高度确信这是一只狗(p(yx)p(y|x) 熵低)

多样性评估(Diversity)

  • 一批生成图片在分类器上的平均概率分布应当越均匀越好
  • 代表涵盖了各种类别(p(y)p(y) 熵高)

GAN训练失败的两种表现#

模式崩溃(Mode Collapse)

  • 生成器只生成同一张图或极少数图像
  • 丧失多样性,所有输出几乎相同

模式遗漏(Mode Dropping)

  • 只生成部分类别的图像
  • 忽略了数据集中存在的其他特征(如只生成金发人物,忽略其他发色)

Inception Score (IS)#

IS=exp(Ex[KL(p(yx)p(y))])IS = \exp\left(\mathbb{E}_x [KL(p(y|x) \| p(y))]\right)

同时衡量质量(p(yx)p(y|x) 集中)和多样性(p(y)p(y) 均匀)。局限:不评估与真实数据的相似度。

Fréchet Inception Distance (FID)#

核心前提:FID 假设真实数据和生成数据在 Inception Net 隐藏层中提取出的特征,在多维空间中均服从多维高斯分布(Multivariate Gaussian Distribution)。基于这一假设,只需用均值 μ\mu 和协方差矩阵 Σ\Sigma 就能完整描述两个特征分布,再计算它们之间的 Fréchet 距离:

FID=μrμg2+Tr(Σr+Σg2(ΣrΣg)1/2)FID = \|\mu_r - \mu_g\|^2 + \text{Tr}\left(\Sigma_r + \Sigma_g - 2(\Sigma_r \Sigma_g)^{1/2}\right)

FID 越小,说明生成质量和多样性越好,是目前最常用的 GAN 评估指标。

关于高斯假设的说明:这是一个近似假设。实际特征分布未必严格服从高斯分布,因此 FID 的准确性依赖于:

  • 足够的采样量:样本数太少会导致统计不稳定
  • 结合定性观测:FID 只是参考指标,需配合人工评估生成质量
  • 相对比较有效:虽然假设不完美,但在实践中 FID 仍是比较可靠的相对评估工具

七、Conditional GAN:条件生成#

动机#

基础 GAN 的生成是随机的,无法控制生成内容。条件生成(Conditional Generation) 要求:除了随机噪声 zz,还需根据特定输入 xx 生成满足条件的结果。

典型应用:Text-to-Image 文生图——输入文字描述,生成对应图像。

判别器必须成对输入#

关键架构改变:判别器不能只看生成的图像 yy 是否真实,还必须将条件 xx 和图像 yy 成对输入

为什么? 如果判别器只判断图像质量,生成器会学到一个捷径:无视输入条件,只管生成不相关的高清图片来骗取高分

判别器需要同时判断:

  1. 图像 yy 是否足够真实?
  2. 图像 yy 是否与条件 xx 匹配?

训练判别器时的关键负样本:训练数据必须包含三类样本:

样本类型内容判别器目标
正样本条件 xx + 匹配的真图 yrealy_{real}高分
负样本①条件 xx + 生成器造的假图 yfakey_{fake}低分
负样本②条件 xx + 不匹配的真图 yrealy'_{real}低分

⚠️ 常见陷阱:判别器只学会看清晰度,不学匹配

若缺少负样本②(不匹配的真图),判别器会退化为只看图像是否真实,而忘记检查与条件的匹配度——生成器依然可以无视条件生成高质量但不相关的图片。这是 Conditional GAN 训练失败的最常见原因之一。

解决方案:训练时故意把文字和图片”乱配”,让判别器学会同时判断”真实性”和”匹配度”。

实现细节:在实际操作中,通常将条件 xx(如文本描述的 Embedding 向量)与图像 yy 的特征图在网络中间层进行拼接(Concatenate),再输出最终打分,而非简单地将原始输入并排送入网络。

目标函数

minGmaxDV(D,G)=E(x,y)Pdata[logD(x,y)]+Ex,z[log(1D(x,G(z,x)))]\min_G \max_D V(D, G) = \mathbb{E}_{(x,y) \sim P_{data}}[\log D(x, y)] + \mathbb{E}_{x, z}[\log(1 - D(x, G(z, x)))]

八、Cycle GAN:无配对图像转换#

动机:无配对数据的挑战#

有配对数据:每张输入图像都有严格对应的目标图像(如同一场景的白天/夜晚照片)

无配对数据:只有两个域的图像集合,没有一一对应关系

现实中很难找到严格对应的成对训练照片(如”同一匹马在同一姿势下的斑马版本”)。Cycle GAN 解决了非成对数据的图像风格转换问题(如普通马→斑马、实景→梵高风格)。

架构#

两个生成器 + 两个判别器

  • GXYG_{X \to Y}:将 XX 域图像转换为 YY
  • GYXG_{Y \to X}:将 YY 域图像转换为 XX
  • DXD_X:判别 XX 域图像的真假
  • DYD_Y:判别 YY 域图像的真假

为什么需要循环一致性损失?#

问题:如果只有对抗损失,生成器可能学到一个捷径——彻底丢弃原图内容,随机生成一张逼真的目标域图片

例如:把马的图片丢掉,随机生成一张逼真的斑马照片。判别器无法识破,但这完全没有保留原图的内容。

循环一致性(Cycle Consistency):强制要求原图 xx 经过第一个生成器变成 y^\hat{y},再经过第二个生成器转换回来后,必须与最初的原图 xx 尽可能接近。

Lcyc=ExPX[GYX(GXY(x))x1]+EyPY[GXY(GYX(y))y1]\mathcal{L}_{cyc} = \mathbb{E}_{x \sim P_X}[\|G_{Y \to X}(G_{X \to Y}(x)) - x\|_1] + \mathbb{E}_{y \sim P_Y}[\|G_{X \to Y}(G_{Y \to X}(y)) - y\|_1]

这强制生成器在转换风格的同时保留原始图像的骨架和内容

总损失

L=LGAN(GXY,DY)+LGAN(GYX,DX)+λLcyc\mathcal{L} = \mathcal{L}_{GAN}(G_{X \to Y}, D_Y) + \mathcal{L}_{GAN}(G_{Y \to X}, D_X) + \lambda \mathcal{L}_{cyc}

Identity Loss:防止色调漂移#

循环一致性损失保证了内容不变,但生成器有时会擅自改变原图的色调(如把白天的天空变成黄昏色)。

原版论文引入了 Identity Loss 来解决这一问题:将 YY 域的真实图像直接喂给向 YY 域转换的生成器 GXYG_{X \to Y},要求输出必须与原图保持一致——因为它本来就已经是 YY 域的图像,不应被改变。

Lidentity=EyPY[GXY(y)y1]+ExPX[GYX(x)x1]\mathcal{L}_{identity} = \mathbb{E}_{y \sim P_Y}[\|G_{X \to Y}(y) - y\|_1] + \mathbb{E}_{x \sim P_X}[\|G_{Y \to X}(x) - x\|_1]

这一约束有效抑制了不必要的色彩偏移,在风景、绘画风格转换等对色调敏感的任务中尤为重要。


九、VAE:变分自编码器(补充内容)#

说明:以下内容为作者补充,非李宏毅教程原文内容。

自编码器的局限#

自编码器(Autoencoder):Encoder 将输入 xx 压缩为隐变量 zz,Decoder 从 zz 重建 x^\hat{x}

问题:隐空间不连续,无法直接采样生成新样本。

VAE的核心思想#

为什么需要变分推断?

理想情况下,我们希望直接计算后验分布 p(zx)p(z|x)(给定观测数据 xx,推断其对应的隐变量 zz)。但根据贝叶斯定理:

p(zx)=p(xz)p(z)p(x)p(z|x) = \frac{p(x|z)p(z)}{p(x)}

分母 p(x)=p(xz)p(z)dzp(x) = \int p(x|z)p(z)dz 需要对所有可能的 zz 积分,在高维空间中计算上不可行。变分推断的思路是:用一个参数化的简单分布 qϕ(zx)q_\phi(z|x)(如高斯分布)来近似这个难以计算的后验,并通过优化使两者尽量接近。

VAE(Variational Autoencoder) 对隐变量施加概率约束:

  • Encoder 输出分布参数:qϕ(zx)=N(μ,σ2)q_\phi(z|x) = \mathcal{N}(\mu, \sigma^2)
  • Decoder 从采样的 zz 重建:pθ(xz)p_\theta(x|z)
  • 先验:p(z)=N(0,I)p(z) = \mathcal{N}(0, I)

证据下界(ELBO)

最大化 logp(x)\log p(x) 等价于最大化其下界 ELBO(Evidence Lower BOund):

L=Eqϕ(zx)[logpθ(xz)]重建项:鼓励准确重建KL(qϕ(zx)p(z))正则项:约束隐空间结构\mathcal{L} = \underbrace{\mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)]}_{\text{重建项:鼓励准确重建}} - \underbrace{KL(q_\phi(z|x) \| p(z))}_{\text{正则项:约束隐空间结构}}
  • 重建项:Decoder 从 zz 重建 xx 的质量,越高越好
  • 正则项:迫使 Encoder 输出的分布接近标准高斯先验,保证隐空间的连续性和可采样性

重参数化技巧:将采样改写为 z=μ+σϵ, ϵN(0,I)z = \mu + \sigma \odot \epsilon,\ \epsilon \sim \mathcal{N}(0, I),使梯度可以传播到 ϕ\phi

VAE vs GAN#

特性VAEGAN
训练稳定性稳定不稳定,容易崩溃
生成质量较模糊(像素级重建损失导致)清晰、逼真
隐空间连续、可插值、有语义意义不保证连续
文本生成适合极难(离散梯度问题)
理论基础变分推断博弈论
典型应用药物分子设计、异常检测、数据增强图像生成、风格迁移、超分辨率

关键区别:VAE 的隐空间连续性使其特别适合需要可控插值的场景——例如在两张人脸之间平滑过渡,或在分子结构空间中搜索具有特定性质的新分子。GAN 则在追求极致视觉质量时更具优势,但代价是训练不稳定且隐空间缺乏可解释性。

VAE 的典型落地场景

  • 药物/材料发现:在连续隐空间中对分子结构进行梯度优化,定向搜索具有目标性质(如高溶解度、低毒性)的新分子
  • 人脸属性编辑:在隐空间中对”年龄""表情""发色”等语义方向进行线性插值,实现可控的人脸变换
  • 数据增强:对稀缺样本(如罕见病医学影像)在隐空间中采样,生成多样化的合成训练数据
  • 异常检测:正常样本重建误差低,异常样本(如工业缺陷、网络入侵)重建误差高,以此作为检测信号

总结#

关键要点#

GAN的核心链路

  1. 监督学习”两面讨好”问题 → 引入随机变量 zz 建模分布
  2. Generator(生成)+ Discriminator(评分)交替训练
  3. (理论视角)在最优判别器 (D^*) 假设下,GAN 的极大极小目标与 JS 散度存在严格对应关系;实际训练中通过交替优化对抗损失来逼近这一过程。
  4. JS 散度在分布不重叠时梯度消失 → WGAN 用 Wasserstein 距离解决
  5. Lipschitz 约束:权重裁剪 / 梯度惩罚 / 谱归一化
  6. 离散文本生成困难 → VAE/Flow 更适合序列生成
  7. 评估:FID 同时衡量质量与多样性;警惕 Mode Collapse 和 Mode Dropping
  8. Conditional GAN:判别器必须成对输入 (x,y)(x, y)
  9. Cycle GAN:循环一致性损失防止生成器丢弃原图内容

各模型的应用场景#

模型训练目标/性质训练稳定性采样速度生成质量&多样性可控性(条件生成)最适合的场景代表/备注
GAN对抗博弈(隐式分布)较不稳定(平衡难)极快(单/少步前向)质量高,但易模式问题需要显式条件结构实时生成、低延迟、轻量模型StyleGAN 系常作为“速度护城河”
Conditional GANGAN + 条件约束同上(更难一点)极快取决于训练与正则可控,但依赖判别器“匹配学习”配对条件任务(修复/上色/转风格)你文中“乱配负样本”是关键点
CycleGAN无配对域迁移 + cycle loss中等(仍有对抗部分)风格迁移强,但受数据域影响控制来自“域”而非细粒度条件无配对风格迁移/域适配常配 PatchGAN、L1/cycle 体系
VAEELBO(重建+KL正则)稳定快(一次解码)易“偏平滑”,但可控插值强条件化容易(CVAE等)可解释隐空间、检索/插值、异常检测适合“表示学习+生成”混合目标
Flow精确似然(可逆映射)稳定中等(可一次采样,但网络重)质量中高,细节取决于架构可条件化需要精确密度/可逆映射的任务工程上比扩散少见,但在特定领域很强
自回归 AR精确似然(逐步预测)最稳定(逐 token)质量强(NLP尤其强)条件极自然(prompt/上下文)文本/代码/离散序列生成GPT/LLM 主流范式
Diffusion / Score去噪/得分匹配稳定中等(多步,但可加速)顶级质量+多样性更容易做条件(attention+guidance)高保真图像/视频、复杂可控生成现代常用 15–30 步级别采样已很普遍

时代的更迭:扩散模型的崛起#

GAN 曾在相当长的时间内统治图像生成领域,但其训练不稳定、模式崩溃等固有缺陷始终是痛点。

模式崩溃的真实案例:早期的人脸生成 GAN 训练中,生成器有时会”发现捷径”——只生成少数几张能稳定骗过判别器的人脸,而非覆盖真实人脸的多样性。更典型的案例是 MNIST 手写数字生成:训练不稳定时,生成器可能只输出”1”和”7”(因为这两个数字结构简单,最容易骗过判别器),完全忽略其他 8 个数字——这正是模式遗漏(Mode Dropping)的典型表现。

近年来,扩散模型(Diffusion Models) 凭借训练更稳定、生成多样性更好的优势,在图像和视频生成领域逐渐取代 GAN 成为主流:

  • Stable DiffusionMidjourney:文生图的主流方案
  • Sora:视频生成的里程碑

GAN vs 扩散模型综合对比

维度GAN扩散模型
训练稳定性需要精细平衡,容易不稳定目标函数更直接,通常更稳
生成质量/多样性质量高,但易模式崩溃/遗漏通常更强,细节与覆盖更好
推理速度最快:单/少步多步为主,但已可通过采样器/蒸馏显著加速
工程调参难度高(博弈 + 正则/技巧多)中(主要在采样/调度/guidance)
条件生成需要显式设计 cGAN、判别器匹配更容易:条件注入 + guidance 成熟
适用场景一句话实时、低延迟、边缘部署高保真、多样性、强可控生成

扩散模型的核心思想是逐步去噪:先向数据中逐步添加高斯噪声(前向过程),再训练模型学习逐步去噪还原(反向过程)。相比 GAN 的对抗博弈,扩散模型的训练目标更简单稳定,但需要多步迭代去噪,推理延迟较高

而在对实时性要求极高的场景(如实时游戏渲染、边缘设备上的交互式生成)中,GAN 凭借单步前向传播即可出图的极高效率,依然具有不可替代的地位。这是 GAN 在扩散模型时代最核心的护城河。

理解 GAN 的对抗训练思想,是进入生成模型领域的重要基础。

致谢#

本笔记基于李宏毅老师的深度学习教程整理而成,感谢李宏毅老师对生成对抗网络的深入浅出的讲解,以及所有为生成模型领域做出贡献的研究者们。

相关资源:

代码实现参考:

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

生成模型:让AI学会创造
https://castorice.xin/posts/生成模型/
作者
castorice
发布于
2026-02-20
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时