GAN 架构
GANs(生成对抗网络)是一种机器学习模型,它学习如何从特定的分布中生成实例(例如,人脸图像)。它实际上包含两个神经网络:一个生成器(generator)和一个判别器(discriminator)。
生成器(Generator) :负责生成新的数据实例。
判别器(Discriminator) :负责评估这些实例是否真实。
在训练过程中,这两个网络之间会进行一种竞争:
- 生成器的目标是生成足够真实的数据实例,以至于判别器无法区分实例是真是假。
- 判别器的目标是准确地判断数据实例是真实的还是生成器生成的。

生成器(Generator)
在生成对抗网络(GAN)中,生成器(Generator)并不直接学习数据的概率分布p(x),而是学习如何从这个分布中采样。
- 生成器输入:生成器的输入是一个具有简单先验分布的潜变量z(例如,均匀分布或标准正态分布)。
- 生成器输出:生成器的输出是一张图像。
- 生成器网络:生成器网络学习一个函数,这个函数将输入的潜在空间分布p(z)映射到一个近似于真实数据分布p(x)的分布。

生成器的架构(示例)
判别器(Discriminator)
在生成对抗网络(GAN)中,判别器(Discriminator)的任务是区分真实的输入数据和生成器(Generator)所创建的假的数据。
判别器的本质:判别器是一个具有两个输出类别(真实或假冒)的神经网络分类器。
判别器的结构:判别器的架构取决于其任务。例如,在图像任务中,判别器可能是一个包含多个卷积层的卷积神经网络(CNN),最后通过softmax函数输出每个类别的概率。
训练
在训练生成对抗网络时,生成器(G)和判别器(D)是同时训练的,他们使用真实数据 X 和生成器的输入 z 进行训练。
- 判别器的目标:判别器D的目标是正确区分真实数据和生成器G产生的假数据。
- 判别器的优化目标:判别器D希望最大化对真实数据x的识别率D(x),同时最小化对假数据G(z)的错误识别率D(G(z))。
- 生成器的目标:生成器G的目标是欺骗判别器D,使其将假数据误判为真实数据。
- 生成器的优化目标:生成器G希望最大化判别器D对其生成的假数据G(z)的误判率D(G(z))。
这个训练过程可以视为一个零和(zero-sum)游戏,目标是在生成器G和判别器D之间找到一个平衡点,即两者的能力达到均衡(equilibrium),判别器不能轻易地区分真实数据和假数据。
训练目标(Training objective)
GAN的训练目标是一个极小极大游戏(minimax game)

判别器的响应
-
对真实图像的响应:
-
对生成器产生的假图像的响应:
判别器(D)的目标:试图通过学习权重来最大化这个值,使得对真实图像的判别结果 D(x)=1,而对假图像的判别结果 D(G(z))=0。
生成器(G)的目标:试图通过学习权重来最小化这个值,以欺骗判别器,使得判别器对假图像的判别结果 D(G(z))=1。
训练的细节
如果判别器太好:
- 它会很容易地拒绝所有由生成器生成的假输入。
- 这样会导致生成器无法获取足够的信息进行有效训练。
如果判别器太差:
- 它会很容易被那些不太逼真的假输入所混淆。
- 这会导致生成器学到一个质量较差的解决方案。
训练可能会很困难,找到判别器和生成器之间的平衡点是一项艰难的任务。为了实现有效的训练,需要在判别器和生成器之间保持一种动态平衡,使它们相互竞争和提升。
小结
GAN是一对一起训练的网络:生成器(Generator)根据潜在输入 z 创建图像,判别器(Discriminator)判断图像是真实还是假的。
目标函数(Objective function)是一场竞赛,生成器试图欺骗判别器。
生成器并不直接学习p(x)(真实图像的分布),但确实学会了如何从这个分布中进行采样。
评估 GANs
GAN的平衡并不一定意味着GAN找到了一个好的解决方案。理想情况下,我们如何判断一个GAN是否已经学到了有效的信息呢?
- 输出不应该与输入完全相同(也就是说,GAN不应该仅仅是记忆了训练数据)。
- 输出应该看起来像输入(看起来"真实",而不是"假的")。
- 输出应该和真实数据一样具有多样性(避免模式崩溃 mode collapse,也就是说生成器不应该只生成一种或少数几种输出)。
评估真实性(Evaluating realism)
黄金标准 (Gold standard): 人类评估(慢并且贵)
自动方法:使用图像分类器(在 ImageNet 上预训练的 CNN)来区分真实图像和人工生成的图像。
初始得分(Inception score)

这强调了类内的一致性。对于一个特定的类别,所有图像都应该被分类器自信地分类到正确的标签。

强调了类间的多样性。GAN应该生成各种各样的图像,这些图像可以被分类器自信地分类到不同的类别。
类内的一致性(Within-class consistency)
这指的是生成图像在同一类别中的一致性或相似性。例如,如果GAN生成了多张猫的图片,那么这些图片都应该被分类器准确且自信地标记为"猫"。即使图片展示了猫的不同姿势或表情,分类器也应该能够准确识别它们。
类间的多样性(Between-class diversity)
这指的是生成图像在不同类别之间的差异或多样性。GAN应该能够生成多种不同类型的图像,如猫、狗、汽车等,并且每种类型的图像都应具有一定的质量和可信度。这有助于确保模型不会仅在特定类别中表现良好,而是可以广泛应用于多个类别。
优缺点
优势:
- 自动化 Automatic,高效 efficient
- 神经网络的响应与人类对图像质量的判断相关
劣势:
- 在类别内部不要求高度多样性
- 对噪音和对抗性图像敏感
多样性(Diversity)
GAN(生成对抗网络)不仅仅是记住了训练数据集中的例子。
GAN是否捕获了训练集中的所有多样性?我们如何测量或量化这种多样性?
生日悖论(Birthday paradox)
概念:在一个只有23个人的随机群体中,任意两个人生日相同的概率超过50%
假设有一个生成器可以产生𝑁个不同的离散输出,且所有输出都是等概率的。
实验:从这些输出中取一个小样本 𝑠,并计算其中的重复。
- 根据在大小为𝑠的样本中观察到的重复次数,可以用来计算𝑁。
- 一个包含大约 <math xmlns="http://www.w3.org/1998/Math/MathML"> N \sqrt{N} </math>N 个输出的样本很可能至少有一对重复。
面临的一些挑战
重复
在训练数据集中,可能存在相似或几乎相同的图像。1-NN可能是指"最近邻"方法,用于找到数据集中与给定图像最相似的图像。

多样性和GANs
测试的大多数GANs在输出的图像多样性方面与其训练集相当。也就是说,如果训练集中的图像多样性有限,GAN生成的图像也可能缺乏多样性。
小结
GAN(生成对抗网络)的评估非常重要,因为成功的训练不一定意味着生成器的输出与p(x)相似。
通常检查的内容:
- 记忆化(Memorisation)
- 真实感(Realism)
- 多样性(Diversity)
条件生成对抗网络(Conditional GANs)
条件模型:学习 p(x|y) 而不是p(x)
判别器和生成器都将y作为额外的输入

CycleGAN
如果您没有真实的x-y对数据集怎么办?
回答: 训练一对生成器(Generators)来映射(map)x->y 和 y->x


小结
优点
- GANs 可以从复杂的概率分布中生成样本,而不实际表示该分布。
缺点
- 可能不稳定 / 难以训练
- 难以评估
- 即使是没有显示完全模式崩溃(mode collapse)的模型,也往往具有低于期望的多样性(diversity)