對抗攻擊方法一覽

_CHENBIN發表於2022-04-08

背景

神經網路在過去的幾年和幾十年已經獲得了長足的進步,神經網路的應用已經遍佈我們生活的各個角落。但是與此同時,也有人發現神經網路並不像我們預期的那麼具有魯棒性,僅僅在圖片中新增一個微笑的擾動就可以改變神經網路最後的預測結果,這些技術被稱為對抗攻擊。對抗攻擊是指在乾淨的圖片中新增微小的擾動,使神經網路(DNN)產生誤判,但人的肉眼卻無法察覺的一項技術,最早是在Szegedy等人在《Intriguing properties of neural networks》中提出。

在這篇論文發表後,就激起了大家對對抗攻擊研究的熱情,於是就不斷的有新的對抗攻擊方法被提出,力求將網路攻擊後的準確率攻擊的越低越好,但與此同時,又不斷的有人提出瞭如何改進模型結構或者新的訓練方法,來提升模型面對各種對抗攻擊方法時的魯棒性,隨著大家的不斷深入的研究,這也變成了一個功與防,矛與盾的問題。接下來,我也將對我瞭解到了攻擊或者防禦方法做一個大概的梳理。本文的內容很大程度上參考了這篇綜述:Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey

分類

如果對對抗攻擊方法按照是否知道被攻擊網路的結構或者引數來分類,那麼可以分為白盒攻擊黑盒攻擊。在一般來說,如果攻擊的時候有利用到被攻擊網路的梯度資訊,那麼這個攻擊方法就是一種白盒的攻擊方法,因為白盒攻擊知道了被攻擊網路模型的具體結構和引數,所以攻擊的強度也會很大,與此對應的就是黑盒攻擊,對於黑盒攻擊來說,攻擊者獲取不到模型的各種細節,只知道模型輸入和輸出,整個模型對他來說就是一個黑漆漆的盒子,這也是黑盒這個名字的來源。雖然白盒攻擊的強度會比黑盒攻擊高很多,但是在現實情況下,黑盒攻擊更具有現實意義,因為攻擊者其實很難直接的將你的模型拿來做分析,進行白盒攻擊。

如果將對抗攻擊方法按照攻擊採取的形式,那麼可以將網路的攻擊分為目標攻擊非目標攻擊。這兩種攻擊的主要區別就是對模型的攻擊方向是不是確定的,例如說,有一張貓?的圖片,你想讓攻擊之後的圖片被網路識別為狗?,那麼,這就是一種典型的目標攻擊,與此對應的,如果你只是想讓網路不正確識別到貓?,可能攻擊之後識別為蛇?,車?或者其他的,這種就是典型的非目標攻擊。

如果按照攻擊的方法來劃分的話,可以將網路分為單步攻擊迭代攻擊基於優化的攻擊。區分這三者就比較的容易,單步攻擊就是在攻擊中只攻擊一次,這種攻擊方法的優點就是攻擊的速度非常的快,但是缺點也比較的明顯,就是攻擊的強度很小,單步攻擊的代表就是FGSM;多步攻擊就是單步攻擊的改進版本,不像單步攻擊那樣簡單的移動一步,而是按照一定的步長,多次的攻擊,代表就是PGD;基於優化的攻擊將尋找合適的對抗樣本看作為一個優化問題,根據設定的優化目標去不斷的優化擾動,其代表就是CW。

常用術語

\(L_0\)範數,\(L_2\)範數,\(L_\infty\)範數

對於各種的攻擊演算法中,這幾個範數出現的頻率特別高,這三個範數的存在主要是為了去更統一的規範各個攻擊演算法產生的擾動的範圍。

  • \(L_0\)範數:擾動的畫素點數量

  • \(L_2\)範數:原始影像和擾動之後的影像之間,所有畫素點距離絕對值的總和

  • \(L_\infty\)範數:在所有的擾動中,繞動最大的那一個

    所以其實可以看到,\(L_0\)範數約束的是對抗樣本被擾動過的畫素點數量,被擾動的越少,那\(L_0\)範數就越小,\(L_2\)範數是對擾動整體進行了一個約束,要求擾動整體的絕對值之和要小於某個值,對於\(L_\infty\)範數來說,它只限制了擾動的最大值,只要擾動不超過這個規定的值,就是合理的。

攻擊方法

Box-constrained L-BFGS

論文地址:Intriguing properties of neural networks

Szegedy等人在發現網路可以被微小的擾動干擾之後,就提出了產生對抗樣本的方法,其提出的方法大致為:

image-20220406163045382

其中r為生成的擾動,f為分類器,l為目標類別,所以改攻擊方法就是在儘可能將擾動降低的過程中,讓網路誤判對抗樣本為目標類別,同時還需要保證新增上擾動的對抗樣本還在0到1的範圍內。但是作者發現這個優化的問題會過於的複雜,所以將優化的問題進行了一定的簡化,變成了:

