一种基于TensorFlow的DCGAN模型实现
2018-01-08樊雷
樊雷
摘要:卷积神经网络CNN目前在有监督学习领域有着优秀的表现,但在无监督学习领域研究进展缓慢。该文将CNN引入到GAN中的生成式模型中做无监督训练,利用CNN强大的特征提取能力来提高生成式模型的学习效果,采用TensorFlow和Python代码实现了DCGAN中的D模型和G模型,并在MNIST部分数据集下验证了模型生成数字图像效果。实验结果表明采用DCGAN可以有效获取图像表征用于分类并具备生成较高分辨率的图像能力。
关键词:DCGAN;深度学习;TensorFlow;GAN
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2017)36-0219-03
Abstract: Convolutional neural network (CNN) has excellent performance in supervised learning field, but the progress of research is slow in unsupervised learning. This paper introduced CNN into the generative model of GAN in unsupervised training, to improve the ability to extract generative model learning effect by the powerful character of CNN, using TensorFlow and Python code to achieve the D model and G model within DCGAN, and validates the model to generate digital image effect by the dataset of MNIST. Experimental results show that DCGAN can effectively obtain image representation for classification, and has the ability to generate high resolution of images.
Key words: DCGAN; Deep learning; TensorFlow; GAN
1 TensorFlow概述
TensorFlow是Google公司在2015年11月開源的第二代人工智能学习系统,具备了高层次的机器学习计算能力,其特点是灵活性强、速度快、扩展性好,支持异种设备分布式计算,特别是对GPU分布式计算具备良好的支持,能够在不同异种平台上实现分散节点自动运行各种目前流行的深度学习模型,可以构建从单个CPU 或 GPU到成百上千处理单元组成的分布式系统来加速深度学习模型的训练速度。目前TensorFlow已经开源支持了卷积神经网络CNN、递归神经网络RNN和LSTM神经网络等经典深度学习神经网络模型。TensorFlow 提供了 C, C++, Python 编程语言接口,特别是Python 库更加易学易用,同时提供了大量的内置函数来简化深度学习计算图的构建。图1为TensorFlow分层架构[1]。
2 生成式对抗网络GAN
Christian Szegedy等人在ICLR 2014发表的论文[2]中,提出了对抗样本(Adversarial examples)的概念,即在输入样本数据集中设计细微的干扰,以合成噪声构造的图像样本数据作为输入,致使多种深度学习模型以高置信度给出了错误的输出结果。实验表明包括卷积神经网络(CNN)在内的各种深度学习模型和其他机器学习模型对于对抗样本都表现出了极低的鲁棒性。生成式对抗网络(GAN)的设计灵感来源于博弈论中的零和博弈,由Goodfellow在论文[3]中创造性地提出。GAN通过研究深度学习本身对识别对抗样本的缺陷,利用“欺骗”和“反欺骗”的博弈,实现了模型内部的监督学习。GAN中的博弈模型分别是生成模型G和判别模型D,其模型中使用的G(z)和D(x)通常为非线性映射函数,输入样本一般来源于多层感知机、卷积神经网络或其他人工智能模型。
3 DCGAN原理和实现方法
DCGAN全称是Deep Convolution GAN,即采用深度卷积网络对G进行建模。G的输入是一个 100维随机噪声向量,服从均匀分布,区间为[-1,1]。 CNN使用了一个全连接层和4个卷积层,通过卷积算法将高层表征转换为64 * 64*3的RGB图片。 第一个卷积层采用全连接100 —>1024,并将1024的一维向量重塑成1024个通道的4*4的特征图。G的后面三层采用反卷积层,其通道数取半并将图像尺寸增加一倍。
判别模型D是一个没有pooling的全卷积网络。 D的输入维度和G的输出保持一致,训练样本的结果输出是一个长度为1 的向量,数字的范围从0到1,表示输入数据属于训练数据而非生成样本的概率。
4 DCGAN图片生成效果
以下利用DCGAN来生成MNIST数字手写体灰度图像,由于实验条件限制,硬件采用Intel I7 4770处理器和8G内存对Tensorflow进行了CPU运算,分别迭代100、1000、2000轮,3次Epoch后,选取的部分MNIST数字图像生成效果如图4所示。
图5采用一张花卉图片样本,对比DCGAN和Autoencoder无监督的学习算法效果。
通过观察可以发现DCGAN能够更为有效、快速地实现生成高质量图片。实验还表明通过增大Epoch代数,当Epoch达到一定次数后,对生成的图像分辨率提高意义不大。endprint
5 結束语
DCGAN结合了CNN和GAN模型各自的优点,可以从物体或场景图像数据集中学习到多维深层次表征,工程实践中训练的结果可以有效的用于生成图像的多维向量表征,在人工智能图像生成方面具有较高的应用价值。从目前国外学者们的实验效果来看,在人脸和场景生成等方向上已经取得了突破性的进展。TensorFlow下实现DCGAN可以有效地将学术领域和工程领域结合起来,通过TensorFlow的优秀计算特性、扩展特性可以有效地加速人工智能深度学习各种模型的训练速度,快速验证模型算法的有效性和鲁棒性,具有广阔的实验、科研以及工程应用价值。
参考文献:
[1] Abadi M, Barham P. TensorFlow: A system for large-scale machine learning [J]. arXiv preprint arXiv: 1605.08695V2, 2016(5):9-10.
[2] Szegedy C, Zaremba W, Sutskever I, et al. Intriguing properties of neural networks[J]. arXiv preprint arXiv: 1312.6199v4, 2014(2):1-2.
[3] Goodfellow Ian, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets[J]. arXiv: 1406.2661v1 ,2014(6):4-5
[4] Radford A, Metz L, Chintala S. Unsupervised representation learning with deep convolutional generative adversarial networks[J]. arXiv preprint arXiv: 1511. 06434, 2015: 4
[5] Yeh R, Chen C, Lim T Y, et al. Semantic Image Inpainting with Perceptual and Contextual Losses[J]. arXiv preprint arXiv: arXiv: 1607. 07539 v1, 2016: 5.
[6] Im D J, Kim C D, Jiang H, et al. Generating images with recurrent adversarial networks[J]. arXiv preprint arXiv: 1602, 05110, 2016.endprint