深度学习-54:生成式对抗网络GAN(原理、模型和演进)

深度学习-52:生成式对抗网络GAN(原理、模型和演进)

深度学习原理与实践(开源图书)-总目录, 建议收藏,告别碎片阅读!

一般的学习模型都是基于一个假设的随机分布,然后通过训练真实数据来拟合出模型。网络模型复杂并且数据集规模也不小,这种方法简直就是凭借天生蛮力解决问题。Goodfellow认为正确使用数据的方式,先对数据集的特征信息有insight之后,再干活。在2014年,Goodfellow等提出生成式对抗网络GAN(Generative adversarial networks)。

告别碎片阅读,构成知识谱系。一起阅读和完善: 机器学习&深度学习原理与实践(开源图书)

Goodfellow的原始论文,请参考:Generative Adversarial Networks(GAN)

GAN网络由一个生成器和一个判别器构成。生成器和判别器使用多层感知机。GAN网络的架构,如下图所示。
GAN网络的原理和架构

1 GAN模型的创新

GAN模型时通过对抗过程来估计生成模型的新框架。在GAN模型框架中,生成模型与判别模型进行非合作零和博弈。生成模型可以被认为类似于造假者团队,试图生产虚假货币并在没有检测的情况下使用它,而判别模型则是类似于警察,试图检测假币。这场比赛中的比赛开始了两个团队都在改进他们的方法,直到伪造品与真品无法区分用品。

GAN模型的的主要创新:

  • 拥有生成网络G和辨别网络D,生成模型G的思想是将一个噪声包装成一个逼真的样本,判别模型D则需要判断送入的样本是真实的还是假的样本;
  • 生成网络G和辨别网络D使用独立学习模型,辨别模型D对样本的判别能力不断上升,生成模型G的造假能力也不断上升;
  • GAN的优化是一个极小极大博弈问题,最终的目的是Generator的输出Discriminator时很难判断是真实or伪造的,即极大化的判断能力,极小化将的输出判断为伪造的概率。

2 GAN模型的结构

生成对抗网络(GAN)的结构:

  • GAN由一个生成器和一个判别器构成;
  • GAN的生成器捕捉真实数据样本的潜在分布, 并生成新的数据样本;
  • GAN的判别器是一个二分类器, 判别输入是真实数据还是生成的样本;
  • GAN的生成器和判别器均可以使用深度学习模型;
  • GAN的优化过程是极小极大博弈(Minimax game)问题, 优化目标是达到纳什均衡。

2.1 模型构建

生成对抗网络(GAN)基于博弈模型,其中生成模型(Generator)必须与其对手判别模型(Discriminator)竞争。生成模型直接生成假样本, 判别模型尝试区分生成器生成的样本(假样本)和训练数据中抽取的样本(真样本)。生成对抗网络(GAN)是一种生成模型,由生成器Generator和辨别器Discriminator组成。生成模型(Generator)尝试了解真实数据样本的特征分布, 并生成新的数据样本。判别模型(Discriminator)一个二分类器, 判别输入是真实数据还是生成的样本。生成模型(Generator)和判别模型(Discriminator)均可以使用感知机或者深度学习模型。优化过程是极小极大博弈(Minimax game)问题, 优化目标是达到纳什均衡,即直到判别模型(Discriminator)无法识别生成模型(Generator)生成的假样本是真是假。

2.2 训练模型

生成对抗网络(GAN)基于博弈模型,由生成器(Generator)和辨别器(Discriminator)组成。生成器(Generator)的假样本和训练数据的真样本输入到辨别器(Discriminator)。在训练的过程中,对于真实数据,判别器尝试向其分配一个接近1的概率(smooth参数将labels设为略小于1的值,如0.9)。生成对抗网络(GAN)使用Tensorlow提供的
tf.nn.sigmoid_cross_entropy_with_logits(logits=logits, labels=labels)函数可以计算代价。

对于真实数据,我们使用label=1计算代价函数来训练判别器,其代价函数的计算方法为:

loss = tf.nn.sigmoid_cross_entropy_with_logits
d_loss_real = loss(d_logits_real, labels=tf.ones_like(d_logits_real)*(1-smooth))

对于生成器,我们使用label=0计算代价函数来训练判别器,其代价函数的计算方法为:

loss = tf.nn.sigmoid_cross_entropy_with_logits
d_loss_fake = loss(d_logits_fake, labels=tf.zeros_like(d_logits_fake))

所以判别器的代价函数为:d_loss = d_loss_real + d_loss_fake

生成器尝试做相反的事情,它经训练尝试输出能使辨别器分配接近概率1的样本。生成器的代价函数为

loss = tf.nn.sigmoid_cross_entropy_with_logits
g_loss = loss(d_logits_fake, labels=tf.ones_like(d_logits_fake))

GANs和很多其他模型不同,GANs在训练时需要同时运行两个优化算法,我们需要为discriminator和generator分别定义一个优化器,一个用来来最小化discriminator的损失,另一个用来最小化generator的损失。即loss = d_loss + g_loss

GAN模型训练中生成器和判别器的概率分布趋势

黑色虚线是真实数据的高斯分布,绿色的线是生成网络学习到的伪造分布,蓝色的线是判别网络判定为真实图片的概率,标x的横线代表服从高斯分布x的采样空间,标z的横线代表服从均匀分布z的采样空间。从上图中可以看出,经过多次迭代,可以看出生成模型(Generator)学习了从z的空间到x的空间的映射关系。简单来说就是生成模型(Generator)和原始数据集的特征近似相同,训练工作就结束了,生成模型(Generator)生成的数据已经假假真真不可辨识了。

