Generative Adversarial Network 筆記文章整理
1102 機器學習
Deep Learning 總整理這篇文章是學習時整理的一些筆記,讓自己複習時方便,文章內容為閱讀清單及上課內容之整理
Generative Adversarial Network
GAN是非監督式學習方式的一種,它由兩個網路構成,分別是鑑別網路(Discriminating Network)與生成網路(Generative Network),透過兩者相互對抗產生學習的運作原理。
簡單做個比喻:GAN是一場鑑定師與仿畫家的比賽,仿畫家畫出假畫讓鑑定師評斷有多接近真品,根據評斷結果再繼續畫出比原本更好的作品,鑑定師也會透過不斷練習提升鑑定水準,最後比賽的結果就是一幅幾可亂真的機器畫。
深度學習中還有其他許多神經網路,例如適合處理空間資料的卷積神經網路(Convoulutional Neural Network)、擅長處理時間序列與語意結構判斷的循環神經網路(Ruccurent Neural Network)等,而生成對抗網路也可以與前兩者結合(或者其他更多不同的網路),讓應用範圍更加廣泛,具備其他神經網路沒有的「競爭」特性,也使它成為深度學習的一顆閃亮新星。
GAN flow chart
Discriminator Network
我們把Generator出來的圖標記為0(fake image),然後把真實的圖標記為1,這樣的training data 丟進我們的Discriminator Network做訓練,這就是每一次Discriminator訓練的步驟了
Generator Network
生成器網路就是要訓練出一個網路可以讓Discriminator分辨出來的結果越接近真實(1)的結果越好
我們可以把Generator + Discriminator看成是一個大的Neural Network,假設生成器是前5層的Neural,鑑定器是後5層的Neural,然後這個10層的Neural Network 預估出來的值越接近1越好,但是這裡我們只更新 Generator 的權重, Discriminator 的權重要保留,這樣才可以用更新後 Generator 出來的假圖在 Discriminator 上的值越接近真實的結果。
接下來介紹幾個GAN的應用~
Auxiliary Classifier GAN
一個圖像合成方法,他可以保留原影像的部分特徵,並且將這些特徵轉亂到其他類別,像是可以保留笑臉的特徵,使不同人的照片都有這種笑臉,詳細介紹指路👉https://xiaosean5408.medium.com/ac-gan%E7%B0%A1%E4%BB%8B-conditional-image-synthesis-with-auxiliary-classifier-gans-451975a62e55
CycleGAN
Cycle gan 是個可以用來產生不同風格或材質轉換的一個神經網路,主要應用在影像對影像的變換
Cycle gan 的想法是將 A domain (例如馬) 的影像轉成 B domain (例如斑馬),因為是 unsupervised learning 所以不好保證效果,但可以再從 B domain (例如斑馬) 的圖轉回 A domain (例如馬),轉回的還原圖要跟原本給的 input 越像越好,類似於 auto-encoder 的概念,以下是架構圖 reference
看起來有點驚人(是在樂高?),但實際上就只是兩個網路的結合,分別是
把 A(馬)轉成 B(斑馬)再轉回 A(馬),把 B(斑馬)轉成 A(馬)再轉回 B(斑馬)。附帶說明上面的示意圖看起來是上下兩個架構,但實際上這兩個是同一個架構,注意 Discriminator A、B、Generator A2B、B2A 都是同一個人,只是整個網路在不同時間點有不同的 input 跟 output,所以總共是兩個 generator (產生假A、假B),兩個 discriminator (分辨 A/假A、B/假B) reference
DR-GAN (disentangled represenntation learning GAN)
在人臉識別領域中,兩張臉之間的角度差異是一個關鍵的挑戰,DRGAN提出一種能學到一種憾事無關的人臉特徵,將臉部的pose信息中從人臉中分離出去,這樣用於識別時特徵提取就可以適用於各種角度,可用於融合兩張人臉或是旋轉人臉。