对抗样本和对抗网络
前言:本文轉載lancezhange?的博文《對抗樣本和對抗網絡》,文章介紹了對抗樣本的概念和相關文獻,并且進一步介紹了生成式對抗網絡(Generative Adversarial Nets, GAN)。
? ? 所謂對抗 樣本是指將實際樣本略加擾動而構造出的合成樣本,對該樣本,分類器非常容易將其類別判錯,這意味著光滑性假設(相似的樣本應該以很高的概率被判為同一類別)某種程度上被推翻了。
? ??Intriguing properties of neural networks, by Christian Szegedy at Google, et al,2014. 這篇論文應該是最早提出對抗樣本概念的。論文指出,包括卷積神經網絡在內的深度學習模型在對抗樣本面前都十分脆弱,從而將矛頭直指深度學習,似乎要為深度學習熱潮降一降溫。
? ??Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable Images, by Nguyen A, et al, CVPR 15一文更是發現,面對一些人類完全無法識別的樣本(論文中稱為?Fooling Examples),深度學習模型居然會以高置信度將它們進行分類,例如將噪聲識別為獅子。這意味著這些模型很容易被愚弄,例如垃圾郵件發送者可能利用對抗樣本來騙過垃圾郵件識別系統,目下依賴人臉驗證的人臉支付等新潮科技也將面臨巨大風險。當然了,只要谷歌不公開他們的垃圾郵件過濾模型的架構,騙子們似乎也無法針對它大規模制造對抗樣本,所以我們不用過分緊張,把模型藏好就可以了。然而,可怕的是,在不同訓練子集上用不同的架構學習的不同的模型,居然能夠被同一套對抗樣本愚弄!這意味著騙子們可以自己訓練出一個模型,并在此模型上找到一組對抗樣本之后就能通吃其他模型了,想想還真是可怕。
? ??那么,對抗樣本只是我們的模型照顧不到的一小部分法外之地嗎?論文?Exploring the Space of Adversarial Images(ICLR 2016, under review)(代碼在這里)給出了否定的答案,至少在圖像空間中,對抗圖片絕非孤立點,而是占據了很大一部分空間!
? ? 這些研究的提出,一方面促使人們更深入思考機器和人的視覺的真正差異所在,一方面,加上深度模型本身具有的不可解釋性缺陷,也讓一些人開始認為深度學習不是deep learning, 而是deep flaw.對深度學習來說,這多少是不公平的指責,因為 kdnuggets上的一篇文章(Deep Learning’s Deep Flaws)’s Deep Flaws, by Zachary Chase Lipton指出,深度學習對于對抗樣本的脆弱性并不是深度學習所獨有的,事實上,這在很多機器學習模型中都普遍存在(Box 大人不就說嗎,all models are wrong, but some are useful),而深度學習反而可能是目前為止對對抗訓練最有抵抗性的技術。這篇文章吸引了包括 Bengio 大牛、Ian Goodfellow 等在內的許多人的熱烈討論,Ian Goodfellow(八卦一下,Ian Goodfellow 是 Bengio 的高徒,目前任職于谷歌,是對抗網絡方面的大牛)更是結合這些評論和自己的工作,寫了另外一篇文章:?Deep Learning Adversarial Examples – Clarifying Misconceptions,中文翻譯在此:深度學習對抗樣本的八個誤解與事實。
? ? 那么,導致深度模型對反抗樣本力不從心的真實原因有哪些呢?一般我們知道,可能是模型過擬合導致泛化能力不夠,泛化能力不夠可能是由于模型均化不足或者正則不足,然而,通過更多模型均化和加入更多噪聲訓練等方式來應對對抗樣本的企圖均告失敗。另外一個猜測是模型的高度非線性,深度模型動輒千百萬的參數個數確實讓人有點不太舒服(馮諾依曼不就說嗎,給他四個參數,他就能模擬大象,五個參數,大象就能搖尾巴了(還真有人寫論文探討如何模擬大象,參見Drawing an elephant with four complext parameters)),但 Ian Goodfellow 在論文?explaining and harnessing adversarial examples, ICLR 2015?中,通過在一個線性模型中加入對抗干擾,發現只要線性模型的輸入擁有足夠的維度(事實上大部分情況下,模型輸入的維度都比較大,因為維度過小的輸入會導致模型的準確率過低,即欠擬合),線性模型也對對抗樣本表現出明顯的脆弱性,這駁斥了關于對抗樣本是因為模型的高度非線性的解釋。事實上,該文指出,高維空間中的線性性就足以造成對抗樣本,深度模型對對抗樣本的無力最主要的還是由于其線性部分的存在(primary cause of neural networks’ vulnerability to adversarial perturbation is their linear nature)。
? ??毫無疑問,對抗樣本帶來了對深度學習的質疑(如果能借此滅一滅深度學習的虛火,也是好的,現在相關領域的論文,無深度,不論文,灌水的太多,隨便改一改模型的架構,調一調參數就能發表,結果好了也不知道好的原因 —- 吐槽完畢),但其實這也提供了一個修正深度模型的機會,因為我們可以反過來利用對抗樣本來提高模型的抗干擾能力,因此有了對抗訓練(adversarial training)?的概念。通過對抗訓練,相當于加上了一種形式的正則,可以提高模型的魯棒性。
? ? 隨著對對抗樣本的更多更深入研究,人們逐漸發現,對抗樣本并不是詛咒,而是祝福,因為可以利用對抗樣本生成對抗網絡(GANs)。Generative Adversarial Networks, by Ian Goodfellow, et al,?最早提出了?GANs?的概念。在 GANs 中,包含一個生成模型G和一個判別模型D,D要判別樣本是來自G還是真實數據集,而G的目標是生成能夠騙過D的對抗樣本,可以將G看做假幣生產者,而D就是警察,通過G和D的不斷交手,彼此的技能都會逐漸提高,最終使得G生產的假幣能夠以假亂真。? ??受此啟發,Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks, by Emily Denton, et al通過為拉普拉斯金字塔中的每一個尺度建立一個生成模型,使得最終生成的圖片與自然圖片達到肉眼無法區分的地步,代碼參見項目eyescream?。還有人用 GANs?生成貓臉的圖片,也有人用它生成人臉,GANs 真是簡直要被玩壞了。進一步,Conditional generative adversarial nets for convolutional face generationby Jon Gauthier提出了條件生成對抗網絡。
總結
- 上一篇: Bagging(bootstrap ag
- 下一篇: placeholder 与variabl