【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

 

posted @ 2020-05-29 10:23  Chen_HW  阅读(987)  评论(0编辑  收藏  举报