GAN 結構總覽

生成對抗網路 (GAN) 包含兩個部分:

  • 產生器會學習產生合理的資料。產生的例項會成為判別器的負面訓練例項。
  • 鑑別器會學習如何區分產生器的假資料和真實資料。鑑別器會針對產生不合理結果的產生器處以罰分。

訓練開始時,產生器會產生明顯的假資料,而鑑別器會迅速學會辨別真偽:

三個資料欄分別標示為「產生的資料」、「判別器」和「實際資料」。在「產生的資料」下方,藍色矩形包含一條曲線和一個圓形。矩形是產生器第一次嘗試繪製美元鈔票時的失敗結果。在「實際資料」下方,有張真實的十元美金鈔票圖片。在「Discriminator」下方,有「FAKE」和「REAL」這兩個字詞。箭頭從「FAKE」一詞指向「Generated Data」下方的圖片。另一個箭頭則從「REAL」一詞指向「Real Data」下方的圖片。

隨著訓練的進行,產生器會越來越接近產生可欺騙鑑別器的輸出內容:

這張圖片在先前圖片的「Generated Data」、「Discriminator」和「Real Data」標題下方新增一列。「產生的資料」下方有一個綠色矩形,左上角有 10 的數字,以及簡單的臉部圖案。在「真實資料」下方,有張真實的 100 美元鈔票圖片。「Discriminator」(判別器) 下方是「FAKE」(假) 字樣,箭頭指向「Generated Data」(產生的資料) 下方的圖片;「REAL」(真) 字樣下方則有箭頭指向「Real Data」(真實資料) 下方的圖片。

最後,如果產生器訓練順利,鑑別器分辨真假圖片的能力就會變差。系統開始將假資料歸類為真實資料,準確度也會降低。

這張圖片在先前第一張圖片的「Generated Data」、「Discriminator」和「Real Data」標題下方新增一列。在「產生的資料」下方,有張二十元美金鈔票的圖片。「Real Data」下方有張二十元美金鈔票的圖片。「Discriminator」(判別器) 下方是「REAL」(真實) 字樣,箭頭指向「Generated Data」(產生的資料) 下方的圖片,以及「REAL」(真實) 字樣,箭頭指向「Real Data」(真實資料) 下方的圖片。

以下是整個系統的相片:

生成對抗網路的圖表。圖表中央的方塊標示為「discriminator」。兩個分支會從左側進入這個方塊。頂層分支從圖表左上方的圓柱開始,圓柱標示為「真實世界圖片」。箭頭從這個圓柱指向標示為「Sample」的方塊。從「Sample」方塊發出的箭頭,會流入「Discriminator」方塊。底部分支會饋送至「Discriminator」方塊,該方塊的開頭方塊標示為「Random Input」。箭頭從「隨機輸入」方塊指向標示為「產生器」的方塊。箭頭從「Generator」方塊指向第二個「Sample」方塊。箭頭從「Sample」方塊指向「Discriminator」方塊。在「Discriminator」方塊的右側,箭頭會指向一個方塊,其中包含綠色圓圈和紅色圓圈。方塊上方會顯示綠色的「Real」字樣,方塊下方則會顯示紅色的「False」字樣。從這個方塊延伸出兩個箭頭,指向圖表右側的兩個方塊。一個箭頭指向標示為「Discriminator loss」的方塊。另一個箭頭則指向標示「Generator loss」的方塊。

產生器和鑑別器都是神經網路。產生器輸出端直接連接至判別器輸入端。透過反向傳播,判別器的分類會提供信號,讓產生器用來更新權重。

讓我們進一步說明這個系統的各個部分。