WGAN:Wasserstein 生成對抗網絡

2021-02-08 pytorch玩轉深度學習
問題

GAN一直面臨以下問題和挑戰

訓練困難,需要精心設計模型結構,並小心協調  和  的訓練程度

 和  的損失函數無法指示訓練過程,缺乏一個有意義的指標和生成圖片的質量相關聯

模式崩壞(mode collapse),生成的圖片雖然看起來像是真的,但是缺乏多樣性

原理

相對於傳統的GAN,WGAN只做了以下三點簡單的改動

 的損失函數原本為

其導致的結果是,如果  訓練得太好,  將學習不到有效的梯度

但是,如果  訓練得不夠好,  也學習不到有效的梯度

就像警察如果太厲害,便直接把小偷幹掉了;但警察如果不厲害,就無法迫使小偷變得更厲害

因此以上損失函數導致GAN訓練特別不穩定,需要小心協調  和  的訓練程度

GAN的作者提出了G損失函數的另一個版本,即所謂的  trick

 需要最小化以上損失函數,等價於最小化以下損失函數

其中前者為KL散度(Kullback–Leibler Divergence)

後者為JS散度(Jensen-Shannon Divergence)

兩者都可以用于衡量兩個分布之間的距離,越小說明兩個分布越相似

因此以上損失函數,一方面要減小KL散度,另一方面卻要增大JS散度,一邊拉近一邊推遠,從而導致訓練不穩定

除此之外,KL散度的不對稱性,導致對以下兩種情況的不同懲罰

從而導致,  傾向於生成一些有把握但相似的圖片,而不敢輕易地嘗試去生成沒把握的新圖片,即所謂的mode collapse問題

WGAN所做的三點改動,解決了GAN訓練困難和不穩定、mode collapse等問題,而且  的損失函數越小,對應生成的圖片質量就越高

WGAN訓練過程如下,gradient penalty使得  滿足1-Lipschitz連續條件,詳細原理和細節可以閱讀相關論文進一步了解

論文中部分實驗結果如下,WGAN雖然需要更長的訓練時間,但收斂更加穩定

更重要的是,WGAN提供了一種更穩定的GAN框架。DCGAN中的  去掉Batch Normalization就會崩掉,但WGAN則沒有這種限制

如果用Deep Convolutional結構實現WGAN,那麼其結果和DCGAN差不多。但是在WGAN的框架下,可以用更深更複雜的網絡實現  和  ,例如ResNet(arxiv.org/abs/1512.0338),從而達到更好的生成效果

數據

還是之前使用過的兩個人臉數據集

