文章目錄
- 前言
- 1 Generation
- 2 Generative Adversarial Network (GAN)
-
- Generator
- Discriminator
- Basic Idea of GAN
- Algorithm
- 結果展示
- 總結
前言
之前老早就聽說了GAN,然後對這個方法還不是很了解,想在今後的論文中應用它。是以來學習下李宏毅講的GAN,記個筆記。視訊位址
1 Generation
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiNx8FesU2cfdGLwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxiZ5JWNz0CT2A1QiVzM2IWNSNkY18WcMVTQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLmNDZxATM4MmNhRTOkNTO5gDNwQzYyMDZkFWNkFmM0UzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
之前的神經網絡的模型大多是給定x,然後通過Nertwork來給定一個y。
但是Generation是給定X和一個簡單分布的Z(如高斯分布),然後通過Network 給出一個y的分布,此時這個Network就叫做Generator。
為什麼我們需要一個關于y的分布結果,主要是用于有創造力的工作。
(李老師老二次元了QAQ)
2 Generative Adversarial Network (GAN)
Generator
首先通過例子來引出GAN,李老師舉的例子是動漫人物臉的生成。首先是Generator:
其中的Unconditional generation指的是不用前文提到的x,而隻用z的部分來生成y。這裡其實生成的y就是一個高緯的向量(如64x64x3),而一張圖檔剛好就是一個高緯的向量,然後稍微的整理一下就行了。
z通常是一個低緯度的向量,次元一般是自己定義的。然後圖中是通過Normal Distribution的方式來采樣得到z的,然後generator根據不同的z生成不同的y。至于是要采用Normal Distribution 還是Guass Distribution,不同的Distribution都可以,雖然有差異,但是隻要保證你的Generator能夠識别這樣的分布就行了。
Discriminator
然後就是Discriminator:
Discriminator是一個評判者,這裡的輸入是一張圖檔,然後輸出是對這個圖檔的真實性的一個打分。是以Discriminator是一個神經網絡,是一個函數,模型是自己定義的。
下面就是舉的例子,打分越高說明圖檔更像是動漫人物。
Basic Idea of GAN
枯葉蝶和波波鳥之間的一種互相進化的思想。
比如第一代Generator先是産生的任意的圖檔,然後第一代Discriminator如發現這些圖像沒有眼睛。然而第二代的Generator要做的就是産生有眼睛的圖像然後騙過第一代的Discriminator。然後第一代的Discriminator也會進化,比如發現了還有頭發等。然後第三代Generator就産生頭發來騙過第二代的Discriminator,如此循環往複,直到Generator産生很像動漫人物的圖像。
Adversarial:這裡應該說,Generator和Discriminator是亦敵亦友的關系。
Algorithm
第一步:固定Generator的參數,訓練Discriminator的參數。主要的方式就是通過Generator産生的圖像和本身擁有的Darabase的圖像來訓練Discriminator.,主要是讓Discriminator學會給真實的圖像打高分,給虛假的圖像打低分。比如像圖中那樣,真實的都标記為1,假的都标記為0。那麼就可以用分類或者回歸的方式來解決這個問題。
第二步:固定Discriminator的參數,訓練Generator的參數。簡單來說可以把Generator和Discriminator兩個網絡合成一個網絡,輸入就是如Normal Distribution采樣的向量,輸出的是一個打分。目的就是最大化打分,隻是說這裡隻更新Generator的參數。
形象的說就是讓Generator去騙過Discriminator。
接下來就是不斷的重複上述的過程。
結果展示
李老師做的:
李老師助教做的:
2019 StyleGAN
生成不存在的人:
産生不存在的其他東西
總結
本文隻是介紹了GAN的基本概念,介紹了GAN的一些基本思想。值得一說的是,不管是Generator還是Discriminator,它們都是神經網絡,至于定義成什麼樣的架構,什麼樣的結構需要我們自己來把握。下一篇将介紹一些相關的理論。