本文已同步到作者博客:http://xungejiang.com/2017/11/29/translate-blog2/,轉(zhuǎn)載請(qǐng)注明出處!
原文:Is attacking machine learning easier than defending it?
原文寫(xiě)作日期:2017年3月15日
譯文寫(xiě)作日期:2017年11月29日
本文為cleverhans-blog的第二篇博客,作者為 Ian Goodfellow 和 Nicolas Papernot,主要講解對(duì)抗性訓(xùn)練和防御性蒸餾兩種防御方法之間的優(yōu)勢(shì)與不足。譯者水平有限,存在錯(cuò)誤,還望指出。
轉(zhuǎn)載請(qǐng)注明出處!
在我們的第一篇文章中,我們提出了幾種攻擊者可以打破當(dāng)前機(jī)器學(xué)習(xí)系統(tǒng)的方式,比如通過(guò)毒化學(xué)習(xí)算法使用的數(shù)據(jù)[BNL12],或者制作對(duì)抗性樣本迫使模型做出錯(cuò)誤的預(yù)測(cè)[SZS13]。在本文中,我們將以對(duì)抗性樣本為例說(shuō)明為什么攻擊機(jī)器學(xué)習(xí)似乎比防御更容易。換句話說(shuō),我們將詳細(xì)介紹為什么我們還沒(méi)有完全有效的防御對(duì)抗性樣本的一些原因,并推測(cè)我們是否能夠進(jìn)行防御。
對(duì)抗性樣本是機(jī)器學(xué)習(xí)模型的輸入,它是由攻擊者設(shè)計(jì),用來(lái)欺騙模型產(chǎn)生不正確的輸出。例如,我們給一個(gè)熊貓圖片添加一個(gè)經(jīng)過(guò)計(jì)算的小擾動(dòng),使圖像被認(rèn)為是一個(gè)高可信度的長(zhǎng)臂猿[GSS14]:

