1. 程式人生 > >火熱的生成對抗網路(GAN),你究竟好在哪裡

火熱的生成對抗網路(GAN),你究竟好在哪裡

【線上直播】《TensorFlow實戰》作者、PPmoney大資料演算法總監黃文堅老師即將開課:《使用TensorFlow建立可自動玩遊戲的DQN模型》,本次課程集中講解Deep-Q Network及其TensorFlow的實現。點選報名

自2014年Ian Goodfellow提出生成對抗網路(GAN)的概念後,生成對抗網路變成為了學術界的一個火熱的研究熱點,Yann LeCun更是稱之為”過去十年間機器學習領域最讓人激動的點子”。生成對抗網路的簡單介紹如下,訓練一個生成器(Generator,簡稱G),從隨機噪聲或者潛在變數(Latent Variable)中生成逼真的的樣本,同時訓練一個鑑別器(Discriminator,簡稱D)來鑑別真實資料和生成資料,兩者同時訓練,直到達到一個納什均衡,生成器生成的資料與真實樣本無差別,鑑別器也無法正確的區分生成資料和真實資料。GAN的結構如圖1所示。

圖片描述

圖1 生成對抗網路的基本架構

近兩年來學術界相繼提出了條件生成對抗網路(CGAN),資訊生成對抗網路(InfoGAN)以及深度卷積生成對抗網路(DCGAN)等眾多GAN的變種,圖2來自去年一篇論文:Image-to-Image Translation with Conditional Adversarial Nets,我們可以看到GAN已經被引入到了各種以往深度神經網路的任務中,例如從分割影象恢復原影象(左上角第一對),給黑白圖片上色(右上角第一對),根據紋理圖上色(右下角第一對),另外,GAN還可以做影象超解析度,動態場景生成等,關於GAN的更多應用請見另一篇部落格深度學習在計算機視覺領域的前沿進展

圖片描述

圖2 Image to image影象翻譯

仔細想來,這些任務,其實都是傳統的深度神經網路可以做的,例如自編碼器(AutoEncodor)和卷積反捲積架構可以做到的,我們不禁要想,GAN相比傳統的深度神經網路,它的優勢在哪裡?前段時間,我也一直比較迷惑,中文能查到的資料,就是Ian Goodfellow在生成對抗網路(GAN)論文最後總結的幾點,如下:

優點

  • 模型只用到了反向傳播,而不需要馬爾科夫鏈;
  • 訓練時不需要對隱變數做推斷;
  • 理論上,只要是可微分函式都可以用於構建D和G,因為能夠與深度神經網路結合做深度生成式模型;
  • G的引數更新不是直接來自資料樣本,而是使用來自D的反向傳播(這也是與傳統方法相比差別最大的一條吧)。

缺點

  • 可解釋性差,生成模型的分佈 Pg(G)沒有顯式的表達。
  • 比較難訓練,D與G之間需要很好的同步,例如D更新k次而G更新一次。

上面只是一個比較簡單的解釋,很幸運,我在Quora上查到了兩個類似問題,GAN與其他生成模型相比有什麼優勢,這個問題只有一個人回答,很幸運的是,他就是Ian Goodfellow,GAN的發明人,他在Quora上的簽名就是“I invented generative adversarial networks”。而另一個問題是GANs的優缺點是什麼?良心大神Goodfellow也做了回答。我把他的兩個回答翻譯如下:

原問題1:What is the advantage of generative adversarial networks compared with other generative models?
生成對抗網路相比其他生成模型的優點?

