Press "Enter" to skip to content

【GAN优化】GAN训练的几个问题

从今天开始,我们将关注训练GAN时产生的问题,作为第一篇文章,首先从几个方面来分析一下实际训练的GAN和理论模型上的GAN不同之处以及实践中出现的问题。第一个部分将介绍最优判别器引发的梯度消失问题,第二部分使用一个例子介绍距离计算时的问题,接着第三部分将介绍优化问题的困惑以及给出模式崩溃一个简单解释,最后一部分简单谈一下参数空间的问题。

 

作者&编辑 | 小米粥

 

GAN模型在理论上非常优美,它训练完成后的愿景是:生成器的隐式概率分布完全等于数据集的真实概率分布,判别器也无法对任意一个样本点做出区分,而只能给出概率0.5。但是,实际上,这样的结果是不太可能达到的。

 

1 梯度消失问题

 

在早期的GAN中,有一条经验:不要把判别器训练得太好,以避免后期梯度消失导致无法训练生成器。在第三期中,我们曾谈论过类似的问题,只不过是从f-divergence的角度来探讨的,简而言之,判别器的任务是辅助学习数据集的本质概率分布和生成器定义的隐式概率分布之间的某种距离,生成器的任务是使该距离达到最小甚至为0。但是当两个概率分布没有重合或者重合部分可忽略时,其f散度值为常数;当两者完全重合时,f散度值突变成0。可以发现f散度距离无法为生成器提供可以减少损失函数的梯度信息,生成器无法获得优化方向。

 

这次我们从GAN的训练过程的角度再一次来谈论这个问题。通过理论和大量的实践,我们几乎可以认为数据集的本质概率分布和生成器定义的隐式概率分布均是高维数据空间中的低维流形,几乎不存在重叠部分(重叠部分的测度为0),可以证明此时必然存在一个最优判别器D*可以将两个分布完全分开,它在数据集的分布上置1而在生成分布上置0,即:

 

 

而且在x的邻域内,其导数为0,即

 

 

遗憾的是,此时我们无法使用反向传播算法来使生成器进行学习,因为我们可以证明出:

 

 

即不断训练判别器D(x)使其逼近最优判别器的代价是:梯度消失!梯度一旦消失,生成器无法获得任何信息来进行更新,两个分布之间的距离并没有被缩小,判别器无法更新,之后的迭代过程变成无用的循环过程。

 

2. 采样计算距离问题

 

WGAN是解决上述梯度消失问题的一个好办法, 现在我们来看在实际训练GAN时候的第二个问题:

 

首先来看一个小例子,我们定义一个标准的正态分布:

 

 

然后,从该分布中采样出m个(有限个)样本组成一个均匀分布:

 

 

那幺有一个结论:

 

 

也就是说,在有限个采样个数的情况下(实际中样本数m足够大是不可能成立的),由样本构成的“采样分布”并不能简单地等同于源分布,两者还有一定的“距离”。更进一步地讲,对于两个正态分布,很可能“采样分布”之间距离并不等于两个分布之间的真实距离。

 

实际的结论确实如此:对于两个标准正态分布 μ 和 υ 以及两个分别从中采样得到的样本构成的均匀分布, 有非常大的概率认为:

 

 

在GAN中,我们也是通过采样来近似计算分布之间的距离的,最理想下状态,两个概率分布之间的距离等于两个“采样”分布的距离,或者相差很小:

 

 

但考虑到上述简单的正态分布的例子中尚且存在这样的问题,有理由认为在GAN中,依靠采样来估计的分布之间的距离并不等于两个分布的真实的距离。如果指导生成器进行学习的距离信息是有偏差的,则很可能无法将生成器定义的隐式概率分布逼近到数据集的本质概率分布。

 

3. minmax问题

 

GAN的训练模式是这样的:固定生成器G,迭代k次训练判别器D;然后固定判别器D,训练生成器G,两者依次交替使用梯度下降法进行更新。但是这里会造成一种困惑,我们到底是在解决一个minmax问题还是maxmin问题?因为这两个问题通常情况下并不一样:

 

 

在maxmin的角度来看,GAN的训练过程会产生模式崩溃(mode collapse)问题,就是指生成器生成的样本有大量的重复,多样性非常差(这是一个在实践中经常出现的问题,在之后的文章中,我们将花许多精力来介绍mode collapse问题的解决方案)。

 

现在,我们通过一个粗略的例子,来简单介绍一下模式崩溃问题的产生原因。 真实数据集的本质概率密度函数通常是多峰函数,也就是具有很多模式(mode),假设真实数据集的本质概率密度函数有3个峰。首先,对于固定的判别器D,生成器面临min问题,会努力将概率集值中放置到一个或几个高概率的点(mode)上,例如x=5.0,希望以这种“偷懒”的方式来欺骗判别器D。

 

 

接着,固定生成器,判别器面对是一个max问题,对其进行更新,根据最优判别器的表达式:

 

 

更新后D(x)为:

 

 

可以看出,训练后的D会对x=5.0及其周围点的“极其不信任”。接下来再更新生成器时,为了取得最小值,生成器只得“偷懒”而将概率放置到其他的高概率的、判别器信任的模式上,例如x=0,即:

 

 

再次更新判别器D(x),其函数图像为:

 

 

这时判别器识别降低了x=0的信任程度,但是同时又恢复了对x=5.0的信任程度,那幺接下来再更新生成器时,生成器其又会将高概率点放置在x=-5.0或者x=5.0的点周围,如此往复······

 

在实践中,我们发现生成器往往不能涵盖所有的模式,通常只包含部分模式。在训练过程中,生成器的概率放置不断地从一个模式转换到另一个模式中,不断往复,这样训练结束后,生成器产生的样本必定有大量的重复。

 

3. 参数空间与函数空间问题

 

理论上,GAN确实可以收敛,但是该优化过程是在函数空间中完成的。实践操作中,我们的优化操作是在神经网络的权值构成的参数空间中进行的,理论上的保证在现实中并不成立。另外,有证明表示当参数的个数有限时,GAN的平衡状态很可能是不存在的。

 

[1] Arora, Sanjeev , et al. “Generalization and Equilibrium in Generative Adversarial Nets (GANs).” (2017).

 

[2] Arjovsky, Martin , and Bottou, Léon. “Towards Principled Methods for Training Generative Adversarial Networks.” Stat(2017).

 

总结

 

这篇文章简单介绍了实际训练GAN的一些基本问题,下一期将利用微分方程从动力学的角度讨论一下训练收敛性的问题,将给出一个比较直观的展示。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注