zoukankan      html  css  js  c++  java
  • 《python深度学习》笔记---8.5、生成式对抗网络简介

    《python深度学习》笔记---8.5、生成式对抗网络简介

    一、总结

    一句话总结:

    【gan可以替代VAE来学习图像的潜在空间,它能够迫使生成图像与真实图像在统计上几乎无法区分】:生成式对抗网络(GAN,generative adversarial network)由Goodfellow 等人于2014 年提 出 a,它可以替代VAE 来学习图像的潜在空间。它能够迫使生成图像与真实图像在统计上几乎无 法区分,从而生成相当逼真的合成图像。

    1、GAN 的工作原理?

    【打败彼此】:GAN有一个伪造者网络和一个专家网络,二者训练的目的都是为了打败彼此。因此,GAN 由以下两部分组成。
    【生成器网络(generator network)】:它以一个随机向量(潜在空间中的一个随机点)作 为输入,并将其解码为一张合成图像。
    【判别器网络(discriminator network)或对手(adversary)】:以一张图像(真实的或合成的 均可)作为输入,并预测该图像是来自训练集还是由生成器网络创建。

    2、值得注意的是,GAN 这个系统与本书中其他任何训练方法都不同,它的优化最小值是不固 定的?

    【对于GAN而言,每下山一步,都会对整个地形造成一点改变】:通常来说,梯度下降是沿着静态的损失地形滚下山坡。但对于GAN 而言,每下山一步, 都会对整个地形造成一点改变。
    【寻求两股力量之间的平衡】:它是一个动态的系统,其最优化过程寻找的不是一个最小值, 而是两股力量之间的平衡。
    【GAN的训练极其困难】:因此,GAN的训练极其困难,想要让GAN 正常运行,需要对模型 架构和训练参数进行大量的仔细调整。

    3、DCGAN?

    【生成器和判别器都是深度卷积神经网络的GAN】:深度卷积生成式对抗网络(DCGAN,deep convolutional GAN),即生成器和判别器都是深度卷积神经网络的GAN。
    【生成器中使用Conv2DTranspose层进行图像上采样】:特别地,它在生成器中 使用 Conv2DTranspose 层进行图像上采样。

    4、GAN 的简要实现流程?

    (1) generator网络将形状为(latent_dim,)的向量映射到形状为(32, 32, 3)的图像。  (2) discriminator 网络将形状为 (32, 32, 3) 的图像映射到一个二进制分数,用于评 估图像为真的概率。
    (3) gan 网络将 generator 网络和 discriminator 网络连接在一起:gan(x) = discriminator (generator(x))。生成器将潜在空间向量解码为图像,判别器对这些图像的真实性进 行评估,因此这个 gan 网络是将这些潜在向量映射到判别器的评估结果。
    (4) 我们使用带有“真”/“假”标签的真假图像样本来训练判别器,就和训练普通的图像 分类模型一样。
    (5) 为了训练生成器,我们要使用 gan 模型的损失相对于生成器权重的梯度。这意味着, 在每一步都要移动生成器的权重,其移动方向是让判别器更有可能将生成器解码的图像 划分为“真”。换句话说,我们训练生成器来欺骗判别器。

    5、gan的随机性能够提高稳健性,那么如何在gan中加入随机性?

    【一种是在判别器中使用dropout,另一种是向判别器的标签添加随机噪声】:训练GAN得到的是一个动态平衡,所以GAN可能以各种方式“卡 住”。在训练过程中引入随机性有助于防止出现这种情况。我们通过两种方式引入随机性: 一种是在判别器中使用 dropout,另一种是向判别器的标签添加随机噪声

    6、稀疏性在深度学习中的使用情况?

    在深度学习中,稀疏性通常是我们需要的属性,但在 GAN 中并非如此。

    7、深度学习中可能导致梯度稀疏的两种情况?

    最大池化运算和 ReLU 激活

    8、为什么gan中使用步进卷积代替最大池化来进行下采样?

    【在深度学习中,稀疏性通常是我们需要的属性,但在 GAN 中并非如此】:有两件事情可能导致梯度稀疏:最大池化运算和 ReLU 激活。我们推 荐使用步进卷积代替最大池化来进行下采样,还推荐使用 LeakyReLU 层来代替 ReLU 激 活。LeakyReLU 和 ReLU 类似,但它允许较小的负数激活值,从而放宽了稀疏性限制。

    9、为什么gan中使用 LeakyReLU 层来代替 ReLU 激 活?

    【在深度学习中,稀疏性通常是我们需要的属性,但在 GAN 中并非如此】:有两件事情可能导致梯度稀疏:最大池化运算和 ReLU 激活。我们推 荐使用步进卷积代替最大池化来进行下采样,还推荐使用 LeakyReLU 层来代替 ReLU 激 活。LeakyReLU 和 ReLU 类似,但它允许较小的负数激活值,从而放宽了稀疏性限制。

    10、GAN 训练的大量技巧?

    【tanh激活函数和正态分布】:我们使用 tanh 作为生成器最后一层的激活,而不用 sigmoid,后者在其他类型的模型中 更加常见。我们使用正态分布(高斯分布)对潜在空间中的点进行采样,而不用均匀分布。
    【随机性能够提高稳健性】:训练GAN得到的是一个动态平衡,所以GAN可能以各种方式“卡 住”。在训练过程中引入随机性有助于防止出现这种情况。我们通过两种方式引入随机性: 一种是在判别器中使用 dropout,另一种是向判别器的标签添加随机噪声。
    【稀疏的梯度会妨碍GAN的训练】:在深度学习中,稀疏性通常是我们需要的属性,但在 GAN 中并非如此。有两件事情可能导致梯度稀疏:最大池化运算和 ReLU 激活。我们推 荐使用步进卷积代替最大池化来进行下采样,还推荐使用 LeakyReLU 层来代替 ReLU 激 活。LeakyReLU 和 ReLU 类似,但它允许较小的负数激活值,从而放宽了稀疏性限制。
    【棋盘状伪影是由生成器中像素空间的不均匀覆盖导致的】:在生成的图像中,经常会见到棋盘状伪影,这是由生成器中像素空间的不均匀覆盖导致的。为了解决这个问题,每当在生成器和判别器中都使用步进的 Conv2DTranpose 或 Conv2D 时,使用的内核大小要能够被步幅大小整除。

    11、gan的生成器 和 判别器?

    【将一个向量转换为一张候选图像】:首先,我们来开发 generator 模型,它将一个向量(来自潜在空间,训练过程中对其随机 采样)转换为一张候选图像。
    【判别器和生成器中都使用dropout】:GAN 常见的诸多问题之一,就是生成器“卡在”看似噪声的生成 图像上。一种可行的解决方案是在判别器和生成器中都使用 dropout。
    【判别器将图片划分到两个分类】:接下来,我们来开发 discriminator 模型,它接收一张候选图像(真实的或合成的)作 为输入,并将其划分到这两个类别之一:“生成图像”或“来自训练集的真实图像”。

    12、生成器训练时要将判别器冻结?

    请注意,有一点很重要,就是在 训练过程中需要将判别器设置为冻结(即不可训练),这样在训练 gan 时它的权重才不会更新。

    13、DCGAN每轮循环的大致流程?

    (1) 从潜在空间中抽取随机的点(随机噪声)。 (2) 利用这个随机噪声用 generator 生成图像。 (3) 将生成图像与真实图像混合。
    (4) 使用这些混合后的图像以及相应的标签(真实图像为“真”,生成图像为“假”)来训练 discriminator
    (5) 在潜在空间中随机抽取新的点。
    (6) 使用这些随机向量以及全部是“真实图像”的标签来训练 gan。这会更新生成器的权重 (只更新生成器的权重,因为判别器在 gan 中被冻结),其更新方向是使得判别器能够 将生成图像预测为“真实图像”。这个过程是训练生成器去欺骗判别器。

    14、gan训练的时候,如果出现 对抗损失开始大幅增加,而判别损失则趋向于零,即判别器最终支配了生成器,该怎么办?

    【减小判别器的学习率,并增大判别器的dropout比率】:如果出现了这种情况,你可以尝试减小判别器的学习率,并增大判别器的 dropout 比率。

    15、gan 小结?

    【GAN 由一个生成器网络和一个判别器网络组成】:判别器的训练目的是能够区分生成器的 输出与来自训练集的真实图像,生成器的训练目的是欺骗判别器。值得注意的是,生成 器从未直接见过训练集中的图像,它所知道的关于数据的信息都来自于判别器。
    【GAN 很难训练,因为训练GAN 是一个动态过程】:而不是具有固定损失的简单梯度下降 过程。想要正确地训练 GAN,需要使用一些启发式技巧,还需要大量的调节。
    【GAN 可能会生成非常逼真的图像】:但与VAE 不同,GAN 学习的潜在空间没有整齐的连 续结构,因此可能不适用于某些实际应用,比如通过潜在空间概念向量进行图像编辑。

    二、内容在总结中

    博客对应课程的视频位置:

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    管理培训笔记
    Jhipster Registry(Eureka Server) Docker双向联通与高可用部署
    (转阮一峰)深入理解OAuth 2.0
    基于spring security 实现前后端分离项目权限控制
    spring security实现动态配置url权限的两种方法
    Spring Security 架构与源码分析
    开源APM系统skywalking介绍与使用
    Angular 中后台前端解决方案
    SpringBoot+Security+MyBatis+ES+MQ+Redis+Docker+Vue的电商系统
    Jenkins+GitLab+Docker+SpringCloud实现可持续自动化微服务
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13829085.html
Copyright © 2011-2022 走看看