相比其他所有模型,我認為:

  • 從實際結果來看,GAN看起來能產生更好的生成樣本。
  • GAN框架可以訓練任何生成網路(在理論實踐中,很難使用增強學習去訓練有離散輸出的生成器),大多數其他架構需要生成器有一些特定的函式形式,就像輸出層必須是高斯化的。另外所有其他框架需要生成器整個都是非零權值(put non-zero mass everywhere),然而,GANs可以學習到一個只在靠近真實資料的地方(神經網路層)產生樣本點的模型(GANs can learn models that generate points only on a thin manifold that goes near the data)。
  • 沒有必要遵循任何種類的因子分解去設計模型,所有的生成器和鑑別器都可以正常工作。
  • 相比PixelRNN,GAN生成取樣的執行時間更短,GANs一次產生一個樣本,然而PixelRNNs需要一個畫素一個畫素的去產生樣本。
  • 相比VAE,GANs沒有變分下界,如果鑑別器訓練良好,那麼生成器可以完美的學習到訓練樣本的分佈。換句話說,GANs是漸進一致的,但是VAE是有偏差的。
    相比深度玻爾茲曼機,GANs沒有變分下界,也沒有棘手的配分函式,樣本是一次生成的,而不是重複的應用馬爾科夫鏈來生成的。
  • 相比GSNs,GANs產生的樣本是一次生成的,而不是重複的應用馬爾科夫鏈來生成的。
  • 相比NICE和Real NVE,GANs沒有對潛在變數(生成器的輸入值)的大小進行限制;說實話,我認為其他的方法也都是很了不起的,他們相比GANs也有相應的優勢。

原問題2:What are the pros and cons of using generative adversarial networks (a type of neural network)?
生成對抗網路(一種神經網路)的優缺點是什麼?

It is known that facebook has developed a means of generating realistic-looking images via a neural network. They used “GAN” aka “generative adversarial networks”. Could this be applied generation of other things, such as audio waveform via RNN? Why or why not?
facebook基於神經網路開發了一種可以生成現實圖片的方法,他們使用GAN,又叫做生成對抗網路,它能應用到其他事物的生成嗎,例如通過RNN生成音訊波形,可以嗎?為什麼?

優勢

  • GANs是一種以半監督方式訓練分類器的方法,可以參考我們的NIPS paper和相應程式碼。在你沒有很多帶標籤的訓練集的時候,你可以不做任何修改的直接使用我們的程式碼,通常這是因為你沒有太多標記樣本。我最近也成功地使用這份程式碼與谷歌大腦部門在深度學習的隱私方面合寫了一篇論文
  • GANs可以比完全明顯的信念網路(NADE,PixelRNN,WaveNet等)更快的產生樣本,因為它不需要在取樣序列生成不同的資料。
  • GANs不需要蒙特卡洛估計來訓練網路,人們經常抱怨GANs訓練不穩定,很難訓練,但是他們比訓練依賴於蒙特卡洛估計和對數配分函式的玻爾茲曼機簡單多了。因為蒙特卡洛方法在高維空間中效果不好,玻爾茲曼機從來沒有拓展到像ImgeNet任務中。GANs起碼在ImageNet上訓練後可以學習去畫一些以假亂真的狗。
  • 相比於變分自編碼器,GANs沒有引入任何決定性偏置(deterministic bias),變分方法引入決定性偏置,因為他們優化對數似然的下界,而不是似然度本身,這看起來導致了VAEs生成的例項比GANs更模糊。
  • 相比非線性ICA(NICE, Real NVE等),GANs不要求生成器輸入的潛在變數有任何特定的維度或者要求生成器是可逆的。
  • 相比玻爾茲曼機和GSNs,GANs生成例項的過程只需要模型執行一次,而不是以馬爾科夫鏈的形式迭代很多次。

劣勢

  • 訓練GAN需要達到納什均衡,有時候可以用梯度下降法做到,有時候做不到。我們還沒有找到很好的達到納什均衡的方法,所以訓練GAN相比VAE或者PixelRNN是不穩定的,但我認為在實踐中它還是比訓練玻爾茲曼機穩定的多。
  • 它很難去學習生成離散的資料,就像文字。
  • 相比玻爾茲曼機,GANs很難根據一個畫素值去猜測另外一個畫素值,GANs天生就是做一件事的,那就是一次產生所有畫素,你可以用BiGAN來修正這個特性,它能讓你像使用玻爾茲曼機一樣去使用Gibbs取樣來猜測缺失值。
    我在伯克利大學的課堂上前二十分鐘講到了這個問題。課程連結,請自帶梯子~

