• 【GAN】GAN设计与训练集锦


    以下内容纯属经验之谈,无公式推断!部分内容源自其他博客或课程,并已标注来源。

    问题篇[1]

    1.模式崩溃 

    在某个模式(mode)下出现大量重复样本,如左图中,生成的样本分布靠得很近,较聚集,可视化如右图,表现为生成多个相同或相似度很高的样本,缺乏多样性。

    2.模式丢失

    顾名思义,某些模式(mode)没有,同样缺乏多样性,虽然生成的样本已经尽可能拟合真实分布,分布也不聚集,但是存在某些模式的丢失,例如下图中人物,除了肤色变化,人物没有任何变化。

     

    设计篇

    1.在上采样阶段,慎用transpose2d,推荐使用upsample + conv2d组合,如下图所以,利用transpose2d上采样得到的生成图像,存在“方形格子”,生成的图像不平滑。

         

    (a)输入图像     (b)transpose2d上采样生成图像

    2.一些博客提到输入网络前将图像缩放到(-1,1),最后一次添加Tanh()激活层将输出映射到(-1,1),在保存结果和可视化时需要(image+1)/2缩放到(0,1).【2】

    3. 采样cycleGAN类似结构可以学到图像的解耦的表示,可用于表情编辑、图像风格迁移等(异父异母的三胞胎:CycleGAN, DiscoGAN, DualGAN[3])。

     4.[4]中提到的(1)利用推土机距离替代JS散度;(2)TTUR:低速(小学习率)更新生成器,高速更新判别器;(3)梯度惩罚;(4)谱归一化;(5)单侧标签平滑等

    训练篇

    1.当生成器损失从很大的值迅速变为0,而判别器损失维持不变。

    有可能时生成器生成能力较弱,因此一种可行的方法是增加生成器的层数来增加非线性。

    2.某些文献采用生成器与判别器交叉训练的方法,即先训练判别器,再训练生成器,其目的是先训练判别器并更新其参数,先让其具有较好判别能力,而在训练生成器时因为判别器已具有一定判定能力,生成器的目的是尽可能骗过判别器,所以生成器会朝着生成更真实的图像前进;也可以采用先训练生成器,再训练判别器,但是此种训练方法不推荐;同时也可以采用先更新生成器或判别器多次,再更新另一个一次的方法。

    3. 生成器损失、判别器损失,其中一个很大或者逐渐变大,另一个很小或者逐渐变小。

    为什么GAN的Loss一直降不下去。GAN到底什么时候才算收敛?其实,作为一个训练良好的GAN,其Loss就是降不下去的。衡量GAN是否训练好了,只能由人肉眼去看生成的图片质量是否好。不过,对于没有一个很好的评价是否收敛指标的问题,也有许多学者做了一些研究,后文提及的WGAN就提出了一种新的Loss设计方式,较好的解决了难以判断收敛性的问题。下面我们分析一下GAN的Loss为什么降不下去?​
    
    生成器和判别器的目的相反,也就是说两个生成器网络和判别器网络互为对抗,此消彼长。不可能Loss一直降到一个收敛的状态。[5]
    
    对于生成器,其Loss下降快,很有可能是判别器太弱,导致生成器很轻易的就"愚弄"了判别器。
    
    对于判别器,其Loss下降快,意味着判别器很强,判别器很强则说明生成器生成的图像不够逼真,才使得判别器轻易判别,导致Loss下降很快。
    
    也就是说,无论是判别器,还是生成器。loss的高低不能代表生成器的好坏。一个好的GAN网络,其GAN Loss往往是不断波动的。
    ————————————————
    版权声明:本文为CSDN博主「alanjia163」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_35290785/article/details/90247938
    

      

    参考

    [1] 李宏毅GAN开放课程

    [2]GAN训练心得

    https://blog.csdn.net/q1242027878/article/details/84452902?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

    [3] 异父异母的三胞胎:CycleGAN, DiscoGAN, DualGAN

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

    [4] GAN性能不稳?这九大技术可“镇住”四类缺陷

    https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/87871048?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-12.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-12.nonecase

    [5] https://blog.csdn.net/qq_35290785/article/details/90247938

  • 相关阅读:
    如何高效处理bug?
    如何获取字符串函数的实现?
    数据处理-csv,pandas
    CentOS 下安装SAC(Seismic Analysis Code)
    CentOS安装使用ffmpeg
    Tensorflow问题记录 --pydot Failed to import pydot. You must install pydot and graphviz for pydotprint to work
    Tensorflow学习记录 --TensorFlow高效读取数据tfrecord
    Committee to boost development of Chinese language teachers
    Consensus-based decentralized auctions for robust task allocation
    Chinese market critical to US firms: US-China Business Council
  • 原文地址:https://www.cnblogs.com/chen-hw/p/12985946.html
Copyright © 2020-2023  润新知