image-20220406163602915

相較上面的公式,這裡的優化問題多了一個懲罰因子c,用來權衡兩者的關係,其他與上式基本一樣,但是到這裡,整個優化問題就變為了一個凸優化的問題。


FGSM

論文地址:Explaining and Harnessing Adversarial Examples

FGSM是GoodFellow(大牛)提出的一種攻擊方法,其攻擊的手段也十分的直觀,因為我們在訓練網路的過程中,都是想讓網路的引數朝著梯度下降的方向去調整,那麼,我們就可以在影像上新增擾動,這個擾動可以朝著梯度上升的方向去生成,這樣子就可以讓網路預測出來的損失儘可能的大,預測的結果也就會偏離。FGSM的擾動生成公式:

image-20220406172259001

可以看到對抗樣本加上了朝著梯度上升生成的擾動,那這個對抗樣本就會離真實樣本越來越遠,達到了對抗樣本的目的。與此同時,也會有目標攻擊的FGSM,其公式與原始的FGSM十分相似:

image-20220406173011462

可以觀察到,與原始的FGSM的主要區別就是將加號變為了減號,同時把與真實標籤做Loss變為了與目標標籤做Loss,這樣子就會讓圖片朝著目標標籤演變。


Basic Iterative Methods(BIM)

論文地址:Adversarial examples in the physical world

相較於FGSM的一下子走一大步,Basic Iterative Methods(BIM)將大的步長分解為許多小的步長,然後擴充套件為多步去逐步的增大模型的Loss,其運算的流程如下:

image-20220406221012587

第i+1次的迭代結果基於第i次的結果,同樣也是基於梯度,然後不斷的去增大模型的Loss。同樣的,BIM也有目標攻擊的版本,其變種同上面的FGSM的變種一樣,將真實標籤變為了目標標籤,同時將加上梯度變為減去梯度。

這裡可能會發現上面的實現過程與我們熟悉的PGD十分的相似,甚至有點看著一模一樣,事實也的確如此,PGD作為BIM的變體,相較於BIM的改進是在進行攻擊的時候,會以隨機的初始噪聲來初始化自己的擾動,這個改進也證明了自己的有效性,PGD是現階段十分強力的攻擊方法


Jacobian-based Saliency Map Attack(JSMA)

論文地址:The Limitations of Deep Learning in Adversarial Settings

相較於前面的幾種對抗攻擊方法使用的是L2範數或者無窮範數去限制對抗樣本,JSMA的方法將使用L0範數去限制被擾動的畫素點個數,但是對每個擾動的畫素點的擾動範圍沒有確切的要求。對於如何選擇被擾動的畫素點,這裡選擇的是使用顯著圖(Saliency Map)這個概念去選擇對誤判貢獻最大的那幾個畫素點。

在計算的過程中,作者使用了雅可比矩陣去求得向前傳播的偏導數,從而獲取哪些畫素位置對誤分類神經網路有最大的貢獻,向前導數矩陣的計算公式如下:

image-20220407174714739

這裡可能會疑惑,向前傳播的求導與我們平時使用向後傳播的求導有何不同?首先,我們平時在使用向後傳播的時候,求導是在代價函式,也就是我們求的Loss函式與輸入變數之間求導,這些過程都被封裝在backward這個方法中,這裡的向前傳播是神經網路的最後一層函式F與輸入變數之間的求導

在求完雅可比矩陣之後,我們就可以分析出哪些才是我們需要去擾動的畫素點,文中使用了一下的計算方式:

image-20220407175059658

這個公式中,i表示的是輸入特徵的第i個特徵,X是輸入的變數,t為目標類別。那麼這個公式的上半部分就表示的是拒絕對判斷為目標標籤t有副作用的畫素,或者讓對抗樣本會判斷為非目標標籤t有正作用的畫素也置為0,然後下半部分是將對對抗樣本判斷為目標標籤t有積極作用的畫素增大權重。從上面的描述就可以看出,JSMA是一種典型的目標攻擊,需要指定目標標籤t。


One Pixel Attack

論文地址:One Pixel Attack for Fooling Deep Neural Networks

這是一種比較極端的攻擊方法,同上面的JSMA攻擊方法一樣,它也是L0範數下的攻擊。就像這個演算法的名字一樣,它只改變了原圖中的一個畫素,就能使模型對攻擊後的圖片產生誤判。在最初看到這個攻擊演算法的時候,比較直觀的想法就是遍歷圖片的每個畫素,然後逐一的去嘗試,但是這樣子會十分的耗時,就拿CIFAR10資料集來說,一張圖片就要便利32*32*3次,這代價太大,於是作者的解決辦法是使用了差分進化演算法,會讓尋找最優的畫素的時間變少。

image-20220407195139527

