[論文閱讀筆記]The Limitations of Deep Learning in Adversarial Settings

The Limitations of Deep Learning in Adversarial Settings

參考
知乎
CSDN

文章概述: 與之前的基於提高原始類別標記的損失函數或者降低目標類別標記的損失函數的方式不同,這篇文章提出直接增加神經網絡對目標類別的預測值。換句話說,之前的對抗樣本的擾動方向都是損失函數的梯度方向(無論是原始類別標記的損失函數還是目標類別標記的損失函數),該論文生成的對抗樣本的擾動方向是目標類別標記的預測值的梯度方向,作者將這個梯度稱爲前向梯度(forward derivative)。本文主要介紹了一種新的對抗樣本攻擊方法,利用輸入特徵到輸出值之間的對抗性顯著性,達到只需修改少量的輸入值即可誤分類的目的。該攻擊方法屬於targeted攻擊。文章指出Forward derivatives approaches are much more powerful than gradient descent techniques used in prior systems.
[Note]:本文通過修改4.02%的輸入特徵,就可以達到97%的攻擊成功率。但是,我覺得對於手寫數字的識別而言,實際上數字內容所佔的總像素點只有一部分,而4.02%是針對整張圖片(28x28)而言的,我覺得在量化上有點避重就輕

深度學習功能模型的分類:
攻擊目標
深度學習應用系統中,模型的完整性(Intergrity)非常重要,與模型的預測結果準確性有關,具有非常的應用價值。因此,深度學習攻擊模型主要攻擊深度學習模型的完整性。具體來說,深度學習的攻擊就是努力找到一個輸入樣本XX^*,從而導致分類器的分類結果出錯。本文考慮以下四種影響模型完整性的攻擊目標:

  1. Confidence Reduction: 降低分類輸出結果的置信度值,因此會引入分類歧義;
  2. Misclassification: 將分類結果修改爲除了原始標籤外的其他任何標籤值;
  3. Targeted Misclassification: 產生輸入,使得該輸入的分類結果是一個特定的目標類;
  4. Source/Target Misclassification: 針對一個原始樣本和目標類,產生一個擾動量,使得當擾動量加到原始樣本中,其分類結果是特定的目標類。

攻擊能力:
攻擊者通常伴隨着不同的攻擊能力。對抗樣本攻擊發生在模型的預測階段(PS. 非訓練階段,攻擊時模型已經訓練完成),根據攻擊者獲得信息的不同,作者按照攻擊能力大體遞減的順序,將其分爲以下五類:

  1. Training Data & Network Architecture: 這是最強的攻擊,可以同時模擬網絡的結構和分析訓練集數據。
  2. Network Architecture: 這種攻擊瞭解深度學習網絡結構及其參數,包括網絡層數、激活函數、層間權重、偏差等。本文的攻擊假設屬於此類。
  3. Training Data: 攻擊者可以收集替代數據集,這些替代數據集可以從用於訓練DNN的原始數據的分佈中採樣。一種典型的攻擊方法是攻擊者使用太呆數據集來訓練深度學習網絡,用來近似原始的深度學習網絡結構。
  4. Oracle: 攻擊者可以把神經網絡當作一個“Oracle”。攻擊者可以通過提供輸入樣本得到對應的輸出預測值。原則上,攻擊者通過觀察輸入和輸出間的區別,從而自適應地構造對抗樣本。
  5. Samples: 攻擊者可以有能力收集神經網絡分類器的輸入和對應的輸出,但不同的是,攻擊者不能通過修改輸入來觀察輸出的差異。這是最差的攻擊能力。

直觀地來看,以上攻擊目標和攻擊能力可以歸納爲下圖

JSMA方法:
本文針對非循環前饋DNN網絡,設計一種新的基於雅可比顯著圖(Jacobian Saliency Map) 的攻擊樣本生成方法。這種方法需要計算前嚮導數,以便構建一個對抗性顯著圖,從而確定輸入特徵子空間與攻擊目標之間的關聯性。通過這種方法擾動輸入空間特徵值,可以很快達到達到攻擊者誤分類的目的。着重關注那些導數大的參數,來進行攻擊。

假設我們考慮一個簡單的一層神經網絡,以便我們更好地瞭解算法背後原理。具體地,作者展示瞭如何通過前嚮導數發小最小的擾動,來使得神經網絡的輸入產生大的變化。假設我們有一個簡單的一層神經網絡結構,通過在訓練集合上訓練,得到布爾AND函數,即輸入爲樣本 X={x1,x2}X = \{x_1, x_2\},輸出爲F(X)=x1Λx2F(X)=x_1 \Lambda x_2,該網絡結構如下

當輸入樣本爲X[0,1]2X \in [0, 1]^2時,整個神經網絡學習到的函數F如下圖左圖所示,可以直觀地看出來,輸入值在0(藍色)和1(黃色)之間有非常明顯的斷層。

進一步我們計算前嚮導數,即計算函數F對輸入值每個特徵{x1,x2}\{x_1, x_2\}的前嚮導數,即爲
JF(x)=[F(X)x1,F(X)x2] J_F(x) = [\frac{\partial F(X)}{\partial x_1}, \frac{\partial F(X)}{\partial x_2}]
前嚮導數的示意圖如上圖右圖所示,直觀上,前嚮導數越大的地方越容易構建對抗樣本。 例如,考慮上右圖中X=(1,0.37)X=(1, 0.37)X=(1,0.43)X^*=(1, 0.43)兩點,兩者的距離非常接近,但是兩者在神經網絡中輸出完全不同,前者爲0.11後者爲0.95。如果四捨五入則前者爲0後者爲1。
由此可以看出:

  • 輸入值極小的擾動可以致使神經網絡輸出的不同
  • 輸入域不同region中找到對抗樣本的難易程度不同
  • 前嚮導數可以減少對抗樣本的搜索範圍

