何謂 Generative adversarial Networks(GANS) 生成式對抗網路?
前言
Generative adversarial Networks(GANs)又稱之為生成是對抗網路,主要是由兩個 CNN 所組合而成的神經網路, 其中有兩個組件,Generator 與 Discriminator。 GANs 就像是一組問答系統ㄧ樣,由 Generator 不斷去問問題,接著讓 Discriminator 回答問題。在原本的論文當中,是使用警察跟罪犯的關係作為類比。故事當中,罪犯不斷製造假鈔來欺騙警察的眼睛,每被識破一次,就會重新調整製造假鈔的技術,久而久之,就有辦法製造出足以欺騙能力不夠或是大多數警察的法眼。
應用範圍
GANs 因為具有自我學習的特性,最先拿來用在學習畫畫這件事情上面,讓 AI 本身學會怎麼繪製名畫家風格,例如:莫內, 畢卡索等,延伸應用還包括 Domain 轉換,例如把馬變成斑馬等。
兩大組件介紹 Generator 與 Discriminator
Generator
誠如一開始所言,Generator 就像是一個不斷想瞞過警方的假鈔製造者,他會先從全部都是雜訊的資料開始學習起來,慢慢的去找出符合的特徵值,而特徵值的學法語參數的調整,則來自 Discriminator 的回饋。實務上為反向的 CNN,輸入的資料一開始為 Random Noise。
Discriminator
Discriminator 就是負責驗證假鈔的警察,負責說這張假鈔的真偽。在架構中就變成回傳可用的參數給 Generator 了。實務上為常見的 CNN。
運作方式
整體架構中的兩個組件在工作上是有次序性的
- Discriminator 拿 50%真實資料和50%假資料來訓練,就如同經典的 CNN 一樣的訓練過程,在圖片中找尋 feature,每經過一次 epoch,辨識效果會越來越好。
- 在經過一次訓練 Discriminator 之後,我們將 Discriminator 中的參數 Freeze 起來。
- Generator 丟入 Random Noise,接著產出某張圖片,將之丟入 discriminator 中,同時將之標記為 True image,然後 gradient descent 後的結果回傳到 Generator。
- 重複 1~3 步驟,即為整體 GANs 運作過程
- 口訣:訓練哪邊, 就凍另一邊。
結論
GANs 就像是問答系統,亦敵亦友的概念,一個人負責蕾肖威,另一個則負責說這和不合理,這是一個 零和遊戲(zero-sum game)。