GAN 的產生器部分會透過整合鑑別器的意見回饋,學習如何建立假資料。它會學習讓判別器將輸出內容分類為真實。
產生器訓練需要產生器和鑑別器之間的整合程度,比鑑別器訓練更為緊密。GAN 訓練產生器的部分包括:
- 隨機輸入
- 生成器網路,可將隨機輸入內容轉換為資料例項
- 判別網路,用於分類產生的資料
- 鑑別器輸出
- generator loss,這是針對產生器未能欺騙判別器而處以懲罰
圖 1:產生器訓練中的回傳。
隨機輸入
類神經網路需要某種形式的輸入內容。通常我們會輸入要處理的資料,例如要分類或預測的例項。不過,如果要輸出全新資料例項的網路,我們要使用什麼做為輸入內容?
在最基本的形式中,GAN 會將隨機雜訊做為輸入內容。產生器會將這項雜訊轉換為有意義的輸出內容。透過引入雜訊,我們可以讓 GAN 產生各種資料,從目標分布的不同位置取樣。
實驗結果顯示雜訊的分布並無太大影響,因此我們可以選擇容易取樣的項目,例如均勻分布。為方便起見,雜訊取樣空間的維度通常會比輸出空間的維度小。
使用鑑別器訓練產生器
為了訓練神經網路,我們會變更網路的權重,以減少輸出的錯誤或損失。不過,在我們的 GAN 中,產生器並未直接連結至我們試圖影響的損失。產生器會饋送至辨別器網路,而辨別器會產生我們嘗試影響的輸出內容。產生器損失會對產生器處以罰分,因為產生器產生的樣本遭到辨別器網路歸類為假。
這個額外的網路區塊必須納入反向傳播。反向傳播會計算權重對輸出內容的影響,藉此調整各權重方向,也就是在變更權重時,輸出內容會如何變化。不過,產生器權重所造成的影響,取決於它所饋入的判別器權重所造成的影響。因此,反向傳播會從輸出開始,並透過判別器流回至產生器。
同時,我們也不希望鑑別器在產生器訓練期間發生變化。嘗試命中移動中的目標,會讓產生器更難解決難題。
因此,我們會按照以下程序訓練產生器:
- 隨機雜訊樣本。
- 從取樣的隨機雜訊產生產生器輸出內容。
- 取得產生器輸出的「Real」或「Fake」區別器分類。
- 計算來自判別器分類的損失。
- 透過鑑別器和產生器進行回傳,以便取得漸層。
- 使用漸層效果,只變更產生器的權重。
這是產生器訓練的一個疊代。在下一節中,我們將說明如何同時訓練產生器和判別器。