深度学习之——GAN概览

摘要

     生成对抗网络(Generative adversarial network,GAN)自2014年由Ian Goodfellow等人提出后,就越来越受到学术界和工业界的重视。而随着GAN在理论与模型上的高速发展,它在计算机视觉、自然语言处理、人机交互等领域有着越来越深入的应用,并不断向着其它领域继续延伸。 本文从GAN的基本模型开始,简要总结GAN的原理和改进,介绍其在图像生成与转换中的研究和应用,并讨论其理论和应用中尚存在的挑战。

     在机器学习中,生成模型可以用来直接对数据进行建模和建立变量间的条件概率分布。也可以用来建立变量间的条件概率分布。它的应用十分广泛,可以用来不同的数据进行建模,比如图像、文本、声音等。以图像生成为例,我们将图像表示为一个随机向量X,其中每一维都表示一个像素值。假设自然场景的图像都服从一个未知的分布p(x),我们希望通过一些观测样本来估计其分布,高维随机向量一般比较难以直接建模,需要通过一些条件独立性来简化模型。但是,自然图像中不同像素之间存在的复杂的依赖关系,很难用一个明确的图模型来描述其依赖关系,因此直接建模p(x)比较困难,对生成模型的要求很高。

一、GAN的原理

     GAN受博弈论中的零和博弈启发,将生成的问题比喻为判别器(Discriminator),和生成器(Generator)这两个网络的对抗和博弈。生成器从给定的噪声中(正态分布或均匀分布)产生合成数据,判别器分辨生成器的输出和真实数据。生成器向着更接近真实的标签的方向生成数据,同时判别器也试图更加完美地去分辨出生成数据与真实标签。经过多次迭代对抗后,生成网络的输出就会变得越来越perfect,这时我们就可以得到我们所需要的数据。论文地址。GAN模型结构如下:

1,基本原理

    下图是原理展示,黑色虚线是真实分布,绿色实线是生成模型的学习过程,蓝色虚线是判别模型的学习过程,两者相互对抗,共同学习到最优状态。具体解释可以参考图上英语说明。图片来自论文《Generative Adversarial Nets》:

