訓練GANs 實際上是一個找納什均衡的問題。可是找高維連續非凸問題的納什均衡點是很困難的。並且,在GAN的訓練中咱們一般是經過梯度降低法來最小化代價函數的,而不是去找納什均衡點,因此咱們常常會碰到沒法收斂的狀況。網絡
因此咱們提出了幾個有助於收斂的技術:ide
1.Feature matching(更好的分類效果)函數
生成器棄用了以前最大化判別器輸出的目標函數。具體化了生成器的目標函數,克服了以前的損失函數存在的過分訓練判別器後產生的問題。學習
生成器把判別器的中間層輸出做爲目標,儘可能使生成樣本的中間輸出和真實樣本的中間輸出類似。目標函數以下:優化
2.Minibatch discrimination(更好的視覺上的生成結果)spa
GAN的一個常見的失敗就是收斂到同一個點。這是由於判別器是對每個樣本單獨處理的,他們之間沒有聯繫,判別器也沒法告訴生成器它生成的樣本是否是類似的。生成器全部輸出都是朝着一個目標走的:讓判別器認爲它是真的 。3d
這裏咱們引入了side information,讓D可以看到更多的信息,從而能夠指導G它生成的樣本是否類似。orm
在判別器中加入以下結構:blog
xi是輸入向量(第i個樣本的特徵向量)。it
f(xi)是判別器中間層的輸出向量。
每一個樣本通過T以後都能獲得各自的矩陣Mi,計算當前樣本矩陣Mi中每行同其它各個樣本的Mj之間對應行的L1距離,並通過一個負指數獲得一系列的值,把每行對應的值加起來,最終獲得一個輸出向量。
把o(xi)和f(xi)連起來構成side information做爲下一層的輸入(這裏的o(xi)至關於CGAN中的conditional)。隨後的D仍舊是對單個樣本進行判別,可是用到了包含其餘樣本的信息。
3.Historical averaging
添加了一個正則化項:
:參數theta和它們過去時候的值有關。
有了這個正則化項,梯度不容易進入穩定軌道,可以繼續向均衡點更新。
對低維連續非凸問題處理的比較好。
4.One-sided label smoothing
判別器的目標函數中正負樣本的係數再也不是0-1,而是α和β。這樣最優判別器就變成了:
當Pdata接近0,Pmodel很大的時候,D(x)很小,優化時梯度信息太弱,所以負樣本beta取0;
5.Virtual batch normalization
BN存在的問題:輸入樣本x在神經網絡上的輸出會受到minibatch上其它樣本的影響。
文中提出了一種virtual batch normalization(VBN),會在訓練前提取一個batch,之後就根據這個batch作normalize,固然這樣計算開銷會稍微大點。
Semi-supervised learning
對於標準分類網絡,咱們的輸出是k個類別對應的機率。在這裏咱們藉助分類網絡進行無監督學習。咱們把生成樣本當成第K+1類,用x屬於k+1類的機率當作x爲假的機率。
loss function for training the classifier:
這裏的無監督過程至關於訓練一個GAN。
實驗結果
左邊feature matching,右邊minibatch discrimination。
分類預測結果:
、