#深度解析# GAN(生成对抗神经网络)

生成对抗神经网络借鉴了零和博弈的思想,主要用于样本的生成,属于非监督学习
简单总结一下 GAN 的基本思想(参考下图):

  1. GAN由两部分网络组成,一个是生成网络,一个是判别网络
  2. 生成网络类似于(变分自编码器)网络的Decoder部分,用于生成新样本
  3. 判别网络本质上是一个二分类分类器,用于识别输入的样本是真实样本还是生成的假样本;
  4. 训练GAN网络时,判别网络会不断提高识别能力,而生成网络会不断提高生成能力从而降低判别网络的判别能力;这两种网络相互竞争从而提高网络生成新样本的能力:

在这里插入图片描述

GAN网络的损失函数如下:
在这里插入图片描述
符号说明:

D:判别函数,输出值范围0~1,0表示预测为生成样本,1表示预测为真实样本
G:生成函数,用于生成样本数据
Ex~pdata(x) :表示对真实样本求期望(本身无意义,表示求后边中括号内公式的期望)
Ez~pz(z):表示对生成样本分别求期望(本身无意义,表示求后边中括号内公式的期望)

这个公式我们可以如此理解,

  1. 首先来看函数V(D,G),这个函数就是用来衡量判别式性能的,当D性能最优时,第一项中D(x)的期望=1,第一项整体期望等于0,第二项D(G(z)) 的期望等于0 第二项整体期望等于0,V(D,G)=0D的性能越差,同理可知 公式中中的两项都会越小(且为负值)V(D,G)越小
  2. 将max(G)V(D,G)看作一个整体,这一步表示将V(D,G)损失函数按最大值优化,根据第一点可知,得到最优的判别式网络D
  3. 然后看最外边的min(G),表示找到最优的判别式网络D的基础上,通过最小化V(D,G)这个损失函数的方式,找到最优的生成网络G;因为得到最优的生成网络G,等价于让判别网络无法识别生成网络G生成的样本,等价于降低判别式网络D的性能。

根据上边的叙述可知,训练GAN时并不是同时训练D和G,而是在固定一个网络的同时训练另一种。
此外,我们一般先训练数次判别网络,然后进行D和G网络的交替训练;之所以要训练k次判别器,再训练生成器,是因为要先拥有一个好的判别器,使得能够教好地区分出真实样本和生成样本之后,才好更为准确地对生成器进行更新。
GAN的基本流程如下:

  1. 初始化判别器D的参数和生成器G的参数。
  2. 从真实样本中采样 m 个样本,从先验分布噪声中采样n个噪声样本并通过生成器获取 n 个生成样本。固定生成器G,训练判别器D尽可能好地准确判别真实样本和生成样本,尽可能大地区分正确样本和生成的样本。
  3. 循环k次更新判别器之后,使用较小的学习率来更新一次生成器的参数,训练生成器使其尽可能能够减小生成样本与真实样本之间的差距,也相当于尽量使得判别器判别错误。
  4. 多次更新迭代之后,最终理想情况是使得判别器判别不出样本来自于生成器的输出还是真实的输出。亦即最终样本判别概率均为0.5(纳什均衡)。

GAN存在的问题

梯度弥散

  • 如果GAN中的判别网络过于强大,那么无论生成网络生成什么样的图片,判别网络都能判别为假,导致生成网络无法获得梯度(梯度弥散),从而导致网络进行更新
  • 相反,如果判别网络一开始就很弱,无论输入真假样本,判别网络都随机的输出0,1,那么生成网络得到的梯度就会是不准确的,因此生成网络也无法正常更新
  • 因此判别网络既不能太强,也不能太弱,在训练GAN过程中,要平衡好两者的能力,使其旗鼓相当。

模式崩溃

在训练GAN的过程中,生成网络可能会逐渐生成某一类型的样本,因为生成网络发现只要生成这种的样本,判别网络就无法识别;这无疑会丧失生成网络生成样本的多样性。
解决方法:
使用 wasserstein GNNs 或 Unrolled GNNS

Wasserstein GANs (WGAN)

  • 判别网络使用 EMD距离(Earth Mover’s Distance)衡量两张图片之间的距离
  • WGAN 中的判别网络和生成网络不再使用同一个损失函数,因此不再存在零和博弈的限制
    名词注释:
  • WGAN中的判别函数优化的目标是增加真实样本和生成样本之间的EMD距离;而生成函数的目的是增大生成样本计算得到的某个值

此外还有很多优秀的GAN模型 如 deep convolutional GANs,styleGAN,cycleGAN 等

零和博弈(纳什均衡):游戏存在如下均衡:总收益为0,一方胜利,另一方就输,

pytorch deep convolutional GANs 代码 :https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html

参考文章:
通俗理解生成对抗网络GAN

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

energy_百分百

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值