獨家 | GAN大盤點,聊聊這些年的生成對抗網路 : LSGAN, WGAN, CGAN, infoGAN, EBGAN, BEGAN, VAE
訓練”穩定”,樣本的”多樣性”和”清晰度”似乎是GAN的 3大指標 — David 9
VAE與GAN
聊到隨機樣本生成, 不得不提VAE與GAN, VAE用KL-divergence和encoder-decoder的方式逼近真實分佈. 但這些年GAN因其”端到端”靈活性和隱式的目標函式得到廣泛青睞. 而且, GAN更傾向於生成清晰的影象:
VAE與GAN生成對比
GAN在10次Epoch後就可以生成較清晰的樣本, 而VAE的生成樣本依舊比較模糊. 所以GAN大盤點前, 我們先比較一下VAE與GAN的結構差別:
VAE與GAN結構比較
VAE訓練完全依靠一個假設的loss函式和KL-divergence逼近真實分佈:
GAN則沒有假設單個loss函式, 而是讓判別器D和生成器G之間進行一種零和博弈, 一方面, 生成器G要以生成假樣本為目的(loss評估), 欺騙判別器D誤認為是真實樣本:
另一方面, 判別器D要以區分真實樣本x和假樣本G(z)為最終目的(loss評估):
一般, 判別器D在GAN訓練中是比生成器G更強的網路, 畢竟, 網路G要從D的判別過程中學到”以假亂真”的方法. 所以, 很大程度上, G是跟著D學習的.
當然, 生成對抗網路也有一些問題, 比如經常很難訓練(DCGAN試圖解決), 有時候(特別是高畫素影象), GAN生成影象不清晰, 還有時候, 生成圖片多樣性太差(只是對真實樣本的簡單改動).
這些問題, 催生出近年來各種有意思的GAN改進演算法:
LSGAN(最小二乘GAN)
傳統GAN中, D網路和G網路都是用簡單的交叉熵loss做更新, 最小二乘GAN則用最小二乘(Least Squares) Loss 做更新:
選擇最小二乘Loss做更新有兩個好處, 1. 更嚴格地懲罰遠離資料集的離群Fake sample, 使得生成圖片更接近真實資料(同時影象也更清晰) 2. 最小二乘保證離群sample懲罰更大, 解決了原本GAN訓練不充分(不穩定)的問題:
來自: https://arxiv.org/pdf/1611.04076.pdf
但缺點也是明顯的, LSGAN對離離群點的過度懲罰, 可能導致樣本生成的”多樣性”降低, 生成樣本很可能只是對真實樣本的簡單”模仿”和細微改動.
WGAN
DCGAN用經驗告訴我們什麼是比較穩定的GAN網路結構, 而WGAN告訴我們: 不用精巧的網路設計和訓練過程, 也能訓練一個穩定的GAN.
WGAN 通過剪裁D網路引數的方式, 對D網路進行穩定更新(Facebook採用了一種名叫”Earth-Mover“的距離來度量分佈相似度).
來自: https://arxiv.org/pdf/1701.07875.pdf
但是, 有時一味地通過裁剪weight引數的方式保證訓練穩定性, 可能導致生成低質量低清晰度的圖片.
WGAN-GP
為了解決WGAN有時生成低質量圖片的問題, WGAN-GP捨棄裁剪D網路weights引數的方式, 而是採用裁剪D網路梯度的方式(依據輸入資料裁剪), 以下是WGAN-GP的判別器D的Value函式和生成器G的Value函式:
WGAN-GP在某些情況下是WGAN的改進, 但是如果你已經用了一些可靠的GAN方法, 其實差距並不大:
DRAGAN
DRAGAN本質上也是一種梯度裁剪(雖然文章自稱是新穎的正則化方式),其判別器和生成器的價值函式類似WGAN-GP:
作者的初衷是希望避開區域性最優解,獲得更穩定的GAN訓練。該演算法另一個特點是實現簡單, 作者提供的原始碼如下:
https://github.com/kodalinaveen3/DRAGAN
EBGAN(基於能量函式的GAN)
EBGAN我們在之前一期討論過,EBGAN在邊緣的生成效果上更流暢, 而且加了特殊的正則項, 在生成的類別上, EBGAN更傾向於生成不同的臉型和人種,下圖是論文EBGAN和DCGAN的比較:
DCGAN個EBGAN生成人臉對比
EGGAN的判別器比較特殊用了encoder-decoder的結構:
BGAN(Boundary-Seeking GAN)
BGAN優勢在於生成離散樣本(當然像影象這樣的連續樣本也可以支援)。
BGAN的生成器以不斷生成決策邊界上的樣本為目標:
SGAN(Stacked GAN)
SGAN是一種結構創新的GAN,通過堆疊多個GAN網路,實現生成模型的資訊“分層化”:
實驗表明SGAN可以生成比一般GAN更清晰的圖片 ,另外加入一些條件生成的功能也相當方便,github程式碼:https://github.com/xunhuang1995/SGAN
條件生成的GAN
許多情況下,我們需要生成指定類的隨機樣本,這時就需要條件生成的GAN:
CGAN
CGAN是對條件生成GAN的最先嚐試,方法也比較簡單,直接在網路輸入加入條件資訊c,用來控制網路的條件輸出模式:
這樣,使得生成指定label的樣本成為可能:
來自:https://arxiv.org/pdf/1411.1784.pdf
ACGAN(輔助類別的GAN)
ACGAN在Imagenet上的生成效果令人驚歎,它特意學習了一個類別下的圖片結構:
來自:https://arxiv.org/pdf/1610.09585.pdf
與CGAN不同的是它在判別器D的真實資料x也加入了類別c的資訊,這樣就進一步告訴G網路該類的樣本結構如何,從而生成更好的類別模擬:
infoGAN
對於生成同類別的樣本,infoGAN另闢蹊徑,通過最大化互資訊(c,c’)來生成同類別的樣本,其中c是隱資訊:
因為隱資訊c可以作為超引數控制生成影象,我們可以得到一些有趣的結果:
來自: https://arxiv.org/pdf/1606.03657.pdf
如上圖,通過控制隱資訊c從-2到2,我們可以控制生成圖片的旋轉方向或者字型寬度(從左到右的每列)。
參考文獻:
相關文章
- LSGAN:最小二乘生成對抗網路
- 【機器學習】李宏毅——生成式對抗網路GAN機器學習
- 解讀生成對抗網路(GAN) 之U-GAN-IT
- GAN生成對抗網路-DCGAN原理與基本實現-深度卷積生成對抗網路03卷積
- 萬字綜述之生成對抗網路(GAN)
- 0901-生成對抗網路GAN的原理簡介
- 【深度學習理論】通俗理解生成對抗網路GAN深度學習
- 海量案例!生成對抗網路(GAN)的18個絕妙應用
- 深度學習界明星:生成對抗網路與Improving GAN深度學習
- 白話生成對抗網路 GAN,50 行程式碼玩轉 GAN 模型!【附原始碼】行程模型原始碼
- 生成對抗網路原理與應用:GAN如何使生活更美好
- 對抗樣本與生成式對抗網路
- 訓練生成對抗網路的一些技巧和陷阱
- GAN網路之入門教程(五)之基於條件cGAN動漫頭像生成
- 一文入門人工智慧的掌上明珠:生成對抗網路(GAN)人工智慧
- GAN實戰筆記——第七章半監督生成對抗網路(SGAN)筆記
- GAN實戰筆記——第四章深度卷積生成對抗網路(DCGAN)筆記卷積
- 第六週:生成式對抗網路
- 人工智慧-深度學習-生成模型:GAN經典模型-->InfoGAN人工智慧深度學習模型
- 實戰生成對抗網路[1]:簡介
- 【生成對抗網路學習 其一】經典GAN與其存在的問題和相關改進
- 生成對抗網路的進步多大,請看此文
- [深度學習]生成對抗網路的實踐例子深度學習
- 卷積生成對抗網路(DCGAN)---生成手寫數字卷積
- 實戰生成對抗網路[2]:生成手寫數字
- 三大深度學習生成模型:VAE、GAN及其變種深度學習模型
- GAN實戰筆記——第六章漸進式增長生成對抗網路(PGGAN)筆記
- 吳恩達Deeplearning.ai國慶節上新:生成對抗網路(GAN)專項課程吳恩達AI
- 轉:生成對抗網路GANs理解(附程式碼)
- 生成對抗網路及其變體的論文彙總
- CNN,GAN,AE和VAE概述CNN
- 如何應用TFGAN快速實踐生成對抗網路?
- 優化GAN的分佈的梯度問題,WGAN優化梯度
- 谷歌獲批GAN專利,一整套對抗訓練網路被收入囊中谷歌
- 生成對抗網路綜述:從架構到訓練技巧架構
- 谷歌開源TFGAN:輕量級生成對抗網路工具庫谷歌
- 生成對抗網路(GANs)最新家譜:為你揭秘GANs的前世今生
- 極端影象壓縮的生成對抗網路,可生成低位元速率的高質量影象