小析如何提高GAN性能,让你轻松上“王者”
与其他深度网络相比,GAN模型在以下领域可能会受到限制:
- 非收敛性:模型不会收敛,更糟的是它会变得越来越不稳定。
- 模式崩溃:生成器生成单个或有限的模式。
- 慢速训练:训练生成器的梯度消失。
而本文将探讨如何改进GAN设计的方法。
- 更改成本函数以实现更好的优化目标。
- 对成本函数添加额外的处罚以执行约束。
- 避免过度自信和过度拟合。
- 优化模型的更好方法。
特征映射
生成器网络试图找出最好的图像来欺骗判别器网络。当两个网络形成对抗时,"最佳"图像总是不断变化。但是,优化可能会变得过于"贪心",并使其陷入永无休止的猫捉老鼠游戏中。而这是模型非收敛性和模式崩溃的场景之一。
特征映射改变了生成器的成本函数,以最小化真实图像和生成图像的特征之间的统计差异。 我们用图像特征f(x)平均值之间的L2—norm距离来对生成器进行补偿。
其中f(x)是判别器中即时图层的输出,用于提取图像特征。
在这里,我们的目标不是简单地欺骗判别器。我们希望生成的图像具有与真实图像相同的特征。实际图像特征的平均值是按照批次波动的小批量计算的。这对于缓解模式崩溃是一个好消息。它引入了随机性,使得判别器更难适应自身。
当训练期间GAN模型不稳定时,特征映射是有效的。
小批量鉴别
当模式崩溃时,所有创建的图像看起来都很相似。我们分别将不同批次的原有图像和生成的图像输入判别器。我们计算图像x与同一批次中其余图像的相似度。我们在判别器中的一个密集层中附加相似度o(x),以区分这个图像是原有的还是生成的。
如果模式开始崩溃,则生成的图像的相似性会增加。如果判别器的相似度与实际图像的相似度不匹配,判别器就可以判断图像是否被生成。这鼓励生成器创建更接近真实图像的多样性图像。
通过变换矩阵T计算图像xi与同一批次中的其他图像之间的相似性o(xi)。以下,xi是输入图像,xj是同一批次中的其余图像。
这些方程有点难以追查,但这个概念非常简单。我们使用一个变换矩阵T将特征xi变换为Mi。(B×C矩阵)
我们使用L1范数和下面的等式推导图像i和j之间的相似度c(xi,xj)。
图像xi与该批次中其余图像之间的相似性o(xi)是
以下是总结:
正如论文"改进的GAN训练技术"中的引言:
小批量鉴别使得我们能够非常快速地生成在视觉上可以吸引人的样本,并且在这方面它优于特征匹配。
单边标签平滑
深度网络可能会因过度自信而受到影响。例如,它使用很少的特征来分类对象。深度学习使用规则来缓解这个问题。在GAN中,当数据有噪音时,我们不希望过度拟合模型。如果判别器太依赖于一小组的特征来检测原有的图像,那么生成器可以快速模仿这些特征来击败判别器。在GAN中,过度自信会造成严重伤害,因为判别器很容易被生成器利用。为了避免这个问题,当任何实际图像的预测超过0.9(D(实像)> 0.9)时,我们对判别器进行处罚。这是通过将我们的目标标签值设置为0.9而不是1.0来完成的。下面是伪代码:
虚拟批量标准化(VBN)
批量标准化BM在许多深度网络设计中成为事实上的标准。BM的平均值和方差由当前小批量得出。但是,它会造成样本之间的依赖关系。生成的图像并不是相互独立的。
下图是在实验中,生成的图像在同一批次中显示的色调。
最初,我们从独立样本的随机分布中抽取z作为独立样本。然而,批量标准化造成的偏差会压倒z的随机性。
虚拟批量标准化(VBN)在训练前对参考批次进行采样。在正向通道中,我们可以预选一个参考批次来计算BN的标准化参数(μ和σ)。 但是,由于我们在整个训练中使用同一批次,因此我们将使用此参考批次对模型进行过度拟合。为了减轻这一点,我们将参考批次与当前批次结合起来计算标准化参数。
历史平均
在历史平均中,我们跟踪最后一组tmodels的参数。或者,如果我们需要保留一长串模型,我们需要更新模型参数的运行平均值。
我们在成本函数下面添加一个L2成本:
对于一些具有非凸对象函数的游戏,历史平均可能会使模型停止在均衡点附近并开始收敛。
经验回放
为了避免判别器的过度拟合,我们可以维护最近生成的图像,并将它们还原到与新生成的图像并行的判别器。因此,判别器将不适合生成器的特定时间实例。
多个GAN
模式崩溃可能并不全是坏事。事实上,当模式崩溃时,图像质量通常会得到改善。因此,我们可能会为每种模式收集最佳模型,并使用它们重新创建不同模式的图像。
判别器和生成器之间的平衡
判别器和生成器总是为了争夺对方而相互削弱。生成器正在积极创造最佳图像来击败判别器。但是,如果判别器响应速度慢,则生成的图像将会收敛并且模式开始崩溃。相反,当判别器表现良好时,原始生成器的成本函数的梯度消失且学习缓慢。我们可以将注意力转向平衡生成器和判别器之间的损失,以便在训练GAN中找到最佳点。不幸的是,解决方案似乎难以捉摸。在判别器和生成器之间的交替梯度下降中,定义它们之间的静态比率看起来很有吸引力,但没有太多成功的报道。也有其他建议被提出,但其效力受到了质疑。
一些研究人员质疑平衡这些网络的可行性和可取性。训练有素的判别器无论如何都可以向生成器提供质量反馈。而且,训练生成器赶上判别器并不容易。相反,当生成器运行不良时,我们可能会将注意力转移到寻找一个没有接近零梯度的成本函数。
不过,问题依然存在。新的成本函数可能会给模型带来新的不稳定性。许多关于改进GAN的研究集中在寻找在训练期间具有非消失梯度的成本函数。人们提出了许多建议,但是关于它是否能够达到宣传的效果,人们的报道却相互矛盾。但非收敛问题是真实存在的,模式崩溃是常见的。我们鼓励人们尝试不同的成本函数,但不期望找到最终成本函数的追求会停止。
判别器和生成器网络容量
判别器的模型通常比生成器(更多的过滤器和更多的图层)更复杂,一个好的判别器可以提供质量信息。如果生成器过于优化,我们会遇到过度拟合的风险,并且模式可能会崩溃。在训练期间,由于我们正在忙于解决模型的不稳定性和模式崩溃问题,所以我们通常无法用更复杂的生成器识别任何图像质量的改进。
实施建议
- 在-1和1之间对图像像素值进行缩放。将tanh用作生成器的输出图层。
- 用高斯分布进行z抽样实验。
- 批量标准化通常能稳定训练。
- 使用PixelShuffle并转置卷积以进行向上采样。
- 避免使用最大池进行下采样。使用卷积步幅。
- Adam优化器通常有效,但可能会有一些例外。LSGAN论文报告表示,RMSProp在使用LSGAN的一些实验中具有更稳定的训练。
- 在将真实图像和生成的图像送入判别器之前,将噪声添加到真实和生成的图像中
GAN模型的动力学还不是很清楚,所以一些提示值得尝试。里程可能会有所不同。