0
雷鋒網(wǎng)按:本文作者向志洪,原文載于作者個人博客,雷鋒網(wǎng)已獲授權(quán)。
最近大半年,人工智能領(lǐng)域成為科技領(lǐng)域提到的最多的名詞之一。在kdnuggets此前發(fā)布的文章 (Deep Learning’s Deep Flaws)’s Deep Flaws 中,深度學(xué)習(xí)大神Yoshua Bengio和他的博士生、Google科學(xué)家Ian Goodfellow在評論中與作者就深度學(xué)習(xí)對抗樣本(Adversarial Examples)展開了熱烈的討論,kdnuggets編輯邀請Ian Goodfellow撰文詳解他的觀點以及他在這方面的工作。那么什么是對抗樣本,對抗樣本又是如何生成的呢?
對抗樣本(Adversarial Examples)的概念最早是Christian Szegedy 等人在ICLR2014發(fā)表的論文中提出來的,即在數(shù)據(jù)集中通過故意添加細微的干擾所形成輸入樣本,受干擾之后的輸入導(dǎo)致模型以高置信度給出了一個錯誤的輸出。
在他們的論文中,他們發(fā)現(xiàn)包括卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)在內(nèi)的深度學(xué)習(xí)模型對于對抗樣本都具有極高的脆弱性。他們的研究提到,很多情況下,在訓(xùn)練集的不同子集上訓(xùn)練得到的具有不同結(jié)構(gòu)的模型都會對相同的對抗樣本實現(xiàn)誤分,這意味著對抗樣本成為了訓(xùn)練算法的一個盲點。二將這一矛頭直指深度學(xué)習(xí),似乎要為深度學(xué)習(xí)熱潮降一降溫。Anh Nguyen等人在CVPR2015上發(fā)表的論文中,面對一些人類完全無法識別的樣本(論文中稱為 Fooling Examples),深度學(xué)習(xí)模型居然會以高置信度將它們進行分類,例如將噪聲識別為獅子。
對于上面的漏洞,研究提出,一方面促使人們更深入思考機器和人的視覺的真正差異所在,一方面,加上深度模型本身具有的不可解釋性缺陷,也讓一些人開始認(rèn)為深度學(xué)習(xí)不是deep learning, 而是deep flaw.對深度學(xué)習(xí)來說,這多少是不公平的指責(zé),因為 kdnuggets上的一篇文章(Deep Learning’s Deep Flaws)指出,深度學(xué)習(xí)對于對抗樣本的脆弱性并不是深度學(xué)習(xí)所獨有的,事實上,這在很多機器學(xué)習(xí)模型中都普遍存在(Box 大人不就說嗎,all models are wrong, but some are useful),而深度學(xué)習(xí)反而可能是目前為止對對抗訓(xùn)練最有抵抗性的技術(shù)。如下圖,原始圖像以60%的置信度判斷為“熊貓”,但是加入了微小的干擾,在人眼完全看不出差別的情況下卻以99%的執(zhí)行度歸為了長臂猿。
那么,導(dǎo)致深度模型對反抗樣本力不從心的真實原因有哪些呢?一般我們知道,可能是模型過擬合導(dǎo)致泛化能力不夠,泛化能力不夠可能是由于模型均化不足或者正則不足,然而,通過更多模型均化和加入更多噪聲訓(xùn)練等方式來應(yīng)對對抗樣本的企圖均告失敗。外一個猜測是模型的高度非線性,深度模型動輒千百萬的參數(shù)個數(shù)確實讓人有點不太舒服,但 Ian Goodfellow 在論文 explaining and harnessing adversarial examples 中,通過在一個線性模型中加入對抗干擾,發(fā)現(xiàn)只要線性模型的輸入擁有足夠的維度(事實上大部分情況下,模型輸入的維度都比較大,因為維度過小的輸入會導(dǎo)致模型的準(zhǔn)確率過低,即欠擬合),線性模型也對對抗樣本表現(xiàn)出明顯的脆弱性,這駁斥了關(guān)于對抗樣本是因為模型的高度非線性的解釋。
事實上,該文指出,高維空間中的線性性就足以造成對抗樣本,深度模型對對抗樣本的無力最主要的還是由于其線性部分的存在。
如下圖,展示了線性設(shè)計造成的抵抗對抗擾動的模型之間的關(guān)系。
針對上面的問題,毫無疑問,對抗樣本帶來了對深度學(xué)習(xí)的質(zhì)疑,但其實這也提供了一個修正深度模型的機會,因為我們可以反過來利用對抗樣本來提高模型的抗干擾能力,因此有了對抗訓(xùn)練(adversarial training) 的概念。
隨著對對抗樣本研究的深入,可以利用對抗樣本生成對抗網(wǎng)絡(luò)(GANs)。在 GANs 中,包含一個生成模型G和一個判別模型D,D要判別樣本是來自G還是真實數(shù)據(jù)集,而G的目標(biāo)是生成能夠騙過D的對抗樣本,可以將G看做假幣生產(chǎn)者,而D就是警察,通過G和D的不斷交手,彼此的技能都會逐漸提高,最終使得G生產(chǎn)的假幣能夠以假亂真。
Papernot等人表明蒸餾技術(shù)(使用概率分布作為目標(biāo)訓(xùn)練)也可以用于大大降低網(wǎng)絡(luò)對抗擾動的脆弱性。對于MNIST數(shù)據(jù)集訓(xùn)練的DNN,防御性蒸餾將對抗樣本的成功率從95.89%降低到0.45%!針對CIFAR數(shù)據(jù)集而言,成功率由87.89%降至5.11%。事實上,防御性蒸餾可以降低DNN對輸入擾動的靈敏度。
以下是MNIST和CIFAR的一些示例,顯示正當(dāng)樣本和對抗樣本:
下面介紹防御性蒸餾如何工作以及其原理??紤]一般的對抗框架,首先搞清楚工作方向是圍繞給定的輸入樣本,然后使用這些信息選擇輸入維度之間的擾動。
如果梯度方向陡峭,就會對小擾動產(chǎn)生很大的影響。為了防止這種擾動,必須通過網(wǎng)絡(luò)更好地泛化訓(xùn)練數(shù)據(jù)集以外的樣本來平滑訓(xùn)練過程中學(xué)到的模型。DNN對對抗樣本的“魯棒性”與給定樣本鄰域相一致地分類輸入相關(guān)。
為了實現(xiàn)這種平滑,蒸餾防御首先按照正常的方式訓(xùn)練分類網(wǎng)絡(luò),然后用從第一個模型學(xué)到的概率向量訓(xùn)練另外一個完全相同架構(gòu)的新模型。
下圖展示蒸餾溫度如何影響模型對抗樣本的防御能力。直觀上,溫度越高防御越好。
防御性蒸餾僅適用于基于能量概率分布的DNN模型,因此建立通用對抗樣本強大的機器學(xué)習(xí)模型的重要一步。
關(guān)于對抗樣本的更深的解決方案請查看對抗樣本防御
雷鋒網(wǎng)相關(guān)文章:
生成式對抗網(wǎng)絡(luò)GAN最近在NLP領(lǐng)域有哪些應(yīng)用?
蒙特利爾大學(xué)研究者改進Wasserstein GAN,極大提高GAN訓(xùn)練穩(wěn)定性
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。