學習筆記GAN003:GAN、DCGAN、CGAN、InfoGAN

​GAN應用集中在圖像生成,NLP、Robt Learning也有拓展。類似於NLP中的Actor-Critic。 https://arxiv.org/pdf/1610.01945.pdf

Generative Adversarial Nets。構建兩個網絡,一個G生成網絡,一個D區分網絡。訓練,G網絡loss log(1-D(G(z))),D網絡loss -(log(D(x))+log(1-D(G(z))),不是Cross Entropy。數據輸入,G網絡輸入noise。D輸入混合G輸出數據及樣本數據。

G網絡訓練,D(G(z))趨近於1,G loss最小。D網絡訓練 2分類,分清真實數據和生成數據,真實數據D輸出趨近1,生成數據輸出D(G(z))趨近0。

目標,生成數據分佈和實際分佈相同。D開始訓練,分類能力有限,有波動,初步區分實際數據和生成數據。D訓練較好,明顯區分生成數據,生成數據概率下降。G網絡提升,影響D分佈。G網絡不動,訓練D,訓練最優,Dg*(x)=pdata(x)/(pdata(x)+pg(x)) 。pg(x)趨近pdata(x),Dg*(x)趨近0.5,G網絡、D網絡處於平衡狀態。網絡訓練最終收斂到pg(x)=pdata(x)。

G、D同步訓練,G訓練一次,D訓練k次。D訓練同量輸入生成數據和樣本數據計算loss(不是cross entropy分開計算)。cross entropy使D(G(z))爲0,導致沒有梯度,無法更新G。GAN D(G(z))最終收斂到0.5。G網絡用RELU、sigmoid,D網絡用Maxout和dropout。-log(D(G(z)))代替log(1-D(G(z))),訓練開始加大梯度信息,整個GAN不是完美零和博弈。

GAN可以任意採樣,可以使用任意可微模型(任意神經網絡)。GAN生成圖像更Sharp,work更好,值得推廣。不好訓練。confitional GAN,半監督學習。

DCGAN,使用卷積神經網絡,實現有效訓練,拓展維度。去掉G網絡D網絡的pooling layer。在G網絡D網絡中使用Batch Normalization。去掉全連接隱藏層。G網絡最後一層用Tanh,其它層用RELU。D網絡每層用LeakyRELU。

DCGAN網絡模型:G網絡,100 z->fc layer->reshape->deconv+batchNorm+RELU(4)->tanh64X64。D網絡,版本1,conv+batchNorm+leakyRELU(4)->reshape->fc layer 1->sigmoid。D網絡,版本2,conv+batchNorm+leakyRELU(4)->reshape->fc layer 2->softmax。
G網絡4層反捲積,D網絡4層卷積。G網絡D網絡反結構。D網絡最終輸出,一種方法,sigmoid輸出0到1間單值作概率;另一種方法softmax輸出兩個值,真概率、假概率。
https://github.com/carpedm20/DCGAN-tensorflow
https://github.com/sugyan/tf-dcgan

GAN訓練後網絡特徵表達。DCGAN+SVM做fifar-10分類實驗。D網絡每層卷積通過4x4 grid max pooling 獲取特徵,連起來得28672向量,SVM,效果比K-means好。DCGAN用在SVHN門牌訓練,效果不錯。D網絡無監督學習到有效特徵信息。
G改變z向量,生成不同的圖片。z向量線性加減,輸出新圖像。z向量對應特別特徵。G網絡無監督學習特徵表達。
BEGAN生成超級逼真圖像。

CGAN(Conditional Generative Adversarial Nets)。數字字段生成,輸入數字,輸出對應字體。G網絡輸入 z連接輸入y。D網絡輸入 x連接y。minGmaxDV(D,G)=Ex~pdata[logD(x|y)]+Ez~pz(z)[log(1-D(G(z|y)))]。
GAN無監督變有監督,輸入分類,輸出圖像。
MNIST字體生成,圖像多標籤。MNIST字體生成,輸入數字,輸出對應字體。數字one hot處理,5 對應one hot [0,0,0,0,0,1,0,0,0,0]。和100維z向量串聯輸入。訓練調整z向量,改變輸出,解決多種輸出問題。輸出不同形狀字體。

InfoGAN,無監督CGAN。信息論,mutual information互信息。G網絡輸入z+c變量。c與G網絡輸出x 互信息最大化。神經網絡訓練c與輸出關係。mutual information定義: I(c,G(z,c))=Ec~p(c),x~G(z,c)[logQ(c|X)]+H(c)。H爲c的entropy熵,log(c)*c,Q網絡基於X輸出c。基於I,GAN訓練目標:minGmaxDV(D,G)=λI(c,G(z,c))。網絡改變:D網絡輸入只有x,不加c。Q網絡D網絡共享同一網絡,最後一層獨立輸出。

參考資料:
https://zhuanlan.zhihu.com/p/27012520

歡迎付費諮詢(150元每小時),我的微信:qingxingfengzi

我創建GAN日報羣,以每天各報各的進度爲主。把正在研究GAN的人聚在一起,互相鼓勵,一起前進。加我微信拉羣,請註明:加入GAN日報羣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章