DCGAN

DCGAN對卷積神經網絡的結構作了一些改變,以提升樣本的質量和收斂的速度,這些改變有:網絡

  • 取消全部pooling層。G網絡中使用轉置卷積(transposed convolutional layer)進行上採樣,D網絡中用加入stride的卷積代替pooling。ide

  • 在D和G中均使用batch normalization(讓數據更集中,不用擔憂太大或者過小的數據,能夠穩定學習,有助於處理初始化不良致使的訓練問題,也有助於梯度流向更深的網絡,防止G崩潰。同時,讓學習效率變得更高。)函數

  • 去掉全鏈接層,而直接使用卷積層鏈接生成器和判別器的輸入層以及輸出層,使網絡變爲全卷積網絡學習

  • G網絡中使用ReLU做爲激活函數,最後一層使用tanh優化

  • D網絡中使用LeakyReLU做爲激活函數spa

DCGAN中的G網絡示意:orm

 

對於BNblog

  (1)把BN用到每一層會致使樣本震盪和模型不穩定,不要把BN用到生成器的輸出層和判別器的輸入層。io

  (2)直接用 batch norm 多是有問題的。同一批(batch)裏面的數據太過類似,對一個無監督的 GAN 而言,很容易被帶偏而誤認爲它們這些數據都是同樣的。也就是說,最終的生成模型的結果會混着同一個 batch 裏好多其它特徵。這不是咱們想要的形式。能夠用RBN或者VBN克服。ast

Reference Batch Norm

  取出一批數據(固定的)看成咱們的參照數據集 R。而後把新的數據 batch 都依據 R 的平均值和標準差來作規範化。

  這個方法也有一些問題:若是 R 取得很差,效果也不會好。或者,數據可能被 R 搞得過擬合。換句話說:咱們最後生成的數據可能又都變得跟 R 很像。

Virtual Batch Norm

  這裏,咱們依舊是取出 R,可是全部的新數據 x 作規範化的時候,咱們把 x 也加入到 R 中造成一個新的 virtual batch V。並用這個 V 的平均值和標準差來標準化 x。這樣就能極大減小 R 的風險。

 

DCGAN對抗訓練細節

  訓練圖像除了縮放到tanh激活函數的[-1,1]範圍以外沒有通過其餘的預處理。全部的模型都是經過小批量隨機梯度降低法(mini-batch stochastic gradient descent)進行訓練的, 小批量的大小是 128。 全部權重的初始化爲均值爲 0 和方差爲 0.02的正態分佈。在LeakyReLU, 全部模型的leak的斜率設置爲0.2。以前的 GAN是使用momentum加快訓練速度,DCGAN是使用Adam優化程序調整超參數。建議使用的學習率是0.001,過高的話使用0.0002代替。此外,動量項beta1在建議的0.9訓練動盪且不穩定,但下降到0.5是有利於模型的穩定。

相關文章
相關標籤/搜索