Coupled Generative Adversarial Networks 閱讀筆記

首先安利一個blog,https://www.cnblogs.com/wangxiaocvpr/

這個blog寫的內容涵蓋計算機視覺與深度學習的很多方面,作者update的很快。

這篇文章(NIPS2016)是基於Generative Adversarial Networks (GAN)而來的,GAN有兩個部分,第一部分是生成器Generator,第二部分是判別器Discriminator。Generator輸入時隨機變量vector(噪聲), 輸出是一個經過層層反捲積出來的圖片。 Discriminator是一個判別器,依次輸入真實的圖片和generator產生的圖片。Discriminator需要做到能夠正確的區分兩者,而generator需要做的是儘量產生足夠真實的圖片來混淆Discriminator。於是兩個相互對抗,最後使得Generator能夠從噪聲中產生足夠真實的圖片出來,讓discriminator無法區分生成的圖片是real還是fake。而couple的意思就是有兩個這樣的GAN組合在了一起。

Abstract:

作者提出了一個coupled generative adversarial network (CoGAN) 來學習關於multi-domain images的聯合分佈出來。本質上GAN是學習一個圖像分佈p(x’)出來,這個分佈要足夠逼近訓練樣本的分佈p(x)。這樣的結果就是能夠使我們任意輸入噪聲到訓練好的generator中去,都能夠產生一個足夠像訓練樣本的圖片出來。而這裏作者將單個分佈p(x)拓展到聯合分佈p(x,y)分佈上來了。這樣做的目的很深刻,因爲涉及到domain adaption 問題。也就是說,在傳統的domain adaption中,我們需要學習或者訓練一個domain adaptor出來,而這個domain adaptor需要 用source domain和對應的target domain的訓練圖片來訓練。而本文中的CoGAN可以無監督的學習一個聯合分佈。方法就是對網絡加上權值共享約束,同時求解一個體育編輯分佈的內積的分佈解(不是很懂)。 作者測試這個CoGAN做聯合分佈學習的任務,包括學習圖片的顏色和深度兩個的聯合分佈,學習一個帶有不同屬性的聯合分佈出來。作者將其拓展到了domain adaption和image transformation task。

Introduction:

這篇文章考慮是從multi-domains的圖片(比如圖片分別來源不同的數據集(caltech 256, mnist),或者是modalitie不同的圖片( color image vs depth image))。一旦我們學習好了其中一個domain的分佈,就可以將其應用到生成一組新的image tuples。爲了克服需要correspondence dependency這個限制,我們提出了couple GAN。這兒coupleGAN不需要訓練集中包含對應的圖片,而只需要在每次訓練中從每個domain地邊際分佈中採樣少量圖片就可以了,這些樣本不需要一一對應。COCGA 有一組GAN構成,這裏選取兩個GAN組成,每一個GAN針對一個image domain。 如果直接訓練這兩個GAN,那麼導致的CoGAN是兩個邊際分佈的內積而不是一個聯合分佈(p(x,y) != p(x)p(y)). 我們於是要講CoGAN中加上一個權值共享的約束,從而使得coGAN可以在兩個domain不存在corresponding images的情況下學出一個聯合分佈出來。同時,由於深度網絡中,高層的語義信息進行權值共享的話,可以保證GAN的生成器能夠解碼出高層的語義信息出來。而生成器中那些解碼底層細節的層可以將共性的表達變換成各自domain中不同的內容,然後可以混淆判別器。(不得不說這個idea很妙)。

Generative Adversarial Networks


Couple GAN


CoGAN的結構如圖所示,由一對GAN構成,GAN1和GAN2構成,每一個針對合成各自domain的圖片。在訓練過程中,我們讓兩個GAN共享一部分參數。我們假設x1和x2是從兩個domain的邊際分佈中採樣的圖片,g1和g2是GAN1和GAN2的生成器,於是可以公式化爲:


這個公式的物理意義就是說,生成模型可以逐漸的從抽象的概念出來一點點解碼出具體地細節出來。因此generator的前面幾層解碼的是高層的語義信息,比如目標的輪廓,而後面幾層解碼的是細節,比如邊緣。由於我們需要保證高層信息的相關性,因此我們需要g1和g2的前幾個層是共享權值的。後面幾層的權值就不同了,這樣可以根絕高層語義信息解碼出不同的細節出來,用來fool各自的判別器。

而判別器和標準的gan是一樣的,公式化爲:

這個時候,權值共享的層就是後面幾層了,因爲後面幾層涉及到高層的語義信息。


learning:


OK,CoGAN的精華已經講完了,實驗部分介紹一下unsupervised domain adaption (UDA)的部分:

UDA 嘗試解決這樣一個問題,就是我們在某個domain上訓練好一個分類器,然後將這個分類器adapt到另外一個domain,這個domain只有訓練樣本,沒有label。比如說我們在mnist數據集上訓練好有一個分類器,然後adapt到USPS數據集上去分類。如果直接將這個分類器去分usps,效果很差,因爲domain shift。於是,我們利用domain adaption來解決這個問題。

具體而言,我們首先採集2000mnist圖構成集合D1,從USPS中隨機選取1800圖片構成D2數據集。 CoGAN用來實現圖像生成的任務。對於數字分類,我們在判別器的最後一個隱層上加上一個softmax 層。於是CoGAN的訓練需要完成兩個任務,一個任務是mnist的數字分類問題,因爲提供了圖片和對應的label。還有就是D1和D2上的圖片生成問題。針對每一個domain定義有一個分類器:對於MNIST,分類器是:。對於USPS數據集,分類器是:

由於D2中沒有label信息可以用,因此c2分類器在訓練過程中沒法被訓練。在完成訓練之後,我們利用c2來分類USPS數據集,結果如下:














作者代碼鏈接:https://github.com/mingyuliutw/CoGAN

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章