摘录自 GANs in Action Section 5.4 (《GAN实战》 5.4 节)

原文借鉴 How to Train a GAN: Tips and Tricks to Make GAN Work (2016)

使用ADAM优化器

为什么Adam比SGD更好? 因为Adam是SGD的延伸,实际应用往往效果更好。Adam将几种训练技巧和SGD组合成一个易于使用的程序包。

输入归一化

根据几乎所有机器学习资源,包括Chintala的清单,将图像归一化在–1和1之间通常情况下是一个好主意。之所以进行归一化操作,是因为计算更容易处理,机器学习的其余情况也是如此。考虑到对输入的这种限制,最好使用tanh激活函数来限制生成器的最终输出。

批归一化

我们就批归一化在第4章中进行了详细讨论,为完整起见,故将其包括在此。对批归一化的看法变化为:最初批归一化被认为是一种非常成功的技术;但最近研究表明,它有时会产生不好的结果,特别是在生成器中,但在鉴别器中,大多对提升结果有帮助[19]。

梯度惩罚

此训练技巧基于Chintala列表中的第10点,根据直觉,如果梯度的范数过高,就会出现问题。即使在今天,如第12章中所述,BigGAN之类的网络也在这一领域进行创新。[20]

但技术问题仍然存在,简单的加权裁剪可能会产生其他深度学习中已知的梯度消失或爆炸问题。我们可以限制鉴别器输出相对于其输入的梯度范数。换言之,如果稍微改变输入内容,更新后的权重也不应该会有太大变化。深度学习充满了这样的魔法。这在WGAN结构中尤其重要,也可以应用在其他地方。[21] 许多论文都以某种形式使用了这一技巧。[22]

在这里,我们可以简单地使用你喜欢的深度学习框架的原生实现来惩罚梯度,而不必关注过多的实现细节。更聪明的方法最近已经由研究人员发表并在ICML 2018上发布,但尚未得到广泛的学术认可。[23] 为了使GAN更稳定,人们正在进行大量研究,例如Jacobianclamping,这也是有待于在新的研究中复现的——所以需要等待,看看有哪些方法会成功。

对鉴别器进行更多的训练

最近,对鉴别器进行更多的训练是一种成功的方法。在Chintala的原始列表中,这种方法被标记为效果不确定,因此请谨慎使用。这里主要有两种方法:

  1. 在生成器有机会生成任何样本之前对鉴别器进行预训练;
  2. 每个训练周期更多次地更新鉴别器,通常,鉴别器权重更新5次,生成器才更新1次。

用深度学习研究员兼教师Jeremy Howard的话说,之所以对鉴别器进行更多的训练有用,是因为这是“外行指导外行”,这首先需要你不断地注入关于真实数据的信息。

避免稀疏梯度

从直觉上讲,稀疏梯度(如ReLU或MaxPool生成的梯度)会增加训练难度是有道理的。原因如下。

  1. 直觉,尤其是平均池化,这样说可能会令人困惑,但请这样思考:如果使用标准的最大池化,那么将会失去除了卷积的感受野中的最大值以外的所有值,这使得在DCGAN的情况下使用转置卷积来恢复信息变得更加困难。使用平均池化至少可以知道平均值是多少,但它仍然不是完美——我们仍在丢失信息,但至少比以前少了,因为平均值比简单的最大值更具代表性。
  2. 如果使用ReLU激活,则会导致另一个问题——信息损失。解决此问题的一种方法是应用此操作时考虑丢失了多少信息,因为稍后可能需要恢复它。回想一下,ReLU( )只是max(0, ),这意味着对于所有负值来说所有信息都会永远丢失。如果能确保把负数区域的信息留到以后处理并标记这些信息是不同的,就可以保留所有这些信息。

幸运的是,对于这两种问题,都有简单的解决方案:可以使用LeakyReLU激活函数(例如对于而言是0.1 ,对于而言是),平均池化也可以解决很多这些问题。还有其他激活函数(例如sigmoid、ELU和tanh),但是人们最常用的是LeakyReLU激活函数。

总的来说,我们试图最小化信息损失,并使信息流尽可能地合乎逻辑,而不是要求GAN以某种奇怪的方式反向传播错误,在这种情况下,它还必须学习映射。

平滑和带噪声的标签

研究人员使用多种方法来给标签添加噪声或使其平滑。Ian Goodfellow推荐使用单边标签平滑(例如,以0和0.9作为二元标签),但一般来说,增加噪声或裁剪似乎是个好主意。


Reference

[19] Tutorial on Generative Adversarial Networks—GANs in the Wild, by Soumith Chintala, 2017.

[20] Large-Scale GAN Training for High-Fidelity Natural Image Synthesis, by Andrew Brock et al., 2019. [21] 尽管作者在这里借用了强化学习的概念,称鉴别器为“批评家”,但那篇论文的大部分灵感都来自于它。

[22] Least Squares Generative Adversarial Networks, by Xudong Mao et al., 2016. 另见BEGAN: Boundary Equilibrium Generative Adversarial Networks, by David Berthelot et al., 2017.