產生器

GAN 的產生器部分會納入歧視者的意見回饋,藉此學習如何建立假資料。同時,這個做法會學習如何讓歧視器將輸出內容分類為真實類別。

與訓練器訓練相比,產生器訓練器必須整合產生器和歧視器。訓練產生器的 GAN 部分包括:

  • 隨機輸入
  • 產生器網路,可將隨機輸入內容轉換為資料執行個體
  • 歧視網路,可將產生的資料分類
  • 歧視輸出內容
  • 發電機損失,導致發射器無法剝離歧視者

生成對抗網路的圖表。圖表中央是標示為 'discriminator' 的方塊。兩個分支版本則會從左側往這個方塊中。上方分支版本位於圖表左上角,並標示「'real world 圖片'」方塊。一個箭頭從這個圓形指向另一個標示為「#39;Sample'」的方塊。標示「'Sample'」方塊的箭頭,指向「#39;Discriminator'」方塊。底部分支部分會送入 'Discriminator' 方塊,開頭為「'Random Input'」。一個箭頭從「#39;Random Input'」方塊引進,以標示為「##9;Generator'」的方塊。箭頭從「#39;Generator'」方塊導向第二個「##9;Sample'」方塊。一個箭頭從「##9;Sample'」方塊指向「##9;Discriminator」方塊。在「##9;Discriminator'」方塊右側,兩個箭頭指向圖表右側的兩個方塊。其中一個箭頭會導向一個標示為「##39;Discriminator Loss'」的方塊。另一個箭頭會導向標示為「##39Generator Loss'」的方塊。以向左箭頭標示為「'Backpropagation'」的黃色方塊被繪製在「#&

圖 1:產生器訓練中的反向傳播問題。

隨機輸入

類神經網路需要某種形式的輸入。我們通常會輸入要處理的資料,例如想要分類或進行預測的執行個體。不過,我們使用哪個網路做為輸入內容,以輸出全新的資料執行個體?

在最基本的格式中,GAN 會隨機輸入噪音。產生器會將此雜訊轉換為有意義的輸出內容。藉由導入噪音,我們便可讓 GAN 產生各種資料,並從目標分佈的不同位置取樣。

實驗顯示,噪音的分配並不重要,因此我們可以選擇易於取樣的內容,例如統一分佈。為方便起見,取樣雜訊的空間通常小於輸出空間的尺寸。

使用離散器訓練產生器

為了訓練類神經網路,我們修改了淨權重,以減少輸出的錯誤或損失。不過,在 GAN 中,產生器不會直接連線至我們影響的損失。產生器會傳入歧視網路中的網路,而磁碟化工具會產生我們試圖影響的輸出。發電機損失會對發電機產生懲處,以產生歧視器網路歸類為假的樣本。

此額外的網路區塊必須包含在反向傳播中。「反向傳播」會計算權重對輸出內容的影響,以正確的方向調整每個權重,變更權重後,輸出內容會有什麼變化。但產生器權重會受到其影響的權重影響的影響。因此,反向傳播作業從輸出開始,然後透過歧視器送回產生器。

同時,我們並不希望歧視者在產生器訓練期間有所變更。如果試著達到移動目標,產生器的硬性問題就更難了。

因此,我們是透過下列程序訓練產生器:

  1. 隨機噪音樣本。
  2. 從取樣的隨機雜訊產生產生器輸出內容。
  3. 取得歧視器「真實」或「假」分類機制。
  4. 計算歧視者分類的損失。
  5. 透過反向歧視和產生器通過反向傳播,以取得漸層。
  6. 使用梯度僅變更產生器的權重。

這是產生器產生器的疊代作業。在下一節中,我們會說明如何切換產生器和歧視器的訓練。