生成式对抗网络(GANs)

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

小结

优点

  1. GANs 可以从复杂的概率分布中生成样本,而不实际表示该分布。

缺点

  1. 可能不稳定 / 难以训练
  2. 难以评估
  3. 即使是没有显示完全模式崩溃(mode collapse)的模型,也往往具有低于期望的多样性(diversity)
相关推荐
知舟不叙4 小时前
基于OpenCV的图像增强技术:直方图均衡化与自适应直方图均衡化
人工智能·opencv·计算机视觉·图像增强
CoovallyAIHub5 小时前
云南电网实战:YOLOv8m改进模型攻克输电线路异物检测难题技术详解
深度学习·算法·计算机视觉
风靡晚1 天前
用于汽车毫米波雷达的四维高分辨率点云图像
人工智能·算法·机器学习·计算机视觉·汽车·信息与通信·信号处理
这张生成的图像能检测吗1 天前
生成对抗网络(GANs)入门介绍指南:让AI学会“创造“的魔法(二)【深入版】
人工智能·pytorch·深度学习·神经网络·算法·生成对抗网络·计算机视觉
要努力啊啊啊1 天前
YOLOv1 技术详解:正负样本划分与置信度设计
人工智能·深度学习·yolo·计算机视觉·目标跟踪
硅谷秋水2 天前
Genie Centurion:通过人工-回放-和-细化指导加速规模化真实世界机器人训练
人工智能·深度学习·计算机视觉·机器人
新知图书2 天前
OpenCV图像金字塔
人工智能·opencv·计算机视觉
艾醒(AiXing-w)2 天前
玩转计算机视觉——按照配置部署paddleOCR(英伟达环境与昇腾300IDUO环境)
人工智能·计算机视觉
张较瘦_2 天前
[论文阅读] 人工智能 | Gen-n-Val:利用代理技术革新计算机视觉数据生成
论文阅读·人工智能·计算机视觉
路溪非溪2 天前
AI应用:计算机视觉相关技术总结
人工智能·计算机视觉