鑑別器

GAN 中的鑑別器只是分類器。它會嘗試將實際資料與產生器建立的資料區分開來。它可以使用任何網路架構,以便根據所分類的資料類型進行分類。

生成對抗網路的圖表。圖表中央的方塊標示為「discriminator」。兩個分支會從左側進入這個方塊。頂層分支從圖表左上方的「真實世界圖片」方塊開始。箭頭從這個圓柱指向標示為「Sample」的方塊。從「Sample」方塊發出的箭頭,會流入「Discriminator」方塊。底部分支會饋送至「Discriminator」方塊,該方塊的開頭方塊標示為「Random Input」。箭頭從「隨機輸入」方塊指向標示為「產生器」的方塊。箭頭從「Generator」方塊指向第二個「Sample」方塊。箭頭從「Sample」方塊指向「Discriminator」方塊。在「Discriminator」方塊的右側,兩個箭頭會連往圖表右側的兩個方塊。一個箭頭指向標示為「Discriminator loss」的方塊。另一個箭頭則指向標示「Generator loss」的方塊。在判別器方塊和判別器損失方塊周圍,會繪製標示左向箭頭和「Backpropagation」字詞的黃色方塊,表示反向傳播會在黃色方塊所圈出的系統部分運作。

圖 1:鑑別器訓練中的反向傳播。

鑑別器訓練資料

判別器的訓練資料來自兩個來源:

  • 實際資料示例,例如真實人物的相片。在訓練期間,判別器會將這些例項用作正面示例。
  • 產生器建立的假資料例項。鑑別器會在訓練期間使用這些例項做為負面示例。

在圖 1 中,兩個「Sample」方塊代表這兩個資料來源,會饋送至判別器。在鑑別器訓練期間,產生器不會進行訓練。其權重會保持不變,同時產生範例供判別器訓練。

訓練鑑別器

判別器會連結至兩個 loss 函式。在鑑別器訓練期間,鑑別器會忽略產生器損失,只使用鑑別器損失。我們會在產生器訓練期間使用產生器損失,詳情請參閱下一節

在鑑別器訓練期間:

  1. 鑑別器會將產生器產生的真實資料和假資料分類。
  2. 辨別器損失會對辨別器處以罰分,因為辨別器將真實例項誤分為假,或將假例項誤分為真。
  3. 鑑別器會透過鑑別器網路,從鑑別器損失中反向傳播更新權重。

在下一節中,我們將說明為何產生器損失會連結至判別器。