Trust Region Based Adversarial Attack on Neural Networks(2019 CVPR)
文章簡介:
- Method: 本文主要採用Trust Region(信賴域) 優化算法, 該方法在處理非凸優化問題時是非常有用的。
- Dataset: Cifar-10、ImageNet
- Compared Algorithm: DeepFool、I-FGSM、Carlini-Wagner(CW)
- 擾動大小的評價指標:
ρp=∣∣x∣∣p∣∣Δx∣∣p
- 兩種攻擊方法
- 選擇最好攻擊的類別進行攻擊
bestclassattackjargmin∣∣∇x(zt−zj)∣∣zt−zj
- 選擇最難攻擊的類別進行攻擊
hardestclassattackjargmin∣∣∇x(zt−zj)∣∣zt−zj
- 性能對比
- 相比於DeepFool,本文的方法需要的擾動更小(up to 3.9x)
- 達到與CW方法相同的攻擊效果時,本文所花費的時間更短(up to 37.5x)
Contributions:
- 將對抗攻擊問題轉化爲一個基於TR優化問題,並且在容易實施的同時還能比現有的方法更加高效(擾動小、速度快)
- TR-based攻擊方法可以在每一輪迭代的過程中自適應地選擇擾動量級,從而移除了費時費力的參數調優工作
- 我們的方法可以很容易地推廣到二階TR攻擊。
Limitations:
- 簡單地推廣到二階方法需要計算Hessian matvec backpropogation,計算開銷非常大
- 二階方法相比於一階方法提升有限
- 如果不考慮攻擊的性能,DeepFool比我們的方法更快(當然我們的方法攻擊效果更好擾動更小)
Trust Region Method:
首先假設神經網絡函數爲f,將其在其領域內泰勒展開
f(xk+Δx)=fk+gkTΔx+21ΔxT∇2f(xk+Δx)Δx
其中fk=f(xk),gk=∇f(xk)
然後利用Bk去逼近Hessian矩陣(個人認爲這個逼近的意思應該爲近似表達,這樣可以減輕點計算開銷)
mk(Δx)=fk+gkTΔx+21ΔxTBkΔx
在每一步迭代迭代過程,都會求解下述子問題
p∈Rhminmk(Δx)=fk+gkTΔx+21ΔxTBkΔx
做完鋪墊,引出本文的方法,下圖中<>
代表點積。
算法流程如下圖:
對於DeepFool而言,其解決問題的方法是通過線性放射變換來估計決策邊界。對於這樣一個決策邊界,只需計算當前點處的梯度,就可以分析計算擾動量。然而,對於神經網絡來說,這種近似可能非常不準確,也就是說,它可能導致對沿次優方向的擾動的過高/過低估計。 因爲最小方向與決策邊界正交,由於決策邊界是非線性的,不能通過簡單的仿射變換來計算。
TR方法的主要思想是迭代地選擇可信半徑ϵ,以找到該區域內的對抗擾動,使不正確類的概率達到最大值:
- 通過計算比率,如果ρ比較接近於1,說明這一步已經到信賴域邊緣了,並且步子有點小,可以嘗試擴大信賴域半徑
- 通過計算比率,如果ρ比較接近於0,說明這一步邁得太大了,可以嘗試縮小信賴域半徑
此外如果仔細觀察,可以發現Algorithm 1中紅框部分是錯誤的?雖然 我不太清楚到底是不是我搞錯了,但如果把括號去掉的話可以發現分子是爲0的?
Code:
代碼中ρ表達式中分子部分爲
ori_difff−adv_diff
其中
ori_diff=Z[range(n),true_ind]−Z[range(n),target_ind]
adv_diff=Zadv[range(n),true_ind]−Z[range(n),target_ind]
代碼中ρ表達式中分母部分爲
ϵdefault=0.001
不同算法擾動大小與攻擊速度的的對比展示
- average perturbation:平均擾動大小
- worst case perturbation:所有擾動中,最大的那個擾動大小
從中可以看出達到相同的擾動量級時,CW算法相比於TR是比較費時的;在相近的處理時間下,DeepFool方法產生的擾動會更大。
如果覺得我有地方講的不好的或者有錯誤的歡迎給我留言,謝謝大家閱讀(點個贊我可是會很開心的哦)~