赞
踩
在原始的GAN[1]中,生成网络 G G G和判别网络 D D D使用的都是前馈神经网络MLP。随着深度学习技术的发展,得益于卷积神经网络CNN在图像领域的成功,在DCGAN[2]中尝试将CNN与GAN相结合,用CNN网络替换GAN的生成网络 G G G和判别网络 D D D中的MLP,同时在训练的过程中使用了一些技巧来避免模型崩溃和模型不收敛等问题。
相比于GAN,除了将GAN中生成器和判别器中的MLP替换成CNN外,其余的基本不变,DCGAN的价值函数依然为:
m i n G m a x D V ( D , G ) = E x ∼ p d a t a ( x ) [ l o g D ( x ) ] + E z ∼ p z ( z ) [ l o g ( 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)))]
其中, D D D和 G G G为卷积神经网络CNN。DCGAN中的CNN相比于一般的CNN主要有如下的不同:
判别器网络使用的是一般的CNN网络,LeNet-5网络[5]如下图所示:
与上述最普通的CNN网络不同的是:
注:DCGAN中生成器部分是卷积操作的一个反向过程,文中称为fractionally-strided convolutions,有些论文中称为deconvolutions([2]的作者认为是一种错误的叫法)。
查阅部分资料以及代码实现,通常采用转置卷积(Transposed Convolution)实现这样的一个上采样的过程,通过转置卷积可以生成指定大小的图片,具体过程如下图所示:
首先将
100
100
100维的向量通过投影变换到
4
×
4
×
1024
4\times4\times1024
4×4×1024的大小,后续通过
4
4
4个转置卷积,最终生成
64
×
64
64\times64
64×64的RGB图像。
鉴于CNN模型在图像方面的成功经验,在DCGAN中通过将GAN中的MLP替换成不同的CNN模型,并且对传统的CNN模型进行一些优化,使得生成器能够生成更好的图片。
[1] Goodfellow I, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets[J]. Advances in neural information processing systems, 2014, 27.
[2] Radford A, Metz L, Chintala S. Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks[J]. Computer Science, 2015.
[4] DCGAN原理解析
[5] http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf
[6] DCGAN原理及应用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。