第 15 章 生成对抗网络(Generative adversarial networks)

返回目录

本章一句话:GAN 让两个网络互相博弈——生成器拼命造假,判别器拼命打假;当判别器再也分不出真假时,生成器就学会了造出以假乱真的样本。

读这章的收获:理解生成器 vs 判别器的对抗思想与原始 GAN 损失,搞清楚为什么 GAN 这么难训练(梯度消失、模式崩溃),明白 Wasserstein 距离凭什么能救场,并对工程技巧、条件生成、图像翻译(Pix2Pix/CycleGAN)和 StyleGAN 建立直觉。


本章速览

  • GAN 是什么:一种无监督生成模型,目标是造出与训练样本“统计上无法区分”的新样本。它只是一个采样机制——不显式建立概率分布,因此无法评估一个新点属于该分布的概率。
  • 核心机制:生成器把随机噪声映射成样本;判别器尝试区分真样本与假样本。判别器越是分不清,说明假样本越逼真;一旦能分清,这个“分清”的信号就反过来推动生成器改进。
  • 对抗 = 极小极大博弈:判别器最小化损失(努力分辨真假),生成器最大化损失(努力骗过判别器),二者交替更新,理论上收敛到纳什均衡,此时判别器只能瞎猜(概率 0.5)。
  • 难训练:原始损失等价于 JS 散度;当真假分布几乎不重叠时梯度趋近于零(梯度消失),判别器太强反而把生成器“饿死”;还常出现模式丢弃 / 模式崩溃——只造一部分样本甚至同一张图。
  • Wasserstein GAN:换用“推土机距离”作为目标——即使两分布不重叠也有意义、且随两者靠近而平滑减小,从而给出更稳定的训练信号;代价是判别器必须满足 1-Lipschitz 约束(权重裁剪 / 梯度惩罚 / 谱归一化)。
  • 提质工程技巧:渐进式增长(从 4×4 一路长到高分辨率)、小批量判别(抑制模式崩溃)、截断技巧(用质量换多样性)。
  • 可控生成与图像翻译:条件 GAN / ACGAN / InfoGAN 让我们控制输出属性;Pix2Pix(成对)、对抗损失(SRGAN)、CycleGAN(不成对)把判别器当成“偏好真实感”的额外损失。
  • StyleGAN:在生成管线的不同尺度注入“风格”与“噪声”,把图像变化拆成可控的多个层次(大尺度脸型/姿态、中尺度五官、细尺度发丝/肤色)。

15.1 判别作为信号(Discrimination as a signal)

我们的目标是生成一批新样本 \(\{x_j^*\}\),让它们看起来和真实训练数据 \(\{x_i\}\) 出自同一分布。生成单个样本分两步:(i) 从一个简单的基分布(如标准正态)里采一个潜变量 \(z_j\);(ii) 把它送进带参数 \(\theta\) 的网络 \(x_j^* = g[z_j, \theta]\)。这个网络就是生成器(generator)。训练的目标就是调 \(\theta\),让 \(\{x_j^*\}\) 看起来“像”真数据。

“像”可以有很多定义,GAN 用的原则是:样本应当在统计上与真数据无法区分。为此引入第二个网络——带参数 \(\phi\) 的判别器(discriminator) \(f[\cdot, \phi]\),它的任务是把输入分类为“真实样本”还是“生成样本”。如果判别器不可能分清,那假样本就和真样本无从区别,我们就成功了;如果还能分清,那这个“分清”就是一个可以拿来改进生成过程的信号

图直觉(一维例子):把真实样本画成一排青色箭头,生成样本画成橙色箭头,判别器是一条 sigmoid 曲线(高度=判为“真”的概率)。一开始橙色样本偏在一侧、容易被识破。训练时推动生成器把橙色样本往真实样本那边挪,让判别器越来越没把握;接着再更新判别器。交替几轮后两堆样本完全混在一起,sigmoid 被压平、推动生成器变化的“劲”也消失了。此时判别器只能瞎猜,把它丢掉,留下一个会造逼真样本的生成器。

15.1.1 GAN 损失函数

判别器 \(f[x, \phi]\) 输出一个标量,越大表示越认为输入是真的。这是个二分类问题,所以借用二元交叉熵损失。约定真样本标签 \(y=1\)、假样本标签 \(y=0\),判别器要最小化:

\[ \hat{\phi} = \underset{\phi}{\arg\min}\left[\sum_j -\log\bigl(1 - \mathrm{sig}[f[x_j^*, \phi]]\bigr) - \sum_i \log\,\mathrm{sig}[f[x_i, \phi]]\right] \]

