liongxiong 2019-04-28
大数据文摘出品
来源:distill
编译:Walker、张弛
根据一些指标显示,关于生成对抗网络(GAN)的研究在过去两年间取得了本质的进步。在图像合成模型实践中的进步快到几乎无法跟上。
但是,根据其他指标来看,实质性的改进还是较少。例如,在应如何评价生成对抗网络(GAN)仍存在广泛的分歧。鉴于当前的图像合成基线标准已经非常高,似乎快达到了饱和,因此我们认为现在思考这一细分领域的研究目标恰逢其时。
在这篇文章中,谷歌大脑团队的 Augustus Odena 就针对 GAN 的七大开放性问题作出了介绍。
这些问题分别是:
生成对抗网络与其他生成模型之间的权衡取舍是什么?
除了对抗生成网络之外,目前流行的还有另外两种生成模型:流模型(Flow Models)和自回归模型(Autoregressive Models)。这个名词不必深究其字面含义。它们只是用来描述“模型空间”中模糊聚类的有用术语,但是有些模型很难被简单归类为这些聚类中的哪一个。我也完全没有考虑变分自编码器(VAEs),因为其在目前任何任务中都不是最先进的。
粗略地讲,流模型(Flow Models)先将来自先验的样本进行一系列可逆变换,以便可以精确计算观测值的对数似然。另一方面,自回归模型将观测值的分布分解为条件分布并每次只处理观测值的一部分(对于图像,其每次可能只处理一个像素)。近期的研究表明,这些模型具有不同的性能特征和权衡方法。如何准确地描述这些权衡并确定它们是否为该类模型簇中所固有的,这是一个有趣的开放性问题。
具体来说,先暂时考虑对抗生成网络和流模型之间计算成本的差异。乍一看,流模型似乎可以使对抗生成网络变得多余。流模型可以精确得进行对数似然计算和精确推理,因此如果训练流模型和对抗生成网络的计算成本相同,则对抗生成网络可能失去用武之地。而训练对抗生成网络需要花费大量精力,因此我们应该关心流模型是否能淘汰对抗生成网络。即使在这种情况下,可能仍有其他理由支持在图像到图像翻译等环境中使用对抗训练。将对抗训练和极大似然训练相结合可能仍有意义。
然而,训练对抗生成网络和流模型所需的计算成本之间似乎存在着较大差距。为了估计这个差距的大小,我们考虑这两个在人脸数据库上训练的模型。GLOW模型(一种基于流模型的生成模型)使用40个GPU、约2亿参数值训练,耗时两周后生成像素为256x256的名人脸。
相比之下,高效地对抗生成网络采用类似的人脸数据库,使用8个GPU、约4600万个参数训练,历时4天后生成了像素为1024x1024图像。粗略地说,流模型比生成对抗网络多花费了17倍的GPU天数和4倍的参数来生成图像,但其像素却降低了16倍。这一对比并不完美。例如,流模型也可以用更好的技术方法来提高,但是这些方法能让你有不同的感悟。
为什么流模型的效率较低?我们考虑可能是如下两个原因:首先,极大似然训练在计算上比对抗训练更难。特别当训练集的一些元素被生成模型指定为零概率,会受到无比严厉的惩罚!另一方面,生成对抗网络的生成器仅在为训练集元素赋予零概率时而间接受到惩罚,并且这种惩罚不那么严厉。其次,标准化流(Normalizing Flow)可能在表示某些函数时较为低效。6.1节做了一些关于其效果的小实验,但目前我们尚不知道在这个问题是否有深入的分析。
我们已经讨论过生成对抗网络和流模型之间的权衡,那么自回归模型如何?事实证明,自回归模型可以表示为不可并行化的流模型(因为它们都是可逆的)。在这种情况下,可并行化的说法有点不精确。我们的意思是流模型的采样通常必须按顺序进行,每次一个观测值。不过,可能有一些方法可以绕过这个限制。事实证明,自回归模型比流模型上在时间和参数上效率更高。因此,生成对抗网络是并行、高效但不可逆的,流模型是可逆、并行但不高效,而自回归模型是可逆的、高效,但非并行的。
回到第一个开放的问题:
解决这个问题的一种方法是研究更多模型,这些模型将是多类模型的混合。有考虑将生成对抗网络和流动模型混合,但我们认为这种方法的研究尚不充分。
我们也不确定极大似然训练是否一定比生成对抗网络训练更难。确实,在生成对抗网络训练损失下,没有明确禁止在训练数据上设置一些零质量的数据,但是如果生成器这么做了,那么强大的鉴别器将能够做得更好。因此,看起来生成对抗网络似乎在实践中会学习低支持的分布。
最后,我们怀疑流模型在每个参数上的表达能力上不如任意解码器函数,我们还认为这在一些假设条件下是可以被证明的。
生成对抗网络模型可以对哪种分布进行建模?
大多数生成对抗网络的研究侧重于图像合成。人们通常使用深度学习社区中几个标准的图像数据集上训练生成对抗网络:MNIST、CIFAR-10、STL-10、CelebA、和ImageNet。
关于这些数据集中哪一个是“最容易建模”的数据,有一些观点认为MNIST和CelebA被认为比ImageNet、CIFAR-10或STL-10更容易,因为它们“非常常规”。另有人认为,“大量的类别使生成对抗网络很难训练ImageNet图片”。这些结果是有事实证明的,即CelebA上的最先进图像合成模型生成的图像似乎比ImageNet上的最先进图像合成模型更令人信服。
然而,我们必须通过复杂的实践来得出这些结论,并试图在更大,更复杂的数据集上训练生成对抗网络。我们特别研究了生成对抗网络如何对恰好用于物体识别的数据集进行处理。
与任何科学一样,我们希望能够有一个简单的理论来解释我们的实验观察结果。理想情况下,我们可以查看数据集,在不训练生成模型的情况下进行一些计算,然后说“此数据集对于生成对抗网络建模比变分自编码器容易”。我们在此已经取得了一些进展,但我们认为还有可更多的工作需要做。现在的问题是:
我们也可能会问以下相关问题:“给分布建模”是什么意思?我们是否对低支持率表示满意,还是需要真正的密度模型?是否存在生成对抗网络永远无法学习建模的分布?对于某些合理的资源消耗模型,是否存在理论上生成对抗网络可学习,但是实际上并不能有效学习的分布?对于生成对抗网络而言,这些问题的答案是否与其他生成模型的有所不同?
我们提出了回答这些问题的两种策略:
我们如何在图像合成外扩展生成对抗网络的应用?
除了图像翻译和迁移学习等应用,大多数生成对抗网络的成功都是在图像合成中取得的。尝试在图像领域外使用生成对抗网络,主要集中于以下三个领域:
尽管进行了这些尝试,图像显然是生成对抗网络应用最容易的领域。这使得我们思考以下问题:
扩展到其他领域是需要新的训练技术,还是仅仅需要在每个领域更好的隐式先验信息?
我们期望生成对抗网络最终在其他连续数据上能实现类似图像合成水平的成功,但它需要更好的隐式先验信息。要找到这些先验信息,就需要认真思考什么是合理的、并在特定领域计算上是可行的。
对于结构化数据或不连续数据,我们尚不能确定。一种方法是使发生器和鉴别器都成为经过强化学习训练的代理。但要使这种方法起作用可能需要大规模的计算资源。最后,这个问题可能只需要基础研究的进展就能解决。
关于生成对抗网络训练的全局收敛,我们该作何评价?
训练生成对抗网络与训练其他神经网络不同,因为我们同时优化发生器和辨别器以达到相反的目的。在某些假设下,该同步优化是局部渐近稳定的。
不幸的是,我们很难证明一般情况下的令人感兴趣的信息。这是因为鉴别器/发生器的损失是其参数的非凸函数。但所有神经网络模型都存在此问题!我们希望能以某种方式来解决同步优化产生的问题。这促使我们开始思考以下问题:
我们在这个问题上得到了突出进展。广义而言,现有3种技术,所有这些技术均呈现出了有前景的成果,但均未研究完成:
简化假设-第一种策略是简化关于发生器和鉴别器的假设。例如,如果采用特殊技术和一些额外假设进行优化,则可以证明简化的LGQ GAN(线性发生器、高斯数据和二次判别器)能够全局收敛。如果逐渐放宽这些假设,结果可能会很可观。例如,我们可以远离单峰分布。这是很自然的就能想到的研究方式,因为“模式塌陷”是标准GAN的常见问题。
使用常规神经网络技术-第二种策略是应用用于分析常规神经网络(也是非凸型)的技术来回答有关生成对抗网络收敛的问题。例如,有人认为深度神经网络的非凸性不是问题,因为随着网络越来越大,损失函数的较差局部极小值会在指数变化中渐渐被忽略。该分析能否“引入生成对抗网络中?事实上,对用作分类器的深部神经网络进行分析,并观察其是否适用于生成对抗网络,似乎是一种具有普适性的启发方法。
博弈论-最终策略是使用博弈论的概念对生成对抗网络训练建模。这些技术产生了可证明收敛到某种近似纳什均衡的训练过程,但却使用了不合理的大资源约束。在这种情况下,下一步的工作是尝试减少这些资源限制。
我们应如何评估生成对抗网络,又该在何时使用它们?
在评估生成对抗网络方面目前有很多方案,但几乎没有共识。建议包括:
这些只是大家提议的生成对抗网络评估方案的一小部分。虽然IS和FID相对比较流行,但是生成对抗网络评估问题显然还未解决。最后,我们认为“如何评价生成对抗网络”这一问题源于“何时使用生成对抗网络”这一问题。因此,我们将这两个问题合并为一个问题:
我们应该用生成对抗网络做什么?如果你想要的是一个真实的密度模型,生成对抗网络可能不是最好的选择。现在有很好的实验证据表明,生成对抗网络只能学习目标数据集的“低支持度”表示,这意味着生成对抗网络测试集的绝大部分(隐含地)被指定为零概率。
与其担心太多这个方面的事情,我们认为把生成对抗网络的研究重点放在那些好的甚至有用的任务上更有意义。生成对抗网络很可能非常适合感知任务,图像合成、图像转换、图像填充和属性操作等图形应用程序都均属于这一概念。
我们应该如何评价这些感知任务上的生成对抗网络?理想情况下,我们只需要一个测试评判员,但这非常昂贵。一个便宜的测试评论员只需要看分类器是否可以区分样本中的真实和虚假。这叫做分类器双样本测试(C2STs)。双样本测试的主要问题是,哪怕发生器有一个小小的缺陷(比如说是样本的系统性),它都会严重影响评估。
理想情况下,我们会有一个不受单一因素决定的整体评估。一种方法可能让判别器对其显性缺陷视而不见,但是一旦我们这样做了,其他一些缺陷就有可能占主导地位,我们就又需要一个新的判别器,等等。如果我们反复这样做,我们可以得到一种“格兰姆-施密特步骤”,该步骤创建一个写有最重要的缺陷和忽略它们的判别器的有序列表。也许这可以通过在判别器激活值上进行PCA(主成分分析),以及逐步剔除高方差成份来实现。
最后,我们可以在不考虑费用的情况下人为评估。这能够验证我们真正关心的事情。另外,我们可以通过预测人类的答案、只在预测不确定时与真人互动这种方法来降低成本。
生成对抗网络的训练是如何调整批量数据的Large。
较大的批量数据(minibatch)有助于扩大图像分类,那么它们也能帮助我们扩大生成对抗网络吗?对于有效地使用高度类似的硬件加速器,较大的批量数据可能尤其重要。
乍一看,似乎答案应该是赞同,毕竟大多数生成对抗网络中的鉴别器只是一个图像分类器。如果在梯度噪声上遇到障碍,更多的批处理(batch)可以加速训练。然而,生成对抗网络有一个分类器没有的障碍:训练过程可能会出现偏差。所以,我们可以提出一些问题:
有证据表明,增加批训练的数量可以提高定量结果并缩短训练时间。如果这种现象很鲁棒,那就表明梯度噪声是一个主导因素。然而,这一点还没有得到系统的研究,所以我们相信答案依然是开放的。
其它的训练过程能更好地利用大批量批处理吗?理论上,最佳传输生成对抗网络比普通生成对抗网络的收敛性更好,但由于它尝试将批处理的样本和训练数据相对应地对齐,所以需要较大的批处理量。因此,它似乎很有希望成为大批量处理的备选项。
最后,异步SGD可能成为充分利用新硬件的好选择。在此设置中,限制因素主要是得根据之前的参数来计算梯度更新。但是,GAN实际上应该是受益于对之前参数的训练,所以我们可能会问异步SGD是否以一种特殊的方式与生成对抗网络训练模型相互作用的。
对抗生成网络和对抗样本的关系是怎样的?
众所周知,图像分类器会受到对抗样本的攻击:也就是人类无法察觉的干扰,这些干扰添加到图像中时会导致分类器错误输出。我们还知道,分类问题通常是可以有效地学习的,但难以进行可靠的指数方式学习。
由于生成对抗网络鉴别器是一种图像分类器,所以人们可能会担心它遇到对抗样本。尽管有大量关于生成对抗网络和对抗样本的文献,但它们之间似乎没有多少联系。因此,我们可以问这样一个问题:
我们可以从何开始考虑这个问题呢?我们先假设一个固定的鉴别器为D。如果有一个生成器得到的样本G(z) 被认为是假,而一个小的干扰项p,比如 G(z) + p被认为是真,那么这里将会存在一个对抗样本D。对于生成对抗网络,我们关注的则是,生成器的梯度更新将生成一个新的生成器 G’,满足G’(z) = G(z) + p。
这种担心现实吗?这说明对生成模型的蓄意攻击可能会起作用,但我们更担心的是某些称为“意外攻击”的东西。我们有理由相信这些意外攻击存在的可能性较小。首先,生成器只允许在鉴别器再次更新之前进行一次梯度更新;相反,当前的对抗样本通常会进行数十次的更新。
第二,根据先验的批处理样本,发生器进行了优化,而它的批处理样本在每次梯度步骤中都是不同的。最后,优化是在生成器的参数下,而不是像素下进行的。然而,这些论点中没有一个能够真正排除产生对抗样本的发生器。我们认为这是一个意义重大的课题,有待进一步探索。
相关报道:
https://distill.pub/2019/gan-open-problems/