Introduction to Adversarial Attack
對抗式攻擊(Adversarial Attack)所用到的英文單字:Adversary,字面意義就是對手、敵手,因此,Adversarial Attack 變包含了「針對 Deep Learning Model 弱點」設計的攻擊。
Deep Learning Model 的弱點,最早於 Szegedy 等人提出的 “Intriguing Properties of Neural Networks” 中提到。他們發現神經網路雖然很厲害,但稍微變動一下圖片,神經網路就會徹底出錯。這個變動的幅度甚至可以小到人類完全看不出來。

嚴謹的定義
從上述說明,我們應該可以模糊的掌握到如果圖片只是稍微被調整,模型就給出錯誤的判斷的話,是不合理的情況。但是什麼樣是「稍微被調整呢」?參考 Adversarial Attack 的主流研究,我們可以採用 norm-bound 的策略,運用不同的「距離模範」(distant norm) 來計算圖片從原本自然圖片(natural image) 偏離了多少。

如上圖說明所示,神經網路 f 一開始收到正常的照片 x 可以得到正確得答案 y。但是如果我們能做出一個特別的照片 x*,這個照片跟原本的照片之間以某個 l_p norm 測量起來在我們設定的一個小數值 (epsilon) 以內,卻能夠讓模型得到錯誤的答案,那我們就完成了一次 adversarial attack。而得到的特別照片 x* 也就是 adversarial example。
l_p norm 可以參考維基百科的定義。但簡單來說,p= 無限大對應到每個pixel 最大改變量;p=2 是每個 pixel 改變量的平方相加平均,再開根號,也就是歐幾里德距離;p=0 則對應到總共幾個pixel 被調整。
上方第一張圖就是 p=無限大的情況,可以看到每個中間添加的 noise 在每個 pixel 上都有數值。下方 p=2 的範例中,就可以看出因為每個pixel 的數值整合到最後的距離,因此在取捨之下,會有一些pixel 被調整比較多,一些比較少。p=0 的情況則是選擇部分的區塊或 pixel 進行大量的調整,因此很容易被人眼發現,但如果深度學習模型沒有特別訓練要判斷這種狀況的話,還是會造成錯誤。


其他分類方式
除了以距離區分,Adversarial Attack 也可以由改變什麼來進行區分。目前我們所講述的情況是以變動測試資料為主,但也有研究在進行訓練資料或是神經網路權重上面的變動。不同的情境都有研究的需要,但在這理我們就以測試資料上的 Evasion Attack (並且採用 p=無限大的 norm)來說明 White-box Attack 和 Black-box Attack。

White-box Attack
White-box Attack 最基本的做法辨識 gradient-based attack。回顧深度學習的模型訓練,訓練過程中,會以 Forward Pass 計算輸入data 對應到什麼 output。再由 output 跟預期的落差,進行 Backward Pass 或 Back Propagation,計算為了縮小這個落差,每一層神經網路數值的 “gradient”。在模型訓練裡, gradient 便對應模型數值該如何調整。

同樣的概念也可以運用在 adversarial attack 上。我們可以輸入圖片,觀察結果跟攻擊目標之間的落差,並以同樣的方式計算圖片的 “gradient”。此時的 gradient 就代表圖片該如何調整。注意攻擊時的目標與模型訓練的目標是截然相反的。前者希望模型給出錯誤的答案,而後者希望模型給出正確的答案。

進行 gradient-based adversarial attack 最簡單的做法辨識 Fast Gradient Sign Method (FGSM) 如上圖,我們取得gradient 之後,直接取正負號並乘上我們所定的小數值,加到圖片上,便完成一次攻擊。

更複雜的手段則考慮可以使用 Porjected Gradient Descent (PGD) 多次調整圖片。值得注意的是,每次調整後的圖片需要被投影回到正確的區域,也就是每個 pixel 增減 epsilon 的範圍以內。
Black-box Attack
當模型隱藏起來變成一個「黑盒子」的時候,我們便沒辦法得知裡面的參數,也就沒辦法計算 gradient。這時候就要考慮採用 Transfer Attack 或 Zeroth Order Attack。
Transfer Attack 就是攻擊另一個模型,然後用另一個模型得到的 Adversarial Example 直接拿回來攻擊目標模型。這兩個模型甚至可以架構不一樣,只是訓練在相同的 dataset ,就可以達成成功的攻擊!可以說,深度學習模型在類似的 dataset 訓練下,會學習類似的結果。
Zeroth Order Estimation 則需要相當辛苦,一個一個 pixel 的檢查每個 pixel 該如何調整,才能成功的攻擊模型。所幸有一個簡化的方法是採用隨機的方向來調整圖片。如此一來,跟 gradient 順向的方向會被強化,反向的會乘上負號,而垂直的則會彼此抵銷,因此隨機選擇夠多方向時,最後的結果就會漸漸接近 gradient。
防禦方法
目前公認的防禦方法為 Adversarial Training,也就是將針對模型攻擊產生的 Adversarial Example 放回訓練資料中,訓練讓模型下次看到時便不要在出錯。這樣的訓練便比原本的訓練多了很多倍運算需求,而結果也還有待加強。以 Cifar 10 為例,正常訓練的模型能得到約 90%的準確率,攻擊後會降到 0 %。而 Adversairal Training 的結果在正常範例能得到約 80%的準確率,而攻擊後則是守住約40–60% 的準確率。(參考 benchmark)
進階論文參考
底下提供一些進階的論文,供大家參考
破解 (非 adversarial training) 防禦手法:
- Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples
- On Adaptive Attacks to Adversarial Example Defenses
加速 adversarial training:
- Adversarial training for free! (以數學推導,
重複利用model 跟 adversarial exapample 所需要的 gradient) - Fast is better than free: Revisiting adversarial training
(用 FGSM + random initialization > PGD)
解釋 adversarial attack:
- Adversarial Examples are not Bugs, they are Features