翻译博客:GAN — Why it is so hard to train Generative Adversarial Networks!
通常情况下,识别莫奈的绘画要比模仿莫奈的绘画更容易。在GAN中也是同样的道理,生成模型(创造数据)要比判别模型(处理数据)难很多。通过研究,我们了解了在训练GAN过程中遇到的一些基本问题。我们将研究一些分歧,以便指明我们的研究方向。在研究这些问题之前,我们回顾一下GAN方程式。
GAN
GAN采用标准或均匀分布来提供噪声,并利用深度网络生成模型来创建图像。
在GAN中,我们增加了判别器来区分判别器的输入是来自于真实数据还是生成的数据。输出值来估计是真的概率。
目标函数与梯度
GAN定义了通过极小极大化游戏,其目标函数为:
以下图标总结了我们如何使用相应的梯度来训练判别器和生成器
GAN问题
许多GAN模型面临以下几个主要问题:
1.不收敛:模型参数震荡,动摇,不收敛。
2.模式崩溃:有限的样本导致生成器崩溃。
3.梯度弱化:判别器太成功了,生成器梯度消失,什么也没学到。
生成器和辨别器不平衡导致过拟合,高度敏感的超参选择。
模型
真实数据分布具有多模态性。例如,MNIST有10个模型从数字‘0’到数字‘9’。以下样本由两个不同的GAN产生。上面一行生成了10个模型而下面一行只创建了一个模型(数字‘6’)。该问题属于模式崩溃当只有少量的模型数据被生成。
纳什均衡
GAN是基于零和非合作游戏The zero-sum non-cooperative game。如果一方赢则另一方输。零和游戏也叫极小极大化游戏。你的对手想要最大化它的行为,但是你的行为是将他们最小化。在博弈过程中,当判别模型和生成模型达到了纳什均衡时GAN模型收敛。这也是下面公式的最优解:
因为双方都想破坏对方,所以当一方无论对手可能做什么都不会改变其动作时,就会发生纳什均衡。考虑两个对手A和B,分别控制和值。A想最大化值而B想最小化它。
则纳什均衡为。这也是唯一状态你的对手的任何行为都无关紧要了。对手的任何状态都不会改变游戏的结果。
那么是否可以通过梯度下降方法找到纳什均衡呢?我们更新参数和基于值函数的梯度。
其中是学习率。当将,和的训练过程图示出来,我们意识到我们的解永远不会收敛。
如果我们增加学习率或者训练模型的长度,我们发现参数和非常不稳定。
我们的例子充分展示了一些代价函数不会因为梯度下降导致收敛,特别是对于非凸函数。我们可以直观地看待这个问题:你的对手总是对你的行为采取对策,这使得模型更难以收敛。
基于KL-Divergence的生成模型
为了理解GAN中的收敛问题,我们将研究KL-divergence和JS-divergence。在提出GAN之前,很多生成模型创建模型来最大化最大似然估计MLE。例如,找到最好的模型参数适合大部分的训练数据。
这与最小化KL-divergence相同,其测量概率分布(估计分布)如何偏离预期概率分布(实际分布)。
KL-divergence是非对称的
对于区域,下降到0。例如,在下面的图右中,红色的曲线对应。当其中接近0时,红色曲线下降到0。
这有什么含义?当它失去图像中的一些模型时,KL-divergence可以惩罚生成器:当但是时,惩罚率高。但是,它会接受一些看起来非真实的图像。当但是时,惩罚率低。(更好的质量但是更少的样本)。
一些生成模型采用MLE来生成模型。最初认为KL-divergence导致交叉的图像质量(模糊图像)。但要注意的是,一些经验实验可能会对这一说法提出异议。
JS-Divergence
JS-divergence的定义如下:
JS-divergence是对称的。与KL-divergence不同,它将惩罚不良的图片(当且)。在GAN中,如果判别器是最优的(在区分图片时具有良好的性能),生成模型的目标函数变为:
因此,优化生成模型被视为对JS-divergence进行优化。在实验中,与使用KL-divergence的其它生成模型相比,GAN能够产生更好的图像。因此,早期研究者设想优化JS-divergence而不是KL-divergence来创建质量高的但是缺乏多样性的图像。但是,一些研究者已经质疑了这类说法,因为使用MLE的GAN实验产生的图像质量相似但仍然存在图像多样性问题。但是,在正对GAN训练中JS-divergence所面临的缺陷方面,已经做了许多努力。无论辩论如何,这些成功都非常重要。因此,接下来我们将深入探讨JS-divergence的问题。
JS-Divergence中的梯度消失
当判别器最优时,生成模型的目标函数为:
当生成的图像的数据分布与真实图像的数据分布不匹配时,JS-divergence梯度会发生什么?考虑一个例子,和服从高斯分布,且的均值为0。.考虑不同均值下的来研究的梯度。
这里,我们给出了和之间的JS-divergence,其中的均值在0到30之间。如下图所示,JS-divergence的梯度消失了从到。当这些区域的代价饱和时,GAN的生成器的学习会极其缓慢。特别是在早期训练中,和是非常不同的,并且生成器学习的非常慢。
不稳定的梯度
由于梯度消失,原始GAN论文提出了另一种代价函数来解决梯度消失问题。
根据Arjovsky的另一篇论文,相应的梯度为:
它包括了一个反向KL-divergence项,Arjovsky使用它来解释为什么GAN与基于KL-divergence的生产模型相比具有更高的质量但多样性少的图像。但同样的分析声称梯度波动并导致模型不稳定。为了说明这一点,Arjovsky冻结生产器并持续训练判别器。随着更大的变体,生成器的梯度开始增加。
上面的实验不是我们如何训练GAN。然而,在数学上,Arjovsky显示第一个GAN生成器的目标函数具有消失的梯度,而替代代价函数具有波动的梯度,导致模型的不稳定性。自最初的GAN以来,寻找新的代价函数,如LSGAN,WGAN,WGAN-GP,BEGAN等。有些方法基于新的数学模型,其他方法基于直觉通过实验备份。目标是找到具有更平滑和非消失梯度的代价函数。
然而,2017年谷歌大脑论文“GAN创建平等?”声称:最终,我们没有发现任何经过测试的算法始终由于原始算法的证据。
如果任何新提出的代价函数在提高图像质量方面取得了巨大成功,我们就不会有这种争论。关于Arjovsky数学模型中原始代价函数的的世界末日图片也没有完全实现。但我会谨慎地提醒读者过早的断言代价函数并不重要。我认为训练GAN容易失败,不应该在一开始时尝试许多成本函数,而是应该在随机尝试代价函数之前调试设计和代码。接下来尝试调整超参数,因为GAN模型对它们很敏感。
为什么GAN中模式会崩溃?
模式崩溃是GAN中最难解决的问题之一。彻底崩溃不常见,但经常发生部分崩溃。下面带有相同下划线颜色的图像看起来相似,模式开始崩溃。
让我们来观察它会发生什么。GAN生成器的目标是创建可以最大程度地欺骗判别器D的图像。
但是我们来考虑一个极端情况,其中G被广泛训练而没有对D进行更新。生成的图像将会收敛找到最佳的图像,该图像能够糊弄D,从判别器角度看是最逼真的图像。在这个极端情况下,将独立于。
模式崩溃为单点。与相关的梯度接近0。
当我们在判别器中重新开始训练时,检测生成图像的最有效方法是检测这种单一模型。由于生成器已经对的影响不敏感,因此来自判别器的梯度可能会将单点推到下一个最脆弱的模式。生成器在训练中产生这种不平衡的模式,这会降低其检测其它模型的能力。现在,两个网络都过于适应利用短期对手的弱点。这变成了猫捉老鼠游戏,模型不会收敛。
在下图中,Unroll GAN设法生成所有8种预期的数据模式。第二行显示另一个GAN,当判别器赶上时,模式崩溃并旋转到另一个模式。
在训练期间,不断更新判别器以检测对手。因此,生成器不太可能过度拟合。在实践中,我们对模式崩溃的理解仍然有限。我们上面的直观解释可能过于简单了。通过经验实验开发并验证了缓解方法。然而,GAN训练仍然是一个启发式过程。部分崩溃仍然很常见。
但是模式崩溃并不都是坏消息。在使用GAN的样式迁移中,我们很乐意将一个图像转换为一个好的图像,而不是找到所有变体。实际上,局部模式崩溃的专业性有时会产生更高质量的图像。
超参和训练
如果没有合适的超参,没有代价函数可以工作,调整它们需要时间和耐心。新的成本函数可能会引入具有敏感性能的超餐数。
平衡判别器和生成器
不收敛以及模式崩溃经常被解释为判别器和生成器不平衡。显而易见的解决方案是平衡它们的训练避免过拟合。然而,很少取得进展,但并非因为缺乏尝试。一些研究人员认为,这不是一个可行或理想的目标,因为良好的判别器可以提供良好的反馈。因此,一些注意力转移到具有非消失梯度的成本函数。
代价VS图像质量
在判别模型中,损失函数测量预测的准确性,我们使用它来监控训练的进度。但是,GAN的损失函数测量我们比对手相比的表现。通常情况下,生成器代价会增加,但图像质量实际上正在提高。我们回过头来手动检查生成的图像以验证进度。这使得模型比较更加困难,从而导致难以在一次运行中选择最佳模型。这也使调优过程变得复杂。