其中 \(\mathrm{sig}[\cdot]\) 是 logistic sigmoid。代入生成器定义 \(x_j^* = g[z_j, \theta]\)。注意生成器希望自己的样本被误判(被当成真),所以要对 \(\theta\) 最大化这个损失。于是得到 GAN 的极小极大目标:

\[ \hat{\theta} = \underset{\theta}{\arg\max}\,\underset{\phi}{\min}\left[\sum_j -\log\bigl(1 - \mathrm{sig}[f[g[z_j,\theta], \phi]]\bigr) - \sum_i \log\,\mathrm{sig}[f[x_i, \phi]]\right] \]

(延伸,非本书原文)课外常见的还有 Goodfellow 等人最初的期望形式,它与上式互为正负号、min/max 对调的等价写法:

\[ \min_g \max_d\;\mathbb{E}_x\bigl[\log d(x)\bigr] + \mathbb{E}_z\bigl[\log\bigl(1 - d(g(z))\bigr)\bigr] \]

15.1.2 训练 GAN

这个损失比我们以往见过的都复杂:判别器参数 \(\phi\) 要最小化它,生成器参数 \(\theta\) 要最大化它。这就是 GAN 被称为极小极大博弈(minimax game) 的原因——生成器不断找新办法骗判别器,判别器不断找新办法识破。从理论上讲,解是一个纳什均衡:优化算法要找到一个点,它同时是一个函数的最小值、又是另一个函数的最大值。如果训练顺利,收敛时 \(g[z,\theta]\) 产生的样本就和真数据同分布,而 \(\mathrm{sig}[f[\cdot,\phi]]\) 处处等于 0.5(瞎猜)。

实际训练时把目标拆成两个损失交替优化:一个训练判别器(让真样本得高概率、假样本得低概率),一个训练生成器(把第二项与 \(\theta\) 无关的部分丢掉、再乘 −1 转成最小化,让假样本骗到高概率)。每一步:采一批 \(z_j\) 过生成器得到假样本 \(x_j^*\),再取一批真样本 \(x_i\),然后分别对两个损失做一次或多次梯度下降。

15.1.3 深度卷积 GAN(DCGAN)

DCGAN 是早期专门生成图像的 GAN 架构。生成器输入一个 100 维潜变量 \(z\)(从均匀分布采样),先用线性变换映射成 4×4、1024 通道的表示,再经过四个卷积层逐步上采样并减少通道(用步长为 0.5 的分数步长卷积,每层把分辨率翻倍),最后用 tanh 把 64×64×3 的信号压到 \([-1,1]\) 表示图像。判别器是标准卷积网络,最后缩成 1×1×1,过 sigmoid 输出概率。训练完丢掉判别器,只用生成器采样造图。

15.1.4 GAN 为什么难训练

理论上 GAN 很简单,实践中却出了名地难训。光是让 DCGAN 稳定训练,就得:(i) 用步长卷积做上/下采样;(ii) 生成器和判别器里都用 BatchNorm(但分别在最后一层、第一层除外);(iii) 判别器用 leaky ReLU;(iv) 用 Adam,但动量系数比平常更低。这很反常——多数深度模型对这些选择都比较鲁棒。

一种常见失败:生成器造出的样本看着逼真,但只覆盖了数据的一子集(比如人脸永远不长胡子),这叫模式丢弃(mode dropping)。极端情形是生成器几乎无视潜变量 \(z\),把所有样本塌缩到一两个点,这叫模式崩溃(mode collapse)


15.2 提升稳定性(Improving stability)

要弄清 GAN 为什么难训,得先看清损失函数到底代表什么。

15.2.1 损失函数分析

把损失里的两项分别除以真、假样本数,就能写成期望形式,进而写成对真分布 \(Pr(x)\) 与生成分布 \(Pr(x^*)\) 的积分。当真假样本数相等时,最优判别器对一个来源未知的样本 \(\tilde{x}\) 给出:

\[ Pr(\text{real}\mid \tilde{x}) = \mathrm{sig}\,f[\tilde{x}, \phi] = \frac{Pr(x)}{Pr(x^*) + Pr(x)} \]

把它代回损失,化简后(忽略加性、乘性常数)正好是真分布与生成分布之间的 Jensen-Shannon 散度(JS 散度)

