Topic: Triple Generative Adversarial Nets
Dosudo deep learning newsletter #4
Editor: George Wu
Resources: 原始post 中文post Github
Label: GAN
生成對抗網路(GANs, Generative Adversarial Nets) 在很多應用上都展現了強大的能力譬如圖像生成以及半監督學習(SSL, semi-supervised learning). 但有些情況可能會造成GANs的效果不好譬如生成器Generator以及分類器Discriminator之間的競爭會造成學習過程不穩定, 以及在SSL問題中Generator無法生成特定類別的圖像或資料. 為了解決這些問題作者提出了一種新型態的生成對抗網路TripleGAN. 除了原有的Generator(G) 以及Discriminator(D)之外, 增加了一個Classifier(C). 讓原本GAN的兩方競爭轉變成判別器、生成器和分類器的三方博弈.
我們在這裡舉個SSL問題的例子. 假設我們有一組部分標示(partially labeled)的數據(x, y) 其中x是輸入譬如圖像, 然後y是標籤. 目標是預測數據集裡未被標示的標籤y, 並且生成以y為條件的新樣本. 這和傳統的GANs的生成不相同因為傳統generator只負責生成來自相同分布的樣本. 而在TripleGAN中, 因為標籤的資訊不完全, 在這裡我們用聯合分布 p(x, y) 來代表樣本-標籤分布. 所以在 TripleGAN裡面的Generator是種類條件式產生器(class-conditional generator G) 負責生成分佈類似 p(x, y)的圖像 pg(x, y), 而有一個Classifier 是負責把未分類的部分標示數據進行分類, 而Discriminator負責判斷產生出來的(x, y)是否來自於真實分布 p(x, y). 而在共訓練過程中, Discriminator和Generator互相對抗, 而Discriminator和Classifier 也是互相對抗;而Generator和Discriminator則是協助作用。從另外一個角度去看, 如果只考慮G及D則是傳統的CGAN. 如果只考慮C及D則是個半監督分類器。