Nicholas Carlini, David Wagner, Towards Evaluating the Robustness of Neural Networks
概
提出了在不同范數下\(\ell_0, \ell_2, \ell_{\infty}\)下生成adversarial samples的方法, 實驗證明此類方法很有效.
主要內容
基本的概念
本文主要針對多分類問題, 假設神經網絡\(F:x \in \mathbb{R}^n \rightarrow y \in \mathbb{R}^m\), 其網絡參數為\(\theta\).
假設:
其中\(\mathrm{softmax}(x)_i=\frac{e^{x_i}}{\sum_j e^{x_j}}\).
為\(x\)的預測類, 不妨設\(C^*(x)\)為其真實的類別.
Adversarial samples 的目標就是構建一個與\(x\)相差無幾的\(x'\)(\(\|x-x'\|\)足夠小),但是\(C(x')\not =C^*(x)\). 很多構建Adversarial samples可以指定類別:
- Average Case: 在不正確的標簽中隨機選取類別;
- Best Case: 對所有不正確的標簽生成Adversariak samples, 並選擇最容易成功(即騙過網絡)的類別;
- Worst Case:對所有不正確的標簽生成Adversariak samples, 並選擇最不容易成功的類別.
文章中介紹了不少現有的方法, 這里不多贅述.
目標函數
一般可以通過如下問題求解\(x'=x+\delta\):
其中\(\mathcal{D}\)衡量\(x,x+\delta\)之間的距離, 常常為\(\ell_0, \ell_2, \ell_{\infty}\).
但是\(C(x+\delta)=t\)這個條件離散, 這個問題很難直接求解, 作者給出的思路是構造一些函數\(f(x,t)\), 使得當且僅當\(f(x,t)\le0\)的時候此條件滿足.
則問題轉換為:
進一步
作者給出了7種符合此類條件的函數(作者尤為推薦第6種):

如何選擇c
binary search
如何應對Box約束
圖片的元素需要滿足\(0\le x_i \le 1\), 如何滿足此約束:
- 簡單粗暴地對其裁剪, 大於1的為1, 小於0的為0, 但是這種方法在梯度下降方法比較復雜(如帶momentum)的時候效果可能不會太好(既然momemtum要記錄變量改變的方向, 而我們又擅自對此方向進行更改);
- 用\(f(\min (\max(x+\delta,0),1)\)替代\(f(x+\delta)\), 我的理解是, 每次不改變原變量\(x'\), 然后把clip后的\(x'\)喂給\(f\). 作者說此類方法容易方法在次優解間來回振盪的現象;
- 定義
於是我們只需優化\(w_i\), 且保證\(x_i + \delta_i \in [0, 1]\).
\(L_2\) attack
其中
是對第6種方法的一個小改進, 其中\(\kappa\)反應了我們對誤判發生的信心.
\(L_0\) attack
因為\(L_0\)范數不可微, 所以每一次, 我們先利用\(L_2\) attack來尋找合適的\(\delta\), 令\(g=\nabla f(x+\delta)\), 根據\(g_i \delta_i\)判斷每個像素點的重要性, 最不重要的我們刪去(根據文中的意思是永久刪去).
- Input: \(x, c\)
- \(I=\empty\)
- Do ...:
- 計算在\(L_2\)下的解\(x+\delta\)(倘若在\(c\)下找不到, 則在\(2c\)條件下找(嵌套));
- \(g=\nabla f(x+\delta)\);
- \(i=\arg \min_i g_i \cdot \delta_i, i \not \in I\), 然后\(I=I \cup \{i\}\);
在利用\(L_2\)尋找\(\delta\)的過程中, 若失敗, 令\(c=2c\)並重復進行, 直到其成功或者超過了最大的迭代次數.
\(L_{\infty}\) attack
\(\|\delta\|_{\infty}\)作為懲罰項(?)只會針對個別元素, 這在實際實驗的時候並不友好, 往往會出現振盪, 於是作者想了一種替代
這樣我們就把可以關注部分突出而非個別.