相關焦點

  • 生成式對抗網絡GAN的高級議題
    生成對抗網絡(GAN)就是一個幫你實現的新朋友。"GAN是過去10年機器學習中最有趣的想法。"最近引入了生成對抗網作為訓練生成模型的新方法,即創建能夠生成數據的模型。它們由兩個"對抗"模式:生成模型G獲得數據和判別模型D來估計訓練數據提供的樣本的準確性。G和D可能是一個非線性映射函數,如多層感知。在生成對抗網絡(GAN)中,我們有兩個神經網絡在零和遊戲中相互對抗,其中第一個網絡,即生成器,其任務是欺騙第二個網絡,即鑑別器。
  • 使用Wasserstein GAN生成小狗圖像
    一.前期學習經過GAN(Generative Adversarial Nets)是生成對抗網絡的簡稱,由生成器和判別器組成,在訓練過程中通過生成器和判別器的相互對抗,來相互的促進、提高。最近一段時間對GAN進行了學習,並使用GAN做了一次實踐,在這裡做一篇筆記記錄一下。
  • GAN(生成對抗網絡)萬字長文綜述
    GAN的基本介紹生成對抗網絡(GAN,Generative Adversarial Networks)作為一種優秀的生成式模型,引爆了許多圖像生成的有趣應用。GAN的基本概念GAN(Generative Adversarial Networks)從其名字可以看出,是一種生成式的,對抗網絡。再具體一點,就是通過對抗的方式,去學習數據分布的生成式模型。所謂的對抗,指的是生成網絡和判別網絡的互相對抗。
  • 萬字綜述之生成對抗網絡(GAN)
    文章目錄如下:GAN的基本介紹生成對抗網絡(GAN,Generative Adversarial Networks)作為一種優秀的生成式模型,引爆了許多圖像生成的有趣應用。GAN的基本概念GAN(Generative Adversarial Networks)從其名字可以看出,是一種生成式的,對抗網絡。再具體一點,就是通過對抗的方式,去學習數據分布的生成式模型。所謂的對抗,指的是生成網絡和判別網絡的互相對抗。
  • 超全的GAN PyTorch+Keras實現集合
    機器之心編譯參與:劉曉坤、思源、李澤南生成對抗網絡一直是非常美妙且高效的方法,自 14 年 Ian Goodfellow 等人提出第一個生成對抗網絡以來,各種變體和修正版如雨後春筍般出現,它們都有各自的特性和對應的優勢。
  • 生成對抗網絡的最新研究進展
    ,生成對抗網絡是一類功能強大、應用廣泛的神經網絡。生成對抗網絡的工作原理給定一組目標樣本,生成器試圖生成一些能夠欺騙判別器、使判別器相信它們是真實的樣本。判別器試圖從假(生成)樣本中解析真實(目標)樣本。
  • 不到200 行代碼,教你如何用 Keras 搭建生成對抗網絡(GAN)
    雖然 GAN 的核心思想看起來非常簡單,但要搭建一個真正可用的 GAN 網絡卻並不容易。因為畢竟在 GAN 中有兩個相互耦合的深度神經網絡,同時對這兩個網絡進行梯度的反向傳播,也就比一般場景困難兩倍。為此,本文將以深度卷積生成對抗網絡(Deep Convolutional GAN,DCGAN)為例,介紹如何基於 Keras 2.0 框架,以 Tensorflow 為後端,在 200 行代碼內搭建一個真實可用的 GAN 模型,並以該模型為基礎自動生成 MNIST 手寫體數字。
  • 程式設計師實戰,生成式對抗網絡(GAN)下篇,tensorflow實現
    shape,輸入為(12,1)*w,故w為(1,8),w的初始化方式為高斯初始化 w = tf.get_variable('w',[input.get_shape()[1], output_dim], initializer=norm)#b初始化為常量 b = tf.get_variable('b',[output_dim], initializer=const)#執行線性運算return tf.matmul
  • GAN快速入門資料推薦:17種變體的Keras開原始碼,附相關論文
    夏乙 編譯整理量子位 出品 | 公眾號 QbitAI圖片來源:Kaggle blog從2014年誕生至今,生成對抗網絡(GAN)始終廣受關注,已經出現了200多種有名有姓的變體。Generative Adversarial NetworksEmily Denton, Sam Gross, Rob Fergushttps://arxiv.org/abs/1611.06430CGAN條件式生成對抗網絡,也就是conditional
  • 揭秘騰訊變臉魔法,生成對抗網絡GAN的威力是什麼?
    不管是創造了微視視頻特效製作量新紀錄的王者臉,還是在QQ上線的全球首創光頭特效,都是騰訊光影研究室利用生成式對抗網絡 GAN所製造的魔法。隨著GAN網絡在生成質量上的不斷提高,它越來越頻繁地落地到社交娛樂場景中,給用戶帶去最直觀、新鮮的AI體驗。左右互搏生成完美圖片,AI界的"網紅"技術那麼使得新型變臉特效得以實現的生成式對抗網絡 GAN,究竟是什麼?它是由美國科學家Ian Goodfellow發明,試圖讓計算機自己生成逼真圖片的AI技術。
  • 如何使用GAN做一個禿頭生產器
    生成對抗網絡介紹  說到圖像生成,就必須說到GAN,它是一種非監督學習的方式,通過讓兩個神經網絡相互博弈的方法進行學習,該方法由lan Goodfellow等人在2014年提出。生成對抗網絡由一個生成網絡和一個判別網絡組成,生成網絡從潛在的空間(latent space)中隨機採樣作為輸入,其輸出結果需要儘量模仿訓練集中的真實樣本。
  • 18個生成對抗網絡(GAN)的絕妙應用!你確定不收藏一下?
    圖片來源:pexels.com/@gravitylicious生成對抗網絡(GAN)是生成模型的一種神經網絡架構。生成模型指在現存樣本的基礎上,使用模型來生成新案例,比如,基於現存的照片集生成一組與其相似卻有細微差異的新照片。GAN是使用兩個神經網絡模型訓練而成的一種生成模型。其中一個稱為「生成器」或「生成網絡」模型,可學習生成新的可用案例。另一個稱為「判別器」或「判別網絡」,可學習判別生成的案例與實際案例。
  • 程式設計師學習人工智慧,生成式對抗網絡(GAN)1,簡介與算法原理
    一、簡介生成式對抗網絡(GAN, Generative Adversarial Networks )是一種深度學習模型,是近年來複雜分布上無監督學習最具前景的方法之一。模型通過框架中(至少)兩個模塊:生成模型(Generative Model)和判別模型(Discriminative Model)的互相博弈學習產生相當好的輸出。原始 GAN 理論中,並不要求 G 和 D 都是神經網絡,只需要是能擬合相應生成和判別的函數即可。但實用中一般均使用深度神經網絡作為 G 和 D 。
  • 資源|17類對抗網絡經典論文及開原始碼(附源碼)
    原標題:資源|17類對抗網絡經典論文及開原始碼(附源碼) 全球人工智慧 文章來源:Github 對抗網絡專題文獻集with recurrent adversarial networks] [Paper]https://arxiv.org/abs/1602.05110 [Code]https://github.com/ofirnachum/sequence_gan
  • 一文看懂生成對抗網絡
    —Richard Feynman生成模型由一個參數數量比訓練數據少的多神經網絡構成,所以生成模型為了能夠產生和訓練數據相似的輸出就會迫使自己去發現數據中內在的本質內容。訓練Generative models的方法有幾種,在這裡我們主要闡述其中的Adversarial Training(對抗訓練)方法。
  • 基於生成對抗網絡的三維點雲自動修復
    為了在對點雲形狀修復補全中能保持形狀的精細結構信息,最近研究者提出了一種能夠自動修復補全三維點雲形狀的生成對抗網絡結構。針對形狀缺失的稠密點雲和稀疏點雲數據,該網絡在修復補全形狀缺失部分的同時能有效保持輸入點雲形狀的精細結構信息。《中國科學: 信息科學》在2020年第50卷第5期刊登了這一研究。
  • 看GAN如何一步步控制圖像生成風格?詳解StyleGAN進化過程
    而 StyleGAN 使用一種叫做映射網絡(mapping network)的深度網絡,將潛在因子 z 轉換成中間潛在空間 w。從概念上來看,StyleGAN 將可進行均勻或正態分布採樣的空間(下圖中)扭曲成潛在特徵空間(下圖左),從而輕鬆生成圖像。該映射網絡旨在創建彼此獨立的特徵,以便生成器更容易地執行渲染,同時避免訓練數據集中不曾出現的特徵組合。
  • 乾貨| 直觀理解GAN背後的原理:以人臉圖像生成為例
    選自hackernoon作者:Chanchana Sornsoontorn參與:朱朝陽、微胖、高靜怡GAN 暨生成對抗網絡(Generative Adversarial Networks)是由兩個彼此競爭的深度神經網絡——生成器和判別器組成的。生成器和辨別器的目標是生成與訓練集中一些數據點非常相似的數據點。
  • 機器不學習:生成對抗網絡-NIPS 2017對抗樣本攻防賽冠軍算法分享
    從上面可以看出,對抗樣本可以用來欺騙網絡,那麼我們如何生成這些對抗樣本來攻擊網絡呢?一種最簡單的攻擊方法叫做快速梯度法(見下圖),給定一張圖像,輸入給神經網絡,得到預測結果,然後用梯度下降法修改一下原圖使得預測結果變差。一個推廣的方法叫做迭代梯度法,就是對剛才的過程進行多次重複。
  • 關於生成式對抗網絡(GAN) 還有這些開放性問題尚未解決
    從某些指標來看,在過去的兩年中,生成式對抗網絡(Generative Adversarial Networks,簡稱GAN)的研究已經取得了長足進展。對圖像合成模型進行的實際改進速度非常快,讓人有種跟不上技術進步步伐的感覺。然而,從其他指標來看,實際發生的情況可能並非如此樂觀。舉例來說,關於「應該如何評估GAN」仍然存在廣泛的分歧。