GAN 有許多常見的故障模式。所有這些常見問題都是我們積極研究的領域。雖然這些問題都尚未完全解決,但我們會提及一些使用者嘗試過的做法。
消失的漸層
根據研究,如果判別器太好,產生器訓練可能會因消失的梯度而失敗。實際上,最佳化判別器無法提供足夠資訊,讓產生器有所進展。
嘗試修正
- Wasserstein 損失:Wasserstein 損失的設計目的是避免梯度消失,即使您訓練判別器至最佳狀態也一樣。
- 修改後的 minimax 損失函式:原始 GAN 論文提出了修改 minimax 損失函式的做法,以處理消失的梯度。
模式收合
通常您會希望 GAN 產生多種輸出內容。舉例來說,您希望臉孔產生器針對每個隨機輸入內容產生不同的臉孔。
不過,如果產生器產生的輸出內容特別可信,產生器可能會學習只產生該輸出內容。事實上,產生器會盡可能找出對辨別器而言最合理的輸出內容。
如果產生器開始一再產生相同的輸出內容 (或一小組輸出內容),判別器的最佳策略就是學習如何一律拒絕該輸出內容。不過,如果下一個分類器世代卡在局部最小值,且未找到最佳策略,則下一個產生器迭代作業很容易為目前的分類器找到最合理的輸出內容。
產生器的每個迭代都會針對特定判別器進行過度最佳化,而判別器永遠無法學會如何擺脫陷阱。因此,產生器會輪流產生少數幾種輸出類型。這種 GAN 失敗形式稱為「模式崩潰」。
嘗試解決
下列方法會嘗試強制產生器擴大範圍,藉此避免產生器針對單一固定的判別器進行最佳化:
- Wasserstein 損失:Wasserstein 損失可讓您訓練判別器,以達到最佳化,同時不必擔心梯度消失的問題,進而緩解模式崩潰。如果判別器不會卡在本機最小值,就會學習拒絕產生器穩定運作時的輸出內容。因此,產生器必須嘗試新事物。
- Unrolled GANs:Unrolled GANs 使用產生器損失函式,不僅納入目前判別器的分類,也納入未來判別器版本的輸出內容。因此,產生器無法針對單一區別符進行過度最佳化。
無法收斂
如訓練模組所述,GAN 經常無法收斂。
嘗試修正
研究人員嘗試使用各種形式的正規化來改善 GAN 收斂,包括:
- 在判別器輸入中加入雜訊:請參閱「Toward Principled Methods for Training Generative Adversarial Networks」。
- 懲罰鑑別器權重:請參閱「透過正規化穩定訓練生成對抗網路」一文。