生成对抗网络(GAN)是一种由生成网络和判别网络组成的深度神经网络架构。通过在生成和判别之间的多次循环,两个网络相互对抗,继而两者性能逐步提升。
生成网络(Generator Network)借助现有的数据来生成新数据,比如使用从随机产生的一组数字向量(称为潜在空间 latent space)中生成数据(图像、音频等)。所以在构建的时候你首先要明确生成目标,然后将生成结果交给判别网络做下一步的处理。
判别网络(Discriminator Network)试图区分接收的数据属于真实数据还是由生成网络生成的数据,它需要基于实现定于的类别对其进行分类。通常来说,GAN使用在二分类问题上。判别结果为0~1之间的数字,用来表示本次输入被认为是真实数据的可能性。当判定结果为1时,则认为它来自真实数据,反之则属于生成数据。
两个网络之间相互竞争,在训练过程中,通常是固定其中一方的参数不改变,然后提升另一方的性能,循环往复。比如说大部分书籍或者视频中提到的艺术品鉴赏。
我们使用下图来简要说明训练过程:
GAN主要由两部分构成,分别是:生成网络和判别网络。它们可以是任何一类神经网络,比如说普通的人工神经网络、卷积神经网络、循环神经网络等。而判别网络另外需要一些全连接层,然后以分类器收尾。
下面以一个简单的GAN结构为例:
本次GAN的生成网络是一个5层的简单前馈神经网络,输出层、3个隐藏层及一个输出层。如下图所示:
该前馈神经网络通过正向传播处理信息的过程如下:
判别网络是一个5层的前馈型神经网络,包括一个输入层、一个输出层以及3个全连接层。其实它就是一个分类器,其输出结果的实际意义是判定该输入属于哪个类别。
判别网络在训练过程中利用正向传播来处理数据的过程如下:
在GAN的训练中,有个问题我困惑了非常久:为什么输入数据是从噪声数据分布中随机采样出来的?
后来发现,因为简单模型无法模拟概率分布函数\(P_{model}(x, \theta)\),所以需要使用神经网络来实现,即经过生成网络中的神经网络后,可以映射成为几乎任何的复杂分布,所以最开始我们可以使用高斯分布下的数值来模拟(之后再调整\(\theta\)参数)。
所以原来的\(P_{model}(x, \theta)\)可以被绕过,变成\(x = G(z, \theta_g)\),且$z $是符合噪声分布的一组向量。
GAN的基本训练过程如下图所示:
之所以要训练k次判别器,再训练生成器,是因为要先拥有一个好的判别器,使得能够教好地区分出真实样本和生成样本之后,才好更为准确地对生成器进行更新。更直观的理解可以参考下图:
图中的黑色虚线表示真实的样本的分布情况,蓝色虚线表示判别器判别概率的分布情况,绿色实线表示生成样本的分布。 \(Z\) 表示噪声, \(Z\) 到 \(x\) 表示通过生成器之后的分布的映射情况。
我们的目标是使用生成样本分布(绿色实线)去拟合真实的样本分布(黑色虚线),来达到生成以假乱真样本的目的。
可以看到在(a)状态处于最初始的状态的时候,生成器生成的分布和真实分布区别较大,并且判别器判别出样本的概率不是很稳定,因此会先训练判别器来更好地分辨样本。
通过多次训练判别器来达到(b)样本状态,此时判别样本区分得非常显著和良好。然后再对生成器进行训练。
训练生成器之后达到(c)样本状态,此时生成器分布相比之前,逼近了真实样本分布。
经过多次反复训练迭代之后,最终希望能够达到(d)状态,生成样本分布拟合于真实样本分布,并且判别器分辨不出样本是生成的还是真实的(判别概率均为0.5)。也就是说我们这个时候就可以生成出非常真实的样本啦,目的达到。
1. 真实数据的概率分配函数\(P_{data}(x):\)
对于真实训练数据集,将定义一个概率分布函数\(P_{data}(x)\),其中\(x\)是一个高维向量,也就相当于真实数据集中的某个数据点。关于概率分布函数\(P_{data}(x)\)到底是个什么东西?接下来以二次元人脸生成举例。
根据李宏毅教授的解释,在高维空间中,仅有一部分的点集能够正确表示人脸。所以现在我们将\(x\)定义成一个二维向量以方便展示,图中的蓝色区域则可以表示为\(P_{data}(x)\)。
那么可以发现,在蓝色区域中随机取样的两个点可以生成出比较清晰的人脸,因此说这两个样本点具有high probability。所以相应的,蓝色区域外的点就是具有low probability。
我感觉可以这么理解:某个从真实训练集中抽取的样本点\(x\),比较大的概率是来自于图中的蓝色区域。
2. 生成模型的概率分配函数\(P_{model}(x; \theta)\):
为了逼近真实数据的概率分布,我们也会为生成模型定义一个概率分布函数\(P_{model}(x; \theta)\),这个分布函数是通过参数变量\(\theta\)定义的,在实际的计算过程中,我们希望改变该参数,从而使得\(P_{model}(x; \theta)\)逼近\(P_{data}(x)\)。
但是,实际上我们并不知道\(P_{data}(x)\)的形式,所以,逼近的唯一方式就是从真实数据中采样大量的数据,再借助这些真实样本,来计算生成模型的概率分布。
综上所述,生成网络的目标就是以真实采样数据\(\lbrace x^1, x^2, .. \rbrace\) 为我们的训练集,并通过不断地参数调整,使得该模型接收到一组向量时,能够输出接近真实的数据结果。
吃了没有概率论基础的亏... 也就是说通过调整参数,使得采样点尽可能地在生成模型的概率分配函数上。
极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。
比如我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该分布的均值与方差未知。我们没有人力与物力去统计全国每个人的身高,但是可以使用采样的方法:获取部分人的身高,然后通过最大似然估计来获取上述假设中的正态分布的均值与方差。
极大似然估计中采样需满足一个很重要的假设:所有的采样都是独立同分布的。
假如已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值。
极大似然原理是说如果我们已知某个参数能使这个样本出现的概率最大,我们当然不会再去选择其他小概率的样本,所以干脆就把这个参数作为估计的真实值。
直观来看,一个随机试验如果有若干个可能的结果A,B,C,…N,那么如果在仅仅作一次的试验中,结果A出现,则一般认为试验条件对A出现有利,也即A出现的概率很大。而事件A发生的概率与参数\(\theta\)相关,A发生的概率记为P(A,\(\theta\)),则θθ的估计应该使上述概率达到最大,这样的\(\theta\)顾名思义就称为极大似然估计。
所以我们可以根据之前在真实数据分布中取样的\(\lbrace x^1, x^2, .. , x^m \rbrace\) 这m个样本数据,来计算它们在生成模型中的概率如下,最大似然估计的目标是通过这个概率的式子,寻找出一个\(\theta^*\)使得\(L\)最大化。
这样做的实际含义是,在给出真实训练集的前提下,我们希望生成模型能够在这些数据上具备最大的概率,这样才说明我们的生成模型在给出的训练集上能够逼近真实数据的概率分布。
KL散度,也称相对熵,用于判定两个概率分布之间的相似度。它可以测量一个概率分布\(p\)相对于另一个概率分布\(q\)的偏离。如下公式用于计算两个概率分布\(p(x)\)和\(q(x)\)之间的KL散度:
如果\(p(x)\)和\(q(x)\)处处相等,则此时KL散度为0,达到最小值。
由于KL散度具有不对称性,因此不用于测量两个概率分布之间的距离,因此也不用作距离的度量(metric)。
JS散度,也称信息半径(information radius, IRaD)或者平均值总偏离(total divergence to the average),是测量两个概率分布之间相似度的另一种方法。它基于KL散度,但具有对称性,可用于测量两个概率分布之间的距离。对JS散度开平方即可得到JS距离,所以它是一种距离度量。
计算两个概率分布p和q之间JS散度的公式如下。
其中,(p+q)/2是p和q的中点测度,\(D_{KL}\)是KL散度。
判别网络:
对于判别网络,假设其输入数据为\(x\),使用\(D(x)\)来表示该样本被判断为正样本的概率。则有:
因此需要最大化此公式:
生成网络:
对于生成网络,目标是使得自己的输出结果被判定为正样本的概率越高越好:
因此需要最小化此公式:
最后得到我们的总目标实际上是:
全局最优解:
固定生成网络参数,求\(max_DV(D,G)\):
我们现在的目标是希望寻找一个D使得V最大,我们希望对于积分中的项\(f(x) =p_{data}(x)logD(x)+p_{model}(x)log(1-D(x))\),无论x取何值都能最大。其中,我们已知\(p_{data}\)是固定的,之前我们也假定生成器G固定,所以\(P_{model}\)也是固定的,所以我们可以很容易地求出D以使得f(x)最大。
我们假设x固定,f(x)对D(x)求导等于零,下面是求解D(x)的推导。
那么将\(D_G^*\)代入后,有:
然后转换为前面介绍的JS散度:
所以当\(p_{data} = \frac{p_{data} + p_{model}}{2} = p_{model}\)时,“\(=\)”成立,故最后得到\(D^* = \frac{1}{2}\)。
这也证明了,通过上述min max的博弈过程,理想情况下会收敛于生成分布拟合于真实分布。
真不知道这些公式之后我还有没有可能记得住。。
原文:https://www.cnblogs.com/recoverableTi/p/13268918.html