先把参考文章放在前面,我对里面的内容按照自己的思路进行整理~
http://www.dataguru.cn/article-14563-1.html
https://blog.csdn.net/gdengden/article/details/88837835
1、首先用通俗易懂的语言介绍一下什么叫模式崩溃?
比如手写数字识别,0-9一共10个数字,假设有10个模式,而我们网络只能预测出0-5这几个数字,无法识别其他数字的模式,就是模式崩溃了。
2、那么为什么会产生模式崩溃呢?
目前DNN只能预测连续分布,而源数据分布往往是具有间断点的非连续分布,所以在训练过程中,DNN无法学习到具有间断点的非连续分布。如果目标概率测度的支集具有多个联通分支,GAN训练得到的又是连续映射,则有可能连续映射的值域集中在某一个连通分支上,这就是模式崩溃(mode collapse),如果强行用一个连续映射来覆盖所有的连通分支,那么这一连续映射的值域必然会覆盖之外的一些区域,即GAN会生成一些没有现实意义的图片。
3、如何解决模式崩溃呢?
(1)数据多样性:小批量识别和特征映射是属于这一类的两种技术。小批量鉴别赋予鉴别器跨批比较样本的能力,以帮助确定批是真还是假。特征匹配修改了生成器的成本函数,以将生成的批的多样性考虑在内。它通过匹配鉴别器特征的统计信息来实现这一点。
(2)预计反攻:防止模式间跳来跳去的猫鼠游戏的一种方法是预测未来,并在更新参数时预测对策。允许生成器以完全可微的方式“展开”鉴别器的更新。现在不是生成器学习欺骗当前的鉴别器,而是学习最大限度地欺骗它。
(3)使用经验重播:通过每隔一段时间向鉴别器显示旧的假样本,可以使模式间的跳来跳去最小化。这可以防止鉴别器变得太容易被利用,但仅限于生成器过去已经探索过的模式。
(4)使用多个GAN:我们可以简单地接受GAN只覆盖数据集中模式的一个子集,并为不同模式训练多个GANs,而不是对抗模式崩溃。当合并时,这些GANs覆盖所有模式。AdaGAN 3采用了这种方法。这里的主要缺点是训练多个GANs需要很多时间。此外,使用GANs的组合通常比只使用一个GANs更笨拙。