實施細節:

構造算法的輸入分別是: 正常樣本XX,target目標標籤YY^*, 非循環DNN FF,最大的擾動量distortion參數γ\gamma, 以及feature variation參數θ\theta。算法的返回值是對抗樣本 XX^*。其中算法的主要步驟有一下三個:

  1. 計算前嚮導數JF(X)J_F(X^*)
  2. 基於前嚮導數構造顯著圖SS
  3. 利用θ\theta修改輸入特徵imaxi_{max}

Step 1: 計算前嚮導數JF(X)J_F(X^*)

其中fn+1,jf_{n+1, j}表示的是在第n+1n+1 layer, 第jj個神經元的輸出結果;WWbb分別爲對應的權重和偏置項;HkH_k表示第kk層的隱藏層輸出結果。

[Note]: 如果k=n+1k = n+1, 則Hk=F(X)H_{k}=F(X) (我覺得沒毛病)

上面這個只有Hnxi\frac{\partial H_n}{\partial x_i}是不知道的,而Hnxi\frac{\partial H_n}{\partial x_i}又可以通過遞歸的方式求解(運用鏈式法則), 因此對於深度學習模型FF和給定輸入XX而言,前嚮導數矩陣爲:
JF(X)=F(X)X=[Fj(X)xi]i1,...,M;j1,...,N J_F(X) = \frac{\partial F(X)}{\partial X} = [{\frac{F_j(X)}{\partial x_i}}]_{i \in 1,...,M; j \in 1,...,N}

Step 2: 基於前嚮導數構造顯著圖SS
利用之前顯著圖的研究,作者擴展成對抗性顯著圖,用來表示輸入空間中哪些特徵對輸出結構影響最大。爲了達到將對抗樣本誤分類成 tt的目的,Ft(X)F_t(X)的概率必須不斷增大,且當j!=tj != tFj(X)F_j(X)應該不斷減小,直到 t=argmaxjFj(X)t = \underset{j}{\mathrm{argmax}} F_j(X)。文章給出了2種顯著圖的計算方式:
方式1: 增長輸入特徵

方式2: 減小輸入特徵

顯然前向梯度是由神經網絡的目標類別輸出值對於每一個像素的偏導數組成的。這啓發了我們通過檢查每一個像素值對於輸出的擾動,從而選擇最合適的像素來進行改變。接下來只對方式1進行說明,方式2同理。

[對第i個特徵]

上述第一行想要達到的目的:使對tt類的預測分數起負作用(<0)或者對其他非tt類的預測總體呈正作用的特徵圖對應的映射設爲0
上述第二行想要達到的目的:如不是上面那種情況,說明第i個特徵對輸出爲tt類還是有幫助的,並設置爲相應的值(考慮所有的偏導數,但結果仍是正的)

Step 3: 利用θ\theta修改輸入特徵imaxi_{max}
通過對抗性顯著圖確定需要修改的輸入特徵後,對應的特徵(像素點)則爲顯著圖SS中最大的像素值所對應的像素點。令
θ\theta表示輸入特徵的修改量。在MNIST實驗中,作者設置參數爲 θ=+1\theta = +1。即把該點像素值增加1,考慮到我們像素值歸一化到[0,1]之間,所以直接就是將該點像素設爲最大值1。
[NOTE]:但是在實際操作時,每次選擇一個像素點太嚴格(很難滿足otherwise的條件,(上面的方式1和方式2)),於是作者提出了採用一組像素點而不是一個像素點的方法。

上圖中的算法2就是作者實際採用的方法,算法3是使用像素點對的啓發式搜索算法。其中,作者在算法3想要找到的(p1,p2)(p_1, p_2)滿足下式

其中左邊第一項是正的,右邊第二項是負的。但是也存在缺點

  • 像素點對的組合方式過多,計算存在負擔

實際操作:作者採用的是最後1層的隱藏層輸出結果來進行前向傳播的計算而非最後的output probability layer的結果。原因是這兩個層之間的邏輯迴歸計算引入的極端變化以確保概率之和爲1,從而導致極端導數值。這降低了神經元如何被不同輸入激活的信息質量,並導致前嚮導數在生成顯著性映射時精度較低。此外最後一個隱層也由10個神經元組成,每個神經元對應一個數字類0到9,處理起來效果更好。

對於前面的2種顯著圖的生成方式,作者也展示了相應的結果:下面左圖是方式1生成的結果,右圖是方式2生成的結果。可以看出,方式2產生的結果比較不容易被人類察覺。但是方式2在擾動閾值的限制下成功攻擊的概率只有64.7% 而方式1則能達到97%(Fig. 11)。這也是合理的,因爲去除像素降低了信息熵,從而使得DNNs更難提取分類樣本所需的信息。

此外,作者還提出了一系列評估生成對抗樣本難易程度的標準,有興趣或者以後會用到可以再來閱讀


由於這些筆記是之前整理的,所以可能會參考其他博文的見解,如果引用了您的文章的內容請告知我,我將把引用出處加上~
如果覺得我有地方講的不好的或者有錯誤的歡迎給我留言,謝謝大家閱讀(
點個贊我可是會很開心的哦)~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章