生成对抗网络 (GAN)(GANs)由 Ian Goodfellow 及其同事于2014年提出,代表了一类强大的生成模型。GANs 不显式地对数据概率分布建模,而是通过一个对抗过程,学习从该分布中生成样本。此过程包含两个相互竞争的神经网络 (neural network):生成器和判别器。生成对抗网络的主要部分及其协作方式在此进行讲解。
生成器 (G)
生成器网络,表示为 G,充当创造性引擎。其主要作用是合成与真实数据分布相似的数据样本。通常,G 以从简单先验分布(如高斯分布或均匀分布)中取样的随机噪声向量 (vector) z(即 z∼pz(z))作为输入。然后,它通过一系列变换处理此噪声,这些变换常使用深度卷积层(特别是用于图像生成的转置卷积或“反卷积”)来实现,以生成候选数据样本 G(z)。G 的目标是学习从潜在空间(z 所在的空间)到数据空间的映射,使生成的样本 G(z) 变得与真实数据样本 x 无法区分。
判别器 (D)
判别器网络 D 充当评论家或评判者。其作用是评估给定数据样本的真实性。D 本质上是一个二元分类器,通常作为标准的前馈或卷积神经网络 (neural network) (CNN)实现。它将数据样本(来自训练数据集的真实样本 x 或生成器生成的伪样本 G(z))作为输入,并输出一个标量概率 D(x),表示输入样本是真实的(非生成)可能性。接近1的值表明判别器认为样本是真实的,而接近0的值则说明它认为样本是伪造的。
对抗训练过程
训练过程组织了一场 G 和 D 之间的竞争性活动。此活动可按以下方式理解:
- 判别器训练: D 接受训练以提高其区分真实数据与生成数据的能力。它接收一个批次的数据,包含来自数据集的真实样本 x(x∼pdata(x))和当前生成器生成的伪样本 G(z)(使用随机噪声 z∼pz(z))。D 的权重 (weight)通过梯度上升进行更新,以最大化其分类准确度,有效地使 D(x) 接近1,使 D(G(z)) 接近0。在此阶段,生成器的权重保持不变。
- 生成器训练: G 接受训练以提高其欺骗判别器的能力。它生成一批伪样本 G(z)。这些样本随后经由判别器处理。生成器的权重根据判别器的输出 D(G(z)) 通过梯度下降 (gradient descent)进行更新,目标是使判别器将这些伪样本分类为真实样本(使 D(G(z)) 接近1)。在此阶段,判别器的权重保持不变。
这两个步骤迭代交替进行。随着时间的推移,G 在生成逼真样本方面表现更好,使 D 的任务变得更难。同时,D 在识别伪造样本方面表现更好,促使 G 生成更具说服力的输出。这种动态竞争最终会使得 G 生成的样本在统计上与真实数据无法区分,而 D 则被迫随机猜测(D(x)≈0.5)。
流程图描绘了 GAN 框架中生成器、判别器、随机噪声、真实数据和生成数据之间的关系。
最小最大目标函数
对抗活动通过最小最大目标函数 V(D,G) 正式描述:
GminDmaxV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
我们来细分一下:
- Ex∼pdata(x)[logD(x)]: 此项表示判别器对从真实数据分布 pdata(x) 中取样的真实数据样本 x 的预期输出。判别器 D 目标是最大化此项,即它希望 D(x) 接近1(正确识别真实样本)。
- Ez∼pz(z)[log(1−D(G(z)))]: 此项表示对从噪声 z 生成的伪数据样本 G(z) 的预期输出。判别器 D 也目标是最大化目标函数的此部分,这对应于最小化 D(G(z)),使其接近0(正确识别伪样本)。
- maxD: 判别器试图通过更擅长区分真实与伪造样本,来最大化整个表达式 V(D,G)。
- minG: 生成器无法直接影响第一项(logD(x)),因此它试图通过影响第二项来最小化整体目标。最小化 Ez∼pz(z)[log(1−D(G(z)))] 意味着 G 旨在使 D(G(z)) 接近1,有效地欺骗判别器,使其认为生成的样本是真实的。
在实践中,当 D 很强并以高置信度拒绝 G 的样本时(D(G(z)) 接近0),训练 G 来最小化 log(1−D(G(z))) 在训练早期可能导致梯度消失。一个常见的替代方法是修改生成器的目标,转而最大化 logD(G(z))。此替代目标在早期提供更强的梯度,但在对抗活动中保持相同的固定点。
此基本框架构成了我们将要了解的各种 GAN 架构和应用,包括本章后面讨论的特定模型。理解此主要对抗动态对于诊断训练问题和评估更高级 GAN 变体的改进之处非常重要。