GAN應用情況

今天我們來聊一個輕鬆一些的話題——GAN的應用。


在此之前呢,先推薦大家去讀一下一篇新的文章LS-GAN(Loss-sensitive GAN)[1]。


這個文章比WGAN出現的時間要早幾天,它在真實分佈滿足Lipschitz條件的假設下,提出了LS-GAN,並證明了它的納什均衡解存在。它也能解決generator梯度消失的問題,實驗發現不存在mode collapse的問題。


作者齊國君老師在知乎上寫了一篇文章介紹LS-GAN,建議感興趣的童鞋也去閱讀一下,地址:

條條大路通羅馬LS-GAN:把GAN建立在Lipschitz密度上

 

回到今天的主題GAN的應用上來。GAN的應用按照大類分爲在圖像上的應用、在NLP上的應用,以及與增強學習結合。我們分這兩個大類進行介紹。今天介紹的應用不涉及算法細節(除了能簡短介紹清楚的算法),基本上都有源碼,參見文末。


GAN在圖像上的應用


從目前的文獻來看,GAN在圖像上的應用主要是往圖像修改方向發展。涉及的圖像修改包括:單圖像超分辨率(single image super-resolution)、交互式圖像生成、圖像編輯、圖像到圖像的翻譯等。


單圖像超分辨率

單圖像超分辨率任務(SISR)就是給定單張低分辨率圖像,生成它的高分辨率圖像。傳統方法一般是插值,但是插值不可避免地會產生模糊。GAN怎麼應用到這個任務上去呢?


首先,GAN有兩個博弈的對手:G(generator)和D(discriminator),容易想到一種可能的方案是:G的輸入是低分辨率圖像(LR),輸出應該是高分辨率圖像(HR)。文獻[9]正是採用這種做法。作者採用ResNet作爲G,網絡架構如下圖所示:

對於一批N張圖像,G的loss定義爲

其中,包含兩部分:content loss和adversarial loss。G的loss包含content loss部分,因此G並非完全的非監督,它也用到了監督信息:它強制要求生成圖像提取的特徵與真實圖像提取的特徵要匹配,文中用到的特徵提取網絡爲VGG,content loss定義如下:

而adversarial loss就是我們常見的GAN loss:

文中採用的爲:

文獻[9]的實驗效果如下圖所示,可以看出,SRGAN效果比其他方法要好,生成的圖像模糊程度更低。代碼參見文末的SRGAN。

此外,還有另外一個文章[3]也做了GAN在SISR上的應用,文中提出了AffGAN。這裏不再展開介紹,感興趣的同學請參看原文。


交互式圖像生成

這個工作來自於Adobe公司。他們構建了一套圖像編輯操作,能使得經過這些操作以後,圖像依舊在“真實圖像流形”上,因此編輯後的圖像更接近真實圖像。

具體來說,iGAN的流程包括以下幾個步驟:

  1. 將原始圖像投影到低維的隱向量空間

  2. 將隱向量作爲輸入,利用GAN重構圖像

  3. 利用畫筆工具對重構的圖像進行修改(顏色、形狀等)

  4. 將等量的結構、色彩等修改應用到原始圖像上。


值得一提的是,作者提出G需爲保距映射的限制,這使得整個過程的大部分操作可以轉換爲求解優化問題,整個修改過程近乎實時。細節比較多,這裏不再展開,請參考文獻[6],代碼請參考文末的iGAN。下面的demo經過壓縮圖像質量比較差,查看清晰版本請移步iGAN的github頁面。


圖像編輯

GAN也可以應用到圖像編輯上,文獻[14]提出了IAN方法(Introspective Adversarial Network),它融合了GAN和VAE(variational autoencoder,另一種生成模型)。如果你對VAE、GAN以及它們的融合都比較熟悉,理解IAN應該是很容易的。文章的主要創新在於loss的設計上。

以下是IAN編輯圖像的一個demo,代碼可以在文末的IAN部分找到。


圖像到圖像的翻譯

所謂“圖像到圖像的翻譯”( image to image translation),是指將一種類型的圖像轉換爲另一種類型的圖像,比如:將草圖具象化、根據衛星圖生成地圖等。文獻[7]設計了一種算法pix2pix,將GAN應用到image to image translation上。

