GAN
生成網絡接收一個隨機噪聲,生成逼真圖像;
判別網絡接收一個圖像,生成該圖像是真實的概率(0~1);
GAN網絡中存在兩個不同的網絡,訓練方式采用的是對抗訓練方式,其中G的梯度更新信息來自於判別器D,而不是來自數據樣本。
GAN不適合處理離散形式的數據,比如文本。
使用JS散度作為距離公式

DCGAN
DCGAN(deep convolutional generative adversarial networks)采用深度卷積的生成對抗網絡。
改進
1. 取消Pooling層,改用加入stride的卷積代替。同時用卷積替代了全連接層。
2. 在D和G網絡中均加入BN層。
3. G網絡使用ReLU作為激活函數,最后一層使用tanh。
4. D網絡中使用LeakyReLU作為激活函數
5. 使用adam優化器訓練
WGAN
WGAN使用了新的距離定義 Wasserstein Distance(推土機距離),在理論上給出了GAN訓練不穩定的原因,即交叉熵(JS散度)不適合衡量具有不相交部分的分布之間的距離,轉而使用wassertein距離去衡量生成數據分布和真實數據分布之間的距離,理論上解決了訓練不穩定的問題。
Wasserstein距離又叫Earth Mover's Distance(EMD,推土機距離),參考: 幾個常用的計算兩個概率分布之間距離的方法以及python實現
WGAN的提升
1. 解決了GAN訓練不穩定的問題,不再需要小心平衡生成器和判別器的訓練程度;
2. 幾乎解決了mode collapse(模式崩潰)問題,保證生成樣本的多樣性;
3. 提供了具有意義的價值函數,可以分別判斷判別器和生成器是否已經收斂。(原始GAN中如果D的效果不好,我們不知道是G生成的好,還是D判別的不好)
WGAN的改進
1. 去掉最后一層的sigmoid
2. 生成器和判別器的loss不取log
3. 限制更新后的權重的絕對值到一定范圍內
4. 使用RMSprop或SGD優化,不建議使用基於動量或Adam的優化算法
SRGAN
SRGAN損失函數

生成器損失函數分為 內容loss 和 對抗網絡 loss;
內容損失又包括 像素空間的最小均方差和VGG特征的歐式距離。

