[論文閱讀筆記]Towards Evaluating the Robustness of Neural Networks(CW)

Towards Evaluating the Robustness of Neural Networks(C&W)(2017 Best Student Paper)

文章簡介:

  • 證明defensive distillation不能顯著地提高模型的魯棒性
  • 介紹了3種新的攻擊算法,可以在distilledundistilled神經網絡達到100%的攻擊成功率
  • 本文的攻擊相比於以前的攻擊通常會更有效
  • 本文的對抗性例子可以從不安全的網絡模型遷移到distilled(安全)的網絡模型去
  • 數據集:MNIST、CIFAR-10、ImageNet
  • 本文主要研究Targeted Attacks
  • 由於defensive distillation並不能真正地避免對抗樣本的出現,作者認爲原因可能是對抗樣本的存在原因在於神經網絡局部線性的性質[47] (這是一種說法,也有其他說法)

算法思想:

作者把構建對抗樣本的過程轉化爲一個最優化問題,如下圖所示:

但是其中的等式約束難以求導,所以作者將這一等式進行了轉化:
C(x+δ)=tf(x+δ)0 C(x+\delta) = t \Rightarrow f(x+\delta) \leq 0
並給出一共7種選擇

最終將原優化問題轉爲

接下來,爲了解決box約束問題(即0xi+δi10\leq x_i + \delta_i \leq 1),作者採用了3種方法進行選擇

  • Projected gradient descent:每實施一步梯度下降,就把計算的結果限制在box內,該方法的缺點就是每次傳入下一步的結果都不是真實值
  • Clipped gradient descent:並沒有真正地裁減xix_i,而是直接把約束加入到目標函數中,即

f(x+δ)f(min(max(x+δ,0),1)) f(x+\delta) \Rightarrow f(\min(\max(x+\delta, 0), 1))

  但這種方法,只是對目標函數進行了約束,可能會存在 xi+δix_i + \delta_i超過最大值的情況,這樣就會出現梯度爲0的結果,以至於xix_i即使減少,從梯度角度也無法檢測到。

  • Change of variables:通過引入變量 wiw_i,使得xi+δix_i + \delta_i滿足box約束,其方法爲

最後的結果如下:

  • Best Case: target label是最容易攻擊的label
  • Worst Case:target label是最難攻擊的label
  • Average Case:target label是隨機挑選的label

可以發現Projected Descent在處理box約束是優於其他兩種策略,但Change of Variable尋求的擾動一般都是較小的,此外f2,f3,f4f_2, f_3, f_4效果欠佳,但f6f_6在這7種策略中基本上是最好的:需要的擾動一般最小,且成功率高。

後面作者還採用三種攻擊方法(其本質區別就是範數約束區別)

  • L2  AttakL_2 \,\,Attak:下面的ff選擇的就是之前測試結果中效果最好的f6f_6, 只是對kk解除了必須爲0的約束

參數kk鼓勵算法在尋找對抗樣本的時候,將其歸爲target類時有更高的置信度,同時能夠增加遷移率。原因就是他更加鼓勵分爲其他類時,最大的置信度要比target類的置信度會往k的差距優化。

  • L0  AttakL_0 \,\,Attak:因爲L0距離是無法微分的,所以作者採用迭代的方法,使用L2 Attack來確定哪些像素不重要,對不重要的像素點就固定着。詳細過程如下(還得詳細看下代碼才行文章有點不太清晰):

  a) 首先通過L2 Attack方法獲得δ\delta, 使得x+δx + \delta是一個對抗樣本。

  b)計算梯度gg
g=f(x+δ) g = \nabla f(x+\delta)
然後選擇i=argminigiδii = \arg \min_i g_i \cdot \delta_i,這就是我們所要固定的像素點即把他移除出需要更新的像素點集(allowed set)
  c) 重複以上過程,知道L2 Attak無法找到對抗樣本爲止

  • L  AttackL_{\infin} \,\,Attack:該攻擊方法不是完全可微的,並且標準的梯度下降算法並不能達到非常好的效果,即採用如下策略時,會出現一個問題:無窮範數只懲罰最大的那個值

   假設δi=0.5\delta_i = 0.5δj=0.5ϵ\delta_j = 0.5 - \epsilon,則L  normL_{\infin} \,\, norm只會懲罰δi\delta_i而不會去懲罰δj\delta_j,最後可能會使得優化的最終結果是δi=δj=0.5\delta_i = \delta_j = 0.5,而沒有任何意義。

所以作者通過iterative attack來解決這個問題,作者把原目標函數中的約束替換,如下:
該方法懲罰所有大於τ\tau的值,並且如果在每一輪迭代中,如果所有的δi<τ\delta_i < \tau,則τ=0.9τ\tau = 0.9\tau


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

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