雷鋒網按:近日,OpenAI發表最新研究,論述了AI安全領域的一大隱憂:「對抗樣本」,它可以輕易地讓機器學習系統產生誤判,這會對AI的應用實踐產生影響。在這篇由「GANs」之父Ian Goodfellow領銜撰寫的文章裡,OpenAI針對「對抗樣本」進行了防禦策略的實驗,其中有兩種方法效果顯著,但也並不能解決根本問題。OpenAI表示設計出抵抗強大、具有適應性攻擊者的防禦策略,是非常重要的研究領域。本文原載於OpenAI Blog,由雷鋒網編譯整理。
「對抗樣本」是攻擊者故意設計的,被用來輸入到機器學習模型裡,引發模型出錯的值,它就像是讓機器在視覺上產生幻覺一樣。在這篇文章裡,我們將會展現「對抗樣本」是如何通過不同的媒介工作的,並且將會討論為什麼針對「對抗樣本」的安全防禦很困難。
在OpenAI,我們認為「對抗樣本」是安全方面非常好的一個議題,因為它代表了AI安全領域裡的一種具體的問題,我們可以在較短期裡去關注和解決,而且這個問題的難度也是足夠的,需要進行一些重要的研究工作(儘管我們需要探索機器學習安全的很多方面,以達到我們建造安全、廣泛應用AI的目標)。
什麼是「對抗樣本」?這篇論文裡「Explaining and Harnessing Adversarial Examples」有一個例子:這是一隻熊貓的圖片,攻擊者加入了一個小幹擾到計算裡,導致系統將其誤認為是長臂猿的照片。
一個對抗輸入值,覆蓋了一個典型的圖片,分類器將一隻「熊貓」誤分類為一隻「長臂猿」
這個方法是十分有效的,最近的一項研究(論文「Adversarial examples in the physical world」)顯示,把「對抗樣本」用標準的紙張列印出來,然後用普通的手機對其拍照製成的圖片,仍然能夠影響到系統。
「對抗樣本」可以在普通紙張上列印出來,再讓帶有標準解析度的智慧型手機拍攝,仍然可以引發分類器產生錯誤。在上圖例子裡,系統錯把「洗衣機」標籤為「保險箱」。
「對抗樣本」很有可能變得危險。比如,攻擊者可以用貼紙或一幅畫製成一個「停止」指示牌的「對抗樣本」,以此來攻擊汽車,讓汽車將原本的「停止」指示牌誤理解「讓行」或其它指示牌,就像論文「Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples」討論的那樣。
增強學習智能體也可以被「對抗樣本」所操縱,根據 UC伯克利大學、OpenAI和賓夕法尼亞大學的一項最新研究(論文「Adversarial Attacks on Neural Network Policies"),以及內華達大學(論文「Vulnerability of Deep Reinforcement Learning to Policy Induction Attacks」)的一項研究顯示,廣泛使用的增強學習算法,比如DQN、TRPO和A3C,在「對抗樣本」面前都十分脆弱。即便是人類難以觀察出來的微妙的幹擾因素,也能導致系統性能減弱。比如引發一個智能體讓桌球拍在本該下降時反而上升,或者幹擾鎖定敵人的能力。
如果你想要做一個擊潰自己模型的實驗,可以使用cleverhans,這是一個由Ian Goodfellow和Nicolas Papernot聯合開發的開源庫,可以用它來測試你的模型在面對「對抗樣本」時的脆弱性。
「對抗樣本」是AI安全的隱憂當我們思考AI安全問題時,往往總是去思考最困難的問題:如何確保成熟的增強學習智能體能夠按照設計者的意圖行事,比人類還要更加智能?
「對抗樣本」展示出,就算是簡單的現代算法,不論是監督學習還是增強學習,就已經可以不以設計者的意願行事了,且是以令人驚訝的方式。
抵禦「對抗樣本」的一些嘗試讓機器學習模型更穩定的傳統技術,比如與權重衰減(weight decay)和dropout,通常不會對「對抗樣本」造成實際的防禦。到目前,只有兩種方法有明顯防禦效果。
這是一個暴力解決方法,我們自己生成許多「對抗樣本」,讓後用這些樣本來訓練我們的模型,讓它不被其中任何一個矇騙。cleverhans庫已經有開源的對抗訓練機制,這裡面(https://github.com/openai/cleverhans/blob/master/tutorials/mnist_tutorial_tf.md)有使用方法詳解。
這個策略,是讓訓練模型輸出分類概率,而不是直接輸出最終的某個類別。概率由早期的一個模型提供,在同樣的任務上進行訓練,使用hard類別標籤。這種方法會創建方向平滑的模型,攻擊者由此難以找到「對抗樣本」產生的關鍵點。(「淨化」最初源於Distilling the Knowledge in a Neural Network這篇論文,為了節省計算量,「淨化」作為一種模型壓縮的方法,把小模型進行訓練來模仿大模型)。
然而,如果攻擊者獲得更多的計算力,那麼即使是這些特定算法,也會很容易就被攻克。
失敗的抵禦:「梯度隱藏」(gradient masking)「梯度隱藏」這種失敗的抵禦方法,可以讓我們好好思考一下,簡單的抵禦方法是如何失敗的。
「梯度隱藏」這個術語最初出現在「Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples」這篇論文裡,用來描述一大類失敗的防禦方法,這類方法會拒絕攻擊者進入一個有用梯度。
大部分的「對抗樣本」構建技術都是利用模型梯度來進行攻擊的。比如說,他們觀察一張飛機的圖片,反覆測試圖片空間的哪一個方向上,「貓」的概率會增加,然後它們就在這個方向上「推波助瀾」一下(換句話說,他們擾亂輸入值)。那麼這張經過修改的新圖片就會被錯誤識別為「貓」了。
但是,如果沒有梯度呢--如果照片上一個極小的修改對模型輸出不會造成任何影響呢?這看起來是可以進行一些防禦,因為這種情況下,攻擊者無法得知應該在圖片哪個方向上「推波助瀾」。
我們可以很容易想到一些微小的方法來擺脫梯度。比如,大部分圖片分類模型是以兩種模式運行的:一種是直接輸出「最可能類別」;另一種模式,就是輸出「概率」。如果模型輸出的是「99.9%飛機、0.1% 貓」,那麼輸入值的微小變化,也會對輸出值的產生微小影響。但如果我們的模型直接採用第一種運行模式,直接輸出「飛機」,那麼輸入值的微小變化,將對最終輸出結果沒有影響,而梯度也不會告訴透露任何信息。
如果我們使用「最可能類別」模式,而不是「概率」模式,那麼讓我們來思考一下,這種方法抵抗對「抗樣本」的表現如何。在「最可能類別」模式下,攻擊者不知道到哪裡去找能被歸類為「貓」的輸入值,以此我們能夠有一些防禦力。很不幸,之前每張被分類為「貓」的圖片,現在依然會被分類為「貓」。但是,如果攻擊者能夠猜測到防禦弱點,由此製作「對抗樣本」,那麼圖片仍然會被錯誤歸類。我們目前還沒讓模型更加穩定,我們只是讓攻擊者弄清楚模型防禦的弱點的線索變更少。
更不幸的是, 攻擊者可以有非常好的策略,來猜測防禦弱點在哪。攻擊者可以自己訓練一個模型,一個擁有梯度的光滑模型,製作「對抗樣本」,然後將這些「對抗樣本」放進我們防禦的非平滑模型裡。而我們的防禦模型,往往也會把這些「對抗樣本」錯誤分類。最終,這個思考結果暴露出,把梯度藏起來解決不了問題。
執行梯度隱藏的防禦策略,會造成一個在特定方向和訓練點周圍非常平滑的模型,這使得攻擊者很難找到暗示模型弱點的梯度。然而,攻擊者可以訓練一個替代模型:攻擊者會構建一個防禦模型的複製品,方法是觀察防禦模型輸入值的標籤,然後小心選擇輸入值。
進行這樣的一個模型抽取攻擊(model extraction attack)的流程,最早是在黑箱攻擊論文裡介紹的。攻擊者可以使用替代模型的梯度,來找到「對抗樣本」,以此來讓防禦模型發生誤判。上圖來自於「Towards the Science of Security and Privacy in Machine Learning」這篇論文對梯度隱藏的發現,這個例子裡我們將這種攻擊策略看做是一維的機器學習問題。梯度隱藏現象在面臨更高維度的問題時,會變得更加嚴重,但是更難以描述出來。
我們發現,對抗訓練和防禦淨化都會偶然產生梯度隱藏。這兩種算法都顯然不是為執行梯度隱藏而特意設計的,但是當機器學習算法訓練保護自己而沒有被給予特定方法指導時,梯度隱藏很顯然是算法自身相對比較容易產生的一種防禦方法。如果將「對抗樣本」從一個模型轉移至第二個模型,就算第二個模型用對抗訓練或防禦淨化訓練過,攻擊往往會勝利,雖然「對抗樣本」直接攻擊第二個模型會失敗。這說明,對抗訓練和防禦淨化這兩種技術能使模型更加平坦,移走梯度,而不能保證讓分類更加正確。
為什麼抵禦「對抗樣本」如此之難?「對抗樣本」很難抵禦,因為很難為「對抗樣本」的製作過程構建一個理論模型。「對抗樣本」是很多機器學習模型非線性和非凸最優化問題的解決方法,包括神經網絡。因為我們沒有好的理論工具,來描述這些複雜優化問題的方法,很難有理論論據表明某一種防禦方法能阻止一系列「對抗樣本」。
「對抗樣本」很難抵禦,也是因為它們要求機器學習模型為每一個可能的輸入值產生好的輸出結果。大多數情況下,對於遇到的所有可能的輸入值,機器學習模型只能夠對其中少量運行地比較好。
到目前為止,我們測試的每一種防禦策略都失敗了,因為策略不具有適應性:一種策略或許能抵禦一種攻擊,但是會對熟知它的攻擊者暴露出弱點。設計出抵抗強大、具有適應性攻擊者的防禦策略,是非常重要的研究領域。
總結「對抗樣本」顯示出,很多現代機器學習算法都能被擊潰,且是以令人驚訝的方式。這些機器學習的失敗證明,即使是簡單的算法,也會違背其設計者的意圖。我們鼓勵機器學習研究者投身其中,找出阻止「對抗樣本」的方法,以此減小設計者意圖和算法運行之間的鴻溝。如果你對於「對抗樣本」方面的工作感興趣,可以考慮加入我們OpenAI。
更多雷鋒網(公眾號:雷鋒網)相關文章:
深度卷積網絡的BUG一例:騰訊AI「絕藝」最近被人類棋手找到了一個有趣的缺陷
Google AI 邀你合奏一曲鋼琴曲
雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。