GAN模型的挑战及训练效果提升方法

生成对抗网络(GAN)及其变种已经成为最近十年以来机器学习领域最为重要的思想。--2018图灵奖得主 Yann LeCun

 

1、GAN模型的挑战

1.1启动及初始化问题

GAN的训练过程可以看做是一个生成网络和鉴别网络相互博弈的过程,最终达到一个如果对方不改变就无法进一步达到提升的状态。同时梯度下降法的启动会选择一个减小所定义的损失的方向,这个方向不一定最终使得GAN达到纳什均衡的状态,这是一个高维度的非凸优化目标。网络试图在接下来的步骤中最小化非凸优化目标,这最终有可能进入振荡。而且理想情况下,我们希望两个网络可以以相同的速率进行改善,但实际上两个网络的学习效率是不一样的,通常做法是故意停止某个网络的学习过程或降低学习率,使得另一个网络可以跟得上。

1.2模型坍塌

模型坍塌是指生成器坍塌到了一个极狭小的分布内,生成的样本不在变化。通俗来说就是生成器在某种情况下重复生成完全一致的图像。这就与博弈论中的启动相关了。如果在生成器最小化之前,判别器已经完全最大化(这里的最小化和最大化是指生成网络和鉴别网络是同一个损失函数,但是他们的目标不同,生成网络需要最小化损失函数,鉴别网络需要最大化损失函数),这样所有工作还能进行;但是如果先最小化了生成器,接下来再尝试最大化鉴别器,这样网络是训练不成功的。原因在于若刚开始变保持鉴别器落后于生成器,鉴别器会错误的将空间中某些点标记为最有可能是真的而不是 假的,这样生成器就会选择将所有噪声输入映射到最可能为真的点。

1.3模型计数、角度、全局结构等方面问题

模型计数上,GAN在某些情况下有太多的视角,从而错误的判断物体在特定位置应该出现的数量,比如在动物头上生成多只眼睛。

角度方面,GAN通常不能很好地区分图像是从前面观测的结果还是从后面观测的结果。

全局结构方面,GAN无法理解全局方面的结构。

1.4评估收敛指标

现在没有一个很好地指标可以告诉我们生成器的损失和判别器的损失是否收敛

2、提升GAN模型训练效果的方法

2.1特征匹配

利用判别器中间层的特征来匹配图像真伪,并将其作为一个监督信号训练生成器。如此一来训练生成器的生成数据会匹配真实数据的统计特性以及判别器中间层的预期特征值。在训练判别器过程中,让判别器去寻找最能判别真实数据的特征而非当前模型生成数据的特征。对于鉴别器来说他的主要任务就是鉴别生成图像真伪,那么在鉴别训练的过程中可以有两种方式实现,一种是通过学习标记真实数据的特征来识别生成图像;另一种是其学习到了生成数据的特征分布并以此作为其判别的依据;显然前者才是我们想要的。

2.2小批量

通过给判别器加入额外特征的方法解决模型坍塌的问题,这样判别器每次考虑一小批的样本而不是一个单独的样本。小批量的方法可以保证不同样本之间再空间上有合适的距离

2.3历史平均

主要思想就是加入一个惩罚项来惩罚那些和历史平均权重相差过多的权重值。

2.4单侧标签平滑

通常情况下,使用标签“0”代表图像是真实的,使用标签“1”认为图像是伪造的,将其改为更为平滑的标签,比如0.1与0.9等,可以使得网络在一些对抗的例子中更健壮。

2.5输入规范化

大多数情况下最好将图像规范化到 -1~1范围之间并使用tanh作为生成器最后一层的激活函数;

2.6批规范化

核心思想是针对真实数据和生成数据构建不同的小批,每一个小批只能全部是生成数据或者是真实数据。

2.7利用ReLu和MaxPool避免稀疏梯度

如果梯度稀疏,会使得GAN博弈的稳定性受到很大的影响,Leaky ReLu对生成器和判别器都有很大帮助。

2.8优化器和噪声

针对生成器采用ADAM作为优化器,对于判别器使用SGD作为优化器,并通过在生成器的不同层中去除输入来作为噪声的来源。

 

你可能感兴趣的:(深度学习)