【線上直播】《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元,詳情點選註冊參會

.