2,优化目标与求解

               

   上式中,G,D分别对应生成器和判别器,min代表生成器迭代的方向(目标)为使式子的结果为最小化,max代表判别器想要最大化式子的结果。式中:logD(x为判别器D对真实数据x的判别输出,log(1-D(G(z))) 为判别器对合成数据的判断输出,z 为网络从正态分布[0,1]或均匀分布[-1,1]中得到输入,G(z) 表示生成器在一次迭代中对输入z 的输出。通过这样一个最大最小(Max-min)博弈,循环交替地分别优化G和D来训练所需要的生成式网络与判别式网络,直到达到纳什Nash均衡点。以下是计算过程。

  1,要求解上面的式子,等价于求解下面的式子:

                  

  2,其中D(x)属于(0,1),上式是alog(y) + blog(1−y)的形式,取得最大值的条件是D(x)=a/(a+b),此时等价于下面式子:

                         

  3,用KL散度来描述:

                       

                    

当且仅当pdata(x)=pg(x)时,取得极小值-log4,此时d=0.5,无法分辨真实样本和假样本。

3,网络训练

  采用判别式模型和生成式模型分别循环依次迭代的方法,与CNN一样,使用梯度下降来优化。见以下论文解释:

                      

4GAN的主要问题

   GAN从本质上来说,有与CNN不同的特点,因为GAN的训练是依次迭代D和G,如果判别器D学的不好,生成器G得不到正确反馈,就无法稳定学习。

(1)如果判别器D学的太好,整个loss迅速下降,生成器G的梯度消失越严重,这样导致在网络训练上很多时候生成器的参数基本上不会改变,也就意味着生成器就无法继续学习。

  (2)由于网络是对抗式的,GAN的优化需要生成器和判别器达到纳什均衡,但是因为判别器D和生成器G是分别训练的,纳什平衡并不一定能达到,这是早期GAN难以训练的主要原因。

二、GAN的应用:

从GAN到Conditional GAN

    GAN的生成式模型可以拟合真实分布,所以它可以用于伪造数据。

DCGAN是第一个用全卷积网络做数据生成的,下面是它的基本结构和生成的数据。

论文地址: https://arxiv.org/abs/1511.06434

(1)DCGAN网络结构

        

 

Figure 1: DCGAN generator used for LSUN scene modeling. A 100 dimensional uniform distribution Z is projected to a small spatial extent convolutional representation with many feature maps. A series of four fractionally-strided convolutions (in some recent papers, these are wrongly called deconvolutions) then convert this high level representation into a 64 × 64 pixel image. Notably, no fully connected or pooling layers are used.

 

(2)DCGAN训练小技巧

   CNN的训练过程主要就是根据损失函数利用梯度下降及其改进算法进行训练,更新网络参数。但是不同于CNN的训练,GAN的训练是一个动态的过程,GAN的目标是寻求判别器与生成器之间的动态平衡。因此我们不能只靠梯度下降算法进行训练模型。

   1)能用Adam优化器的情况下尽量使用Adam优化器,不行的话使用RMSprop优化器。

   2)DCGAN是无监督学习算法,不需要网络学习,但是在keras中为了区分真图与生成器生成的假图,我们必须用标签进行区分,原则上假图应该全部赋值为0,真图赋值为1,但是为了使得模型更加鲁棒,通常使用0-0.3的随随机数代表假图,0.7-1.2的随机数代表真图,随机数的生成都是用截断正态分布,具体实现需导入:from scipy.stats import truncnorm

   3)DCGAN训练过程中,通常是训练判别器,然后训练整个DCGAN。并且DCGAN训练中,判别器不能更新参数,因此必须冻结所有层。为了加快网络训练,通常是训练多次判别器,然后训练一次生成器,这样能提高网络训练速率。引自

    DCGAN在MNIST数据集的训练效果不错,但是它的问题是不能控制生成的数字是1还是9,后来CGAN,https://arxiv.org/pdf/1411.1784.pdf,解决了这一问题。

       

                                                                        DCGAN 和 GAN生成的MNIST数据

3CGAN网络

   CGAN的主要贡献就是在原始GAN的生成器与判别器中的输入中加入额外信息。额外信息可以是任何信息,例如标签。因此CGAN的提出使得GAN可以利用图像与对应的标签进行训练,并在测试阶段 利用给定标签生成特定图像。

                                              

The objective function of a two-player minimax game liket this:

                           

(4)InfoGAN

  模型对噪声z进行了拆解,一是不可压缩的噪声z,二是可解释的隐变量c,可以认为infogan就是无监督的cgan,这样能够约束c与生成数据之间的关系,控制一些属性,比如旋转等。InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets

目标函数:

                                                  

结语

     GAN在图像生成和转换中的巨大潜力已经得到研究证明,利用GAN进行图像到图像间的生成和转换最好已经到达几乎无法分辨的地步。除此之外,利用GAN进行指定图像合成,生成高清图像和视频,以及将GAN应用于NLP和其他领域的研究都还受到研究者们的重点关注。

    本文对许多细节没有涉及,仅作为大家对这部分知识的参考,欢迎大家指正错误。感谢您的浏览!

参考链接

网站:https://zhuanlan.zhihu.com/p/56076752

https://www.xinglingfengbao.com/

https://zhuanlan.zhihu.com/p/83254710

https://zhuanlan.zhihu.com/p/55945164

https://blog.csdn.net/wspba/article/details/54808833

https://blog.csdn.net/weixin_40955254/article/details/82747104

https://www.jianshu.com/p/1b84adec15e7

微信公众号  :有三AI SIGAI;CVer

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值