cGANs with projection介紹

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相比, 此方法達到比較好的結果。

概念

下方簡略帶過可跳過。

紅色的框框是cGANs的想法,

給定x中y發生的機率,

因為p(yx)我們不知道,

因此會希望訓練一個model,

用q(yx)來逼近他

希望兩個模型的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


© XiaoSean 2018. All rights reserved.

Powered by Hydejack v7.5.1