前面幾天我們介紹的Autoencoder以及相關變體並實作出來,而今天我們要進入我們第二個主題—生成對抗網路(GAN),而之後也會分享相關變體的介紹與實作,那我們廢話不多說,正文開始!
GAN(Generative Adversarial Network,生成對抗網絡)是一種深度學習模型,由Ian Goodfellow和他的同事於2014年提出,並快速的發展,以下是每年新出現的GAN數量
圖源:gan zoo
與Autoencoder不同,GAN的核心思想是由兩個互相競爭的神經網絡組成,分別是生成器與判別器,接下來就分別介紹這兩個是甚麼吧!
生成器與判別器的關係就好比偽造畫的藝術家以及鑑定人員,藝術家必須想辦法讓偽造的作品越逼真越好,而鑑定人員則需要想辦法分辨出哪個是偽造的。
以下是GAN的流程圖
圖源:github
一開始生成器完全不懂,所以先使用隨機的噪聲生成圖片,在讓判別器進行辨識始,而判別器也會表現得不太好,因為它還不知道如何區分真實和假的數據。
訓練方式為兩者輪流訓練,如當生成器在訓練時,判別器就暫停訓練,單純輸出結果
經過幾輪訓練後,生成器會生出更逼真的假貨,而判別器則會提升辨識的能力,雙方都會為了勝過對方而不斷進步
GAN的目標是最小化生成器和判別器之間的差異。生成器的損失是它生成的數據被判別器誤認為是假數據的概率,而判別器的損失則是其對真實和假數據的分辨能力。這兩個損失相互競爭,稱為對抗損失。
生成器和判別器通過反向傳播算法進行參數更新,以最小化各自的損失。生成器努力生成更逼真的數據,而判別器努力提高分辨真假的能力。
除了基本的生成對抗網絡(GAN),還有許多變種和改進版本的GAN,每個都有不同的架構和目的,詳情可以去看Github的gan zoo,裡面有各式各樣的GAN
以下是一些常見的GAN變種:
以上就是今天稍微介紹GAN的內容啦,明天將會分享GAN的Autoencoder的關聯性與差異性,那我們明天見!