讀CGAN文章

        提出CGAN是因爲非條件的生成模型中,對生成的內容控制,實際上只要保證真實性就可以了;採用CGAN的話,我們會增加一些額外的信息去控制數據生成的過程,例如一些類別的標籤,例如數字圖片數據集中,可以通過引入標籤(one-hot),來控制生成的圖片趨向於數字,而不是其他的一些圖片。

 

  • CGAN模型

目標函數:

相比較GAN模型的目標函數

多了一個標籤信息y,在D 和 G 中都用到了,在各自的輸入中增加這一項

 

示意圖

 

 

  • 一些實驗
    • 單一模型
      • MNIST圖片數據集中,條件是one-hot形式的圖片標籤,即 數字1 用 [0,1,0,0,0,0,0,0,0,0] 來表示
      • 在G中,從均勻分佈中抽取100維的噪聲數據z,hidden layer 是 1200個單元(z連接到200個單元,y連接到1000個單元,然後拼接起來),並通過relu 來激活,最後通過全連接到784維並對每個單元做sigmoid激活
      • 在D中,通過maxout網絡將x 映射到240維,將y映射到50維;採用5組權重W,最終的結果是採用max(f(W1*X),f(W2*X),f(W3*X),f(W4*X),f(W5*X)) 對應的那組,實際上maxout方法,隨着深度越深,參數會呈現指數式的增長。
      • 採用SGD,batch設置爲100,採用momentum的方法控制學習率。dropout 設置爲0.5 
      • 生成的結果如下圖所示
    • 多模型
      • 有些圖片是有多個標籤的,例如一張 圖片,標籤可以爲女性,香蕉等。
      • 用戶產生的標識(metadata)跟傳統意義上的標籤不太一樣,因爲描述可以是主觀的,另外UGM(user-generated metadata) 有大量的同義詞,不同的人會用不同的詞來描述同一個概念,解決這個問題,採用詞向量的方式。
      • 多模型的“多”指的是一個圖片有多個標籤的意思
      • 對於圖片的表示,首先預訓練一個CNN,並用最後一個全連接層(4096個單元)來表示圖片
      • 對於詞語的表示,從YFCC100M的metadata中獲取用戶標識,標題,以及描述。然後利用skip-gram訓練了一個200維的詞向量,我們會刪除出現次數小於200的詞語,最終得到247465大小的詞典
      • 我們把卷積和詞語得到的向量在GAN訓練過程中是固定的。
      • 這裏,我們目標是生成圖片的標籤(tags)
      • 評估階段,對於每張圖片,我們生成100個樣例(tag),然後從詞庫中找到最相近的20個單詞,那麼總共會得到20*100個,然後選出排名top10的詞作爲圖片的tags
      • 這裏,我們可以理解爲,把圖片作爲CGAN中的y

refer:https://arxiv.org/pdf/1411.1784.pdf Conditional Generative Adversarial Nets

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