开启生长之旅!这是我参加「日新方案 2 月更文应战」的第 6 天,点击检查活动概况
1. 概述
生成对立网络GAN(Generative adversarial nets)[1]是由Goodfellow等人于2014年提出的依据深度学习模型的生成结构,可用于多种生成任务。从名称也不难看出,在GAN中包含了两个部分,别离为”生成”和“对立”,整两个部分也别离对应了两个网络,即生成网络(Generator)GGG和判别网络(Discriminator)DDD,为描绘简单,以图画生成为例:
- 生成网络(Generator)GGG用于生成图片,其输入是一个随机的噪声z\boldsymbol{z}z,经过这个噪声生成图片,记作G(z)G\left ( \boldsymbol{z} \right )G(z)
- 判别网络(Discriminator)DDD用于判别一张图片是否是实在的,对应的,其输入是一整图片x\boldsymbol{x}x,输出D(x)D\left ( \boldsymbol{x} \right )D(x)表明的是图片x\boldsymbol{x}x为实在图片的概率
在GAN结构的练习进程中,期望生成网络GGG生成的图片尽量实在,能够欺骗过判别网络DDD;而期望判别网络DDD能够把GGG生成的图片从实在图片中区别开。这样的一个进程就构成了一个动态的“博弈”。终究,GAN期望能够使得练习好的生成网络GGG生成的图片能够以假乱真,即关于判别网络DDD来说,无法判别GGG生成的网络是不是实在的。
综上,练习好的生成网络GGG便能够用于生成“以假乱真”的图片。
2. 算法原理
2.1. GAN的结构结构
GAN的结构是由生成网络GGG和判别网络DDD这两种网络结构组成,经过两种网络的“对立”进程完成两个网络的练习,GAN结构由下图所示:
由生成网络GGG生成一张“Fake image”,判别网络DDD判别这张图片是否来自实在图片。
2.2. GAN结构的练习进程
在GAN的练习进程中,其终究的方针是使得练习出来的生成模型GGG生成的图片与实在图片具有相同的散布,其进程可经过下图描绘[2]:
假定有一个先验散布pz(z)p_{\boldsymbol{z}}\left ( \boldsymbol{z} \right )pz(z),如上图中的unit gaussian,经过采样得到其间的一个样本点z\boldsymbol{z}z。关于实在的图片,事先关于其散布是未知的,即上图中的p(x)p\left ( \boldsymbol{x} \right )p(x)未知。为了使得能与实在图片具有相同的散布,经过一个生成模型将先验散布映射到另一个散布,生成模型记为G(z;g)G\left ( \boldsymbol{z};\theta _g \right )G(z;g),其间g\theta _gg为生成模型的参数,这里的生成模型能够是一个前馈神经网络MLP,g\theta _gg便为该神经网络的参数。经过屡次的采样,便能够刻画出生成的散布p(x)\hat{p}\left ( \boldsymbol{x} \right )p(x),此刻需求核算其与实在的散布p(x)p\left ( \boldsymbol{x} \right )p(x)之间的相关性,即需求一个判别模型来定量表明两个散布之间的相关性,这里能够经过另一个前馈神经网络MLP,判别模型记为D(x;d)D\left ( \boldsymbol{x};\theta _d \right )D(x;d),其间D(x;d)D\left ( \boldsymbol{x};\theta _d \right )D(x;d)的输出是一个标量,表明的是x\boldsymbol{x}x来自实在的散布,而不是来自于生成模型构造出的散布的概率。
关于这样的一个进程中,有两个模型,别离为生成模型G(z;g)G\left ( \boldsymbol{z};\theta _g \right )G(z;g)和判别模型D(x;d)D\left ( \boldsymbol{x};\theta _d \right )D(x;d),在GAN中,生成模型和判别模型别离对应了一个神经网络,以下都称为生成网络和判别模型。GAN期望的是关于判别网络,其能够正确判定数据是否来自实在的散布,关于生成网络,其能够尽可能使得生成的数据能够“以假乱真”,使得判别网络分辩不了。这样的练习进程是一个动态的“博弈”进程,经过替换练习,终究使得生成网络GGG生成的图片能够“以假乱真”,其具体进程如下图所示:
如上图(a)中,黑色的虚线表明的是从实在的散布pxp_{\boldsymbol{x}}px,绿色的实线表明的是需求练习的生成网络的生成的散布pg(G)p_g\left ( G \right )pg(G),蓝色的虚线表明的是判别网络,最下面的横线z\boldsymbol{z}z表明的是从一个先验散布(如图中是一个均匀散布)采样得到的数据点,中心的横线x\boldsymbol{x}x表明的实在散布,两条横线之间的对应联系表明的是生成网络将先验散布映射成一个生成散布pg(G)p_g\left ( G \right )pg(G)。从图(a)到图(d)表明了一个完整的替换练习进程,首要,如图(a)所示,当经过先验散布采样后的数据经过生成网络GGG映射后得到了图上绿色的实线代表的散布,此刻判别网络DDD并不能区别数据是否来自实在数据,经过对判别网络的练习,其能够正确地判别生成的数据是否来自实在数据,如图(b)所示;此刻更新生成网络GGG,经过对先验散布重新映射到新的生成散布上,如图(c)中的绿色实线所示。依次替换完成上述进程,当到达一定迭代的代数后,到达一个平衡状态,此刻pg=pdatap_g=p_{data}pg=pdata,判别网络DDD将不能区别图片是否来自实在散布,且D(x)=12D\left ( \boldsymbol{x} \right )=\frac{1}{2}D(x)=21。
2.3. 价值函数
关于GAN结构,其价值函数V(G,D)V\left ( G,D \right )V(G,D)为:
minG maxD V(D,G)=Ex∼pdata(x)[log D(x)]+Ez∼pz(z)[log (1−D(G(z)))]\underset{G}{min}\; \underset{D}{max}\; V\left ( D,G \right )=\mathbb{E}_{\boldsymbol{x}\sim p_{data}\left ( \boldsymbol{x} \right )}\left [ log\; D\left ( \boldsymbol{x} \right ) \right ]+\mathbb{E}_{\boldsymbol{z}\sim p_{\boldsymbol{z}}\left ( \boldsymbol{z} \right )}\left [ log\; \left ( 1-D\left ( G\left ( \boldsymbol{z} \right ) \right ) \right ) \right ]GminDmaxV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
其间,Ex∼pdata(x)[log D(x)]\mathbb{E}_{\boldsymbol{x}\sim p_{data}\left ( \boldsymbol{x} \right )}\left [ log\; D\left ( \boldsymbol{x} \right ) \right ]Ex∼pdata(x)[logD(x)]表明的是log D(x)log\; D\left ( \boldsymbol{x} \right )logD(x)的期望,同理,Ez∼pz(z)[log (1−D(G(z)))]\mathbb{E}_{\boldsymbol{z}\sim p_{\boldsymbol{z}}\left ( \boldsymbol{z} \right )}\left [ log\; \left ( 1-D\left ( G\left ( \boldsymbol{z} \right ) \right ) \right ) \right ]Ez∼pz(z)[log(1−D(G(z)))]表明的是log (1−D(G(z)))log\; \left ( 1-D\left ( G\left ( \boldsymbol{z} \right ) \right ) \right )log(1−D(G(z)))的期望。
假定从实在数据中采样mmm个样本{x(1),x(2),⋯ ,x(m)}\left \{ \boldsymbol{x}^{\left ( 1 \right )},\boldsymbol{x}^{\left ( 2 \right )},\cdots ,\boldsymbol{x}^{\left ( m \right )} \right \}{x(1),x(2),⋯,x(m)},从噪音散布pg(z)p_g\left ( \boldsymbol{z} \right )pg(z)中同样采样mmm个样本,记为{z(1),z(2),⋯ ,z(m)}\left \{ \boldsymbol{z}^{\left ( 1 \right )},\boldsymbol{z}^{\left ( 2 \right )},\cdots ,\boldsymbol{z}^{\left ( m \right )} \right \}{z(1),z(2),⋯,z(m)},此刻,上述价值函数能够近似表明为:
minG maxD V(D,G)≈∑i=1m[log D(x(i))]+∑i=1m[log (1−D(G(z(i))))]\underset{G}{min}\; \underset{D}{max}\; V\left ( D,G \right )\approx \sum_{i=1}^{m}\left [ log\; D\left ( \boldsymbol{x}^{\left ( i \right )} \right ) \right ]+\sum_{i=1}^{m}\left [ log\; \left ( 1-D\left ( G\left ( \boldsymbol{z}^{\left ( i \right )} \right ) \right ) \right ) \right ]GminDmaxV(D,G)≈i=1∑m[logD(x(i))]+i=1∑m[log(1−D(G(z(i))))]
简化后为:
minG maxD V(D,G)≈∑i=1m[log D(x(i))+log (1−D(G(z(i))))]\underset{G}{min}\; \underset{D}{max}\; V\left ( D,G \right )\approx \sum_{i=1}^{m}\left [ log\; D\left ( \boldsymbol{x}^{\left ( i \right )} \right ) + log\; \left ( 1-D\left ( G\left ( \boldsymbol{z}^{\left ( i \right )} \right ) \right ) \right ) \right ]GminDmaxV(D,G)≈i=1∑m[logD(x(i))+log(1−D(G(z(i))))]
上述的替换练习进程如下流程所示:
3. GAN背后的数学原理
为了能够从数学的角度对上述进程做剖析,首要对问题进行数学的描绘:假定实在的数据散布为pdata(x)p_{data}\left ( \boldsymbol{x} \right )pdata(x),生成网络得到的散布为pg(x;)p_g\left ( \boldsymbol{x};\theta \right )pg(x;),其间\theta为生成网络的参数,现在需求找到一个∗\theta ^{\ast }∗使得pg(x;)≈pdata(x)p_g\left ( \boldsymbol{x};\theta \right )\approx p_{data}\left ( \boldsymbol{x} \right )pg(x;)≈pdata(x)。
3.1. 为什么会有这样的价值函数
由上可知,当生成网络GGG确认后,GAN的价值函数能够近似为:
maxD V(D)≈∑i=1m[log D(x(i))]+∑i=1m[log (1−D(G(z(i))))]\underset{D}{max}\; V\left ( D \right )\approx \sum_{i=1}^{m}\left [ log\; D\left ( \boldsymbol{x}^{\left ( i \right )} \right ) \right ]+\sum_{i=1}^{m}\left [ log\; \left ( 1-D\left ( G\left ( \boldsymbol{z}^{\left ( i \right )} \right ) \right ) \right ) \right ]DmaxV(D)≈i=1∑m[logD(x(i))]+i=1∑m[log(1−D(G(z(i))))]
其来历能够追溯到二分类的丢失函数,关于一个二分类来说,一般选择穿插墒作为其丢失函数,穿插墒的一般方式为:
J()=−1m∑i=1m[y(i)log y(i)+(1−y(i))log (1−y(i))]J\left ( \theta \right )=-\frac{1}{m}\sum_{i=1}^{m}\left [ y^{\left ( i \right )}log\; \hat{y}^{\left ( i \right )}+\left ( 1-y^{\left ( i \right )} \right )log\; \left ( 1-\hat{y}^{\left ( i \right )} \right ) \right ]J()=−m1i=1∑m[y(i)logy(i)+(1−y(i))log(1−y(i))]
其间,y(i)y^{\left ( i \right )}y(i)表明的是实在的样本标签,y(i)\hat{y}^{\left ( i \right )}y(i)表明的是模型的猜测值。关于GAN来说,样本分为两个部分,一个是来自实在的样本{(x(1),1),(x(2),1),⋯ ,(x(m),1)}\left \{ \left ( \boldsymbol{x}^{\left ( 1 \right )},1 \right ),\left ( \boldsymbol{x}^{\left ( 2 \right )},1 \right ),\cdots ,\left ( \boldsymbol{x}^{\left ( m \right )},1 \right ) \right \}{(x(1),1),(x(2),1),⋯,(x(m),1)},将其带入到穿插墒的公式中(去除穿插墒的负号)为:
=1m∑i=1m[1⋅log D(x(i))+(1−1)log (1−D(x(i)))]=1m∑i=1m[log D(x(i))]\begin{aligned}
&= \frac{1}{m}\sum_{i=1}^{m}\left [ 1\cdot log\; D\left ( \boldsymbol{x}^{\left ( i \right )} \right )+\left ( 1-1 \right )log\; \left ( 1-D\left ( \boldsymbol{x}^{\left ( i \right )} \right ) \right ) \right ]\\
&= \frac{1}{m}\sum_{i=1}^{m}\left [ log\; D\left ( \boldsymbol{x}^{\left ( i \right )} \right )\right ]
\end{aligned}=m1i=1∑m[1⋅logD(x(i))+(1−1)log(1−D(x(i)))]=m1i=1∑m[logD(x(i))]
另一个则是来时生成模型{(G(z(1)),0),(G(z(2)),0),⋯ ,(G(z(m)),0)}\left \{ \left ( G\left ( \boldsymbol{z}^{\left ( 1 \right )} \right ),0 \right ),\left ( G\left ( \boldsymbol{z}^{\left ( 2 \right )} \right ),0 \right ),\cdots ,\left ( G\left ( \boldsymbol{z}^{\left ( m \right )} \right ),0 \right ) \right \}{(G(z(1)),0),(G(z(2)),0),⋯,(G(z(m)),0)},将其带入到穿插墒的公式中(去除穿插墒的负号)为:
=1m∑i=1m[0⋅log D(G(z(i)))+(1−0)⋅log (1−D(G(z(i))))]=1m∑i=1m[log (1−D(G(z(i))))]\begin{aligned}
&= \frac{1}{m}\sum_{i=1}^{m}\left [ 0\cdot log\; D\left ( G\left ( \boldsymbol{z}^{\left ( i \right )} \right ) \right ) + \left ( 1-0 \right )\cdot log\; \left ( 1-D\left ( G\left ( \boldsymbol{z}^{\left ( i \right )} \right ) \right ) \right ) \right ]\\
&= \frac{1}{m}\sum_{i=1}^{m}\left [ log\; \left ( 1-D\left ( G\left ( \boldsymbol{z}^{\left ( i \right )} \right ) \right ) \right ) \right ]
\end{aligned}=m1i=1∑m[0⋅logD(G(z(i)))+(1−0)⋅log(1−D(G(z(i))))]=m1i=1∑m[log(1−D(G(z(i))))]
将两部分兼并在一起,就是上述的价值函数。
3.2. KL散度
需求刻画两个散布是否类似,需求用到KL散度(KL divergence)。KL散度是统计学中的一个基本概念,用于衡量两个散布的类似程度,数值越小,表明两种概率散布越挨近。关于离散的概率散布,定义如下:
DKL(P∥Q)=∑iP(i)logP(i)Q(i)D_{KL}\left ( P\parallel Q \right )=\sum_{i}P\left ( i \right )log\frac{P\left ( i \right )}{Q\left ( i \right )}DKL(P∥Q)=i∑P(i)logQ(i)P(i)
关于接连的概率散布,定义如下:
DKL(P∥Q)=∫−∞+∞p(x)logp(x)q(x)dxD_{KL}\left ( P\parallel Q \right )=\int_{-\infty }^{+\infty }p\left ( x \right )log\frac{p\left ( x \right )}{q\left ( x \right )}dxDKL(P∥Q)=∫−∞+∞p(x)logq(x)p(x)dx
3.3. 极大似然估量
极大似然估量(Maximum Likelihood Estimation),是一种概率论在统计学的应用,它是参数估量的办法之一。上述需求求解生成散布pg(x;)p_g\left ( \boldsymbol{x};\theta \right )pg(x;)中的参数\theta,需求用到极大似然估量。依据极大似然估量的方式,由于终究是期望生成的散布pg(x;)p_g\left ( \boldsymbol{x};\theta \right )pg(x;)与原始的实在散布pdata(x)p_{data}\left ( \boldsymbol{x} \right )pdata(x),首要从实在散布pdata(x)p_{data}\left ( \boldsymbol{x} \right )pdata(x)采样mmm个数据点,记为{x(1),x(2),⋯ ,x(m)}\left \{ \boldsymbol{x}^{\left ( 1 \right )},\boldsymbol{x}^{\left ( 2 \right )},\cdots ,\boldsymbol{x}^{\left ( m \right )} \right \}{x(1),x(2),⋯,x(m)},依据生成的散布,得到似然函数为:
L=∏i=1mpg(x(i);)L=\prod_{i=1}^{m}p_g\left ( \boldsymbol{x}^{\left ( i \right )};\theta \right )L=i=1∏mpg(x(i);)
取log后,得到等价的log似然:
L=∑i=1mlog pg(x(i);)L=\sum_{i=1}^{m}log\; p_g\left ( \boldsymbol{x}^{\left ( i \right )};\theta \right )L=i=1∑mlogpg(x(i);)
此刻,∗\theta ^{\ast }∗为:
∗=argmax∑i=1mlog pg(x(i);)≈argmax Ex∼pdata[log pg(x;)]=argmax∫xpdata(x)log pg(x;)dx\begin{aligned}
\theta ^{\ast }&=\underset{\theta }{argmax}\sum_{i=1}^{m}log\; p_g\left ( \boldsymbol{x}^{\left ( i \right )};\theta \right ) \\
&\approx \underset{\theta }{argmax}\; \mathbb{E}_{\boldsymbol{x}\sim p_{data}}\left [ log\; p_g\left ( \boldsymbol{x};\theta \right ) \right ] \\
&= \underset{\theta }{argmax}\int _{\boldsymbol{x}}p_{data}\left ( \boldsymbol{x} \right )log\; p_g\left ( \boldsymbol{x};\theta \right )d\boldsymbol{x}
\end{aligned}∗=argmaxi=1∑mlogpg(x(i);)≈argmaxEx∼pdata[logpg(x;)]=argmax∫xpdata(x)logpg(x;)dx
对上述的公式做一些修正,增加一个与\theta无关的项∫xpdata(x)log pdata(x)dx\int _{\boldsymbol{x}}p_{data}\left ( \boldsymbol{x} \right )log\; p_{data}\left ( \boldsymbol{x} \right )d\boldsymbol{x}∫xpdata(x)logpdata(x)dx,这样并不改动对∗\theta ^{\ast }∗的求解,此刻,公式变为:
argmax∫xpdata(x)log pg(x;)dx−∫xpdata(x)log pdata(x)dx\underset{\theta }{argmax}\int _{\boldsymbol{x}}p_{data}\left ( \boldsymbol{x} \right )log\; p_g\left ( \boldsymbol{x};\theta \right )d\boldsymbol{x}-\int _{\boldsymbol{x}}p_{data}\left ( \boldsymbol{x} \right )log\; p_{data}\left ( \boldsymbol{x} \right )d\boldsymbol{x}argmax∫xpdata(x)logpg(x;)dx−∫xpdata(x)logpdata(x)dx
将最大值求解变成最小值为:
argmin∫xpdata(x)log pdata(x)dx−∫xpdata(x)log pg(x;)dx\underset{\theta }{argmin}\int _{\boldsymbol{x}}p_{data}\left ( \boldsymbol{x} \right )log\; p_{data}\left ( \boldsymbol{x} \right )d\boldsymbol{x}-\int _{\boldsymbol{x}}p_{data}\left ( \boldsymbol{x} \right )log\; p_g\left ( \boldsymbol{x};\theta \right )d\boldsymbol{x}argmin∫xpdata(x)logpdata(x)dx−∫xpdata(x)logpg(x;)dx
经过积分公式的兼并,得到:
argmin∫xpdata(x)log pdata(x)log pg(x;)dx\underset{\theta }{argmin}\int _{\boldsymbol{x}}p_{data}\left ( \boldsymbol{x} \right )log\;\frac{p_{data}\left ( \boldsymbol{x} \right )}{log\; p_g\left ( \boldsymbol{x};\theta \right )} d\boldsymbol{x}argmin∫xpdata(x)loglogpg(x;)pdata(x)dx
由KL散度可知,上述能够表明为:
argmin KL(pdata(x)∥pg(x;))\underset{\theta }{argmin}\; KL\left ( p_{data}\left ( \boldsymbol{x} \right )\parallel p_g\left ( \boldsymbol{x};\theta \right ) \right )argminKL(pdata(x)∥pg(x;))
由此能够看出最小化KL散度等价于最大化似然函数。
3.4. 收敛性剖析
当生成网络GGG确认后,价值函数能够表明为:
maxD V(D)=∫xpdata(x)log (D(x))dx+∫zpz(z)log (1−D(G(z)))dz=∫xpdata(x)log (D(x))+pg(x)log (1−D(x))dx\begin{aligned}
\underset{D}{max}\; V\left ( D \right )&=\int _{\boldsymbol{x}}p_{data}\left ( \boldsymbol{x} \right )log\; \left ( D\left ( \boldsymbol{x} \right ) \right ) d\boldsymbol{x}+\int _{\boldsymbol{z}} p_{\boldsymbol{z}}\left ( \boldsymbol{z} \right )log\; \left ( 1-D\left ( G\left ( \boldsymbol{z} \right ) \right ) \right )d\boldsymbol{z} \\
&= \int _{\boldsymbol{x}}p_{data}\left ( \boldsymbol{x} \right )log\; \left ( D\left ( \boldsymbol{x} \right ) \right )+p_{g}\left ( \boldsymbol{x} \right )log\; \left ( 1-D\left ( \boldsymbol{x} \right ) \right ) d\boldsymbol{x}
\end{aligned}DmaxV(D)=∫xpdata(x)log(D(x))dx+∫zpz(z)log(1−D(G(z)))dz=∫xpdata(x)log(D(x))+pg(x)log(1−D(x))dx
由于上述的积分与DDD无关,上述能够简化成求解:
maxD[pdata(x)log (D(x))+pg(x)log (1−D(x))]\underset{D}{max}\left [ p_{data}\left ( \boldsymbol{x} \right )log\; \left ( D\left ( \boldsymbol{x} \right ) \right )+p_{g}\left ( \boldsymbol{x} \right )log\; \left ( 1-D\left ( \boldsymbol{x} \right ) \right )\right ]Dmax[pdata(x)log(D(x))+pg(x)log(1−D(x))]
求导数并令其为000,便能够得到最大的DDD:
D∗=pdata(x)pdata(x)+pg(x)D^{\ast }=\frac{p_{data}\left ( \boldsymbol{x} \right )}{p_{data}\left ( \boldsymbol{x} \right )+p_{g}\left ( \boldsymbol{x} \right )}D∗=pdata(x)+pg(x)pdata(x)
且D(x)∈[0,1]D\left ( \boldsymbol{x} \right )\in \left [ 0,1 \right ]D(x)∈[0,1],将其带入到价值函数中,可得
V(D∗,G)=Ex∼pdata(x)[log pdata(x)pdata(x)+pg(x)]+Ex∼pg(x)[log (1−pdata(x)pdata(x)+pg(x))]V\left ( D^{\ast },G \right )=\mathbb{E}_{\boldsymbol{x}\sim p_{data}\left ( \boldsymbol{x} \right )}\left [ log\; \frac{p_{data}\left ( \boldsymbol{x} \right )}{p_{data}\left ( \boldsymbol{x} \right )+p_{g}\left ( \boldsymbol{x} \right )} \right ]+\mathbb{E}_{\boldsymbol{x}\sim p_g\left ( \boldsymbol{x} \right )}\left [ log\; \left ( 1-\frac{p_{data}\left ( \boldsymbol{x} \right )}{p_{data}\left ( \boldsymbol{x} \right )+p_{g}\left ( \boldsymbol{x} \right )} \right ) \right ]V(D∗,G)=Ex∼pdata(x)[logpdata(x)+pg(x)pdata(x)]+Ex∼pg(x)[log(1−pdata(x)+pg(x)pdata(x))]
对上式简化,可得:
V(D∗,G)=Ex∼pdata(x)[log pdata(x)pdata(x)+pg(x)]+Ex∼pg(x)[log pg(x)pdata(x)+pg(x)]=∫xpdata(x)log pdata(x)pdata(x)+pg(x)dx+∫xpg(x)log pg(x)pdata(x)+pg(x)dx\begin{aligned}
V\left ( D^{\ast },G \right ) &= \mathbb{E}_{\boldsymbol{x}\sim p_{data}\left ( \boldsymbol{x} \right )}\left [ log\; \frac{p_{data}\left ( \boldsymbol{x} \right )}{p_{data}\left ( \boldsymbol{x} \right )+p_{g}\left ( \boldsymbol{x} \right )} \right ]+\mathbb{E}_{\boldsymbol{x}\sim p_g\left ( \boldsymbol{x} \right )}\left [ log\; \frac{p_g\left ( \boldsymbol{x} \right )}{p_{data}\left ( \boldsymbol{x} \right )+p_{g}\left ( \boldsymbol{x} \right )} \right ]\\
&= \int _{\boldsymbol{x}}p_{data}\left ( \boldsymbol{x} \right )log\; \frac{p_{data}\left ( \boldsymbol{x} \right )}{p_{data}\left ( \boldsymbol{x} \right )+p_{g}\left ( \boldsymbol{x} \right )}d\boldsymbol{x}+\int _{\boldsymbol{x}}p_g\left ( \boldsymbol{x} \right )log\; \frac{p_g\left ( \boldsymbol{x} \right )}{p_{data}\left ( \boldsymbol{x} \right )+p_{g}\left ( \boldsymbol{x} \right )}d\boldsymbol{x}
\end{aligned}V(D∗,G)=Ex∼pdata(x)[logpdata(x)+pg(x)pdata(x)]+Ex∼pg(x)[logpdata(x)+pg(x)pg(x)]=∫xpdata(x)logpdata(x)+pg(x)pdata(x)dx+∫xpg(x)logpdata(x)+pg(x)pg(x)dx
经过对分子和分母别离除222,可得:
V(D∗,G)=∫xpdata(x)log 12pdata(x)pdata(x)+pg(x)2dx+∫xpg(x)log 12pg(x)pdata(x)+pg(x)2dx=−2log 2+KL(pdata(x)∥pdata(x)+pg(x)2)+KL(pg(x)∥pdata(x)+pg(x)2)\begin{aligned}
V\left ( D^{\ast },G \right ) &= \int _{\boldsymbol{x}}p_{data}\left ( \boldsymbol{x} \right )log\; \frac{\frac{1}{2}p_{data}\left ( \boldsymbol{x} \right )}{\frac{p_{data}\left ( \boldsymbol{x} \right )+p_{g}\left ( \boldsymbol{x} \right )}{2}}d\boldsymbol{x}+\int _{\boldsymbol{x}}p_g\left ( \boldsymbol{x} \right )log\; \frac{\frac{1}{2}p_g\left ( \boldsymbol{x} \right )}{\frac{p_{data}\left ( \boldsymbol{x} \right )+p_{g}\left ( \boldsymbol{x} \right )}{2}}d\boldsymbol{x}\\
&= -2log\; 2+KL\left ( p_{data}\left ( \boldsymbol{x} \right )\parallel \frac{p_{data}\left ( \boldsymbol{x} \right )+p_{g}\left ( \boldsymbol{x} \right )}{2} \right )+KL\left ( p_g\left ( \boldsymbol{x} \right )\parallel \frac{p_{data}\left ( \boldsymbol{x} \right )+p_{g}\left ( \boldsymbol{x} \right )}{2} \right )
\end{aligned}V(D∗,G)=∫xpdata(x)log2pdata(x)+pg(x)21pdata(x)dx+∫xpg(x)log2pdata(x)+pg(x)21pg(x)dx=−2log2+KL(pdata(x)∥2pdata(x)+pg(x))+KL(pg(x)∥2pdata(x)+pg(x))
这里引入另一个符号:JS散度(Jensen-Shannon Divergence)
JSD(P∥Q)=12[KL(P∥M)+KL(Q∥M)]JSD\left ( P\parallel Q \right )=\frac{1}{2}\left [ KL\left ( P\parallel M \right ) + KL\left ( Q\parallel M \right )\right ]JSD(P∥Q)=21[KL(P∥M)+KL(Q∥M)]
其间,M=P+Q2M=\frac{P+Q}{2}M=2P+Q。因而V(D∗,G)V\left ( D^{\ast },G \right )V(D∗,G)能够表明为:
V(D∗,G)=−2log 2+2JSD(pdata(x)∥pg(x))V\left ( D^{\ast },G \right )=-2log\; 2+2JSD\left ( p_{data}\left ( \boldsymbol{x} \right )\parallel p_g\left ( \boldsymbol{x} \right ) \right )V(D∗,G)=−2log2+2JSD(pdata(x)∥pg(x))
已知JS散度是一个非负值,且值域为[0,1]\left [ 0,1 \right ][0,1],当两个散布相同时取000,不同时取111。关于V(D∗,G)V\left ( D^{\ast },G \right )V(D∗,G)的最小值为当JS=0JS=0JS=0时,即最小值是−2log 2-2log\; 2−2log2。此刻pdata(x)=pg(x)p_{data}\left ( \boldsymbol{x} \right )=p_g\left ( \boldsymbol{x} \right )pdata(x)=pg(x),此刻求得的生成网络GGG生成的数据散布与实在的数据散布差异性最小,即GAN所要求的方针:pg=pdatap_g=p_{data}pg=pdata。
3. 总结
生成对立网络GAN中经过生成网络GGG和判别网络DDD之间的“生成”和“对立”进程,经过屡次的迭代,终究到达平衡,使得练习出来的生成网络GGG能够生成“以假乱真”的数据,判别网络DDD不能将其从实在数据中区别开。
参考文献
[1] Goodfellow I, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets[J]. Advances in neural information processing systems, 2014, 27.
[2] Generative Models
[2] PyTorch 学习笔记(十):初识生成对立网络(GANs)
[3] 浅显了解生成对立网络GAN
开启生长之旅!这是我参加「日新方案 2 月更文应战」的第 6 天,点击检查活动概况