生成对抗网络(GAN)是两个子网络的组合,它们在训练时相互竞争以生成真实数据。生成器网络生成看起来真实的人工数据,而鉴别器网络识别数据生成的数据是人工的还是真实的。
虽然生成对抗网络(GAN)是强大的模型,但它们很难训练。同时训练生成器和判别器,会相互消耗,这是一个动态系统,其中一个模型的参数一旦更新,优化问题的性质就会发生变化,因此,达成收敛可能很困难。
训练也可能导致生成对抗网络(GAN)无法对完整分布进行建模,这也称为模式崩溃。
那是什么导致模式崩溃呢?
模式崩溃的原因
1、无法找到网络的收敛
2、生成器可以找到可以轻松欺骗判别器的某种类型的数据。在目标实现的假设下,它将一次又一次地生成相同的数据。整个系统被过度优化到单一类型的输出。
需要注意的是,识别模式崩溃和其他故障模式的问题在于我们不能依赖性分析,因为在大量数据或问题非常复杂的情况下,依赖性分析的方法可能会失败。
识别生成对抗网络(GAN)模式崩溃的方法
1、查看中间图像
在模型较为简单或数据量少的情况下,可以通过手动查看图像来识别
2、观察损失图
可以注意到损失在某个点之后开始饱和,显示出预期的行为。但如果损失图在生成器和判别器的初始时期都下降到零,这意味着生成器发现了一组非常容易被鉴别器识别的假图像。
3、统计不同的bin数量(NDB分数)
NDB评分是一种定量方法,基于NDB评分的工作原理,最后结果收到的值将介于0和1之间,如果NDB分数接近0就意味着模型相对正常,反正更接近1,意味着模型故障。
解决生成对抗网络(GAN)模式崩溃的方法
1、使用损失函数,有助于防止模式崩溃和收敛
2、提供足够的潜在空间,潜在空间是对生成器的输入(随机噪声)进行采样
3、保持安全的学习率,高学习率会导致导致模式崩溃或不收敛
4、特征匹配,特征匹配提出了一个新的目标函数,不直接使用鉴别器输出。生成器经过训练,使得生成器的输出预期与鉴别器的中间特征上的真实图像值相匹配。
5、使用历史平均值,在处理非凸目标函数时,历史平均可以帮助收敛模型