作者採用CGAN(conditional GAN,關於CGAN的介紹,參見兩週前的推送20170203),將待轉換的圖像作爲condition,加上高斯噪聲作爲generator的輸入,generator將輸入轉換爲我們需要的目標圖像,而discriminator判斷圖像是generator產生的,還是真實的目標圖像。爲了能讓generator產生的圖像逼近真實的目標圖像,generator的loss還包含目標圖像匹配度的懲罰項,採用L1範數,generator的loss設計如下:

其中,y即爲真實的目標圖像。

然而,作者在實驗中發現,generator會忽略高斯噪聲z,而直接根據輸入圖像x產生目標圖像y。爲了解決這個問題,作者只在generator的某些層上以dropout的形式加入噪聲(training和test時都需要dropout)。代碼參見文末的pix2pix,實驗效果如下圖所示:


GAN在NLP上的應用


目前來說GAN在NLP上的應用可以分爲兩類:生成文本、根據文本生成圖像。其中,生成文本包括兩種:根據隱向量(噪聲)生成一段文本;對話生成。

如果你對GAN在NLP中的應用感興趣,推薦閱讀下面的文章:

http://www.machinedlearnings.com/2017/01/generating-text-via-adversarial-training.html

或者可以查看AI100翻譯的版本:

http://mp.weixin.qq.com/s/-lcEuxPnTrQFVJV61MWsAQ

我對NLP的瞭解比較少,這裏只列舉其中一部分應用。


對話生成

GAN應用到對話生成的例子,可以看這篇文章[2],文末也有相關的代碼(參看GAN for Neural dialogue generation)。下圖是GAN對話生成算法的僞代碼,省略了很多細節:

實驗效果如下圖:

這個工作很有意思。可以看出,生成的對話具有一定的相關性,但是效果並不是很好,而且這隻能做單輪對話。

 

文本到圖像的翻譯

GAN也能用於文本到圖像的翻譯(text to image),在ICML 2016會議上,Scott Reed等人提出了基於CGAN的一種解決方案[13]:將文本編碼作爲generatorcondition輸入;對於discriminator,文本編碼在特定層作爲condition信息引入,以輔助判斷輸入圖像是否滿足文本描述。文中用到的GAN架構如下:

作者提出了兩種基於GAN的算法,GAN-CLSGAN-INTGAN-CLS算法如下:

GAN-INT對多種文本編碼做一個加權,在這種設計下,generator的loss爲:

其中,β控制兩種文本編碼的加權係數。

實驗發現生成的圖像相關性很高。代碼參見文末的text2image。


此外,GAN還可以跟增強學習(RL)結合。


Ian Goodfellow指出,GAN很容易嵌入到增強學習(reinforcement learning)的框架中。例如,用增強學習求解規劃問題時,可以用GAN學習一個actions的條件概率分佈,agent可以根據生成模型對不同的actions的響應,選擇合理的action。


GAN與RL結合的典型工作有:將GAN嵌入模仿學習(imitation learning)中[5];將GAN嵌入到策略梯度算法(policy gradient)中[11],將GAN嵌入到actor-critic算法中[15],等。


GAN與增強學習結合的相關工作多數在16年纔開始出現,GAN和RL屬於近年來的研究熱點,兩者結合預計在接下來的一兩年裏將得到更多研究者的青睞。


常見GAN


最後,作爲GAN專題的結尾,我們列舉一下目前常見的GAN模型(可以根據arxiv id去尋找、下載文獻),歡迎補充。

  • GAN - Ian Goodfellow, arXiv:1406.2661v1

  • DCGAN - Alec Radford & Luke Metz, arxiv:1511.06434

  • CGAN - Mehdi Mirza, arXiv:1411.1784v1

  • LAPGAN - Emily Denton & Soumith Chintala, arxiv: 1506.05751

  • InfoGAN - Xi Chen, arxiv: 1606.03657

  • PPGAN - Anh Nguyen, arXiv:1612.00005v1

  • WGAN - Martin Arjovsky, arXiv:1701.07875v1

  • LS-GAN - Guo-Jun Qi, arxiv: 1701.06264

  • SeqGAN - Lantao Yu, arxiv: 1609.05473

  • EBGAN - Junbo Zhao, arXiv:1609.03126v2

  • VAEGAN - Anders Boesen Lindbo Larsen, arxiv: 1512.09300