—————————————————————————————————–
以上是Ian Goodfellow的原答案的翻譯,如有翻譯不妥的地方,請指正!
最近在一篇GAN生成圖片的論文中看到,作者提出使用GAN與普通的卷積反捲積相比,GAN能獲得更好的泛化結果。這裡不知道是不是把鑑別器D當做一個監控器,當D的精度接近50%了,就停止訓練,防止生成器過擬合。

作者:蔣紅亮,東南大學研究生
責編:何永燦,歡迎人工智慧領域技術投稿、約稿、給文章糾錯,請傳送郵件至[email protected] ,本文為CSDN原創投稿,未經作者允許不得轉載。


SDCC 2017·上海站將於2017年3月17-19日登陸申城,三大技術峰會24位嘉賓,匯聚國內一線的網際網路公司大牛,暢談運維、資料庫和架構的熱門話題和技術熱點,精益運維發起人&優維科技CEO王津銀、MongoDB 大中華區首席架構師唐建法和華為軟體API開放平臺架構師李林鋒等親臨現場。3月5日前門票八折優惠中,5人以上團購立減400元,詳情點選註冊參會

相關推薦

火熱生成對抗網路GAN究竟好在哪裡

【線上直播】《TensorFlow實戰》作者、PPmoney大資料演算法總監黃文堅老師即將開課:《使用TensorFlow建立可自動玩遊戲的DQN模型》,本次課程集中講解Deep-Q Network及其TensorFlow的實現。點選報名 自2014年Ia

七個不容易被發現的生成對抗網路GAN用例

像許多追隨AI發展的人一樣,我無法忽略生成建模的最新進展,尤其是影象生成中生成對抗網路(GAN)的巨大成功。看看下面這些樣本:它們與真實照片幾乎沒有區別!   從2014年到2018年,面部生成的進展也非常顯著。 這些結果讓我感到興奮,但我內心總是懷疑它們是否真

生成對抗網路GAN應用於影象分類

  近年來,深度學習技術被廣泛應用於各類資料處理任務中,比如影象、語音和文字。而生成對抗網路(GAN)和強化學習(RL)已經成為了深度學習框架中的兩顆“明珠”。強化學習主要用於決策問題,主要的應用就是遊戲,比如deepmind團隊的AlphaGo。因為我的研究方向是影象的有監督分類問題,

一篇讀懂生成對抗網路GAN原理+tensorflow程式碼實現

作者:JASON 2017.10.15   生成對抗網路GAN(Generative adversarial networks)是最近很火的深度學習方法,要理解它可以把它分成生成模型和判別模型兩個部分,簡單來說就是:兩個人比賽,看是 A 的矛厲害,還是 B

生成對抗網路GAN的前沿進展論文、報告、框架和Github資源彙總

生成模型(GenerativeModel)是一種可以通過學習訓練樣本來產生更多類似樣本的模型。在所有生成模型當中,最具潛力的是生成對抗網路(Generative Adversarial Networks, GANs)。GANs 是非監督機器學習的一種,它的運作方式可被看

生成對抗網路GAN簡單入門33---《深度學習》

生成對抗網路與2014年被提出,一經提出便引發了深度學習的又一次小高潮,屬於無監督學習,本篇部落格主要介紹***GAN網路的結構以及訓練過程!*** 對抗樣本即對抗網路的發展大家可以參考GANs學習系列(4):對抗樣本和對抗網路,有助於建立一個對對抗樣本的系統認

生成對抗網路GAN是幹什麼用的?

什麼是生成對抗網路?生成式對抗網路(GAN, Generative Adversarial Networks )是一種深度學習模型

一文入門人工智慧的掌上明珠:生成對抗網路GAN

一.簡介 在人工智慧領域內,GAN是目前最為潮流的技術之一,GAN能夠讓人工智慧具備和人類一樣的想象能力。只需要給定計算機一定的資料,它就可以自動聯想出相似的資料。我們學習和使用GAN的原因如下: 1.能夠用GAN進行無監督學習:深度學習需要大量資料的標註才能夠進行監督學習,而使用GAN則不需要使用大量標註的

解讀生成對抗網路GAN 之U-GAN-IT

Unsupervised Generative Attentionnal Networks with Adapter Layer-In(U-GAN-IT) 從字面我們可以理解為無監督生成對抗網路和適配層的結合   論文實現: 論文實現了無監督影象的翻譯問題,當兩個影象之間兩個影象、紋理差別較大時的