到目前為止,設(shè)計(jì)出這種欺騙模型的方法要比設(shè)計(jì)出不能欺騙模型的方法容易得多。
我們?nèi)绾问筂L模型面對(duì)對(duì)抗性樣本時(shí)更加強(qiáng)壯? (How have we tried to make ML models more robust to adversarial examples?)
我們先介紹下兩種防御方法:對(duì)抗性訓(xùn)練和防御性蒸餾。防御者如何試圖使機(jī)器學(xué)習(xí)模型更加強(qiáng)壯并減輕對(duì)抗性樣本的攻擊效果。
對(duì)抗性訓(xùn)練旨在訓(xùn)練時(shí)主動(dòng)產(chǎn)生對(duì)抗性樣本,在測(cè)試時(shí)提取對(duì)抗性樣本來(lái)改進(jìn)模型的泛化。這個(gè)想法是由Szegedy等人首次提出的[SZS13],但由于產(chǎn)生對(duì)抗性樣本的成本太高而不實(shí)用。 Goodfellow等人展示了如何利用快速梯度符號(hào)方法低成本地產(chǎn)生對(duì)抗性樣本,并且使得在訓(xùn)練過(guò)程中高計(jì)算效率地產(chǎn)生大批對(duì)抗性樣本 [GSS14]。然后該模型被訓(xùn)練成將相同的標(biāo)簽分配給相對(duì)于原始樣本的對(duì)抗性樣本。例如:我們拍攝一張貓的照片,并對(duì)其進(jìn)行擾動(dòng)以欺騙模型,使其認(rèn)為它是禿鷲,然后告訴模型這張照片仍然是一只貓。對(duì)抗訓(xùn)練的一個(gè)開(kāi)源實(shí)現(xiàn)可以在cleverhans 庫(kù)中找到,其使用方法在下面的教程 中有說(shuō)明。
防御性蒸餾平滑模型的決策表面在對(duì)抗方向被攻擊者利用。蒸餾是一種訓(xùn)練過(guò)程,其中一個(gè)模型被訓(xùn)練以預(yù)測(cè)由先前訓(xùn)練的另一個(gè)模型輸出的概率。蒸餾最初由Hinton等人提出。在[HVD15]中,其目標(biāo)是用一個(gè)小模型來(lái)模擬一個(gè)大型的、計(jì)算成本很高的模型。防御性蒸餾有一個(gè)不同的目標(biāo),即簡(jiǎn)單地使最終模型的反應(yīng)更加平滑,所以即使兩個(gè)模型的大小相同也能起作用。訓(xùn)練一個(gè)模型來(lái)預(yù)測(cè)另一個(gè)具有相同架構(gòu)的模型輸出看起來(lái)是違反直覺(jué)的。它的工作原理是,第一個(gè)模型是用“硬”標(biāo)簽(圖像100%概率是狗而不是貓)訓(xùn)練,然后第二個(gè)模型用“軟”標(biāo)簽(圖像95%概率是狗而不是貓)訓(xùn)練。第二個(gè)蒸餾模型對(duì)于諸如快速梯度符號(hào)法[PM16]或基于雅可比行列式顯著圖法[PMW16]的攻擊更為魯棒。這兩種攻擊的實(shí)現(xiàn)也分別在這里 和這里的cleverhans 上提供。(已經(jīng)404 。。2333)
一個(gè)失敗的防御:“梯度掩蔽” (A failed defense: “gradient masking”)
大多數(shù)對(duì)抗性樣本構(gòu)建技術(shù)使用模型的梯度來(lái)進(jìn)行攻擊。換句話說(shuō),一張飛機(jī)的照片,他們測(cè)試在圖像空間中往哪個(gè)方向移動(dòng)使得圖片識(shí)別為“貓”的概率增加,然后他們往那個(gè)方向進(jìn)行移動(dòng)(換句話說(shuō),擾亂了輸入)。這樣新修改后的圖像被誤認(rèn)為是貓。
但是,如果沒(méi)有梯度,如果對(duì)圖像進(jìn)行微小的修改不會(huì)導(dǎo)致模型的輸出發(fā)生變化呢?這似乎提供了一些防御,因?yàn)楣粽卟恢涝鯓尤ァ巴啤眻D像。
我們可以很容易想到一些非常微不足道的方法來(lái)擺脫梯度。例如,大多數(shù)圖像分類模型可以以兩種模式運(yùn)行:一種模式是輸出最可能類別的標(biāo)識(shí),另一種模式是輸出概率。如果模型的輸出是“99.9%的飛機(jī),0.1%的貓”,那么輸入的一個(gè)微小的變化會(huì)給輸出帶來(lái)一個(gè)微小的變化,梯度告訴我們哪些變化會(huì)增加“貓”類的概率。如果我們?cè)谳敵瞿J街皇恰帮w機(jī)”的模式下運(yùn)行模型,那么對(duì)輸入的一個(gè)微小的變化根本不會(huì)改變輸出,而梯度不會(huì)告訴我們?nèi)魏问虑椤W屛覀冏鲆粋€(gè)思考實(shí)驗(yàn),如何通過(guò)以“最有可能的類”模式而不是“概率模式”運(yùn)行它來(lái)防御對(duì)抗性樣本。攻擊者再也不能找到分類為貓的擾亂輸入,所以我們可能會(huì)有一些防御。不幸的是,之前被歸類為貓的圖片現(xiàn)在仍被歸類為貓。如果攻擊者可以猜測(cè)哪些點(diǎn)是對(duì)抗性樣本,這些點(diǎn)將仍然會(huì)被錯(cuò)誤的分類。我們并沒(méi)有使模型更加魯棒,我們只是給了攻擊者更少的線索來(lái)找出模型防御的漏洞。更不幸的是,事實(shí)證明攻擊者有一個(gè)非常好的策略來(lái)猜測(cè)防御漏洞的位置。攻擊者可以訓(xùn)練他們自己的模型,一個(gè)具有梯度的光滑模型,為他們的模型制作對(duì)抗性樣本,然后將這些對(duì)抗性樣本用于我們的非光滑模型。很多時(shí)候,我們的模型也會(huì)錯(cuò)誤地分類這些樣本。最后,我們的思想實(shí)驗(yàn)表明,隱藏梯度并沒(méi)有達(dá)到我們的目的。
因此,我們稱之為有缺陷的防御策略梯度掩蔽,這個(gè)術(shù)語(yǔ)在[PMG16]中有介紹。執(zhí)行梯度掩蔽的防御策略通常導(dǎo)致在特定方向和訓(xùn)練點(diǎn)的鄰域中模型變得非常平滑,這使得攻擊者難以找到攻擊方向的梯度去擾亂輸入。然而,攻擊者可以訓(xùn)練一個(gè)替代模型:一個(gè)模仿防御模型的副本,通過(guò)觀察防御模型分配給攻擊者輸入的標(biāo)簽。[PMG16]中介紹了執(zhí)行這種模型提取攻擊的過(guò)程。然后攻擊者可以使用替代模型的梯度來(lái)找到被防御模型錯(cuò)誤分類的對(duì)抗性樣本。在下面的圖中,我們?cè)佻F(xiàn)[PMS16]中對(duì)梯度掩蔽的討論,我們用一維ML問(wèn)題來(lái)說(shuō)明這種攻擊策略。對(duì)于高維問(wèn)題,梯度掩蔽現(xiàn)象會(huì)加劇,但難以描述。