\[ D_{JS}\bigl[Pr(x^*)\,\|\,Pr(x)\bigr] = \frac12 D_{KL}\!\left[Pr(x^*)\,\Big\|\,\tfrac{Pr(x^*)+Pr(x)}{2}\right] + \frac12 D_{KL}\!\left[Pr(x)\,\Big\|\,\tfrac{Pr(x^*)+Pr(x)}{2}\right] \]

这个表达式里有两项,各有含义:

  • 质量(quality)项:惩罚“有假样本但没有真样本”的区域——逼着生成器别造出离谱的东西。
  • 覆盖(coverage)项:惩罚“有真样本但没有假样本”的区域——逼着生成器别漏掉数据里的某些模式。

关键在于:覆盖项不依赖生成器,所以生成器其实“不在乎”覆盖率,它乐得只精确地造出一部分样本。这就是模式丢弃的根源。

15.2.2 梯度消失(Vanishing gradients)

当判别器最优时,损失实际在最大化真假分布之间的某种距离。问题在于:如果两个分布完全不重叠,这个距离就顶到最大值,对生成器做任何小改动都不会降低损失——梯度为零。换个角度看原始公式也一样:如果判别器能完美分开真假,那么对假样本做微小改动也不会改变分类得分(sigmoid 在样本处的斜率几乎为零)。

不幸的是,真假分布真的可能不重叠:生成样本被困在潜变量 \(z\) 那么大的低维子空间里,真实样本也因物理生成过程而落在低维子空间里,两者很可能几乎没有交集。实验也证实了这点:把 DCGAN 的生成器冻住、只把判别器训得越来越准,生成器收到的梯度就急剧衰减。换句话说,判别器与生成器之间存在一个很微妙的平衡——判别器一旦太强,生成器的更新就被掐灭了。

15.2.3 Wasserstein 距离

前面两点说明:(i) GAN 损失可解释为分布间距离;(ii) 当真假太容易区分时这个距离的梯度为零。出路很自然——换一个性质更好的距离度量

Wasserstein 距离(离散情形也叫推土机距离 / earth mover’s distance)衡量的是:把一个分布的“概率质量”搬运成另一个分布所需的(功 = 搬运的质量 × 移动的距离)。它的诱人之处在于:即使两个分布完全不重叠也有良好定义,并且随着两者靠近而平滑地减小——正好补上了 JS 散度的短板。

15.2.4 离散情形

考虑定义在 \(K\) 个箱子上的两个离散分布 \(Pr(x{=}i)\) 与 \(q(x{=}j)\)。从第一个分布的箱 \(i\) 搬一单位质量到第二个分布的箱 \(j\) 有代价 \(C_{ij}\)(比如取索引差 \(|i-j|\))。所有搬运量构成一个运输方案矩阵 \(P\),Wasserstein 距离就是使总代价最小的方案:

\[ D_w\bigl[Pr(x)\,\|\,q(x)\bigr] = \min_{P}\left[\sum_{i,j} P_{ij}\cdot|i-j|\right] \]

约束是:\(P\) 各行之和等于源分布、各列之和等于目标分布、所有元素非负(即 \(P\) 是一个联合分布)。

图直觉:把第一个分布的每根“柱子”想成一堆土,要把它们搬成目标分布的形状。运输方案 \(P\) 记录“从 \(i\) 搬多少到 \(j\)”,距离矩阵记录“从 \(i\) 到 \(j\) 多远”。最优方案让 \(P\) 尽量贴着对角线(就近搬运代价最低)。

每次都解这个最小化问题很麻烦,好在它是标准的线性规划,有等价的对偶形式,解为:

\[ D_w\bigl[Pr(x)\,\|\,q(x)\bigr] = \max_{f}\left[\sum_i Pr(x{=}i)\,f_i - \sum_j q(x{=}j)\,f_j\right] \]

约束是相邻取值之差不超过 1,即 \(|f_{i+1} - f_i| < 1\)。

15.2.5 连续情形

推广到连续多维,对偶形式变成:

\[ D_w\bigl[Pr(x),\,q(x)\bigr] = \max_{f[x]}\left[\int Pr(x)\,f[x]\,dx - \int q(x)\,f[x]\,dx\right] \]

约束变成:函数 \(f[x]\) 的 Lipschitz 常数小于 1(即它的梯度绝对值处处小于 1)。

15.2.6 Wasserstein GAN 损失

在神经网络里,我们用判别器 \(f[x, \phi]\) 来近似上面那个“函数空间上的最大化”,并用样本近似积分:

