图片的多样性之模式崩溃

在GAN中,对于生成的图片,主要考虑俩方面的因素:

1、图片的清晰度

图片的清晰度不够一般是由于网络的表达能力不够,需要使用更好或者更复杂地网络结构;

2、图片的多样性

图片的多样性不足则很有可能是损失函数地选取或者训练方法出了问题,常见的有mode collapsing和mode dropping。

mode collapsing 模式崩溃:生成网络只产生真实数据分布中的一部分数据,或者说会漏掉一小部分类型的数据。

举例1:

在GAN中,有一个生成器,还有一个判别器,生成器就是生成图片或者其他的什么,而判别器就是帮助生成器不断变好。有人将生成器和判别器理解成造假钞和辨别假钞的。两者的能力都互相增长。刚开始生成器并不好,假钞一点也不像真的,这时候判别器很轻松的就知道了假钞是假的。为了生存下去,生成器试图将假钞变得越来越真,到最后以至于和真钞没有区别了。
人民币有好几个面额的纸币。假钞制造团伙发现如果他们将全部精力都放在制造一种面值的货币时最容易获得成功。而这时候,模式倒塌也就发生了。虽然这个假钞制造团伙能够制造出十分真实的货币,但却只有一种,而这有时并不是我们希望的。假钞制造团伙希望能生成所有的币值人民币。

举例2:

假设有一个木匠师傅带着一个徒弟,这个师傅特别的厉害,会做板凳,椅子,桌子等等。徒弟想要离开师傅自己立足下去则他也需要会很多,最好是和师傅一样多,甚至更多。

这个徒弟就是生成器,师傅也就是真实的样本。我们再假设一个需要家具的人,并将他看作是判别器,这个客户来判断这个徒弟是不是能够打出和师傅一样的家具出来。而这个徒弟学习了很久能够且仅仅能够完美的复现师傅做的椅子,而无法做出板凳,桌子什么的。而这也就是模式倒塌了。

模式倒塌就是生成器生成的结果是真的,但是多样性不足。自然界中可以有很多模式,但是我们的生成器只会其中的几种。而问题出现在哪里呢?

从本质上讲,我们的判别器不惩罚生成器是否有多样性,只要是真的就行。

原文链接:https://blog.csdn.net/qq_27261889/article/details/102941729

在生成图片中会经常出现一些重复的结果,如下图红色框中的图片。

二.如何解决mode collapsing
第一种方法:针对目标函数的改进方法
为了避免前面提到的由于优化maxmin导致mode跳来跳去的问题,UnrolledGAN采用修改生成器loss来解决。具体而言,UnrolledGAN在更新生成器时更新K次生成器,参考的Loss不是某一次的loss,是判别器后面k次迭代的loss。注意:判别器后面k次迭代不更新自己的参数,只计算loss用于更新生成器。这种方式使得生成器考虑到了后面k次判别器的变化情况,避免了在不同mode之间切换导致的模式崩溃问题。次处务必和迭代k次生成器,然后迭代1次判别器区分开。DRAGAN则引入了博弈论中的无后悔算法,改造其loss以解决mode collapse问题。EBGAN则是加入VAE的重构误差以解决mode collapse。

第二种方法:针对网路结构的改进方法
MAD-GAN采用多个生成器,一个判别器以保障样本生成的多样性。具体结构如下:

相比于普通GAN,多了几个生成器,且在loss设计的时候,加入一个正则项。正则项使用余弦距离惩罚三个生成器生成样本的一致性。

MRGAN则添加了一个判别器来惩罚生成样本的mode collapse问题。具体结构如下:

输入样本x通过一个Encoder编码为隐变量E(x),然后隐变量被Generator重构,训练时,Loss有三个。DM和R(重构误差)用于指导生成real-like的样本。而DD则对E(x)和z生成的样本进行判别,显然二者生成样本都是fake samples,所以这个判别器主要用于判断生成的样本是否具有多样性,即是否出现mode collapse。

第三种方法:Mini-batch Discrimination
Mini-batch Discrimination在判别器的中间层建立一个mini-batch layer用于计算基于L1距离的样本统计量,通过建立该统计量,实现了一个batch内某个样本与其他样本有多接近。这个信息可以被判别器利用到,从而甄别出哪些是缺乏多样性的样本。对生成器而言,则要试图生成具有多样性的样本。

原文链接:https://blog.csdn.net/Rocky6688/article/details/103445991

②mode dropping:某些mode丢失了,也导致缺乏多样性。例如下图中的人物,虽然每张都不太一样,但其实除了肤色变化,人物没有任何变化。

猜你喜欢

转载自www.cnblogs.com/gaona666/p/12376604.html