GAN是在2014年由Ian Goodfellow等人提出的,发表在论文“Generative Adversarial Networks”中。
GAN的主要灵感来源于博弈论中零和博弈的思想,应用到深度学习神经网络上来说,就是通过生成网络G(Generator)和判别网络D(Discriminator)不断博弈,进而使G学习到数据的分布。
生成器和鉴别器是这样一对博弈关系:鉴别器惩罚生成器,鉴别器收益,生成器损失;生成器进化,使鉴别器对自己惩罚小,生成器收益,鉴别器损失。
GAN 的基本思想是让生成器和判别器两个模型相互博弈,通过不断地训练,使生成器生成的样本更接近真实数据的分布,判别器则尽可能地将生成器生成的样本和真实数据区分开来。在训练过程中,生成器的目标是尽可能地欺骗判别器,而判别器的目标是尽可能地区分生成器生成的样本和真实数据。
● G是一个生成式的网络,它接收一个随机的噪声z(随机数),通过这个噪声生成图像
● D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片
DCGAN,全称Deep Convolutional Generative Adversarial Networks,是一种基于深度学习的生成式对抗网络(GAN)模型。它是由Radford等人在2015年提出的。
DCGAN在传统的GAN的基础上,使用了卷积神经网络作为生成器和判别器的架构,以取代原来的全连接网络。这种架构使得DCGAN在生成高分辨率图像时更加有效,并且生成的图像更加真实和细节更加清晰。除此之外,DCGAN还通过对生成器和判别器的一些设计调整,进一步提升了生成图像的质量和多样性。
WGAN(Wasserstein GAN)是在2017年由Martin Arjovsky、Soumith Chintala和Leon Bottou在论文"Wasserstein GAN"中提出的。
WGAN是一种基于GAN(Generative Adversarial Networks)的改进方法,通过使用Wasserstein距离(Wasserstein Distance)代替原先GAN中的JS散度(Jensen-Shannon divergence)来提升GAN的稳定性和生成图像的质量。
在原先的GAN中,由于JS散度在两个分布重叠部分的梯度消失,因此训练过程中容易出现梯度消失或梯度爆炸等问题。而Wasserstein距离能够避免这些问题,同时也能够提升生成器和判别器的表现。
WGAN的主要思想是在判别器中引入一个约束条件,使其输出的结果满足Lipschitz连续性,从而使Wasserstein距离的梯度始终存在,避免了梯度消失和梯度爆炸的问题。此外,WGAN还引入了权值裁剪(Weight Clipping)技术,对判别器的权重进行裁剪,从而限制其变化范围,进一步提升了WGAN的稳定性。
WGAN在图像生成、图像修复、图像翻译等领域都有广泛的应用。
CycleGAN是在2017年提出的,由Jun-Yan Zhu等人在论文《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》中提出
CycleGAN是一种基于生成对抗网络(GAN)的图像转换算法,它可以将一种领域的图像转换为另一种领域的图像,而不需要配对的训练数据。CycleGAN的主要思想是使用两个GAN模型,分别从两个领域的图像中学习到映射函数,并通过循环一致性损失(Cycle Consistency Loss)来保持映射的一致性。
CycleGAN的网络结构由两个生成器和两个判别器组成。其中一个生成器将一个领域的图像映射到另一个领域,另一个生成器将其反转。两个判别器分别判别两个领域的图像是否真实,其中一个判别器专门用于判别从另一个领域转换而来的图像是否真实。
循环一致性损失是CycleGAN的核心,它的基本思想是将两个领域的图像分别通过两个映射函数转换为另一个领域的图像,然后再通过这两个映射函数将转换后的图像转换回原来的领域。如果这两个转换过程是一致的,即转换后的图像与原来的图像差别不大,那么就认为这两个映射函数是有效的。循环一致性损失是这个一致性的量化度量,它的定义是原图像与反转后转换回来的图像之间的差别。在训练过程中,循环一致性损失可以使生成器学习到更加一致的映射函数,从而提高图像转换的质量。
GauGAN是一种基于GAN的图像翻译模型,旨在将简单的草图转换为复杂的、逼真的场景图像。它由纳米晶体管公司NVIDIA于2019年发布,名字"GauGAN"取自著名艺术家保罗·高更 (Paul Gauguin)的名字。
GauGAN的主要思想是使用一个生成器网络,通过学习从简单的用户输入(如颜色标记和草图)到逼真的场景图像之间的映射,从而创建艺术品般的图像。与其他图像生成技术不同的是,GauGAN能够实现高度逼真的图像翻译,包括细节和纹理,让用户能够轻松创建出真实感极强的图像。
Conditional GAN (CGAN) 是一种基于 GAN 的生成模型,它可以在生成图像时,根据输入的条件信息来控制生成结果。在传统的 GAN 中,输入的噪声信号(latent vector)是随机的,没有任何意义,而 CGAN 则引入了一个额外的条件向量(condition vector),它可以是任何形式的向量,例如文本描述、标签等,通过将这个条件向量与随机噪声向量联合输入到生成器中,就可以控制生成图像的样式、内容和特征。
CGAN 的基本原理和 GAN 相同,只是在生成器和判别器的输入中添加了条件向量,这样就可以让生成器和判别器都考虑到这些条件信息。在训练过程中,条件向量会与噪声向量联合输入到生成器中,同时判别器也会将条件向量作为输入。生成器的目标是生成与条件向量相关联的逼真图像,而判别器的目标是将真实图像与生成的图像区分开来。
CGAN 可以应用于许多图像生成任务,如图像翻译、图像修复、图像转换等,其在生成高质量图像方面表现出色。例如,可以使用 CGAN 实现从草图生成真实图像,从黑白图像生成彩色图像,或者从标签生成相应的图像等任务。
结构化学习(Structured Learning)是指一类机器学习方法,它的目标是预测结构化对象,如序列、树形结构和图等。与传统的机器学习方法不同,结构化学习方法会考虑对象内部的结构信息,从而提高模型的预测准确性。结构化学习方法通常需要定义一个包含了输入、输出以及结构信息的联合空间,然后在这个联合空间上进行模型学习和推断。
GAN也是结构化学习的一种。与分类和回归类似,结构化学习也是需要找到一个X→Y的映射,但结构化学习的输入和输出多种多样,可以是序列(sequence)到序列,序列到矩阵(matrix),矩阵到图(graph),图到树(tree)等等。
GAN(生成对抗网络)在计算机视觉、自然语言处理、音频处理等多个领域中得到了广泛的应用。以下是一些GAN的应用示例:
图像生成:GAN可以生成逼真的图像,如逼真的人脸、风景等,可以应用于虚拟现实、游戏、电影等领域。
图像修复:GAN可以通过输入带有缺陷的图像和对应的掩膜,生成与原图像相似的修复图像,可以应用于图像去噪、去水印、恢复图像等领域。
超分辨率:GAN可以将低分辨率图像转换为高分辨率图像,可以应用于视频、图像处理等领域。
图像转换:GAN可以将一种图像转换为另一种图像,如将夏季景色转换为冬季景色,可以应用于虚拟现实、游戏、电影等领域。
音频生成:GAN可以生成逼真的音频,如逼真的人声、乐曲等,可以应用于语音合成、音乐创作等领域。
文本生成:GAN可以生成逼真的文本,如逼真的小说、新闻等,可以应用于自然语言处理、智能对话等领域。
动画生成:GAN可以生成逼真的动画角色,可以应用于游戏、动画制作等领域。
● 相比较传统的模型,他存在两个不同的网络,而不是单一的网络,并且训练方式采用的是对抗训练方式
● GAN中G的梯度更新信息来自判别器D,而不是来自数据样本
● GAN是一种生成式模型,相比较其他生成模型(玻尔兹曼机和GSNs)只用到了反向传播,而不需要复杂的马尔科夫链
● 相比其他所有模型, GAN可以产生更加清晰,真实的样本
● GAN采用的是一种无监督的学习方式训练,可以被广泛用在无监督学习和半监督学习领域
● 相比于变分自编码器, GANs没有引入任何决定性偏置( deterministic bias),变分方法引入决定性偏置,因为他们优化对数似然的下界,而不是似然度本身,这看起来导致了VAEs生成的实例比GANs更模糊
● 相比VAE, GANs没有变分下界,如果鉴别器训练良好,那么生成器可以完美的学习到训练样本的分布.换句话说,GANs是渐进一致的,但是VAE是有偏差的
● 训练GAN需要达到纳什均衡,有时候可以用梯度下降法做到,有时候做不到.我们还没有找到很好的达到纳什均衡的方法,所以训练GAN相比VAE或者PixelRNN是不稳定的,但我认为在实践中它还是比训练玻尔兹曼机稳定的多
● GAN不适合处理离散形式的数据,比如文本
● GAN存在训练不稳定、梯度消失、模式崩溃的问题
参考
GAN相关模型理论以及Pytorch实现_肥宅_Sean的博客-CSDN博客