樊雷
摘要:卷積神經網絡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