生成對抗網路GANs(筆記一)主線
生成式對抗網路(Generative Adversarial Nets, GAN)
一、發展歷程:
最開始接觸GANs是因為想了解有關於在少量資料的情況下如何做資料增廣。然後就瞭解到了DCGAN生成手寫數字的案例,簡直是驚為天人,然今才逐漸開始瞭解生成對抗網路的思想。到了後來一直想用生成對抗網路的思想做語音識別和語音合成這一方面,一直找到合適的資料。再後來,鬼使神差的想結合GANs來做畢業論文,摸摸索索的緩慢向前進發,苦於身邊也沒有什麼人敢這一方面的東西,基本上所有事情都只能靠自己。
這裡記錄下關於GANs的前世今生:
http://www.lancezhange.com/2015/11/19/adversarial-samples/
Intriguing properties of neural networks, by Christian Szegedy at Google, et al,2014
https://www.kdnuggets.com/2015/07/deep-learning-adversarial-examples-misconceptions.html這裡一篇論文有關於對抗樣本的一些講解。主要思想是:深度學習被他們證明受對抗樣本的干擾最小;線性模型才是造成分類結果不一致的主要原因,而並非是非線性因素;在資料處理的過程中,因為對抗樣本在實際情況中不一定會出現,因此在訓練階段拒絕處理對抗樣本要比吧對抗樣本錯誤分類要好,但這個結果並不是讓人滿意的解決方案;對抗樣本的產生不一定要訪問模型本身才能做到,可以自己訓練;對抗樣本上使用正則化並不能有效。
思維上的碰撞會使得理論更加的完善,這一點都不假。人們又開始思考機器和人的視覺真正差異的地方,(Deep Learning’s Deep Flaws)’s Deep Flaws, by Zachary Chase Lipton這篇文章繼續分析,對抗樣本對深度學習模型的表現不只是在深度學習方面才會有,各種機器學習都不會有100%的分類正確率。這些都推動了模型抗干擾能力方面的研究,而開始引用的博文裡面有提到:現在相關領域的論文,無深度,不論文,灌水的太多,隨便改一改模型的架構,調一調引數就能發表,結果好了也不知道好的原因。所以對抗樣本或許可以用來評價這些模型構架,使得可以用對抗樣本來訓練,或許可以提高模型的能力,這樣,提出了對抗訓練的概念(adversarial training),通過這種方式提高模型的魯棒性。
後來,GoodFellow在Generative Adversarial Networks, by Ian Goodfellow, et al中提出了生成式對抗網路的思想用於對抗訓練,對抗訓練產生的結果可以產生人眼無法分辨的樣本,這算得上是對抗訓練的開山之作,現在這篇論文的引用好像都過萬了,而且根據谷歌公司的統計,最近兩年的等會論文,在GANs方面的論文,數量上都有超過深度學習的趨勢。在 GANs 中,包含一個生成模型G和一個判別模型D,D要判別樣本是來自G還是真實資料集,而G的目標是生成能夠騙過D的對抗樣本,可以將G看做假幣生產者,而D就是警察,通過G和D的不斷交手,彼此的技能都會逐漸提高,最終使得G生產的假幣能夠以假亂真。後來又有人用拉普拉斯金字塔來構建生成模型,都取得了一定的效果。
但是GANs也有很多的不足之處,論文的作者提到了原始的模型有資料坍塌的問題,會生成很多奇奇怪怪的結果。比如貓有4隻眼睛這些問題。之後Conditional generative adversarial nets for convolutional face generation 條件生成對抗網路(CGANs)被提出,對於原始的GAN模式有了比較大的改善。同時期還有很多優秀的論文比如DCGAN,WGAN等這裡就不一一列舉了。
二、文獻跟蹤