【技术综述】有三说GANs(上)
文章首發(fā)于微信公眾號(hào)《與有三學(xué)AI》
【技術(shù)綜述】有三說GANs(上)
今天我們來說說GAN,這個(gè)被譽(yù)為新的深度學(xué)習(xí)的技術(shù)。由于內(nèi)容非常多,我們會(huì)分上下兩期。今天這一期是上,我們從以下幾個(gè)方向來說。(1)生成式模型與判別式模型。(2)GAN的基本原理。(3)GAN的應(yīng)用。同時(shí)也預(yù)告一下下期的內(nèi)容,(1)GAN的優(yōu)化目標(biāo),(2)GAN的模型發(fā)展(3)GAN的訓(xùn)練技巧。
?
01 生成與判別式模型【1】
正式說GAN之前我們先說一下判別式模型和生成式模型。
1.1?判別式模型
判別式模型,即Discriminative?Model,又被稱為條件概率模型,它估計(jì)的是條件概率分布(conditionaldistribution),?p(class|context)?。
舉個(gè)例子,我們給定(x,y)對,4個(gè)樣本。(1,0),?(1,0),?(2,0),?(2,?1),p(y|x)是事件x發(fā)生時(shí)y的條件概率,它的計(jì)算如下:
1.2?生成式模型
即Generative?Model?,生成式模型?,它估計(jì)的是聯(lián)合概率分布(joint?probability?distribution),p(class,context)=p(class|context)*p(context)?。p(x,y),即事件x與事件y同時(shí)發(fā)生的概率。同樣以上面的樣本為例,它的計(jì)算如下:
1.3?常見模型
常見的判別式模型有Logistic?Regression,Linear?Regression,SVM,Traditional?Neural?Networks
Nearest?Neighbor,CRF等。
常見的生成式模型有Naive?Bayes,Mixtures?of?Gaussians,?HMMs,Markov?Random?Fields等。
1.4?比較
判別式模型?,優(yōu)點(diǎn)是分類邊界靈活?,學(xué)習(xí)簡單,性能較好?;缺點(diǎn)是不能得到概率分布?。
生成式模型?,優(yōu)點(diǎn)是收斂速度快,可學(xué)習(xí)分布,可應(yīng)對隱變量?;缺點(diǎn)是學(xué)習(xí)復(fù)雜?,分類性能較差。
上面是一個(gè)分類例子,可知判別式模型,有清晰的分界面,而生成式模型,有清晰的概率密度分布。生成式模型,可以轉(zhuǎn)換為判別式模型,反之則不能。
?
02 GAN【2】的基本原理
GAN,即Generative?adversarial?net,它同時(shí)包含判別式模型和生成式模型,一個(gè)經(jīng)典的網(wǎng)絡(luò)結(jié)構(gòu)如下。
2.1?基本原理
GAN的原理很簡單,它包括兩個(gè)網(wǎng)絡(luò),一個(gè)生成網(wǎng)絡(luò),不斷生成數(shù)據(jù)分布。一個(gè)判別網(wǎng)絡(luò),判斷生成的數(shù)據(jù)是否為真實(shí)數(shù)據(jù)。上圖是原理展示,黑色虛線是真實(shí)分布,綠色實(shí)線是生成模型的學(xué)習(xí)過程,藍(lán)色虛線是判別模型的學(xué)習(xí)過程,兩者相互對抗,共同學(xué)習(xí)到最優(yōu)狀態(tài)。
2.2?優(yōu)化目標(biāo)與求解
下面是它的優(yōu)化目標(biāo)。
D是判別器,它的學(xué)習(xí)目標(biāo),是最大化上面的式子,而G是生成器,它的學(xué)習(xí)目標(biāo),是最小化上面的式子。上面問題的求解,通過迭代求解D和G來完成。
要求解上面的式子,等價(jià)于求解下面的式子。
其中D(x)屬于(0,1),上式是alog(y)?+?blog(1?y)的形式,取得最大值的條件是D(x)=a/(a+b),此時(shí)等價(jià)于下面式子。
如果用KL散度來描述,上面的式子等于下面的式子。
當(dāng)且僅當(dāng)pdata(x)=pg(x)時(shí),取得極小值-log4,此時(shí)d=0.5,無法分辨真實(shí)樣本和假樣本。
GAN從理論上,被證實(shí)存在全局最優(yōu)解。至于KL散度,大家可以再去補(bǔ)充相關(guān)知識(shí),篇幅有限不做贅述。
2.3?如何訓(xùn)練
直接從原始論文中截取偽代碼了,可見,就是采用判別式模型和生成式模型分別循環(huán)依次迭代的方法,與CNN一樣,使用梯度下降來優(yōu)化。
2.4?GAN的主要問題
GAN從本質(zhì)上來說,有與CNN不同的特點(diǎn),因?yàn)镚AN的訓(xùn)練是依次迭代D和G,如果判別器D學(xué)的不好,生成器G得不到正確反饋,就無法穩(wěn)定學(xué)習(xí)。如果判別器D學(xué)的太好,整個(gè)loss迅速下降,G就無法繼續(xù)學(xué)習(xí)。
GAN的優(yōu)化需要生成器和判別器達(dá)到納什均衡,但是因?yàn)榕袆e器D和生成器G是分別訓(xùn)練的,納什平衡并不一定能達(dá)到,這是早期GAN難以訓(xùn)練的主要原因。另外,最初的損失函數(shù)也不是最優(yōu)的,這些就留待我們的下篇再細(xì)講吧,下面欣賞一下GAN的一些精彩的應(yīng)用。
?
03 GAN的應(yīng)用
3.1?數(shù)據(jù)生成
-
從GAN到Conditional?GAN
GAN的生成式模型可以擬合真實(shí)分布,所以它可以用于偽造數(shù)據(jù)。DCGAN【3】是第一個(gè)用全卷積網(wǎng)絡(luò)做數(shù)據(jù)生成的,下面是它的基本結(jié)構(gòu)和生成的數(shù)據(jù)。
輸入100維的噪聲,輸出64*64的圖像,從mnist的訓(xùn)練結(jié)果來看,還不錯(cuò)。筆者也用DCGAN生成過嘴唇表情數(shù)據(jù),也是可用的。
但是它的問題是不能控制生成的數(shù)字是1還是9,所以后來有了CGAN【4】,即條件GAN,網(wǎng)絡(luò)結(jié)構(gòu)如下。
它將標(biāo)簽信息encode為一個(gè)向量,串接到了D和G的輸入進(jìn)行訓(xùn)練,優(yōu)化目標(biāo)發(fā)生了改變。
?
與cgan類似,infogan【5】將噪聲z進(jìn)行了拆解,一是不可壓縮的噪聲z,二是可解釋的隱變量c,可以認(rèn)為infogan就是無監(jiān)督的cgan,這樣能夠約束c與生成數(shù)據(jù)之間的關(guān)系,控制一些屬性,比如旋轉(zhuǎn)等。
條件GAN的出現(xiàn),使得控制GAN的輸出有了可能,出現(xiàn)了例如文本生成圖像【6】的應(yīng)用。
-
金字塔GAN
原始的GAN生成圖的分辨率太小,無法實(shí)用,借鑒經(jīng)典圖像中的金字塔算法,LAPGAN【7】/StackedGAN8【8】各自提出類似的想法,下面是LAPGAN的結(jié)構(gòu)。
它有以下特點(diǎn)。
(1)使用殘差逼近,學(xué)習(xí)相對容易。
(2)逐級(jí)獨(dú)立訓(xùn)練提高了網(wǎng)絡(luò)簡單記憶輸入樣本的難度,減少了每一次?GAN?需要學(xué)習(xí)的內(nèi)容,也就從而增大了GAN?的學(xué)習(xí)能力和泛化能力。
在這個(gè)基礎(chǔ)上,nvidia-gan【9】生成了1024分辨率的圖片,它的網(wǎng)絡(luò)結(jié)構(gòu)和生成結(jié)果如下。
?
-
cross?domain學(xué)習(xí)
cross?domain的學(xué)習(xí),提供了更豐富的數(shù)據(jù)生成應(yīng)用。
在傳統(tǒng)的domain?adaption中,我們需要學(xué)習(xí)或者訓(xùn)練一個(gè)domain?adaptor,而這個(gè)domain?adaptor需要用source?domain和對應(yīng)的target?domain的訓(xùn)練圖片來訓(xùn)練。coGAN【10】/align?gan【11】可以在兩個(gè)domain不存在對應(yīng)樣本的情況下學(xué)出一個(gè)聯(lián)合分布,方法是每一個(gè)domain使用一個(gè)GAN,并且將高層的語義信息進(jìn)行強(qiáng)制權(quán)值共享。
在這樣的基礎(chǔ)上,有一些很有意義的應(yīng)用。比如蘋果simGAN【12】用于優(yōu)化仿真數(shù)據(jù)的方案,此時(shí)生成器G的輸入是合成圖像,而不是隨機(jī)向量,它完美學(xué)習(xí)到了人工合成圖片(synthetic?images)數(shù)據(jù)分布到真實(shí)圖片(real?images)數(shù)據(jù)分布的映射。
下面是生成的結(jié)果,很有工程意義。
-
一些很酷的應(yīng)用
下面再說一些很酷的應(yīng)用,細(xì)節(jié)不再詳述。
creative-gan【13】,用于生成藝術(shù)風(fēng)格的圖片。
DesignGan【14】,用于設(shè)計(jì)T恤。
TP-GAN【15】,用于人臉正臉化。
還有更多關(guān)于視頻,音頻的生成【16-19】,請關(guān)注我們后續(xù)文章和知乎專欄。
3.2?風(fēng)格遷移
文【20】實(shí)現(xiàn)了像素級(jí)別的風(fēng)格轉(zhuǎn)換,它的關(guān)鍵是提供了兩個(gè)域中有相同數(shù)據(jù)的成對訓(xùn)練樣本,本質(zhì)上,是一個(gè)CGAN。
cycle-gan【21】/dual-gan【22】則更勝一籌,不需要配對的數(shù)據(jù)集,可以實(shí)現(xiàn)源域和目標(biāo)域的相互轉(zhuǎn)換。
pairedcycle【23】,將源域和目標(biāo)域的相互轉(zhuǎn)換用到化妝和去妝,很有趣的應(yīng)用。
文【24】學(xué)習(xí)了一個(gè)數(shù)據(jù)集到另一個(gè)數(shù)據(jù)集的遷移,可以用于遷移學(xué)習(xí),如實(shí)現(xiàn)漫畫風(fēng)格。
文【25】實(shí)現(xiàn)了動(dòng)作的遷移。
文【26】實(shí)現(xiàn)了年齡的仿真。
文【27】提出了一種去雨的算法,很有實(shí)際意義。
文【28】實(shí)現(xiàn)了卡通風(fēng)格的轉(zhuǎn)換。
文【29】實(shí)現(xiàn)了字體風(fēng)格的遷移。
文【30】實(shí)現(xiàn)了去模糊。
更多風(fēng)格化相關(guān)的應(yīng)用,請關(guān)注配套知乎專欄。
3.3?超分辨重建
srgan【31】是最早使用GAN做超分辨重建的應(yīng)用,它將輸入從隨機(jī)噪聲改為低分辨率的圖片,使用了殘差結(jié)構(gòu)和perception?loss,有很大的應(yīng)用價(jià)值。
超分辨重建可用于小臉的檢測【32】,是個(gè)值得關(guān)注的方向。
其實(shí)GAN還有很多其他的應(yīng)用,我們這里就不一一講述了。后面在公眾號(hào)的GAN專欄和知乎專欄,都會(huì)仔細(xì)解讀。
參考文獻(xiàn)
【1】Xue J H, Titterington D M. Comment on “On Discriminative vs. Generative Classifiers: A Comparison of Logistic Regression and Naive Bayes”[J]. Neural Processing Letters, 2008, 28(3):169.
【2】Goodfellow I, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets[C]//Advances in neural information processing systems. 2014: 2672-2680.
【3】Radford A, Metz L, Chintala S. Unsupervised representation learning with deep convolutional generative adversarial networks[J]. arXiv preprint arXiv:1511.06434, 2015.
【4】Mirza M, Osindero S. Conditional generative adversarial nets[J]. arXiv preprint arXiv:1411.1784, 2014.
【5】Chen X, Duan Y, Houthooft R, et al. Infogan: Interpretable representation learning by information maximizing generative adversarial nets[C]//Advances in neural information processing systems. 2016: 2172-2180.
【6】Reed S, Akata Z, Yan X, et al. Generative adversarial text to image synthesis[J]. arXiv preprint arXiv:1605.05396, 2016.
【7】Denton E L, Chintala S, Fergus R. Deep generative image models using a laplacian pyramid of adversarial networks[C]//Advances in neural information processing systems. 2015: 1486-1494.
【8】Huang X, Li Y, Poursaeed O, et al. Stacked generative adversarial networks[C]//IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2017, 2(4).
【9】Karras T, Aila T, Laine S, et al. Progressive growing of gans for improved quality, stability, and variation[J]. arXiv preprint arXiv:1710.10196, 2017.
【10】Mao X, Li Q, Xie H. AlignGAN: Learning to align cross-domain images with conditional generative adversarial networks[J]. arXiv preprint arXiv:1707.01400, 2017.
【11】Liu M Y, Tuzel O. Coupled generative adversarial networks[C]//Advances in neural information processing systems. 2016: 469-477.
【12】Shrivastava A, Pfister T, Tuzel O, et al. Learning from simulated and unsupervised images through adversarial training[C]//The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2017, 3(4): 6.
【13】Elgammal A, Liu B, Elhoseiny M, et al. CAN: Creative adversarial networks, generating" art" by learning about styles and deviating from style norms[J]. arXiv preprint arXiv:1706.07068, 2017.
【14】Sbai O, Elhoseiny M, Bordes A, et al. DeSIGN: Design Inspiration from Generative Networks[J]. arXiv preprint arXiv:1804.00921, 2018.
【15】Huang R, Zhang S, Li T, et al. Beyond face rotation: Global and local perception gan for photorealistic and identity preserving frontal view synthesis[J]. arXiv preprint arXiv:1704.04086, 2017.
【16】Creswell A, Bharath A A. Adversarial training for sketch retrieval[C]//European Conference on Computer Vision. Springer, Cham, 2016: 798-809.
【17】Tulyakov S, Liu M Y, Yang X, et al. Mocogan: Decomposing motion and content for video generation[J]. arXiv preprint arXiv:1707.04993, 2017.
【18】Juvela L, Bollepalli B, Wang X, et al. Speech waveform synthesis from MFCC sequences with generative adversarial networks[J]. arXiv preprint arXiv:1804.00920, 2018.
【19】Yu L, Zhang W, Wang J, et al. SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient[C]//AAAI. 2017: 2852-2858.
【20】Isola P, Zhu J Y, Zhou T, et al. Image-to-Image Translation with Conditional Adversarial Networks[J]. 2016:5967-5976.
【21】Zhu J Y, Park T, Isola P, et al. Unpaired image-to-image translation using cycle-consistent adversarial networks[J]. arXiv preprint, 2017.
【22】Yi Z, Zhang H, Tan P, et al. Dualgan: Unsupervised dual learning for image-to-image translation[J]. arXiv preprint, 2017.
【23】Chang H, Lu J, Yu F, et al. Pairedcyclegan: Asymmetric style transfer for applying and removing makeup[C]//2018 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2018.
【24】Wei L, Zhang S, Gao W, et al. Person Transfer GAN to Bridge Domain Gap for Person Re-Identification[J]. arXiv preprint arXiv:1711.08565, 2017.
【25】Joo D, Kim D, Kim J. Generating a Fusion Image: One's Identity and Another's Shape[J]. arXiv preprint arXiv:1804.07455, 2018.
【26】Yang H, Huang D, Wang Y, et al. Learning face age progression: A pyramid architecture of gans[J]. arXiv preprint arXiv:1711.10352, 2017.
【27】Qian R, Tan R T, Yang W, et al. Attentive Generative Adversarial Network for Raindrop Removal from A Single Image[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 2482-2491.
【28】Chen Y, Lai Y K, Liu Y J. CartoonGAN: Generative Adversarial Networks for Photo Cartoonization[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 9465-9474.
【29】Azadi S, Fisher M, Kim V, et al. Multi-content gan for few-shot font style transfer[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018, 11: 13.
【30】Kupyn O, Budzan V, Mykhailych M, et al. DeblurGAN: Blind Motion Deblurring Using Conditional Adversarial Networks[J]. arXiv preprint arXiv:1711.07064, 2017.
【31】Ledig C, Theis L, Huszár F, et al. Photo-realistic single image super-resolution using a generative adversarial network[J]. arXiv preprint, 2017.
【32】Bai Y, Zhang Y, Ding M, et al. Finding tiny faces in the wild with generative adversarial network[J]. CVPR. IEEE, 2018.
同時(shí),在我的知乎專欄也會(huì)開始同步更新這個(gè)模塊,歡迎來交流
https://zhuanlan.zhihu.com/c_151876233
注:部分圖片來自網(wǎng)絡(luò)
—END—
感謝各位看官的耐心閱讀,不足之處希望多多指教。后續(xù)內(nèi)容將會(huì)不定期奉上,歡迎大家關(guān)注有三公眾號(hào) 有三AI!
?
?
?
總結(jié)
以上是生活随笔為你收集整理的【技术综述】有三说GANs(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【技术综述】人脸年龄估计研究现状
- 下一篇: 【方法杂谈】你真的了解CVPR吗?