\[ L[\phi] = \sum_j f[g[z_j, \theta], \phi] - \sum_i f[x_i, \phi] \]

注意:判别器不再输出 sigmoid 概率,而是输出一个实数“打分”(有时称为 critic)。关键约束是 \(f\) 必须满足 1-Lipschitz,即处处有:

\[ \left|\frac{\partial f[x, \phi]}{\partial x}\right| < 1 \]

怎么强制这个约束?

  • 权重裁剪:把判别器权重裁到一个小范围(如 ±0.01)——简单但粗糙。
  • 梯度惩罚(WGAN-GP):加一个正则项,当梯度范数偏离 1 时就受罚——更平滑、效果更好。
  • (延伸)谱归一化 也是常用手段,用来限制 Lipschitz 常数。

Wasserstein 形式即使在真假分布不重叠时也能给出有用的梯度,从而让训练明显更稳定


15.3 渐进式增长、小批量判别与截断(Progressive growing, minibatch discrimination, and truncation)

Wasserstein 让训练更稳,但要生成高质量图像还需要更多机关。

渐进式增长(progressive growing):先训一个只造 4×4 小图的 GAN(架构类似 DCGAN,判别器负责分辨“是合成的小图,还是真图下采样得到的小图”)。这一层级训练收敛后,给生成器添加新层去上采样、生成 8×8 图;判别器也对称地加层来接收更高分辨率并下采样回去。如此 16×16、32×32……一路长上去,最终能稳定训练出非常逼真的高分辨率图像。实践中新层是渐渐“淡入”的:起初高分辨率图只是上一级结果的上采样(走残差连接),新层逐步接管。

图直觉:同一个潜变量在不同阶段生成的图,分辨率从 4×4 逐级清晰到高分辨率,像“慢慢对焦”。

小批量判别(minibatch discrimination):保证样本足够多样,从而抑制模式崩溃。做法是在小批量内统计真/假样本的特征统计量(比如每个特征在批内的标准差),汇总成一个特征图,加到判别器靠后的位置。这样判别器就能感知“这批样本是否和真实数据一样有丰富变化”,并把信号反馈给生成器,逼它别老造同一张图。

截断(truncation):采样时只保留高概率(靠近均值)的潜变量 \(z\),用多样性换质量。设阈值 \(\tau\)(标准差倍数)拒绝太离群的 \(z\):\(\tau\) 大(如 2.0)则样本视觉上多样但可能有瑕疵;\(\tau\) 减小则平均质量提升、多样性下降;\(\tau\) 极小则样本几乎一模一样。仔细选阈值就能在质量和多样性间取得好的折中。配合精心的归一化与正则化,再加上潜空间里平滑移动可得到逼真插值(不过通常只在短轨迹上成立,走太远就会跳到产生不真实图像的区域),GAN 就能合成丰富而逼真的图像。


15.4 条件生成(Conditional generation)

普通 GAN 能造逼真图,但不能指定属性——想控制人脸的发色、年龄、种族,就得为每种组合单独训一个 GAN。条件生成给了我们这种控制力。

15.4.1 条件 GAN(Conditional GAN)

把一个属性向量 \(c\) 同时喂给生成器和判别器,记作 \(g[z, c, \theta]\) 和 \(f[x, c, \phi]\)。生成器要把潜变量 \(z\) 变成带正确属性 \(c\) 的样本;判别器要区分“带目标属性的生成样本”与“带真实属性的真样本”。属性 \(c\) 在生成器端可直接拼到 \(z\) 后面;在判别器端,若是图像,可把 \(c\) 线性变换成一张 2D 特征图,作为额外通道拼到输入或某个中间隐层上。这样训练出的样本既要真实,又要与属性相符

15.4.2 辅助分类器 GAN(ACGAN)

ACGAN 简化了条件生成:要求判别器自己把属性预测对。对一个有 \(C\) 类的离散属性,判别器输出 \(C+1\) 个值——第一个过 sigmoid 判“真/假”,其余 \(C\) 个过 softmax 预测类别。这样训练的网络能从 ImageNet 合成多个类别(如蝴蝶、金翅雀、雏菊等)。

15.4.3 InfoGAN

条件 GAN 和 ACGAN 都需要预先指定属性,InfoGAN 则自动发现重要属性。它把生成器输入拆成“噪声 \(z\)”和“随机属性 \(c\)”两部分;判别器既要判真假,又要重建出属性 \(c\)