3 GAN模型的演进

Google论文:Are GANs Created Equal? A Large-Scale Study(Google)。论文中使用了minimax损失函数和用non-saturating损失函数的GAN,分别简称为MM GAN和NS GAN,对比了WGAN、WGAN GP、LS GAN、DRAGAN、BEGAN等GAN模型变体,发现性能大同小异。这个结论是选择困难症的福音呀。

3.1 CGAN

原始GAN不要求一个假设的数据分布,即不需要formulate p(x),而是使用一种分布直接进行采样sampling,从而真正达到理论上可以完全逼近真实数据。为了解决GAN太过自由这个问题,CGAN提出了一种带条件约束的GAN,在生成模型(G)和判别模型(D)的建模中均引入条件变量y,使用额外信息y对模型增加条件,可以指导数据生成过程。

3.2 GCGAN

DCGAN是继GAN之后比较好的改进,提升了GAN训练的稳定性以及生成结果质量。DCGAN为GAN的训练提供了一个很好的网络拓扑结构,表明生成的特征具有向量的计算特性。

3.3 WGAN

WGAN主要从损失函数的角度对GAN做了改进,损失函数改进之后的WGAN即使在全链接层上也能得到很好的表现结果,WGAN对GAN的改进主要有:判别器最后一层去掉sigmoid; 生成器和判别器的loss不取log。

3.4 WGAN-GP

WGAN-GP是WGAN之后的改进版,主要改进了连续性限制的条件。WGAN-GP提出了一种新的lipschitz连续性限制手法—梯度惩罚,解决了训练梯度消失梯度爆炸的问题;比标准WGAN拥有更快的收敛速度,并能生成更高质量的样本;提供稳定的GAN训练方式,几乎不需要怎么调参,成功训练多种针对图片生成和语言模型的GAN架构。

3.5 LSGAN

常见的GAN模型使用minimax作为损失函数,最小二乘GAN(LSGAN)使用最小二乘损失函数代替了GAN的损失函数。LSGAN模型缓解了GAN训练不稳定和生成图像质量差多样性不足的问题。

3.6 BEGAN

BEGAN和其他GAN不一样,这里的D使用的是auto-encoder结构,D的输入是图片,输出是经过编码解码后的图片。BEGAN提出了一种新的简单强大GAN,使用标准的训练方式,不加训练trick也能很快且稳定的收敛。

4 GAN网络的实现

系列文章

参考文献

  • 10
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: GAN(Generative Adversarial Network)是一种深度学习模型,在许多任务中都有广泛应用。在 GAN 中,有一个生成器和一个判别生成器尝试生成与真实数据类似的新数据,判别则尝试区分生成的数据与真实数据。生成器判别通过对抗的方式共同训练。 Matlab-GAN 是一种基于 Matlab 的 GAN 实现,可以实现生成片,视频等任务。在 Matlab-GAN 中,可以使用不同的损失函数和正则化技术,来改善生成的质量和稳定性。 除了 GAN,Pixel2Pixel 和 CycleGAN 也是常用的深度学习模型,在计算机视觉任务中具有重要的应用。Pixel2Pixel 是一种基于卷积神经网络像翻译模型,可以将一个像转换为另一个像,如将黑白像转换为彩色像。CycleGAN 是一种无需成对匹配的像转换模型,可以用于跨域像转换,如将马的像转换为斑马的像。 Matlab-GAN 支持 Pixel2Pixel 和 CycleGAN 的实现,可以帮助更方便地进行像转换任务。Pixel2Pixel 和 CycleGAN 也可以与 GAN 结合使用,产生更高质量、更可控的生成结果。 总之,Matlab-GAN 是一种实现生成对抗网络的工具,支持不同类型的 GAN深度学习模型,可以实现像、视频等多种任务。Pixel2Pixel 和 CycleGAN 作为深度学习模型中常用的工具,可以帮助更好地完成像转换任务。 ### 回答2: GAN,即生成对抗网络,是近年来流行的一种机学习算法模型,它可以通过两个深度神经网络模型生成器判别)来生成具有类似于真实像的虚拟像。 在Matlab中,GAN也有自己的实现——matlab-gan。该实现提供了一系列的GAN示例,如最基础的MNIST手写数字生成、使用DCGAN和Wasserstein GAN生成像,甚至还提供了Pix2Pix和CycleGAN,让用户能够在MATLAB环境中成功加载这些GAN应用。 Pix2Pix是基于条件对抗网络(CGAN)的扩展,它可以将给定的输入像转换为输出像。例如,它可以将黑白照片转换成彩色照片,或将景象翻译成抽象画作。该示例合成城市街景并将它们转换为艺术风格的像。 CycleGAN是一种通用的无监督像到像转换,它可以将两个域之间的像转换成另一个域。例如,它可以将马的像转换成斑马的像。CycleGAN像风格转换、模型综合、目标转换等方面表现出色,是GAN的重要变种。 总体来说,matlab-gan是一个适合于GAN初学者的绝佳平台。它不仅提供了简单的GAN实现,还包括两个复杂的GAN变种——Pix2Pix和CycleGAN。这些示例不仅能够教授GAN的基础理论,还能够为研究者提供一个练习环境来测试并扩展这些算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值