OpenAI詳細解析:攻擊者是如何使用「對抗樣本」攻擊機器學習的!
導語:一般來說,對抗樣本(adversarial examples)是機器學習模型的輸入,攻擊者故意設計它們以引起模型出錯;它們就像是機器的視覺錯覺。這篇文章中,將展示對抗樣本是如何在不同的媒介上發揮作用的,並將討論為什麼保護系統很難對抗它們。
在OpenAI中,我們認為對抗樣本是安全工作的一個很好的方面。因為它們代表了人工智慧安全中的一個具體問題,而它們可以在短期內得以解決。而且由於修復它們非常困難,需要進行認真的研究工作(儘管我們需要探索機器學習安全的許多方面,以實現我們構建安全、廣泛分布的人工智慧的目標)。
想要了解對抗樣本看起來是什麼樣的,請參考《解釋和利用對抗樣本》(Explaining and Harnessing Adversarial Examples)中的闡釋:從一張熊貓的圖像開始,攻擊者添加一個小干擾,且該小干擾被計算出來,使圖像被認為是一個具有高置信度的長臂猿。
覆蓋在典型圖像上的對抗輸入會導致分類器將熊貓誤歸類為長臂猿
這種方法相當具有魯棒性;最近的研究表明,對抗樣本可以在標準紙張上列印出來,然後用標準智能手機拍攝,而且用的仍然是傻瓜系統。
對抗樣本可以在標準紙張上列印出來並用標準解析度的智能手機拍照,並且在這種情況下仍然會導致分類器將「洗衣機」標記為「安全」
對抗樣本是有潛在危險性的。例如,攻擊者可以通過這種方法攻擊自動駕駛汽車:使用貼紙或塗料創建一個對抗性的停車標誌,讓車輛將其解釋為「屈服」或其他標誌,就像《使用對抗樣本對深度學習系統進行實用黑盒攻擊》(Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples)中所述的那樣。
加州大學伯克利分校、OpenAI和賓夕法尼亞州立大學的新研究《對神經網路策略的對抗性攻擊》(Adversarial Attacks on Neural Network Policies)以及內華達大學雷諾分校的研究《深度強化學習對策略誘導攻擊的脆弱性》(Vulnerability of Deep Reinforcement Learning to Policy Induction Attacks)表明,強化學習智能體也可以被對抗樣本操縱。研究表明,諸如DQN、TRPO和A3C等這些廣泛使用的RL演算法,很容易受到對抗輸入的影響。即使是在所存在的干擾微小到人類無法察覺,這些也會導致性能下降,使智能體在應該將乒乓球拍向上移動的時候將它向下移動了,或者使其在Seaquest中發現對手的能力受到了干擾。
如果你想嘗試打破你自己的模型,你可以使用cleverhans,這是一個由Ian Goodfellow和Nicolas Papernot共同開發的開源庫,用來測試你的AI對對抗樣本的漏洞。
對抗樣本讓我們在人工智慧安全方面有了一些動力
當我們思考人工智慧安全的研究時,我們通常會想到這個領域中最困難的一些問題——我們如何確保那些比人類聰明得多的複雜的強化學習智能體能夠以它們的設計者所期望的方式行事?
對抗樣本告訴我們,對於監督和強化學習而言,即使是簡單的現代演算法,也已經可能以並非我們所想的令人驚訝的方式表現出來。
防禦對抗樣本所做出過的嘗試
如權值衰減(weight decay)和dropout等這種使機器學習模型更具有魯棒性的傳統技術,通常不能為對抗樣本提供實際的防禦。到目前為止,只有兩種方法提供了重要的防禦。
對抗性訓練:這是一種暴力破解(brute force)的解決方案。其中,我們只是簡單地生成很多對抗樣本,並明確訓練模型不會被它們中的任何一個愚弄。對抗性訓練的開源實現可以在cleverhans庫中找到,下面的教程對其用法在進行了說明。
防禦性精鍊:這是一種策略。我們訓練模型來輸出不同類的概率,而不是將哪個類輸出的艱難決策。概率由早期的模型提供,該模型使用硬分類標籤在相同的任務上進行訓練。這就創建了一個模型,其表面在攻擊者通常會試圖開拓的方向上是平滑的,從而使它們難以發現導致錯誤分類的對抗輸入調整(精鍊(Distillation)最初是在《神經網路中知識的精鍊》(Distilling the Knowledge in a Neural Network)中作為模型壓縮的一種技術而被引入的,在這種技術中,一個小模型被訓練以模仿一個大模型,以便節省計算量)。
然而,即使是這些專門的演算法,也可能被擁有了更多計算火力的攻擊者輕易破解。
失敗的防禦:「梯度掩碼」(gradient masking)
舉一個簡單防禦失敗的例子,讓我們考慮一下為什麼一種叫做「梯度掩碼」的技術不起作用。
「梯度掩碼」是一個在《使用對抗樣本對深度學習系統進行實用黑盒攻擊》(Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples)中所引入的術語,用於描述一整套失敗的防禦方法——它們試圖阻止攻擊者訪問一個有用的梯度。
大多數對抗樣本構造技術使用模型的梯度來進行攻擊。換句話說,它們看一張飛機的圖片,它們對圖片空間進行測試,以發現哪個方向使「貓」類的概率增加,然後它們給予這個方向一點推動力(換句話說,它們擾亂輸入)。這張新的、修改後的圖像被錯誤地認為是一隻貓。
但是如果沒有梯度,如果對圖像進行一個無窮小的修改會導致模型的輸出沒有變化,那該怎麼辦?這似乎提供了一些防禦,因為攻擊者不知道是向哪個方向「助推」圖像。
我們可以很容易地想像一些非常簡單的方法來擺脫梯度。例如,大多數圖像分類模型可以在兩種模式下運行:一種模式是只輸出最可能的類的標識,另一種模式是輸出概率。如果模型的輸出是「99.9%的可能是飛機,0.1%的可能是貓」,那麼對輸入的微小改變會給輸出帶來很小的變化,而且梯度告訴我們哪個變化會增加「貓」類的概率。如果我們在輸出只是「飛機」的模式下運行模型,那麼對輸入的微小改變就完全不會改變輸出,而且梯度不會告訴我們任何東西。
讓我們進行一個思考實驗,看看我們在「最可能的類」模式下,而不是「概率模式」下,能夠以怎樣的程度來保護我們的模型抵抗對抗樣本。攻擊者不再知道去哪裡尋找那些將被歸類為貓的輸入,所以我們可能有了一些防禦。不幸的是,之前被歸類為貓的每張圖像現在仍然被歸類為貓。如果攻擊者能夠猜測哪些點是對抗樣本,那麼這些點仍然會被錯誤分類。我們還沒有使這個模型更具魯棒性;我們剛剛給了攻擊者更少的線索來找出模型防禦漏洞的位置。
更不幸的是,事實證明,攻擊者有一個非常好的策略來猜測防守漏洞的位置。攻擊者可以訓練出自己的一種具有梯度的平滑模型來為它們的模型提供對抗樣本,然後將這些對抗樣本配置到我們的非平滑模型上。很多時候,我們的模型也會對這些樣本進行錯誤的分類。最後,我們的思考實驗表明,隱藏梯度並沒有給我們帶來任何幫助。
執行梯度掩碼的防禦策略通常會導致一個模型在特定的方向和訓練點的附近非常平滑,這使得攻擊者很難找到指示好候選方向的梯度,從而以損害模型的方式干擾輸入。然而,攻擊者可以訓練一種替代模型:一種通過觀察被防禦模型分配給攻擊者精心選擇的輸入的標籤來模仿防禦模型的副本。
在「黑箱攻擊」論文中引入了執行這種模型提取攻擊的過程。然後,攻擊者還可以使用替代模型的梯度來找到被防禦模型錯誤分類的對抗樣本。在上圖中,對從《機器學習中的安全和隱私科學》(Towards the Science of Security and Privacy in Machine Learning)中找到的梯度掩碼的討論再現,我們用一維的ML問題來說明這種攻擊策略。對於更高維度的問題,梯度掩碼現象將會加劇,但難以描述。
我們發現,對抗性訓練和防禦性精鍊都意外地執行了一種梯度掩碼。這兩種演算法都沒有明確地被設計來執行梯度掩碼,但是當演算法被訓練來保護自己並且沒有給出具體的指令時,梯度掩碼顯然是一種機器學習演算法可以相對容易地發明出的防禦措施。如果我們將對抗樣本從一個模型遷移到另一個用對抗性訓練或防禦性精鍊訓練過的模型,攻擊通常也會成功,即使對第二個模型直接的攻擊失敗了。這表明,這兩種訓練技術都會做更多的工作來使模型平滑並消除梯度,而不是確保它能夠正確地對更多的點進行分類。
為什麼很難防禦對抗樣本
難以防禦對抗樣本,因為難以構建一個對抗樣本製作過程的理論模型。對於包括神經網路在內的許多ML模型來說,對抗樣本是對非線性和非凸性的優化問題的解決方案。因為我們沒有很好的理論工具來描述這些複雜的優化問題的解決方案,所以很難做出任何理論上的論證來證明一個防禦系統會排除一系列對抗樣本。
難以防禦對抗樣本,還因為它們要求機器學習模型為每一個可能的輸入產生良好的輸出。大多數情況下,機器學習模型運行得很好,但所能處理的只是它們可能遇到的所有可能輸入中的很小一部分。
我們迄今為止測試的每一種策略都失敗了,因為它不是自適應的:它可能會阻止一種攻擊,但是留給攻擊者另一個漏洞,而攻擊者知道此次所使用的防禦。設計一種可以防禦強大的、自適應的攻擊者的防禦系統是一個重要的研究領域。
結論:對抗樣本表明,許多現代機器學習演算法可以以多種令人驚訝的方式被打破。機器學習的這些失敗表明,即使是簡單的演算法也能與其設計者的意圖截然不同。我們鼓勵機器學習研究人員參與進來並設計防範對抗樣本的方法,以縮小設計師意圖和演算法行為之間的差距。
來自:「雷克世界」編譯:嗯~是阿童木呀、EVA
-請準時收看今晚直播課-
※DeepMind提出「SACX」學習範式,訓練機器人解決稀疏獎勵任務
※南京大學人工智慧學院 誠招海內外青年英才
TAG:AI講堂 |