直觉是:可解释的真实世界特征最容易被预测,因此会被表示进 \(c\) 里。\(c\) 可以是离散的(用交叉熵损失,对应数据中的类别)或连续的(用最小二乘损失,对应渐变的变化模式)。在 MNIST 上,离散的 \(c_1\) 自动恢复出 10 个数字,连续的 \(c_2\)、\(c_3\) 分别对应字符的倾斜角度笔画粗细——也就是说潜空间被解耦(disentangled) 了。


15.5 图像翻译(Image translation)

对抗判别器最初是为“造随机样本”而生的,但它也能当作一个偏好真实感的先验,用在把一种图像翻译成另一种图像的任务里:灰度转彩色、去噪、去模糊、草图转照片等。本节三个模型用的人工标注程度不同:Pix2Pix 用成对前后图;对抗损失类方法主图用成对数据、但判别器还能利用未配对的“后”图;CycleGAN 完全用不成对图像。

15.5.1 Pix2Pix

Pix2Pix 用一个 U-Net \(\hat{x} = g[c, \theta]\) 把输入图 \(c\) 翻译成另一种风格的图 \(x\)(典型如上色:输入灰度、输出彩色)。它有两个损失:

  • 内容损失:用 \(\ell_1\) 范数 \(\|x - g[c,\theta]\|_1\) 惩罚输出与真实目标的差异,保证大尺度结构对。
  • 对抗损失:判别器 \(f[c, x, \phi]\) 同时吃“前图 + 后图”这一对,努力区分“真前后对”和“前图+合成对”。能区分得越好,反馈信号就越推动 U-Net 把输出做得更真。由于内容损失已经管住了大结构,判别器主要负责让局部纹理逼真——为此用 PatchGAN 损失:一个纯卷积分类器,最后一层每个单元判断自己感受野内的区域是真是假,再把这些响应平均成最终输出。

可以把它看成“以图像(而非标签)为条件”的条件 GAN,其中 U-Net 是生成器。不过 U-Net 输入里没有噪声,所以严格说不算传统意义的“生成器”。有意思的是,原作者试过给 U-Net 加噪声 \(z\),结果网络直接学会无视它。

15.5.2 对抗损失(Adversarial loss)

Pix2Pix 的判别器需要成对前后图才能用。其实有更省事的办法在监督学习里借用对抗判别器的威力,而无需额外标注:对抗损失——只要判别器能把一个监督网络的输出和它所属输出域里的真实样本区分开,就加惩罚,于是监督模型会调整预测来降低惩罚。这能整体或在 patch 级别提升复杂结构化输出的真实感,但不一定让原始损失意义下的解更好。

超分辨率 GAN(SRGAN) 就是个好例子:主模型是带残差连接的卷积网络,吃低分辨率图、经上采样层输出高分辨率图,用三个损失训练——内容损失(与真高清图的平方差)、VGG / 感知损失(把合成图和真图都过 VGG,比较激活的平方差,鼓励语义相似)、以及对抗损失(判别器分辨“真高清”还是“放大来的”,鼓励输出与真高清无从区别)。

15.5.3 CycleGAN

对抗损失仍假设主网络有成对前后图。CycleGAN 处理的是:有两批风格不同、但没有配对的数据(如一堆照片和一堆莫奈画作,彼此无对应关系)。它的核心思想是:把图像翻过去再翻回来,应当恢复原图

CycleGAN 损失是三项的加权和:

  • 内容损失(\(\ell_1\)):鼓励前后图相似。
  • 对抗损失:用判别器让输出像目标域的真实样本。
  • 循环一致性损失(cycle-consistency):同时训两个方向相反的模型(A→B 与 B→A);如果一张图翻成另一域再翻回来能成功还原,这项损失就低——它逼着映射可逆

图直觉(马↔斑马):模型 1 把马变斑马,模型 2 把斑马变回马。循环一致性确保“变过去再变回来”的斑马仍站在原来的位置、姿态、背景里;两个对抗损失则保证变出来的图看着像真斑马(真马)。


15.6 StyleGAN

StyleGAN 是更现代的 GAN,它把数据集里的变化拆成有意义的成分,每个成分由一部分潜变量控制。它能在不同尺度上控制输出图像,并把风格噪声分离开。对人脸而言:大尺度变化是脸型和头部姿态,中尺度是五官的形状和细节,细尺度是发色肤色。风格代表人类觉得显著的方面,噪声代表不重要的随机变化(发丝/胡茬/雀斑/毛孔的确切位置)。

