Takeru Miyato, Masanori Koyama, “cGANs with Projection Discriminator arXiv:1802.05637
ICLR 2018 paper
作者有將程式碼釋出 Github
使用深度學習框架Chainer實作。
還有使用ICLR2018的Spectral Normalization的方法。
成果圖
簡介
基於cGANs,提出一個能增強cGANs模型的一個方法,
在Image generation 以及 super resolution的方法在這篇paper都有不錯的成果。
cGANs => conditional GAN
可以想成是給discriminator透過concat的方式加入一個condition(正解y),
讓discriminator訓練得更好,
從而讓G也能夠有更好地發揮。
而原本cGANs都是使用concat的方式串起y,
cGANs with projection就是將concat的部分改成projection,
就是拉出一條路,與y做inner product。
歷史演進
(a) cGANs input concat
- 以往我們在GAN中,
discriminator輸入的都是Generator產生的東西(x),
cGANs 就是在discriminator中的input改為x加上y(ground truth),
讓discriminator可以被訓練得的更好更加的穩定
簡單且有效的方法!
(b) cGANs hidden concat
- 發現了在hidden layer 和 y 做concat的結果會更好
(c) AC-GANs
- 他不只是有adversarial loss,
在最後還有輸出一個classify的結果,
這樣變成有兩個loss可以bp,
結果是比較好。
(d) Projection
- 可以看到就是在hidden layer的時候拉出來(引用了b的優點)
並且和y做inner product,
最終比單單使用concat結合y相比,
此方法達到比AC-GANs較好的結果。
概念
下方簡略帶過可跳過。
紅色的框框是cGANs的想法,
給定x中y發生的機率,
因為p(y|x)我們不知道,
因此會希望訓練一個model,
用q(y|x)來逼近他
希望兩個模型的distribution輸出的要很像
(likelihood的想法)。
那他的做法是藍色框框的部分,
為什麼是這樣呢,我們下面再做介紹。
這部分是在做inner product,
Y:
one hot encoding label
V:
denote the matrix consisting of row vector Vc
Embeding matrix — 64dim
藍色的框框是指,如果我們真的將q(我們訓練的model),
真的和訓練的測資集p夠像的話,
那學會的feature相減的話,那個值應該要是小的。
而我們知道類神經網路可以逼近function,
因此我們可以希望藍色的框框有著紅色的框框的想法。
那(6)的式子其實就是我們的model概念。
2018/06/12 — update
—
今天我突然覺得這部份怪怪的,我覺得這部分一直都不是很能夠理解
目前我的理解是
其實這邊根本都不用管,
你就想成是 one hot 的 y 對 embedding 的 V 拿到專屬於自己class的feature vector。
左邊的這個φ(x)會學到要如何與右邊的各自的class vector來做到讓inner product變小。
透過hinge loss來做一個評分依據。
模型架構
Image generation
挺有趣的是他還有做一個category morphing。
只要將G輸入的Y值做改變(舉例category 1 = 0.7, category 2 = 0.3),
就可以產生這樣的效果。
Super resolution
這邊值得一提的是,
discriminator那邊的conv 3X3,
其實是將128 channel -> 3 channel,
這樣才能和輸入圖片做inner product。
參考資料:
cGANs with Projection Discriminator