GAN:基本理论

wangjunyi 2018-06-16

生成机器以前从未见过的数据一直是一个有趣的问题。人类可以创造它从未听过的音乐或绘制不存在的人物。能够为机器做到这一点意味着它具有一定的创造性。本文讨论Ian Goodfellow在2014年提出的生成对抗网络(GAN)方法的理论部分[1]。在GAN被提出之前,我们先从传统的方法开始。

传统的方法

当我们要求机器生成之前看到的类似数据时,我们要求它从底层数据分布中抽取新数据。当然我们不知道分布,我们只有样本。传统的方法首先用可调参数(如高斯混合模型)逼近一些已知分布到真实数据分布,希望调整完成后,已知分布的采样数据将类似于真实分布中的采样数据

GAN:基本理论

与已知分布近似的真实分布

为了这个工作,我们需要定义两个分布之间的“closeness”。一个这样的措施是Kullback–Leibler divergence(https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence)

GAN:基本理论

KL分歧是衡量两种分布之间“closeness”的一种度量

你可以将KL散度看作两个分布之间的“距离”。当两个分布不相等时,它总是大于零,当两个分布相等时,它等于零。它的值越大,它们越不相同。

现在,每件事情都已准备就绪,让我们看看我们如何才能最小化距离。请注意,我们可以将其扩展到以下内容

GAN:基本理论

在求KL散度的最小值时,第一项没有作用,因为它是一个常数,所以它等于第二项的最大值。实际上我们不知道数据分布,但是我们有样本,这是我们的训练数据集,所以第二项实际上是训练数据集的可能性

GAN:基本理论

最大化可能性等于使KL散度最小化

我们有一个训练数据集,其中包含来自真实分布(未知数据分布)的样本。我们选择一个具有可调参数的已知分布(模型)。最后,我们最大化训练数据集的可能性,这等效地使两个分布之间的距离最小化。希望这样做后,我们的模型分布将足够接近真实的数据分布,并且来自模型的样本将看起来像来自真实数据分布的样本。

传统方法存在的问题

如果您尝试使用高斯混合模型进行面部生成,您将得不到任何东西。一个重要的原因是面孔的分布是在一些复杂的低维流形中。眼睛,耳朵,嘴和发型(等)的组合具有某些远离高斯混合物的结构。高斯混合模型对于生成真实的人脸而言太简单了。

GAN:基本理论

一个三维高斯混合不能像这样近似一个二维complex manifold

神经网络作为函数逼近器

这就是神经网络的作用所在。我们可以训练神经网络来显式地估计真实的分布,例如像像像素cnn、像素rnn这样的自回归方法,或者像变分自动编码器这样的变分方法。或者,因为在我们的例子中我们只希望机器为我们生成新的数据,我们甚至不需要对分布建模,我们只需要对采样过程建模,这正是GAN所做的。

生成对抗的方法

在GAN中,我们没有显式地对分布建模,我们只对抽样过程建模。这意味着,给定任意一个数据点x,我们不知道模型的P(x)但我们仍然可以从中抽取样本。抽样过程如下所示

GAN:基本理论

GAN的采样过程

我们对z空间中的许多点进行采样,这些点可以是高斯或均匀分布,并且希望神经网络将它映射到我们想要的真实分布的空间。这里的问题是,我们不能使用KL散度作为以前的距离度量,因为我们没有明确地对分布进行建模,所以我们不能计算可能性

Discriminator 作为距离的估计量

有趣的是,如果我们将两个分布之间的距离定义为Jensen–Shannon divergence,

GAN:基本理论

JS divergence作为两种分布之间距离的量度

我们仍可以通过训练另一个神经网络来测量这个距离。现在我们有两个神经网络,我们称第一个用于产生数据作为generator,另一个用于测量距离作为Discriminator 器。它被称为Discriminator ,因为它的目标是识别天气数据点是从真实分布中采样还是从模型(generator)中采样。这与二元分类器基本相同,目标函数是

GAN:基本理论

objective function for the discriminator

GAN:基本理论

Discriminator 是二元分类器

如果x来自真实数据分布,则Discriminator D(x)预计输出1,如果x来自generator,则Discriminator D输出0。现在,让我们看看训练D如何与找到距离有关

理想情况下,如果我们可以从我们想要的真实分布和generator中采样尽可能多的数据,并且Discriminator 具有足够的容量,那么我们可能能够将Discriminator 训练得非常接近最优分类器。最佳分类器可以通过最大化目标函数来计算

GAN:基本理论

由于D(x)是我们要找到的函数,因此它可以是任何函数。因此,最大化积分相当于使每个x的内部括号最大化。这是简单的微积分,你可以验证每个x的最佳D值

GAN:基本理论

最佳Discriminator

把它回到你得到的eq(4)

GAN:基本理论

目标函数为最优D与距离有关

你会发现最佳分类器的目标函数是一个常数加上距离的两倍!每当我们想知道generator与真实分布的接近程度时,我们就会训练一个Discriminator 来测量距离。

通过最小化距离改进generator

现在我们有了距离测量,我们可以通过最小化距离来改善generator 。这里有一个问题:当对generator 应用梯度合适时,目标函数是什么?每次我们改变G的参数,G的分布就会改变,我们要训练D来测量距离,好像目标函数随不同的G变化?关键在于,如果我们不把G的参数更新太多,G的分布不会改变太多,D在这个情况下仍然可以很好地测量距离。也就是说,

如果D测量G的距离,那么如果G'接近于G,那么D仍然是G'的一个很好的测量距离。

所以G的目标函数也是方程(4),它是对G附近G'距离的度量。我们可以应用梯度下降来最小化它。

Training as a minmax probelm

注意,eq(4)是D和G的目标函数,我们称之为V(G, D),而优化的标准在每种情况下都是不同的。给定G,我们将测量距离因此我们对d取最大值,给定距离,我们将G的参数更新到减小距离的方向。理论上它被称为最小问题

GAN:基本理论

G和D的目标函数

GAN:基本理论

finding the optimal generator is a minmax problem

训练算法

我们几乎涵盖了GAN最基本的部分。总之,训练GAN的算法如下

GAN:基本理论

用于训练GAN的算法

相关推荐