......

此外,還有一些在特定任務中提出來的模型,如本期介紹的GAN-CLS、GAN-INT、SRGAN、iGAN、IAN等等,這裏就不再列舉。


代碼


  • LS-GAN

Torch版本:https://github.com/guojunq/lsgan

  • SRGAN

Tensorflow版本:https://github.com/buriburisuri/SRGAN

Torch版本:https://github.com/leehomyc/Photo-Realistic-Super-Resoluton

Keras版本:https://github.com/titu1994/Super-Resolution-using-Generative-Adversarial-Networks

  • iGAN

Theano版本:https://github.com/junyanz/iGAN

  • IAN

Theano版本:https://github.com/ajbrock/Neural-Photo-Editor

  • Pix2pix

Torch版本:https://github.com/phillipi/pix2pix

Tensorflow版本:https://github.com/yenchenlin/pix2pix-tensorflow

  • GAN for Neural dialogue generation

Torch版本:https://github.com/jiweil/Neural-Dialogue-Generation

  • Text2image

Torch版本:https://github.com/reedscot/icml2016

Tensorflow+Theano版本:https://github.com/paarthneekhara/text-to-image

  • GAN for Imitation Learning

Theano版本:https://github.com/openai/imitation

  • SeqGAN

Tensorflow版本:https://github.com/LantaoYu/SeqGAN 


參考文獻


  1.  Qi G J. Loss-Sensitive Generative Adversarial Networks onLipschitz Densities[J]. arXiv preprint arXiv:1701.06264, 2017.

  2.  Li J, Monroe W, Shi T, et al. Adversarial Learning for NeuralDialogue Generation[J]. arXiv preprint arXiv:1701.06547, 2017.

  3.  Sønderby C K, Caballero J, Theis L, et al. Amortised MAPInference for Image Super-resolution[J]. arXiv preprint arXiv:1610.04490, 2016.

  4.  Ravanbakhsh S, Lanusse F, Mandelbaum R, et al. Enabling DarkEnergy Science with Deep Generative Models of Galaxy Images[J]. arXiv preprintarXiv:1609.05796, 2016.

  5. Ho J, Ermon S. Generative adversarial imitationlearning[C]//Advances in Neural Information Processing Systems. 2016:4565-4573.

  6. Zhu J Y, Krähenbühl P, Shechtman E, et al. Generative visualmanipulation on the natural image manifold[C]//European Conference on ComputerVision. Springer International Publishing, 2016: 597-613.

  7. Isola P, Zhu J Y, Zhou T, et al. Image-to-image translationwith conditional adversarial networks[J]. arXiv preprint arXiv:1611.07004,2016.

  8. Shrivastava A, Pfister T, Tuzel O, et al. Learning fromSimulated and Unsupervised Images through Adversarial Training[J]. arXivpreprint arXiv:1612.07828, 2016.

  9. Ledig C, Theis L, Huszár F, et al. Photo-realistic singleimage super-resolution using a generative adversarial network[J]. arXivpreprint arXiv:1609.04802, 2016.

  10. Nguyen A, Yosinski J, Bengio Y, et al. Plug & playgenerative networks: Conditional iterative generation of images in latentspace[J]. arXiv preprint arXiv:1612.00005, 2016.

  11. Yu L, Zhang W, Wang J, et al. Seqgan: sequence generativeadversarial nets with policy gradient[J]. arXiv preprint arXiv:1609.05473,2016.

  12. Lotter W, Kreiman G, Cox D. Unsupervised learning of visualstructure using predictive generative networks[J]. arXiv preprintarXiv:1511.06380, 2015.

  13. Reed S, Akata Z, Yan X, et al. Generative adversarial textto image synthesis[C]//Proceedings of The 33rd International Conference onMachine Learning. 2016, 3.

  14. Brock A, Lim T, Ritchie J M, et al. Neural photo editingwith introspective adversarial networks[J]. arXiv preprint arXiv:1609.07093,2016.

  15. Pfau D, Vinyals O. Connecting generative adversarialnetworks and actor-critic methods[J]. arXiv preprint arXiv:1610.01945, 2016.

文章轉自:http://blog.csdn.net/Leonis_v/article/details/56016019

發佈了0 篇原創文章 · 獲贊 21 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章