大名鼎鼎的生成对抗网络GAN,发表在NeurIPS2014。GAN为生成领域打开了新的大门,为神经网络赋予更多的能力。论文短小精悍,证明部分较为硬核,但是也格外巧妙,希望本篇博客能够帮助读者更好理解其中细节。
Paper: https://proceedings.neurips.cc/paper_files/paper/2014/file/5ca3e9b122f61f8f06494c97b1afccf3-Paper.pdf
作者提出了一个新的生成模型的范式,通过对抗学习的过程,同时训练两个模型:生成模型 G G G和判别模型 D D D。前者用于捕获原始数据的分布,后者判断一个数据是生成的还是来自原始数据。 G G G的目标是最大化模型 D D D犯错的概率,让判别模型最终无法分辨图像的真伪。两个模型都由多层MLP组成,无需马尔科夫链或者展开的近似推理网络(前文预测后文)。实验展示了该框架的潜力。
当前深度学习模型在判别模型上取得引人瞩目的成功,但是在生成模型上却难有建树,因为难以通过极大似然估计和相关策略去拟合分布,本文提出了一个新的生成模型回避了拟合的问题。
本文提出的对抗网络框架,生成模型和判别模型进行对抗,生成模型如同造假币者,试图造出发现不了的假币,而判别模型类似警察,试图检测出假币,二者相互竞争,不断改进,直到造的假币与真币无法区分。
该框架可以为多种模型和优化算法提供特定的训练算法。本文的生成模型通过将随机噪声通过多层感知器来生成样本的特殊情况,并且判别模型也是多层感知器。这样的对抗网络可以通过反向传播和dropout来进行训练,无需近似推理或者马尔科夫链。
Introduction部分完全就是摘要部分的扩充,将其中的一些概念更加详细的表述了一遍,并没有提及他人或者其它领域的工作,可见作者对于本文这样开创性工作的自信。GAN作为一种新的模式或框架,引领了数万篇工作在生成模型领域发扬光大。
最近的生成模型仍然专注于拟合目标分布。代表性工作如深度玻尔兹曼机,此类模型有大量难以处理的似然函数。本文所提出的模型通过梯度下降反向传播解决了上述问题。VAE工作开发了更通用的随机反向传播规则,可以让人们了解生成器的条件方差。
之前通过一个辨别模型来帮助生成模型的效果并不好,如NCE,使用之前训练好的模型作为噪声分布来提高模型的性能。其局限性在于判别器是由噪声分布和模型分布的概率密度之比定义的,因此需要通过这两种密度进行评估和反向传播,损失函数较为复杂,在求解上性能不如GAN。
之前的一些工作也有让两个网络互相竞争的概念,如可预测最小化PM。本文与PM有三点不同之处:
GAN有时会和对抗样本的概念相混淆。对抗样本是为了找到与数据相似但是分类错误的样例,而不是作为一个生成模型。
当模型都是多层感知机时,GAN的应用更为直接。为了学习生成器在数据 x x x上的分布 p g p_g pg,作者定义了一个先验的输入噪声函数 p z ( z ) p_z(z) pz(z),然后通过生成器 G ( z ; θ g ) G(z;\theta_g) G(z;θg)将噪声映射到数据空间。判别器 D ( x ; θ d ) D(x;\theta_d) D(x;θd)的输出 D ( x ) D(x) D(x)用于表示 x x x来自于真实数据而不是生成生成数据的概率。判别器的目标是最大化正确分配标签的概率,而生成器的目标是最小化 l o g ( 1 − D ( G ( z ) ) ) \mathrm{log}(1-D(G(z))) log(1−D(G(z)))。生成器和判别器遵循如下博弈游戏:
min G max D V ( D , G ) = E x ∼ p data ( x ) [ log D ( x ) ] + E z ∼ p z ( z ) [ log ( 1 − D ( G ( z ) ) ) ] \min _{G} \max _{D} V(D, G)=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})]+\mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] minGmaxDV(D,G)=Ex∼pdata (x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
下一节会展示GAN的理论分析,尤其是在参数拟合能力足够强的情况下,生成器如何重建分布(基于non-parametric limit),如下图所示:
该图详细解释可以分为以下四个步骤:
回到上面的式子,在实践中,必须使用迭代的方式来完成这个游戏,通过交替 k k k步 D D D和一步 G G G,防止内循环中将 D D D优化最佳导致大量的计算和过拟合的风险。算法1介绍了该过程。
训练开始时,生成的图像太假,很容易被判别器识破,在这种情况下, l o g ( 1 − D ( G ( z ) ) ) \mathrm{log}(1-D(G(z))) log(1−D(G(z)))达到饱和,此时可以最大化 l o g ( D ( G ( z ) ) ) \mathrm{log}(D(G(z))) log(D(G(z)))而不是最小化 l o g ( 1 − D ( G ( z ) ) ) \mathrm{log}(1-D(G(z))) log(1−D(G(z)))。虽然二者都能收敛到相同的位置,但是前者可以提供更强的梯度,收敛更快。
non-parametric limit:意思是概率分布的拟合能力上限数据量本身决定,而不是由模型参数量决定,只要数据无限大,模型性能可以无限好,这样的模型有KNN,dp-means,高斯过程(概率机器学习)。
而自带先验分布假设的模型如线性回归、逻辑回归、支持向量机等。它们都不是non-parametric limit。
生成器隐式定义了概率分布 p g p_g pg,因此作者希望在充足的训练样本和时间的情况下,算法1能够收敛到 p d a t a p_{\mathrm{data}} pdata。
首先考虑给定任意生成器 G G G所能得到的最佳判别器 D D D。
固定 G G G,最优的判别器 D D D如下:
D ∗ ( x ) = p d a t a ( x ) p d a t a ( x ) + p g ( x ) D^*(x)=\frac{p_{\mathrm{data}}(x)}{p_{\mathrm{data}}(x)+p_{g}(x)} D∗(x)=pdata(x)+pg(x)pdata(x)
证明1: 对于给定的判别器,对于任意的生成器,其目标是最大化质量函数 V ( G , D ) V(G,D) V(G,D):
V ( G , D ) = ∫ x p data ( x ) log ( D ( x ) ) d x + ∫ z p z ( z ) log ( 1 − D ( g ( z ) ) ) d z = ∫ x p data ( x ) log ( D ( x ) ) + p g ( x ) log ( 1 − D ( x ) ) d x \begin{aligned} V(G, D) & =\int_{\boldsymbol{x}} p_{\text {data }}(\boldsymbol{x}) \log (D(\boldsymbol{x})) d x+\int_{\boldsymbol{z}} p_{\boldsymbol{z}}(\boldsymbol{z}) \log (1-D(g(\boldsymbol{z}))) d z \\ & =\int_{\boldsymbol{x}} p_{\text {data }}(\boldsymbol{x}) \log (D(\boldsymbol{x}))+p_{g}(\boldsymbol{x}) \log (1-D(\boldsymbol{x})) d x \end{aligned} V(G,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
其中第二项是根据测度论中的Radon-Nikodym Theorem,将对噪声的积分改动为对假图像的积分,从而将两个积分项合并为一个积分项。积分中的式子可以看做是关于 y y y的函数 y → a l o g ( y ) + b l o g ( 1 − y ) y \to a\mathrm{log}(y)+b\mathrm{log}(1-y) y→alog(y)+blog(1−y),根据求导结果,当 y y y取 a a + b \frac{a}{a+b} a+ba时,式子取得最大值,即 D ∗ ( x ) = p d a t a ( x ) p d a t a ( x ) + p g ( x ) D^*(x)=\frac{p_{\mathrm{data}}(x)}{p_{\mathrm{data}}(x)+p_{g}(x)} D∗(x)=pdata(x)+pg(x)pdata(x)。
证毕。
Radon-Nikodym Theorem即无意识统计学家定理,当 z → x z \to x z→x是单射时,对噪声 z z z的采样相当于对假图像进行采样,即: E z ∼ p z ( z ) l o g ( 1 − D ( G ( z ) ) ) = E x ∼ p G ( x ) l o g ( 1 − D ( x ) ) \mathbb{E}_{z \sim p_z(z)}\mathrm{log}(1-D(G(z)))=\mathbb{E}_{x \sim p_G(x)}\mathrm{log}(1-D(x)) Ez∼pz(z)log(1−D(G(z)))=Ex∼pG(x)log(1−D(x))。
注意到训练目标 D D D可以解释为最大化估计条件概率 P ( Y = y ∣ x ) P(Y=y|x) P(Y=y∣x)的最大似然。即: C ( G ) = max D V ( G , D ) = E x ∼ p data [ log D G ∗ ( x ) ] + E z ∼ p z [ log ( 1 − D G ∗ ( G ( z ) ) ) ] = E x ∼ p data [ log D G ∗ ( x ) ] + E x ∼ p g [ log ( 1 − D G ∗ ( x ) ) ] = E x ∼ p data [ log p data ( x ) P data ( x ) + p g ( x ) ] + E x ∼ p g [ log p g ( x ) p data ( x ) + p g ( x ) ] \begin{aligned} C(G) & =\max _{D} V(G, D) \\ & =\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}\left[\log D_{G}^{*}(\boldsymbol{x})\right]+\mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}}\left[\log \left(1-D_{G}^{*}(G(\boldsymbol{z}))\right)\right] \\ & =\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}\left[\log D_{G}^{*}(\boldsymbol{x})\right]+\mathbb{E}_{\boldsymbol{x} \sim p_{g}}\left[\log \left(1-D_{G}^{*}(\boldsymbol{x})\right)\right] \\ & =\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}\left[\log \frac{p_{\text {data }}(\boldsymbol{x})}{P_{\text {data }}(\boldsymbol{x})+p_{g}(\boldsymbol{x})}\right]+\mathbb{E}_{\boldsymbol{x} \sim p_{g}}\left[\log \frac{p_{g}(\boldsymbol{x})}{p_{\text {data }}(\boldsymbol{x})+p_{g}(\boldsymbol{x})}\right] \end{aligned} C(G)=DmaxV(G,D)=Ex∼pdata [logDG∗(x)]+Ez∼pz[log(1−DG∗(G(z)))]=Ex∼pdata [logDG∗(x)]+Ex∼pg[log(1−DG∗(x))]=Ex∼pdata [logPdata (x)+pg(x)pdata (x)]+Ex∼pg[logpdata (x)+pg(x)pg(x)]
其实这种写成期望的形式和上面写成积分形式本质上是一样的。
理论: 上面证明了当 D ∗ ( x ) = p d a t a ( x ) p d a t a ( x ) + p g ( x ) D^*(x)=\frac{p_{\mathrm{data}}(x)}{p_{\mathrm{data}}(x)+p_{g}(x)} D∗(x)=pdata(x)+pg(x)pdata(x)时,判别器能够最大化质量函数,那么对于生成器来说,就要最小化 D ( x ) D(x) D(x),即实现 C ( G ) C(G) C(G)的全局最小值,此时 p g = p d a t a p_g=p_{data} pg=pdata, C ( G ) C(G) C(G)的值为 − l o g 4 -\rm log 4 −log4。
证明2: 当 p g = p d a t a p_g=p_{data} pg=pdata时, D G ∗ ( x ) = 1 2 D^*_G(x)=\frac{1}{2} DG∗(x)=21,此时 C ( G ) = l o g 1 2 + l o g 1 2 = − l o g 4 C(G)=\rm log\frac{1}{2} + log\frac{1}{2}=-log4 C(G)=log21+log21=−log4。为了证明这是不是 C ( G ) C(G) C(G)的全局最小值,可以将 C ( G ) C(G) C(G)通过简单的化简改成下面的式子:
C ( G ) = − log ( 4 ) + K L ( p data ∥ p data + p g 2 ) + K L ( p g ∥ p data + p g 2 ) C(G)=-\log (4)+K L\left(p_{\text {data }} \| \frac{p_{\text {data }}+p_g}{2}\right)+K L\left(p_g \| \frac{p_{\text {data }}+p_g}{2}\right) C(G)=−log(4)+KL(pdata ∥2pdata +pg)+KL(pg∥2pdata +pg)
KL散度又可以进一步合并成对称的JS散度,如下:
C ( G ) = l o g ( 4 ) + 2 ⋅ J S D ( p d a t a ∣ ∣ p g ) C(G)=\mathrm{log(4)}+2·JSD(p_{data}||p_g) C(G)=log(4)+2⋅JSD(pdata∣∣pg)
JS散度非负,并且当且仅当两个分布相等时JSD为0,因此可以证明 − l o g 4 -\rm log 4 −log4是全局最小解。
证毕。
此部分证明不够严谨,略。
本文实验在MNIST、TFD和CIFAR-10数据集上进行。生成器激活函数采用ReLU和Sigmoid,判别器采用maxout。模型中也加入了dropout防止过拟合,虽然模型架构允许在任何地方使用dropout和噪声,但是作者只在生成器的输入采用噪声。
作者采用基于 Parzen 窗口的对数似然估计来评估生成图像的质量。结果如下表所示:
这种评估方式方差较大,并且在高维空间不稳定, 但是是目前最好的方法。下图展示了训练后生成的部分样本,可以看出GAN生成的图像确实很有竞争力,表现出极大的潜力。
GAN主要有两点不足:
当然GAN的优点也是很突出的:
下表是GAN与其他生成方法的比较。
上述的优势还只是从计算上来说,GAN还可以从生成器网络中获得一些统计优势,即不使用真实的数据进行更新,而是间接根据判别器的结果进行更新,这意味着输入的组成部分不会直接复制到生成器的参数中。GAN的另一个优势是可以拟合更丰富的分布,而基于马尔科夫链的方法对分布有一定的限制。
上图黄色框标记的部分是真实的图像,其它都是生成的图像。可见生成的图像并不是对真实图像的逼近(即真正拟合到分布),而是略有差别,且真实自然。
并且输入的噪声渐变,输出的图像也会跟着渐变。
GAN作为生成对抗网络的开山之作,为后续许多生成模型奠定了基础,尤其是如今生成图像往往能够以假乱真。本篇文章的作者也都是赫赫有名的大人物,所以GAN这篇文章简洁明了,思路清晰,摘要部分直接概括方法核心思想,引言也只是对摘要的简单扩充,只有相关工作列举了一些他人的成果。全篇工作几乎没有一句多余的话,甚至实验部分也很简洁,只有不到半页,这可能就是强者的自信吧。
这篇文章的思想特别有借鉴意义,不是对真实分布的拟合,而是通过生成对抗的方式间接靠近真实分布。这样的生成会更加自然且创新性,不易受到真实分布的特别约束。此外,GAN并不是一个模型,而是一个思想,一个框架爱,其可扩展性和简易性为后续工作铺平了道路,仿佛为生成领域提供了一张白纸,任由人在其上面进行创造性的工作。