Nicholas Carlini, David Wagner, Towards Evaluating the Robustness of Neural Networks
概
提出了在不同範數下ℓ0,ℓ2,ℓ∞下生成adversarial samples的方法, 實驗證明此類方法很有效.
主要內容
基本的概念
本文主要針對多分類問題, 假設神經網絡F:x∈Rn→y∈Rm, 其網絡參數爲θ.
假設:
F(x)=softmax(Z(x))=y,
其中softmax(x)i=∑jexjexi.
C(x)=argimaxF(x)i,
爲x的預測類, 不妨設C∗(x)爲其真實的類別.
Adversarial samples 的目標就是構建一個與x相差無幾的x′(∥x−x′∥足夠小),但是C(x′)=C∗(x). 很多構建Adversarial samples可以指定類別:
- Average Case: 在不正確的標籤中隨機選取類別;
- Best Case: 對所有不正確的標籤生成Adversariak samples, 並選擇最容易成功(即騙過網絡)的類別;
- Worst Case:對所有不正確的標籤生成Adversariak samples, 並選擇最不容易成功的類別.
文章中介紹了不少現有的方法, 這裏不多贅述.
目標函數
一般可以通過如下問題求解x′=x+δ:
mins.t.D(x,x+δ)C(x+δ)=tx+δ∈[0,1]n,
其中D衡量x,x+δ之間的距離, 常常爲ℓ0,ℓ2,ℓ∞.
但是C(x+δ)=t這個條件離散, 這個問題很難直接求解, 作者給出的思路是構造一些函數f(x,t), 使得當且僅當f(x,t)≤0的時候此條件滿足.
則問題轉換爲:
mins.t.D(x,x+δ)f(x,t)≤0x+δ∈[0,1]n,
進一步
mins.t.D(x,x+δ)+cf(x,t)x+δ∈[0,1]n.
作者給出了7種符合此類條件的函數(作者尤爲推薦第6種):
如何選擇c
binary search
如何應對Box約束
圖片的元素需要滿足0≤xi≤1, 如何滿足此約束:
- 簡單粗暴地對其裁剪, 大於1的爲1, 小於0的爲0, 但是這種方法在梯度下降方法比較複雜(如帶momentum)的時候效果可能不會太好(既然momemtum要記錄變量改變的方向, 而我們又擅自對此方向進行更改);
- 用f(min(max(x+δ,0),1)替代f(x+δ), 我的理解是, 每次不改變原變量x′, 然後把clip後的x′餵給f. 作者說此類方法容易方法在次優解間來回振盪的現象;
- 定義
δi=21(tanh(wi)+1)−xi,
於是我們只需優化wi, 且保證xi+δi∈[0,1].
L2 attack
min∥21(tanh(w)+1)−x∥22+c⋅f(21(tanh(w)+1),t),
其中
f(x′,t)=max(max{Z(x′)i:i=t}−Z(x′)t,−κ),
是對第6種方法的一個小改進, 其中κ反應了我們對誤判發生的信心.
L0 attack
因爲L0範數不可微, 所以每一次, 我們先利用L2 attack來尋找合適的δ, 令g=∇f(x+δ), 根據giδi判斷每個像素點的重要性, 最不重要的我們刪去(根據文中的意思是永久刪去).
- Input: x,c
- I=∅
- Do …:
- 計算在L2下的解x+δ(倘若在c下找不到, 則在2c條件下找(嵌套));
- g=∇f(x+δ);
- i=argminigi⋅δi,i∈I, 然後I=I∪{i};
在利用L2尋找δ的過程中, 若失敗, 令c=2c並重復進行, 直到其成功或者超過了最大的迭代次數.
L∞ attack
∥δ∥∞作爲懲罰項(?)只會針對個別元素, 這在實際實驗的時候並不友好, 往往會出現振盪, 於是作者想了一種替代
minc⋅f(x+δ)+i∑[(δi−τ)+],
這樣我們就把可以關注部分突出而非個別.