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