今天小陶在训练CGAN的时候出现了绷不住的情况,那就是G_loss(生成器的loss值)一路狂飙,一直上升到了6才逐渐平稳。而D_loss(判别器的loss值)却越来越小,具体的情况就看下面的图片吧。其实这在GAN训练里是非常容易遇到的问题,所以不用慌,是有解决的办法的。小陶就通过一些手段进行调控,最终获得了比较满意的效果。
在介绍处理方法之前,首先絮叨絮叨为什么训练GAN容易出现上面左右这样的情况。当然,需要明确的是,GAN的效果如何,其实是很主观的事情,也许和loss表现的趋势没啥太大的关系,也许在loss表现不对劲的情况下也能生成效果好的图片。
如果你理解GAN原理的话(不理解可以去看文章『GAN入门(一):GAN的基本原理概述(新手易懂版)』以及『GAN入门(二):GAN的算法公式流程介绍)』),肯定知道所谓对抗,就是生成器和判别器的对抗。生成器在判别器的指导下将一段噪声变成符合我们需求的图片。上面左图就是生成器和判别器能力悬殊,生成器生成的照片已经无法来欺骗判别器了。所以G_loss就一直上升,具体在图片上的表现是生成了空白图片或者纯噪声图片,没啥价值,例如下面的图片就是我生成过程中出现的无价值图片。想要改变这个情况,那就要调整生成器的能力或者削弱判别器的能力。当然,我们更希望通过增强生成器的学习能力来让其与判别器势均力敌。让生成器和判别器势均力敌的方法有很多。