GANs
GANs(Generative Adversarial Networks),生成對抗網絡,由Ian Goodfellow 提出。
Yann Lecun評價“the most insteresting idea in the last 10 years in ML”。
下面以圖檔識别來簡單解釋一下GANs的博弈過程。
GANs同時訓練兩個網絡。第一個網絡記作判别器(Discriminator),對輸入的圖檔進行判定,輸出一個scala,值在(0,1)之間。趨近1表示判定為自然采集(real)的圖檔的可能性更大;趨近0表示第二個網絡,也就是生成器(Generator),生成(fake)的可能性更大。Disciminator的目标是準确判别出哪些是real的圖檔,哪些是fake的圖檔。第二個網絡,Generator,輸入是一個簡單的機率分布的向量(例如:100維的高斯分布的向量),輸出是一張圖檔。Generator的目标是讓Discriminator判定其為real。
上述的流程可以用下面的公式來定義:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9MGVORTQE5kerpWTmZEWjZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DN4MTNyIDNzITMxYDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
換句話說,Discriminator目标是最大化上式。對于Discriminator來說:
1.對于real圖檔,使其輸出的scala盡量趨近于1(第一項)
2.對于fake圖檔,使其輸出的scala盡量趨近于0(第二項)
而對于Generator來說,目标是最小化上式:
完善自身生成的圖檔,試圖欺騙Discriminator,使Discriminator對其生成的圖檔判别趨近1
整個過程就是Discriminator和Generator通過和對方博弈同時完善自身的網絡結構的欺騙與反欺騙動态過程,最重要的是在這個過程中雙方都能通過博弈進步。
DCGAN
DCGAN,Deep Convolutional GAN,顧名思義,使用卷積網絡(此處卷積網絡包括卷積和反卷積【反卷積介紹見這篇博文】兩種操作)作為Generator和Discriminator的網絡結構,主要用途生成圖檔和圖檔分類等。
Generator,主要操作是反卷積,用來生成圖檔示意圖如下:
Discriminator,主要操作卷積,用來判定圖檔示意圖如下:
DCGAN的來源的網絡結構設計來自這篇論文Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks,下一篇博文會詳細記錄論文中網絡結構,超參數設定,參數更新方式等細節,同時會重制論文的模型更新在github上。
歡迎交流~