之前的 GAN 都是把一个潜变量 \(z\) 从基分布采出、一路过卷积层得到图像。但其实潜变量可以 (i) 在架构的不同位置注入,(ii) 用不同方式修改当前表示。StyleGAN 就巧妙地利用这两点来控制尺度、分离风格与噪声。

StyleGAN 的主干从一个学到的常量 4×4×512 表示开始,经一系列卷积层逐步上采样到最终分辨率。在每个尺度都注入两组随机潜变量——风格与噪声,越靠近输出层,代表的细节越精细

  • 噪声分量:独立采样的高斯向量 \(z_1, z_2, \dots\),在主管线每次卷积后加性注入;它们与当前表示同样空间大小,但乘以逐通道学到的缩放因子 \(\psi_1, \psi_2, \dots\),从而对不同通道贡献不同。分辨率越高,噪声贡献的尺度越细。
  • 风格分量:从一个 1×1×512 的噪声张量出发,先过一个七层全连接网络得到中间变量 \(w\)。这一步让风格各方面去相关,使 \(w\) 的每一维能代表一个独立的真实因子(如头部姿态、发色)。\(w\) 再线性变换成张量 \(y\),用来设定主干表示在各空间位置上的逐通道均值和方差——这就是自适应实例归一化(AdaIN)。一系列 \(y_1, y_2, \dots\) 在主干的不同位置注入,使同一风格在不同尺度上发挥作用。

图直觉:在不同尺度上改风格向量,会系统性地改变脸型/五官/发色等不同层次的特征;改噪声向量则只影响发丝、毛孔这类细枝末节的随机摆放——大体相貌不变。


本章小结

GAN 学一个生成器,把随机噪声变成与训练集无从区别的数据。为此用一个判别器去区分真样本和生成样本,再更新生成器、让它造的数据被判别器判得更“真”。原始公式有个缺陷:当真假很容易区分时训练信号很弱(对应 JS 散度下的梯度消失),这催生了 Wasserstein GAN,用推土机距离提供更一致的训练信号。

我们看了用于生成图像的卷积 GAN(DCGAN),以及一系列提质技巧:渐进式增长、小批量判别、截断条件 GAN 系列引入辅助向量来控制输出(如物体类别),ACGAN 让判别器顺带分类、InfoGAN 自动发现可解释属性。图像翻译任务把条件信息换成图像、丢掉随机噪声,此时判别器化身为“偏好真实感”的额外损失项(Pix2Pix 用成对图、SRGAN 用对抗损失、CycleGAN 用不成对图加循环一致性)。最后,StyleGAN 在生成器里有策略地注入噪声与风格,从而在不同尺度上分别控制风格和噪声。

需要记住的核心张力:GAN 不建立显式概率分布、只会采样;它训练困难、容易模式崩溃;判别器太强会饿死生成器、太弱又给不出信号——找到这个平衡,正是 GAN 工程的全部艺术。


关键术语对照

中文 English 一句话含义
生成对抗网络 GAN (Generative Adversarial Network) 生成器与判别器对抗博弈来造逼真样本
生成器 / 判别器 Generator / Discriminator 造假样本的网络 / 分辨真假的网络
极小极大博弈 Minimax game 一方最小化、另一方最大化同一损失
纳什均衡 Nash equilibrium 双方都无法单方面改进的稳定点
模式丢弃 / 模式崩溃 Mode dropping / collapse 只造一部分样本 / 塌缩到极少数样本
梯度消失 Vanishing gradients 真假太易区分时生成器收不到梯度
JS 散度 Jensen-Shannon divergence 原始 GAN 损失隐含优化的距离
Wasserstein 距离 Wasserstein / earth mover’s distance 把一分布搬成另一分布所需的“功”
Lipschitz 约束 Lipschitz constraint 限制判别器梯度(≤1)以用 WGAN
梯度惩罚 / 谱归一化 Gradient penalty / Spectral norm 强制 1-Lipschitz 的两种手段
渐进式增长 Progressive growing 从低分辨率逐级长到高分辨率
小批量判别 Minibatch discrimination 用批内统计量抑制模式崩溃
截断技巧 Truncation trick 弃用离群潜变量,用多样性换质量
条件 GAN Conditional GAN 用属性向量控制输出
自适应实例归一化 AdaIN StyleGAN 用风格设定逐通道均值方差
循环一致性损失 Cycle-consistency loss 翻过去再翻回来应还原原图
对抗损失 Adversarial loss 把判别器当成“偏好真实感”的损失项

返回目录 | 上一章:第 14 章 无监督学习 | 下一章:第 16 章 归一化流