生成對抗網路GAN

   生成對抗網路(GAN),是深度學習模型之一,2014年lan Goodfellow的開篇之作Generative Adversarial Network, GAN概述   GAN包括兩個模型,一個是生成模型(generative model),一個

在瀏覽器中進行深度學習:TensorFlow.js (八生成對抗網路 GAN

Generative Adversarial Network 是深度學習中非常有趣的一種方法。GAN最早源自Ian Goodfellow的這篇論文。LeCun對GAN給出了極高的評價: “There are many interesting recent development in deep learni

生成對抗網路GAN相關問題彙總較全面

今年暑假在北京大學參加了一個月的人工智慧DeeCamp訓練營培訓,期間實踐課題是:基於文字的影象生成,用到了各種GAN網路對比試驗結果。當時只是想著實驗各種GAN看效果,對於每一個GAN都有什麼改進一知半解。接下來還要指導一篇基於GAN的水下影象生成本科生畢設,現在整理一下網

生成對抗網路GAN如何快速理解?這裡有一篇最直觀的解讀

原文來源:freeCodeCamp作者:Thalles Silva「雷克世界」編譯:嗯~阿童木呀

生成對抗網路CGAN37---《深度學習》

在前面我們簡單介紹了生成對抗網路(GAN)的基本結構和其訓練方式,然而這種方式是基於無監督學習的,沒有指定對應的標籤,使用一個分佈直接進行取樣,從而理論上達到可以完全逼近原始資料,因此生成網路G比較自由,而且當圖片的畫素較多的時候,這樣導致訓練好的生成網路G不可

卷積生成對抗網路DCGAN---生成手寫數字

# 深度卷積生成對抗網路(DCGAN) ## ---- 生成 MNIST 手寫圖片 ## 1、基本原理 生成對抗網路(GAN)由2個重要的部分構成: - 生成器(Generator):通過機器生成資料(大部分情況下是影象),目的是“騙過”判別器 - 判別器(Discriminator):判斷這張影象是真實

不要慫就是GAN (生成對抗網路) :訓練和測試 GAN

在 /home/your_name/TensorFlow/DCGAN/ 下新建檔案 train.py,同時新建資料夾 logs 和資料夾 samples,前者用來儲存訓練過程中的日誌和模型,後者用來儲存訓練過程中取樣器的取樣圖片,在 train.py 中輸入如下程式碼:

不要慫就是GAN (生成對抗網路) :Wasserstein GANWGAN TensorFlow 程式碼

先來梳理一下我們之前所寫的程式碼,原始的生成對抗網路,所要優化的目標函式為:  此目標函式可以分為兩部分來看: ①固定生成器 G,優化判別器 D, 則上式可以寫成如下形式:    可以轉化為最小化形式:  我們編寫的程式碼中,d_loss_real =

生成對抗網路Generative Adversarial NetworksGAN初探

1. 從納什均衡(Nash equilibrium)說起 我們先來看看納什均衡的經濟學定義: 所謂納什均衡,指的是參與人的這樣一種策略組合,在該策略組合上,任何參與人單獨改變策略都不會得到好處。換句話說,如果在一個策略組合上,當所有其他人都不改變策略時,沒有人會改變自己的策略,則該策略組合就是一個

GAN (生成對抗網路) GAN 簡介

自從 Ian Goodfellow 在 14 年發表了 論文 Generative Adversarial Nets 以來,生成式對抗網路 GAN 廣受關注,加上學界大牛 Yann Lecun 在 Quora 答題時曾說,他最激動的深度學習進展是生成式對抗網路,使得 GAN 成為近年來在機器學習

2018.11.14——對抗生成網路GAN

用途:用生成對抗網路生成圖片 原理:兩位博弈方分別由生成式模型 (generative model)和判別模型充當 (discriminative model)。生成模型G捕捉樣本資料的分佈,用服從某一分佈(均勻分佈、高斯分佈)的噪聲Z生成一個類似真實訓練資料的樣本,追求效果是越像真實樣本越好;