深度卷积生成对抗网络DCGAN

Posted zhiyong_will

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度卷积生成对抗网络DCGAN相关的知识,希望对你有一定的参考价值。

1. 概述

在原始的GAN[1]中,生成网络 G G G和判别网络 D D D使用的都是前馈神经网络MLP。随着深度学习技术的发展,得益于卷积神经网络CNN在图像领域的成功,在DCGAN[2]中尝试将CNN与GAN相结合,用CNN网络替换GAN的生成网络 G G G和判别网络 D D D中的MLP,同时在训练的过程中使用了一些技巧来避免模型崩溃和模型不收敛等问题。

2. 算法原理

2.1. DCGAN的优化

相比于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 ) ) ) ] \\undersetGmin\\; \\undersetDmax\\; V\\left ( D,G \\right )=\\mathbbE_\\boldsymbolx\\sim p_data\\left ( \\boldsymbolx \\right )\\left [ log\\; D\\left ( \\boldsymbolx \\right ) \\right ]+\\mathbbE_\\boldsymbolz\\sim p_\\boldsymbolz\\left ( \\boldsymbolz \\right )\\left [ log\\; \\left ( 1-D\\left ( G\\left ( \\boldsymbolz \\right ) \\right ) \\right ) \\right ] GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]

其中, D D D G G G为卷积神经网络CNN。DCGAN中的CNN相比于一般的CNN主要有如下的不同:

  • 使用卷积操作替换传统CNN模型中的pooling。在判别器中使用strided convolutions,在生成器中使用fractional-strided convolutions
  • 在生成器和判别器中使用batchnorm
  • 移除最后的全连接层
  • 生成器 G G G中除输出层外都使用ReLU激活函数,输出层使用Tanh激活函数
  • 判别器 D D D中都使用Leaky ReLU激活函数

2.2. 判别器

判别器网络使用的是一般的CNN网络,LeNet-5网络[5]如下图所示:


与上述最普通的CNN网络不同的是:

  • 增加batchnorm
  • 移除了最后的全连接层
  • 使用Leaky ReLU激活函数

2.3. 生成器

注: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图像。

3. 总结

鉴于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.

[3] GAN学习:GAN/DCGAN原理、公式推导及实践

[4] DCGAN原理解析

[5] http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf

[6] DCGAN原理及应用

[7] GAN网络之入门教程(四)之基于DCGAN动漫头像生成

以上是关于深度卷积生成对抗网络DCGAN的主要内容,如果未能解决你的问题,请参考以下文章

深度卷积生成对抗网络DCGAN——生成手写数字图片

深度卷积生成对抗网络DCGAN

深度卷积生成对抗网络DCGAN

深度卷积生成对抗网络DCGAN

深度卷积对抗生成网络(DCGAN)

深度学习100例-生成对抗网络(DCGAN)手写数字生成 | 第19天