今天我們來聊一個輕鬆一些的話題——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的流程包括以下幾個步驟:
-
將原始圖像投影到低維的隱向量空間
-
將隱向量作爲輸入,利用GAN重構圖像
-
利用畫筆工具對重構的圖像進行修改(顏色、形狀等)
-
將等量的結構、色彩等修改應用到原始圖像上。
值得一提的是,作者提出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]:將文本編碼作爲generator的condition輸入;對於discriminator,文本編碼在特定層作爲condition信息引入,以輔助判斷輸入圖像是否滿足文本描述。文中用到的GAN架構如下:
作者提出了兩種基於GAN的算法,GAN-CLS和GAN-INT。GAN-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
參考文獻
-
Qi G J. Loss-Sensitive Generative Adversarial Networks onLipschitz Densities[J]. arXiv preprint arXiv:1701.06264, 2017.
-
Li J, Monroe W, Shi T, et al. Adversarial Learning for NeuralDialogue Generation[J]. arXiv preprint arXiv:1701.06547, 2017.
-
Sønderby C K, Caballero J, Theis L, et al. Amortised MAPInference for Image Super-resolution[J]. arXiv preprint arXiv:1610.04490, 2016.
-
Ravanbakhsh S, Lanusse F, Mandelbaum R, et al. Enabling DarkEnergy Science with Deep Generative Models of Galaxy Images[J]. arXiv preprintarXiv:1609.05796, 2016.
-
Ho J, Ermon S. Generative adversarial imitationlearning[C]//Advances in Neural Information Processing Systems. 2016:4565-4573.
-
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.
-
Isola P, Zhu J Y, Zhou T, et al. Image-to-image translationwith conditional adversarial networks[J]. arXiv preprint arXiv:1611.07004,2016.
-
Shrivastava A, Pfister T, Tuzel O, et al. Learning fromSimulated and Unsupervised Images through Adversarial Training[J]. arXivpreprint arXiv:1612.07828, 2016.
-
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.
-
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.
-
Yu L, Zhang W, Wang J, et al. Seqgan: sequence generativeadversarial nets with policy gradient[J]. arXiv preprint arXiv:1609.05473,2016.
-
Lotter W, Kreiman G, Cox D. Unsupervised learning of visualstructure using predictive generative networks[J]. arXiv preprintarXiv:1511.06380, 2015.
-
Reed S, Akata Z, Yan X, et al. Generative adversarial textto image synthesis[C]//Proceedings of The 33rd International Conference onMachine Learning. 2016, 3.
-
Brock A, Lim T, Ritchie J M, et al. Neural photo editingwith introspective adversarial networks[J]. arXiv preprint arXiv:1609.07093,2016.
-
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