<模型匯總_5>生成對抗網路GAN及其變體SGAN_WGAN_CGAN_DCGAN_InfoGAN_StackGAN
今天主要介紹2016年深度學習最火的模型生成對抗網路(Generative Adversarial Net)-GAN。GAN是由現任谷歌大腦科學家的Ian Goodfellow於2014年提出來的一種基於對抗訓練(Adversarial training)過程來訓練生成模型(Generative Model)的一種新的深度學習框架。GAN是由兩個模型組成:一個生成模型G,用於獲得輸入樣本x的分布(表示學習representation learning觀點認為,深度學習對輸入樣本對(x,y)關係擬合過程,其實就是在學習輸入樣本x的分布),一個判別模型(Discriminative Model)D,用於估計一個樣本是真實的樣本而不是由G生成的樣本的概率。
先簡單介紹下傳統深度學習模型的分類。深度學習產生之初被分為生成模型和判別模型兩大類。生成模型典型網路有深度信念網路(Deep Belief Network,DBN)、堆疊自動編碼器(Stacked Auto-Encoder,SAE)和深度玻爾茲曼機(Deep Boltzmann Machine,DBM),生成模型認為模型的輸出樣本y是由模型的輸入樣本x生成的,一定存在一個最優的輸入樣本x*使得輸出的y的值最大化,通過生成模型可以學習到輸入樣本x的表示representation。它的最大優勢就是直接從輸入樣本x中進行無監督或半監督的學習,減少了對帶標註樣本的需求。判別模型認為模型的輸入樣本x是由輸出樣本y決定的,典型的網路如卷積神經網路(Convolution Neural Network,CNN)。個人認為,GAN的產生將二者結合起來,生成模型G根據輸入x產生輸出y』,並傳遞給判別模型D判斷是否是真實得數據。
GAN:Generative Adversarial Nets.Ian J. Goodfellow, Jean Pouget-Abadie.2014.06.10
NIPS 2016 Tutorial:Generative Adversarial Networks.Ian Goodfellow.2017.01.09
GAN的訓練:GAN的訓練分為兩個部分:G的訓練目標是最大化D做出錯誤識別的概率,就是儘可能讓D判別出錯;D的訓練目標則是儘可能把G生成的樣本找出來。極限情況下,當G能夠完全恢復輸入樣本X的分布的時候,D已經把G生成的樣本識別出來,所以G的輸出概率處處為1/2。與傳統的生成模型,如DBN相比,通過這種方式來訓練生成模型,不需要計算複雜的馬爾科夫鏈或者像CD-K演算法那樣進行展開的近似推理過程。
目標函數的構造,基於帶有雜訊的輸入變數p(z)定義了一個先驗得到輸入z,然後用G(z,Q)把輸入z映射到生成器輸出y』,G是處處可導的且採用一個多層神經網路來表示,用它的參數Q來擬合輸入樣本x的分布。再用一個多層網路來表示D,輸出一個標量,表示來源於x而不是p(z)的概率。對於G來說等價於最小化log(1-D(G(z)))期望;對於D來說,等價於最大logD(x)的期望,類似於一個minimax的遊戲。由此可以得到GAN的目標函數V(G,D):
訓練D,非常耗時,而且一直在一個訓練集上訓練容易造成過擬合。因此,在實際GAN訓練過程中,D訓練K次之後再訓練G,這樣做的目的是使D保持在一個optimum的狀態,讓G逐步慢慢變化。得到訓練演算法:
Ian GoodFellow所提出的生成對抗網路或對抗訓練的理論是一個通用的框架,基於GAN也產生了很多變體,適用於各種場景中解決實際問題,展示了GAN家族的強大威力,下面簡要介紹其中比較有代表一些模型。
CGAN:Conditional generative adversarial nets for convolutional face generation.Jon Gauthier.2015.03
Conditional Generative Adversarial Nets.Mehdi Mirza.2014.11.06
解決什麼問題:圖像標註、圖像分類和圖像生成過程中,存在兩類問題:其一、輸出圖像的label比較多,成千上萬類別;其二、對於一個輸入x,對應合適輸出y(label)的類別multi-modal(多個),怎麼樣選擇一個合適類別是個問題。CGAN嘗試在生成器G和判別器端加入額外的條件信息(additional information)來指導GAN兩個模型的訓練。
怎麼做:條件化(conditional)GAN做法就是直接把額外的信息(y)直接添加到生成器G和判別器D的的目標函數中,與輸入Z和X中構成條件概率,如下圖所示:
用於指導G和D訓練的額外信息可以是各種類型(multi-modal)的數據,已圖像分類為例,可以是label標籤,也可以是關於圖像類別或其他信息的text文本描述。
DCGAN:UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS.Alec Radford & Luke Metz.2016.01.07
解決什麼問題:把有監督學習的CNN與無監督學習的GAN整合到一起提出了Deep Convolutional Generative Adversarial Networks - DCGANs,是生成器和判別器分別學到對輸入圖像層次化的表示。
本文的最大貢獻:1、將CNN與GAN結合在一起提出了DCGANs,使用DCGANs從大量的無標記數據(圖像、語音)學習到有用的特徵,相當於利用無標記數據初始化DCGANs的生成器和判別器的參數,在用於有監督場景,比如,圖像分類。2、表示學習representation learning的工作:嘗試理解和可視化GAN是如何工作的,多層的GAN的中間表示intermediate representation 是什麼。3、給出了一些穩定訓練DCGANs的guidelines。
DCGAN的網路結構:
生成器構G的造:
四個堆疊的卷積操作來構成生成器G,沒有採用全連接層。
InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets.Xi Chen, Yan Duan, Rein Houthooft, John Schulman.2016.06.12
解決什麼問題:無監督學習或表示學習(representation learning)可以看做是從大量無標記數據中抽取有價值的特徵、或學習一種重要的隱特徵(semantic features)表示(representation)的問題。但無監督學習又是ill-posed,因為很多與無監督學習相關的下游的任務在訓練時是未知的,而務監督學習也是一種分離/拆解 表示(disentangled representation),有助於下游相關但未知任務的學習,因為disentangled representation可以學習到輸入樣本的salient attribute。無監督學習中最重要的的模型就是生成模型Generative model,比如,生成對抗網路GAN和變分自動編碼器()VAE。本文從disentangled representation角度出發,把信息理論(Information-theoretic)與GAN相結合提出InfoGAN,採用無監督的方式學習到輸入樣本X的可解釋且有意義的表示(representation)。
怎麼做:通過最大化隱變數(latent variable)的一個子集與observation之間的互信息
SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient.Lantao Yuy, Weinan Zhangy, Jun Wangz, Yong Yuy.2016.12.09
解決什麼問題:GAN:用一個判別模型D去指導生成模型G的訓練,在generating real-valued打他取得巨大成功,但處理的都是連續可導的數據,比如圖像,鮮有涉及離散數據,如文本。原因有兩個:其一,梯度從判別器D沒有辦法反向傳遞會生成器G,G離散不可導;其二,判別器D可以評測一個完整序列的score,但沒法評測只生成了一部分的partially sequence現在和未來的score。因此,本文提出SeqGAN解決這兩個問題。
怎麼做:借鑒了強化學習中的reward的思想,在判別器D端,通過一個完整的sequence序列構造一個reward反饋會生成器G來指導生成器G的訓練,通過RL中的策略梯度演算法(policy gradient method)來優化G的參數,繞過了上面兩個問題。
SeqGAN的結構:
StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks.Han Zhang, Tao Xu, Hongsheng Li, Shaoting Zhang.2016.12.10
解決什麼問題:根據text description生成圖像有很多應用場景,比如圖片輔助裁剪、計算機輔助設計等。但最大的問題是符合text描述的場景有很多(multi-modle),如何從中選擇最佳的場景,生成高清晰的圖片是個問題。本文基於GAN來做這個問題,原來方法只能生成64X64的low resolution圖片,本文使用Stack GAN生成了256X256的高清晰度圖片,並且在CUB和Oxford-102數據集取得了比現有方法分別高28.47%和20.30%的improvement,這真的很厲害,也展示了GAN的強大功能。
怎麼做:提出了一個堆疊的GAN模型用於「text-to-image」中生成高解析度的圖像,stack-1 GAN生成一張包含text文本所描述物體的初級形狀和基本顏色的,像素為64X64的低解析度圖片,stack-2 GAN 根據GAN-1輸出的低解析度圖片做為輸入,加上text文本描述,進一步rectify defects和添加一些細節信息,進行refinement過程後生成一張256X256的高解析度圖片。
Stack GAN的網路結構:
關鍵點在於Stack-GAN的兩個GAN做么構建,怎麼訓練
WGAN:Wasserstein GAN.Martin Arjovsky, Soumith Chintala, and Lon Bottou.2017.03.09
Improved Training of Wasserstein GANs.Ishaan Gulrajani1, Faruk Ahmed1, Martin Arjovsky2.2017.03.31
解決什麼問題:GAN在訓練很麻煩,需要精心設計生成器G和判別器D的網路結構,調整很多的超參數,經常不收斂。為了解決這個問題,讓GAN訓練起來更容易,本文提出了Wasserstein GAN(WGAN)。
怎麼做:深入分析由GAN所優化的值函數(value function)的收斂特性,指出傳統GAN不穩定是因為其基於Jensen-Shannon 差異(divergence)構造的值函數在某一地方不可導,導致生成器G訓練不穩定。因此,提出了Earth-Mover距離,又稱Wasserstein-1 距離W(q,p),基於Wasserstein distance來構造值函數,代替傳統GAN中基於Jensen-Shannon 差異(divergence)的值函數。Wasserstein distance具有更好的特性,Jensen-Shannon divergence可能不連續,在不連續的地方不能提供穩定的梯度用於生成器G的參數優化;相比之下,Earth-Mover距離處處連續,處處可導。
Jensen-Shannon距離與Wassertein距離對比:
WGAN的訓練演算法:
推薦閱讀:
※Character-based Joint Segmentation and POS Tagging for Chinese using Bidirectional RNN-CRF 閱讀筆記
※網路表示學習最新進展及其應用 | 直播預告·PhD Talk #10
※來自一個計算語言學的不完全指南
※KBQA: 基於開放域知識庫上的QA系統 | 每周一起讀
※記憶網路之在對話系統中的應用
TAG:深度学习DeepLearning | 生成对抗网络GAN | 自然语言处理 |