Carlini and Wagner Attacks(C&W)

論文地址:Towards Evaluating the Robustness of Neural Networks

CW演算法是一種基於優化的演算法,其優化的目標就是產生一種人肉眼看上去十分乾淨,但是會讓機器產生誤判的對抗樣本。至於為什麼要叫這個名字,與其本身的攻擊方法沒有任何關係,這個是論文兩個作者的名字拼起來的來的。

對於CW來說,需要確定一個優化的目標,在文中,作者將這個優化的目標設定為了:

image-20220407210838840

這個優化的目標就是在能讓模型誤判的前提下,儘可能的讓擾動小。在這個優化的過程中,有一個很有意思的技巧,就是作者需要確定生成的對抗樣本是一個正常的圖片,即範圍應該在0到1之間,但是如果直接使用torch.clamp函式的話,就會讓被裁切掉的部分失去梯度,然後在之後的優化過程中不再發生變化,這是我們不想看到的,所以作者先是將一張正常的圖片對映到了(-inf, +inf)的範圍,使用的是atanh函式,然後在這個範圍進行優化,優化完之後經過一個Tanh函式,就恢復了原來圖片的範圍,這樣就可以比較方便的優化出一個對抗樣本。CW的攻擊性很強,而且相較於FGSM和PGD,它的擾動對人的肉眼來說幾乎不可見,但是其有一個很大的缺點,就是非常非常非常的慢


DeepFool

論文地址:DeepFool: a simple and accurate method to fool deep neural networks

DeepFool的目標是尋找到可以讓模型產生誤判的最小擾動,這就好比在簡單的多分類場景中,機器學習是使用一個超平面去區分不同的類別,那使一個類別產生誤判最簡單的方法就是朝著這個超平面移動,這就是最小的擾動。在本篇論文中,作者將要尋找的最小擾動定義為了:

image-20220407213939735

其中r就是要尋找的最小擾動,K就是分類器。

作者先在二分類中演示了DeepFool,如下圖所示,一個超平面將空間分為了兩半,超平面的兩邊代表了模型識別的兩類

image-20220407214610448

其中超平面的表示式為:

image-20220407214813623

則最小的擾動距離就可以被定義為:

image-20220407215033445

對於通用的分類器來說,尋找這個最小的擾動距離需要一個迭代的過程去尋找,作者在文中給出的虛擬碼如下:

image-20220407215325095

即不斷的朝著超平面的方向前進,直到樣本被模型誤判。


Adversarial Transformation Networks (ATNs)

論文地址:Adversarial Transformation Networks: Learning to Generate Adversarial Examples

這篇論文不同於之前想要分析模型的種種特點,這裡想直接訓練一個模型,將原圖作為輸入,然後輸出就為對抗樣本,可以說是一種比較巧妙的方法。在這個網路的訓練過程中,也會設定一個優化目標去指導模型的訓練,這裡將優化的目標設定為了:

image-20220407220144759

其中\(f()\)為訓練好的分類模型,\(g()\)為我們要訓練的產生對抗樣本的模型,\(L_X\)\(L_Y\)均為損失函式,在論文中,\(L_X\)\(L_2\) Loss,\(L_Y\)的定義為:

image-20220407221208021

這裡的\(r(y, t)\)是作者定義的一個reranking函式,主要的目的就是指引模型誤判為指定的類,其定義為:

image-20220407221355057

主要的作用就是將目標類別t的值乘上一個倍數,以讓模型朝著這個方向去訓練,然後不改動其他類別的值,這樣的好處是top2的準確率是不會變的,這也會讓擾動之後的圖片更加的正常。


Universal Adversarial Perturbations

論文地址:Universal Adversarial Perturbations: A Survey

這篇論文提出的是想要生成一個通用的擾動,這個擾動新增到任意一張圖上,都可以讓網路被誤分類到目標類上,著篇論文提出的方法與前面介紹的DeepFool相似,都是將影像推出分類的邊界,不過與DeepFool不同的是,這個擾動是在遍歷許多張圖片後找到的,是針對所有圖片的通用擾動


UPSET and ANGRI

論文地址:UPSET and ANGRI : Breaking High Performance Image Classifiers

與上面的攻擊方法不同,這個攻擊方法是一種黑盒攻擊,其對抗樣本的產生是按照以下的公式:

image-20220408003224094

U()就是論文中提出的UPSET網路,R()是一個殘差網路,s為一個縮放因子,然後將產生的對抗樣本限制在(-1, 1)的範圍裡。


總結

上文介紹了幾種方法都是一些比較出名的攻擊方法,有的是目標攻擊,有的是非目標攻擊,有的是黑盒,有的是白盒,但攻擊的手段也肯定遠遠不止這幾種,更何況這篇綜述寫於18年,這裡也只是介紹了我瞭解過的一些攻擊方法。

相關文章