从某些指标来看,在过去的两年中,生成式对抗网络(Generative Adversarial Networks,简称GAN)的研究已经取得了长足进展。对图像合成模型进行的实际改进速度非常快,让人有种跟不上技术进步步伐的感觉。
然而,从其他指标来看,实际发生的情况可能并非如此乐观。举例来说,关于“应该如何评估GAN”仍然存在广泛的分歧。鉴于目前的图像合成基准似乎有些泛滥,我们认为现在是反思这个人工智能子领域研究目标的最佳时机。
这些开放性问题列表在这方面对其他领域有所帮助。本文提出了许多GAN尚未解决的问题,它们会让我们对其他研究人员的工作感到兴奋。下面让我们讨论下有关GAN尚未解决的七大难题:
1. 与其他生成模型相比,GAN有何优势?
除了GAN,目前流行的还有另外两种生成模型:即流程模型(Flow Models)和自回归模型2(AutoregressiveModels2)。粗略地说,流程模型将一组可逆变换应用于先前的样本,这样就可以计算出观测值的精确对数概率。另一方面,自回归模型将观察到的分布分解为条件分布,并一次处理一个观察组件(对于图像,它们可能每次处理一个像素)。最近的研究表明,这些模型具有不同的性能特征和优势。我们认为,准确地描述这些优势,并确定它们是否是模型家族固有特征是个有趣的开放性问题。
具体来说,我们暂时关注下GAN和流程模型之间计算成本的差异。乍一看,流程模型似乎使GAN变得不必要。流程模型允许精确的对数似然计算和精确推理,因此,如果训练流程模型和GAN具有相同的计算成本,GAN可能就没有什么用,还要在训练GAN上花费大量的精力,所以我们似乎应该关心流程模型是否会使GAN过时。
然而,GAN训练的计算成本与流程模型之间似乎存在着巨大的差距。为了估算这种差距,我们可以考虑两个正接受面部数据集训练的模型。其中,GLOW模型被训练为使用40个GPU在2周内生成256x256张名人脸,并使用大约2亿个参数。相比之下,渐进式GAN使用大约4600万个参数,在包含8个GPU的类似面部数据集上训练4天,以生成1024x1024个图像。粗略地说,流程模型需要17倍于GPU的时间和4倍参数才能生成像素减少16倍的图像。这种比较并不完美,但它能让你体验到两者的差距。
那么,为何流程模型效率较低?我们看到两个可能的原因:首先,最大似然训练在计算上可能比对抗性训练更难。特别是,如果你的训练集上的任何元素被你的生成模型分配为零的概率,你将会受到无限严厉的惩罚!而另一方面,GAN生成器只会因为给训练集元素分配零概率而间接地受到惩罚,而且这种惩罚没有那么严厉。其次,规范化流可能是表示某些功能的低效方法。下文有些关于表达性实验的描述,但目前我们还没有对这个问题进行深入的分析。
我们已经讨论了GAN模型和流程模型之间的优劣,那么自回归模型呢?事实证明,将自回归模型表示为流程模型是不可并行的。结果表明,自回归模型比流程模型具有更好的时间和参数效率。因此,GAN是并行且有效但不可逆的,而流程模型是可逆且并行但效率较低的,自回归模型则是可逆且有效但不并行的。
这就引出了我们第一个悬而未决的问题:和其他生成模型相比,GAN模型有何优势?特别地,我们可以做些CAP定理关于可逆性、并行性和参数/时间效率的类型声明吗?解决这个问题的一种方法是研究更多的模型,这些模型是多个模型族的混合。有人考虑使用混合GAN/流程模型,但我们认为这一方法仍未得到充分的探索。
我们也不确定最大似然计算训练是否一定比GAN训练更难。的确,在GAN训练损失的情况下,没有明确禁止在训练数据点上放置零。但是如果生成器这样做,一个足够强大的鉴别器能够做得更好,这也是事实。看起来GAN确实在实践中学习低支持度的分布。最后,我们怀疑流程模型对于每个参数的表达能力根本不如任意解码器函数,并且我们怀疑这在某些假设下是可以证明的。
2. GAN可以对哪种分布进行建模?
大多数GAN研究集中于图像合成。特别是,人们利用某些标准(在深度学习社区)的图像数据集训练GAN,比如MNIST、CIFAR-10、STL-10、CelebA以及Imagenet等。关于这些数据集中哪种“最容易”建模,人们众说纷纭。特别是MNIST和CelebA被认为比Imagenet、CIFAR-10或STL-10更容易,因为它们“非常有规律”。其他人注意到,大量的分类使得ImageNet合成对GAN来说非常困难。这些观察结果得到了实证的支持,即CelebA生成的图像合成模型比Imagenet上的图像合成模型更有说服力。
然而,我们必须通过在更大更复杂的数据集上训练GAN,以便能在更恶劣和嘈杂的过程得出这些结论。特别是,我们主要研究了GAN如何在碰巧用于对象识别的数据集上运行。与任何科学一样,我们希望有个简单的理论来解释我们的实验。理想情况下,我们可以查看一个数据集,执行些计算,而不需要真正训练一个生成模型,然后说“这个数据集对于GAN来说很容易建模,但是对于VAE来说却不容易”这样的话。在这个问题上已经取得了一些进展,但我们觉得还有更多的事情可以做。
现在我们可以引出问题了:在给定分布中,我们能说GAN对这个分布建模有多难吗?我们可能还会问以下相关问题:“对分布建模”是什么意思?我们是满足于低支持度表示,还是想要真正的密度模型?是否存在GAN永远无法学会建模的分布?对于GAN来说,是否有些分布在原则上是可学习的,但是对于某些合理的资源消耗模型却不能有效学习?对于GAN来说,这些问题的答案和其他生成模型的答案有什么不同吗?
我们提出两种策略来回答这些问题:一是合成数据集,我们可以研究合成数据集来探究哪些特征影响GAN的学习能力。例如,在作者创建合成三角形的数据集时。我们认为这个角度还没有得到充分的探索。合成数据集甚至可以由感兴趣的量加以参数化,例如连接度或平滑度,以便进行系统研究。这样的数据集对于研究其他类型的生成模型也很有用。
二是修改现有的理论结果,我们可以使用现有的理论结果,并尝试修改假设,以探索数据集的不同属性。举例来说,我们可以获得应用于给定单峰数据分布的GAN结果,然后看看当数据分布变成多模态时会发生什么。
3. 我们如何在图像合成之外扩展GAN?
除了像图像到图像的翻译这样的应用,大多数GAN取得的成功都是在图像合成方面。GAN在图像之外的应用主要集中在三个领域:
1)文本:文本的离散性使得应用GAN变得困难。这是因为GAN依赖于将信号从鉴别器通过生成的内容反向传播给生成器。有两种方法可以解决这个问题。首先,GAN只对离散数据的连续表示发挥作用;二是利用实际的离散模型,尝试用梯度估计的方法训练GAN。其他更复杂的处理方法也存在,但就我们所知,它们都没有产生与基于可能性的语言模型具有竞争性的结果。
2)结构化数据:那么其他非欧几里德结构化数据呢,比如对这类数据的研究称为几何深度学习。GAN在这方面的成功有限,但其他深度学习技术也是如此,因此很难说GAN有多重要。我们知道在这个空间中使用GAN的一个尝试,它使生成器产生(和鉴别器“评论”)随机漫步模型,这些模型与从源图中采样的相似。
3)音频:音频是GAN最接近于通过图像获得成功的领域。将GAN应用于无监督音频合成的第一个严肃尝试是,作者对GAN在音频上操作的事实做了各种特殊的考虑。最近的研究表明,在某些感知指标上,GAN甚至可以超越自回归模型。
尽管有这些尝试,但图像显然是GAN最简单的建模领域。
这就引出了第三个问题:如何确保GAN在非图像数据上运行良好?将GAN扩展到其他领域需要新的培训技术吗,还是仅仅需要为每个领域提供更好的隐式先验?
我们期望GAN最终能够在其他连续数据上获得图像合成级别的成功,但这需要更好的隐式先验。要找到这些先验,需要认真思考在给定的领域中什么是有意义的,什么是在计算上可行的。对于结构化数据或非连续数据,我们不太确定。一种方法可能是使产生器和鉴别器都经过强化学习训练。要使这种方法有效,可能需要大规模的计算资源。最后,这个问题可能只需要基础研究取得进展。
4. 我们能对GAN训练的全局收敛有何期待?
训练GAN不同于训练其他神经网络,因为我们同时优化了反目标的产生器和判别器。在某些假设情况下,这种同步优化是局部渐近稳定的。但不幸的是,很难证明关于一般情况的有趣事情。这是因为鉴别器/发生器的损耗是其参数的非凸函数。但是所有的神经网络都有这个问题!我们想要找到些方法来专注于解决同时优化所产生的问题。
这就引出了我们的第四个问题:什么时候才能证明GAN是全局收敛的?哪些神经网络收敛结果可以应用于广义神经网络?在这个问题上已经取得了不小的进展。概括地说,现有的技术有三种,它们都产生了喜人的结果,但没有一种已经研究完成:
1)简化假设:第一个策略是简化关于生成器和鉴别器的假设。例如,如果使用特殊的技术和某些额外的假设进行优化,简化后的LGQ?GAN(线性生成器、高斯数据和二次判别器)可以显示出全局收敛性。似乎有希望逐步放松这些假设,看看会发生什么。例如,我们可以远离单峰分布。这是个自然放松的研究,因为“模式崩溃”是个标准的GAN病理学。
2)使用正常神经网络的技术:第二种策略是应用分析正常神经网络(也是非凸的)的技术来回答关于GAN收敛性的问题。例如,有人认为深度神经网络的非凸性不是问题,因为随着网络的变大,低质量的局部损失函数极小值会以指数级的方式变得罕见。这个分析能“提升到GAN领域”吗?实际上,对用作分类器的深层神经网络进行分析,看看它们是否适用于GAN,似乎是一种普遍有用的启发式方法。
3)博弈论:最后一种策略是利用博弈论中的概念建立GAN训练模型。这些技术产生了可证明收敛于某种近似纳什均衡的训练过程,但这样做使用了不合理的大资源约束。在这种情况下,“显而易见”的下一步是尝试减少这些资源约束。
5. 我们应该如何评估GAN,什么时候使用它们?
当涉及到评估GAN时,有很多建议,但很少能取得共识。这些建议包括:
1)Inception?Score和FID:这两个分数都使用预先训练好的图像分类器,并且都有已知的问题。对它们提出的普遍批评在于,这些分数衡量的是“样本质量”,而不是真正的“样本多样性”。
2)MS-SSIM:建议使用MS-SSIM来单独评估多样性,但这种技术存在许多问题,并没有真正流行起来。
3)AIS:提出对GAN的输出建立高斯观测模型,并利用退火的重要抽样估计该模型下的对数似然。但结果表明,在GAN发生器也是流程模型的情况下,用这种方法计算的估计是不准确的。
4)几何分数:建议计算生成的数据流形的几何属性,并将这些属性与实际数据进行比较。
5)精度和召回:尝试同时测量GAN的“精度”和“召回”。
6)技能等级:研究表明,训练有素的GAN甄别器可以包含有用的信息,评估可以执行。
这些只是GAN评估方案的一小部分。虽然Inception?Score和FID比较流行,但是GAN评估显然不是个已经达成共识的问题。最后,我们认为对如何评估GAN的困惑源于对何时使用GAN的困惑。
因此,我们把这两个问题结合起来描述:什么时候我们应该使用GAN而不是其他生成模型?我们应该如何在这些情况下评估其性能?我们应该用GAN做什么?如果你想要真正的密度模型,GAN可能不是最好的选择。现在有很好的实验证据表明,GAN学习了目标数据集的“低支持度”表示,这意味着测试集中可能有大量部分被GAN(隐式地)赋值为零的可能性。
与其为此担心太多,我们认为应该把GAN的研究重点放在那些有意义的任务上,GAN很可能非常适合于需要感知能力的任务。图像合成、图像翻译、图像填充和属性操作等图形应用程序都属于这一类。那么,我们应该如何评价GAN执行这些感知任务?理想情况下,我们只需要人类法官,但这可能是昂贵的。便宜的代理就可以确保分类器能否区分真实和虚假的例子。这被称为分类器双样本测试(C2ST)。C2STs的主要问题是,如果产生器有个很小的缺陷,而且是跨样本的系统缺陷,这将主导评估。
理想情况下,我们应该有个不受单一因素支配的整体评估方案。一种方法可能是让批评家对主要缺陷视而不见。但是一旦我们这样做了,其他的缺陷可能会占据主导地位,我们需要新的批评家,如此往复循环。如果我们通过迭代的方式做这件事,我们可以得到一种“针对批评者的Gram-Schmidt过程”,创建有序的列表,列出最重要的缺陷并忽略它们的批评者。也许这可以通过对批评家激活执行PCA来实现,并逐渐剔除越来越多的高方差分量。
最后,我们可以对人类进行评估,尽管花费不菲。这可以让我们衡量我们真正关心的东西。这种方法可以通过预测人类的答案来降低成本,并且只有在预测不确定时才与真人交互。
6.GAN培训是如何按批次规模进行的?
庞大的小批量处理帮助扩大了图像分类,它们也能帮助我们扩大GAN?对于有效地使用高度并行的硬件加速器,小批量处理可能特别重要。乍一看,答案似乎应该是肯定的。毕竟,大多数GAN中的鉴别器只是一个图像分类器。如果梯度噪声成为训练瓶颈,大批量训练可以加快训练速度。然而,GAN有个分类器没有的独特瓶颈,即训练过程可能会出现分歧。
由此,我们引出了第六个问题:GAN培训是如何按批次规模进行的?梯度噪声在GAN训练中的作用有多大?GAN培训是否可以进行修改,以便更好地适应批量训练?有证据表明,增加小批量的规模可以提高量化结果,减少培训时间。如果这一现象属实,说明梯度噪声是一个主要因素。然而,这个问题还没有得到系统的研究,所以我们认为这个问题仍然存在。
交替培训程序能否更好地利用大批量培训?最优传输GAN在理论上比一般的GAN具有更好的收敛性,但由于需要对批量样本和训练数据进行对齐,因此需要较大的批处理容量。因此,它们似乎是扩展到非常大的批处理规模的不错选择。最后,异步SGD可能是使用新硬件的一个很好的替代方案。在这种情况下,限制因素往往是梯度更新在参数的“陈旧”副本上计算。但是GAN实际上似乎可以从对过去参数的培训中获益,所以我们可能会问异步SGD是否以一种特殊的方式与GAN培训交互。
7.GAN和对抗性例子之间有什么关系?
众所周知,图像分类器面临着对立的例子:当添加到图像中时,人类无法察觉的干扰会导致分类器给出错误的输出。现在我们还知道,有些分类问题通常可以有效地学习,但是指数级的学习却非常困难。由于GAN识别器是一种图像分类器,人们可能会担心它会遇到反例。尽管有大量关于GAN和对抗性例子的文献,但似乎没有多少关于它们之间关系的研究。
因此,我们可以问这样一个问题:判别器的对抗性稳健性如何影响GAN训练?我们如何开始思考这个问题?考虑一个固定的鉴别器D,如果有个生成器G被正确分类为假图,并且有个很小的干扰p,比如G(z)?+?p被分类为真图,那么D就会存在一个对立的例子。使用GAN时,需要考虑的是生成器的梯度更新将生成新的生成器G’,其中G’,其中G’(z) = G(z) + p。
这种担忧现实吗?研究表明,对生成模型的蓄意攻击是可行的,但我们更担心的是可能是被称为“意外攻击”的东西。有理由相信,这些意外攻击的可能性较小。首先,在再次更新鉴别器之前,生成器只允许进行一次梯度更新。相比之下,当前的对抗性攻击通常要运行几十次迭代。
其次,对生成器进行优化,给出了前一步生成的一批样本,该批样本对于每个梯度步骤都是不同的。最后,优化是在生成器的参数空间进行的,而不是在像素空间。然而,这些论证都没有明确排除生成器创建对抗性示例的可能性。我们认为这是一个值得进一步探索、并可产生丰富成果的课题。
笔者最近关注GAN算法理论,所以收集了一些这方面的研究,期待与大家一起学习共同进步。
转载地址:https://3g.163.com/tech/article/ECSJ4B0F00098IEO.html?clickfrom=channel2018_tech_smart_newslist&ver=c#child=smart&offset=1