以下內容純屬經驗之談,無公式推斷!部分內容源自其他博客或課程,並已標注來源。
問題篇[1]
1.模式崩潰
在某個模式(mode)下出現大量重復樣本,如左圖中,生成的樣本分布靠得很近,較聚集,可視化如右圖,表現為生成多個相同或相似度很高的樣本,缺乏多樣性。

2.模式丟失
顧名思義,某些模式(mode)沒有,同樣缺乏多樣性,雖然生成的樣本已經盡可能擬合真實分布,分布也不聚集,但是存在某些模式的丟失,例如下圖中人物,除了膚色變化,人物沒有任何變化。

設計篇
1.在上采樣階段,慎用transpose2d,推薦使用upsample + conv2d組合,如下圖所以,利用transpose2d上采樣得到的生成圖像,存在“方形格子”,生成的圖像不平滑。

(a)輸入圖像 (b)transpose2d上采樣生成圖像
2.一些博客提到輸入網絡前將圖像縮放到(-1,1),最后一次添加Tanh()激活層將輸出映射到(-1,1),在保存結果和可視化時需要(image+1)/2縮放到(0,1).【2】
3. 采樣cycleGAN類似結構可以學到圖像的解耦的表示,可用於表情編輯、圖像風格遷移等(異父異母的三胞胎:CycleGAN, DiscoGAN, DualGAN[3])。

4.[4]中提到的(1)利用推土機距離替代JS散度;(2)TTUR:低速(小學習率)更新生成器,高速更新判別器;(3)梯度懲罰;(4)譜歸一化;(5)單側標簽平滑等
訓練篇
1.當生成器損失從很大的值迅速變為0,而判別器損失維持不變。
有可能時生成器生成能力較弱,因此一種可行的方法是增加生成器的層數來增加非線性。
2.某些文獻采用生成器與判別器交叉訓練的方法,即先訓練判別器,再訓練生成器,其目的是先訓練判別器並更新其參數,先讓其具有較好判別能力,而在訓練生成器時因為判別器已具有一定判定能力,生成器的目的是盡可能騙過判別器,所以生成器會朝着生成更真實的圖像前進;也可以采用先訓練生成器,再訓練判別器,但是此種訓練方法不推薦;同時也可以采用先更新生成器或判別器多次,再更新另一個一次的方法。
3. 生成器損失、判別器損失,其中一個很大或者逐漸變大,另一個很小或者逐漸變小。
為什么GAN的Loss一直降不下去。GAN到底什么時候才算收斂?其實,作為一個訓練良好的GAN,其Loss就是降不下去的。衡量GAN是否訓練好了,只能由人肉眼去看生成的圖片質量是否好。不過,對於沒有一個很好的評價是否收斂指標的問題,也有許多學者做了一些研究,后文提及的WGAN就提出了一種新的Loss設計方式,較好的解決了難以判斷收斂性的問題。下面我們分析一下GAN的Loss為什么降不下去? 生成器和判別器的目的相反,也就是說兩個生成器網絡和判別器網絡互為對抗,此消彼長。不可能Loss一直降到一個收斂的狀態。[5] 對於生成器,其Loss下降快,很有可能是判別器太弱,導致生成器很輕易的就"愚弄"了判別器。 對於判別器,其Loss下降快,意味着判別器很強,判別器很強則說明生成器生成的圖像不夠逼真,才使得判別器輕易判別,導致Loss下降很快。 也就是說,無論是判別器,還是生成器。loss的高低不能代表生成器的好壞。一個好的GAN網絡,其GAN Loss往往是不斷波動的。 ———————————————— 版權聲明:本文為CSDN博主「alanjia163」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/qq_35290785/article/details/90247938
參考
[1] 李宏毅GAN開放課程
[2]GAN訓練心得
[3] 異父異母的三胞胎:CycleGAN, DiscoGAN, DualGAN
https://zhuanlan.zhihu.com/p/26332365
[4] GAN性能不穩?這九大技術可“鎮住”四類缺陷
[5] https://blog.csdn.net/qq_35290785/article/details/90247938