令人驚訝的是,我們發(fā)現(xiàn)對(duì)抗性訓(xùn)練和防御性蒸餾都意外地表現(xiàn)出一種梯度掩蔽。如果我們將對(duì)抗性樣本從一個(gè)模型轉(zhuǎn)移到另一個(gè)模型,并且用這些防御之一進(jìn)行訓(xùn)練,即使對(duì)第二個(gè)模型的直接攻擊會(huì)失敗,攻擊通常也會(huì)成功[PMG16]。這表明兩種訓(xùn)練方法都能使模型變平滑和消除梯度,而不是確保對(duì)多個(gè)點(diǎn)進(jìn)行正確地分類。
打“地鼠”游戲 (Playing a game of “whack-a-mole”)
在“隱藏梯度”的游戲中,我們看到梯度掩蔽并不是很好的防御。它防御使用梯度的攻擊者,但是如果攻擊者知道我們正在使用這種防御,那么他們只需要切換到移植攻擊。在安全術(shù)語(yǔ)中,這意味著梯度掩蔽不是一種自適應(yīng)防御。
迄今為止提出的大多數(shù)針對(duì)對(duì)抗性樣本的防御措施根本不起作用,但是有效的那些并不是自適應(yīng)的。這意味著就像他們?cè)谕嬉粋€(gè)打地鼠游戲一樣:他們關(guān)閉了一些漏洞,但是讓其他人打開(kāi)。
對(duì)抗訓(xùn)練需要選擇算法來(lái)產(chǎn)生對(duì)抗性樣本。通常情況下,這個(gè)模型被訓(xùn)練成可以抵抗在一個(gè)步驟中產(chǎn)生的低成本對(duì)抗性樣本,例如快速梯度符號(hào)方法一樣。經(jīng)過(guò)訓(xùn)練能抵制這些低成本對(duì)抗性樣本,這個(gè)模型通常能成功地抵制同類低成本的新對(duì)抗性樣本。如果我們使用高成本的、迭代的對(duì)抗性樣本,就像[SZS13]中的那些例子,那么模型通常就會(huì)被愚弄。
保證適應(yīng)性是具有挑戰(zhàn)性的。靈感可以從差異隱私的框架中得到,它提供了隨機(jī)算法不會(huì)暴露個(gè)人用戶隱私的正式保證。這一保證不會(huì)對(duì)攻擊者的知識(shí)或能力做出假設(shè),因此能夠面對(duì)未來(lái)由攻擊者設(shè)計(jì)的假想攻擊。
為什么很難防御對(duì)抗性樣本? (Why is it hard to defend against adversarial examples?)
對(duì)抗性樣本很難防御,因?yàn)楹茈y構(gòu)建對(duì)抗性樣本制定過(guò)程的理論模型。對(duì)抗性樣本是許多ML模型(包括神經(jīng)網(wǎng)絡(luò))的非線性和非凸的優(yōu)化問(wèn)題的解決方案。由于我們沒(méi)有很好的理論工具去描述這些復(fù)雜的優(yōu)化問(wèn)題的解決方案,所以很難做出任何一種防御理論來(lái)排除一系列對(duì)抗性樣本。
從另一個(gè)角度來(lái)看,對(duì)抗性樣本很難防御,因?yàn)樗鼈冃枰獧C(jī)器學(xué)習(xí)模型來(lái)為每一個(gè)可能的輸入生成好的輸出。大多數(shù)情況下,機(jī)器學(xué)習(xí)模型工作得很好,但只能處理遇到所有可能輸入中的很少一部分。
由于可能的輸入的量非常巨大,設(shè)計(jì)出真正自適應(yīng)的防御是非常困難的。
其他攻擊和防御方法 (Other attack and defense scenarios)
其他幾種對(duì)機(jī)器學(xué)習(xí)的攻擊也是難以防御。在本文中,我們專注于試圖混淆機(jī)器學(xué)習(xí)模型測(cè)試過(guò)程的輸入。但是其他類型的攻擊是可能的,例如基于暗中修改訓(xùn)練數(shù)據(jù)的攻擊,使得模型學(xué)習(xí)攻擊者希望它進(jìn)行的行為。
對(duì)抗性機(jī)器學(xué)習(xí)的一個(gè)亮點(diǎn)是差分隱私,我們實(shí)際上有理論上的觀點(diǎn),即某些訓(xùn)練算法可以防止攻擊者從訓(xùn)練好的模型中恢復(fù)關(guān)于訓(xùn)練集的敏感信息。
將機(jī)器學(xué)習(xí)與攻擊和防御都可能的其他場(chǎng)景進(jìn)行比較是有趣的。
在密碼學(xué)中,防御者似乎有優(yōu)勢(shì)。給定一系列合理的假設(shè),例如加密算法的正確實(shí)現(xiàn),防御者可以可靠地發(fā)送攻擊者無(wú)法解密的消息。
在物理沖突中,攻擊者似乎有優(yōu)勢(shì)。建造核彈比建造一個(gè)能夠承受核爆的城市要容易得多。熱力學(xué)的第二定律似乎意味著,如果防御要求將熵維持在某個(gè)閾值以下,那么即使沒(méi)有明確的攻擊者有意引起這種熵的增加,防御者也必然隨著時(shí)間熵增加而最終失去。
監(jiān)督學(xué)習(xí)的“沒(méi)有免費(fèi)午餐定理”[W96]指出,在所有可能的數(shù)據(jù)集進(jìn)行平均,沒(méi)有任何機(jī)器學(xué)習(xí)算法在測(cè)試時(shí)間的新點(diǎn)上比其他算法更好。乍一看,這似乎表明,所有的算法都同樣容易受到對(duì)抗性樣本。然而,“沒(méi)有免費(fèi)午餐定理”只適用于我們對(duì)問(wèn)題結(jié)構(gòu)不作假設(shè)的情況。當(dāng)我們研究對(duì)抗性樣本時(shí),我們假設(shè)輸入的小擾動(dòng)不應(yīng)該改變輸出類別,所以一般形式的“沒(méi)有免費(fèi)午餐定理”并不適用。
正式揭露攻擊者的魯棒性和對(duì)清潔數(shù)據(jù)的模型表現(xiàn)之間的矛盾關(guān)系仍然是一個(gè)活躍的研究問(wèn)題。在[PMS16]中,針對(duì)機(jī)器學(xué)習(xí)的對(duì)抗性樣本的第一個(gè)“沒(méi)有免費(fèi)午餐定理”表明,在從有限的數(shù)據(jù)中學(xué)習(xí)時(shí)存在這樣的矛盾。結(jié)果表明,防御者可以通過(guò)轉(zhuǎn)向更豐富的假設(shè)類別來(lái)阻撓對(duì)抗性樣本。然而,這種矛盾關(guān)系是由于沒(méi)有合適的數(shù)據(jù)和學(xué)習(xí)算法來(lái)學(xué)習(xí)高保真模型所面臨的挑戰(zhàn)。
總結(jié)
對(duì)抗性樣本的研究是令人興奮的,因?yàn)樵S多最重要的問(wèn)題在理論和應(yīng)用方面都是開(kāi)放的。在理論上,還沒(méi)有人知道防御對(duì)抗性樣本是否是一個(gè)理論上沒(méi)有希望的努力(如試圖找到一個(gè)通用的機(jī)器學(xué)習(xí)算法),或者是否存在一個(gè)最優(yōu)策略會(huì)使防御者更有利。(如在密碼學(xué)和差分隱私)。在應(yīng)用方面,還沒(méi)有人設(shè)計(jì)出真正強(qiáng)大的防御算法,可以抵抗各種對(duì)抗性樣本的攻擊算法。我們希望我們的讀者能夠得到啟發(fā),解決其中的一些問(wèn)題。
References
[BNL12] Biggio, B., Nelson, B., & Laskov, P. (2012). Poisoning attacks against support vector machines. arXiv preprint arXiv:1206.6389.
[GSS14] Goodfellow, I. J., Shlens, J., & Szegedy, C. (2014). Explaining and harnessing adversarial examples. arXiv preprint arXiv:1412.6572.
[HVD15] Hinton, Geoffrey, Oriol Vinyals, and Jeff Dean. “Distilling the knowledge in a neural network.” arXiv preprint arXiv:1503.02531 (2015).
[PM16] Papernot, N., & McDaniel, P. (2016). On the effectiveness of defensive distillation. arXiv preprint arXiv:1607.05113.
[PMG16] Papernot, N., McDaniel, P., Goodfellow, I., Jha, S., Berkay Celik, Z., & Swami, A. (2016). Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples. arXiv preprint arXiv:1602.02697.
[PMS16] Papernot, N., McDaniel, P., Sinha, A., & Wellman, M. (2016). Towards the Science of Security and Privacy in Machine Learning. arXiv preprint arXiv:1611.03814.
[PMW16] Papernot, N., McDaniel, P., Wu, X., Jha, S., & Swami, A. (2016, May). Distillation as a defense to adversarial perturbations against deep neural networks. In the 2016 IEEE Symposium on Security and Privacy (pp. 582-597).
[SZS13] Szegedy, C., Zaremba, W., Sutskever, I., Bruna, J., Erhan, D., Goodfellow, I., & Fergus, R. (2013). Intriguing properties of neural networks. arXiv preprint arXiv:1312.6199.
[W96] Wolpert, David H. (1996). The lack of a priori distinction between learning algorithms. Neural Computation