精华内容
参与话题
问答
  • GAN

    千次阅读 2018-11-10 21:57:51
    GAN 生成器 generator:G 判别器 discriminator:D if G and D have enough capacity, they will reach a point at which both cannot improve because pg = pdata. The discriminator is unable to differentiate ...

    GAN

    生成器 generator:G
    判别器 discriminator:D
    if G and D have enough capacity, they will reach a point at which both cannot improve because pg = pdata. The discriminator is unable to differentiate between the two distributions, i.e. D(x) = 1/2

    MLE = minimize KL divergence

    G*

    V

    =》
    在这里插入图片描述

    1. 固定G,update D with gradient ascent(最优D:最大D)
      在这里插入图片描述

    update:update D
    通过JS divergence 度量pdata 和pG 之间相似度(距离)

    1. 寻找minimize JS

    训练Generator

    update G: gradiant descent
    update G

    Problem

    Don’t update G too much

    JS divergence is log2 if two distributions do not overlap

    add noise to the inputs of discriminator (decay over time)

    mode collapse

    Least Square GAN (LSGAN): Linear

    replace sigmoid with linear (replace classification with regression)

    WGAN: Earth Mover’s Distance

    展开全文
  • GAN原理

    2019-02-19 15:30:12
    1.1、 GAN原理: 1.2、架构 1.3、 GAN 的特点及优缺点: 二、为什么GAN中的优化器不常用SGD 三、为什么GAN不适合处理文本数据 四、训练GAN的一些技巧 五、GAN的广泛应用 一、原理部分 首先附上一张流程...

    转载自:https://blog.csdn.net/Sakura55/article/details/81512600

    一、原理部分

    首先附上一张流程图
    这里写图片描述

    1.1、 GAN的原理:

                    GAN的主要灵感来源于博弈论中零和博弈的思想,应用到深度学习神经网络上来说,就是通过生成网络G(Generator)和判别网络D(Discriminator)不断博弈,进而使G学习到数据的分布,如果用到图片生成上,则训练完成后,G可以从一段随机数中生成逼真的图像。G, D的主要功能是:

                    ● G是一个生成式的网络,它接收一个随机的噪声z(随机数),通过这个噪声生成图像

                    ● D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片
    这里写图片描述

                    训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量辨别出G生成的假图像和真实的图像。这样,G和D构成了一个动态的“博弈过程”,最终的平衡点即纳什均衡点.

    1.2、架构

    这里写图片描述

                通过优化目标,使得我们可以调节概率生成模型的参数\theta,从而使得生成的概率分布和真实数据分布尽量接近。

                那么怎么去定义一个恰当的优化目标或一个损失?传统的生成模型,一般都采用数据的似然性来作为优化的目标,但GAN创新性地使用了另外一种优化目标。首先,它引入了一个判别模型(常用的有支持向量机和多层神经网络)。其次,它的优化过程就是在寻找生成模型和判别模型之间的一个纳什均衡。

                GAN所建立的一个学习框架,实际上就是生成模型和判别模型之间的一个模仿游戏。生成模型的目的,就是要尽量去模仿、建模和学习真实数据的分布规律;而判别模型则是要判别自己所得到的一个输入数据,究竟是来自于真实的数据分布还是来自于一个生成模型。通过这两个内部模型之间不断的竞争,从而提高两个模型的生成能力和判别能力。

    这里写图片描述

                  当一个判别模型的能力已经非常强的时候,如果生成模型所生成的数据,还是能够使它产生混淆,无法正确判断的话,那我们就认为这个生成模型实际上已经学到了真实数据的分布。

    1.3、 GAN 的特点及优缺点:

    特点

                        ● 相比较传统的模型,他存在两个不同的网络,而不是单一的网络,并且训练方式采用的是对抗训练方式

                        ● GAN中G的梯度更新信息来自判别器D,而不是来自数据样本

    优点

    (以下部分摘自ian goodfellow 在Quora的问答)

                        ● GAN是一种生成式模型,相比较其他生成模型(玻尔兹曼机和GSNs)只用到了反向传播,而不需要复杂的马尔科夫链

                        ● 相比其他所有模型, GAN可以产生更加清晰,真实的样本

                        ● GAN采用的是一种无监督的学习方式训练,可以被广泛用在无监督学习和半监督学习领域

                        ● 相比于变分自编码器, GANs没有引入任何决定性偏置( deterministic bias),变分方法引入决定性偏置,因为他们优化对数似然的下界,而不是似然度本身,这看起来导致了VAEs生成的实例比GANs更模糊

                        ● 相比VAE, GANs没有变分下界,如果鉴别器训练良好,那么生成器可以完美的学习到训练样本的分布.换句话说,GANs是渐进一致的,但是VAE是有偏差的

                        ● GAN应用到一些场景上,比如图片风格迁移,超分辨率,图像补全,去噪,避免了损失函数设计的困难,不管三七二十一,只要有一个的基准,直接上判别器,剩下的就交给对抗训练了。

    缺点

                        ● 训练GAN需要达到纳什均衡,有时候可以用梯度下降法做到,有时候做不到.我们还没有找到很好的达到纳什均衡的方法,所以训练GAN相比VAE或者PixelRNN是不稳定的,但我认为在实践中它还是比训练玻尔兹曼机稳定的多

                        ● GAN不适合处理离散形式的数据,比如文本

                        GAN存在训练不稳定、梯度消失、模式崩溃的问题(目前已解决)


    附:模式崩溃(model collapse)原因

                        一般出现在GAN训练不稳定的时候,具体表现为生成出来的结果非常差,但是即使加长训练时间后也无法得到很好的改善。

                        GAN采用的是对抗训练的方式,G的梯度更新来自D,所以G生成的好不好,得看D怎么说。具体就是G生成一个样本,交给D去评判,D会输出生成的假样本是真样本的概率(0-1),相当于告诉G生成的样本有多大的真实性,G就会根据这个反馈不断改善自己,提高D输出的概率值。但是如果某一次G生成的样本可能并不是很真实,但是D给出了正确的评价,或者是G生成的结果中一些特征得到了D的认可,这时候G就会认为我输出的正确的,那么接下来我就这样输出肯定D还会给出比较高的评价,实际上G生成的并不怎么样,但是他们两个就这样自我欺骗下去了,导致最终生成结果缺失一些信息,特征不全。
    这里写图片描述

                                                                                      局部极小值点

    这里写图片描述

                                              鞍点

    二、为什么GAN中的优化器不常用SGD

    1. SGD容易震荡,容易使GAN训练不稳定,

    2. GAN的目的是在高维非凸的参数空间中找到纳什均衡点,GAN的纳什均衡点是一个鞍点,但是SGD只会找到局部极小值,因为SGD解决的是一个寻找最小值的问题,GAN是一个博弈问题。

    三、为什么GAN不适合处理文本数据

    1. 文本数据相比较图片数据来说是离散的,因为对于文本来说,通常需要将一个词映射为一个高维的向量,最终预测的输出是一个one-hot向量,假设softmax的输出是(0.2, 0.3, 0.1,0.2,0.15,0.05)那么变为onehot是(0,1,0,0,0,0),如果softmax输出是(0.2, 0.25, 0.2, 0.1,0.15,0.1 ),one-hot仍然是(0, 1, 0, 0, 0, 0),所以对于生成器来说,G输出了不同的结果但是D给出了同样的判别结果,并不能将梯度更新信息很好的传递到G中去,所以D最终输出的判别没有意义。

    2. 另外就是GAN的损失函数是JS散度,JS散度不适合衡量不想交分布之间的距离。

    (WGAN虽然使用wassertein距离代替了JS散度,但是在生成文本上能力还是有限,GAN在生成文本上的应用有seq-GAN,和强化学习结合的产物)

    四、训练GAN的一些技巧

    1. 输入规范化到(-1,1)之间,最后一层的激活函数使用tanh(BEGAN除外)

    2. 使用wassertein GAN的损失函数,

    3. 如果有标签数据的话,尽量使用标签,也有人提出使用反转标签效果很好,另外使用标签平滑,单边标签平滑或者双边标签平滑

    4. 使用mini-batch norm, 如果不用batch norm 可以使用instance norm 或者weight norm

    5. 避免使用RELU和pooling层,减少稀疏梯度的可能性,可以使用leakrelu激活函数

    6. 优化器尽量选择ADAM,学习率不要设置太大,初始1e-4可以参考,另外可以随着训练进行不断缩小学习率,

    7. 给D的网络层增加高斯噪声,相当于是一种正则

    GAN的变种

    自从GAN出世后,得到了广泛研究,先后几百篇不同的GANpaper横空出世,国外有大神整理了一个GAN zoo(GAN动物园),链接如下,感兴趣的可以参考一下:

    https://github.com/hindupuravinash/the-gan-zoo

    GitHub上已经1200+star了,顺便附上一张GAN的成果图,可见GAN的研究火热程度:

    五、GAN的广泛应用

    1. GAN本身是一种生成式模型,所以在数据生成上用的是最普遍的,最常见的是图片生成,常用的有DCGAN WGAN,BEGAN,个人感觉在BEGAN的效果最好而且最简单。

    2. GAN本身也是一种无监督学习的典范,因此它在无监督学习,半监督学习领域都有广泛的应用

    3. 不仅在生成领域,GAN在分类领域也占有一席之地,简单来说,就是替换判别器为一个分类器,做多分类任务,而生成器仍然做生成任务,辅助分类器训练。

    4. GAN可以和强化学习结合,目前一个比较好的例子就是seq-GAN

    5. 目前比较有意思的应用就是GAN用在图像风格迁移,图像降噪修复,图像超分辨率了,都有比较好的结果

    6. 目前也有研究者将GAN用在对抗性攻击上,具体就是训练GAN生成对抗文本,有针对或者无针对的欺骗分类器或者检测系统等等,但是目前没有见到很典范的文章。


    参考文献:

    https://github.com/hindupuravinash/the-gan-zoo
    https://blog.csdn.net/qq_25737169/article/details/78857724#t0
    https://www.jianshu.com/p/80bd4d4c2992

    展开全文
  • GAN系列

    千次阅读 2018-06-25 22:05:37
    paper GAN开山之作:Generative Adversarial Networks GAN翻译
    展开全文
  • GAN原理到CycleGAN

    2019-05-19 21:51:58
    GAN的基本原理 G(Generator)和D(Discriminator)。 如果是生成图片-> G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。 D是一个判别网络,判别一张图片是不是“真实的”。它...

    GAN的基本原理

    G(Generator)和D(Discriminator)。
    如果是生成图片->
    G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。
    D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
    过程就如下:
    生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。
    在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。
    CycleGAN的原理
    论文地址:https://arxiv.org/abs/1703.10593
    CycleGAN的原理:将一类图片转换成另一类图片
    也就是说,现在有两个样本空间,X和Y,我们希望把X空间中的样本转换成Y空间中的样本。
    实际的目标就是学习从X到Y的映射。我们设这个映射为F。它就对应着GAN中的生成器,F可以将X中的图片x转换为Y中的图片F(x)。对于生成的图片,我们还需要GAN中的判别器来判别它是否为真实图片,由此构成对抗生成网络。设这个判别器为 D_{Y}
    在这里插入图片描述
    这里会出现所有的X映射到一个Y,损失就会没有意义了。
    再假设一个映射G,它可以将Y空间中的图片y转换为X中的图片G(y)。CycleGAN同时学习F和G两个映射,并要求 F(G(y)) \approx y ,以及 G(F(x)) \approx x 。也就是说,将X的图片转换到Y空间后,应该还可以转换回来。这样就杜绝模型把所有X的图片都转换为Y空间中的同一张图片了。
    在这里插入图片描述
    为G也引入一个判别器 D_{X} ,由此可以同样定义一个GAN的损失
    在这里插入图片描述
    最后的损失就会是这样三个和在一起
    在这里插入图片描述
    pix2pix也可以做图像变换,它和CycleGAN的区别在于,pix2pix模型必须要求成对数据(paired data),而CycleGAN利用非成对数据也能进行训练(unpaired data)。
    这里用橘子案例来实战跑一下。
    地址:https://github.com/vanhuyz/CycleGAN-TensorFlow
    这里只跑两轮。
    在这里插入图片描述
    可以看到几乎不起作用,训练太少了,没有很好的拟合。
    在这里插入图片描述
    所以最后测试苹果转橘子的效果很差
    在这里插入图片描述
    在这里插入图片描述
    然后这里用训练好的模型导入再看一次
    在这里插入图片描述
    明显要比上面清晰好多。
    参考地址:https://zhuanlan.zhihu.com/p/28342644

    展开全文
  • GAN原理理解

    千次阅读 2017-07-18 16:49:02
    GAN的基本原理其实非常简单,这里以生成图片为例进行说明。假设我们有两个网络,G(Generator)和D(Discriminator)。正如它的名字所暗示的那样,它们的功能分别是: G是一个生成图片的网络,它接收一个随机的...
  • GAN原理详解

    2019-07-26 13:22:23
    GAN的基本原理其实非常简单,这里以生成图片为例进行说明。假设我们有两个网络,G(Generator)和D(Discriminator)。正如它的名字所暗示的那样,它们的功能分别是: G是一个生成图片的网络,它接收一个随机的...
  • GAN原理介绍

    2017-08-17 16:11:11
    说到GAN第一篇要看的paper当然是Ian Goodfellow大牛的Generative Adversarial Networks,这篇paper算是这个领域的开山之作。
  • GAN原理总结

    千次阅读 2017-07-07 23:49:03
    GAN(待排版)
  • GAN原理、Tensorflow搭建GAN神经网络

    千次阅读 2019-03-30 20:45:09
    文章目录GAN原理概述Tensorflow搭建GAN神经网络 GAN原理概述 论文:GenerativeAdversarialNets 论文地址:https://arxiv.org/pdf/1406.2661.pdf 。 GAN模型中包括一个生成模型G和一个判别模型D。生成模型G接收一个...
  • GAN原理再探

    2019-09-15 21:07:10
    虽然自己很早就接触到了GAN,但是基本上都是停留在了解基本概念的阶段。如果别人问我什么是GAN,我可能会说:首先大家都知道GAN有两个网络,一个是generator,一个是discriminator,从二人零和博弈中受启发,通过两...
  • gan算法原理

    2019-10-27 13:30:09
    gan算法原理 简单来说,gan算法中存在着两个网络,一个是判别网路D,一个是生成网路G。对于判别网路D来说,他所要起的作用是分辨一张图片是真的图片还是假的图片,其实它本质上就是一个由多成BP网络训练二程的二分类...
  • starGAN原理代码分析

    千次阅读 2017-12-02 19:50:02
    下载:git clone https://github.com/yunjey/StarGAN.gitcd StarGAN/下载celebA训练数据:bash download.sh训练:python main.py --mode='train' --dataset='CelebA' --c_dim=5 --image_size=128 \ --sample_path
  • GAN原理总结以及对比

    2019-11-12 15:26:45
    本文对GAN原理介绍,以及与其他几种改进的GAN,主要介绍两种改进GAN(为什么只有两种呢,因为最近只详细的看了这两个,来做点笔记(错了就帮忙指出一哈----我是一个小白)) 目录 一、GAN 二、WGAN-GP 三、SRGAN...
  • GAN 原理及公式推导

    2019-05-11 12:17:00
    Generative Adversarial Network,就是大家耳熟能详的 GAN,由 Ian Goodfellow 首先提出,在这两年更是深度学习中最热门的东西,...可以参考另一篇,GAN原理 https://www.cnblogs.com/jins-note/p/9550561.html ...

空空如也

1 2 3 4 5 ... 20
收藏数 11,324
精华内容 4,529
关键字:

gan原理