Towards Evaluating the Robustness of Neural Networks

Nicholas Carlini, David Wagner, Towards Evaluating the Robustness of Neural Networks

提出了在不同範數下0,2,\ell_0, \ell_2, \ell_{\infty}下生成adversarial samples的方法, 實驗證明此類方法很有效.

主要內容

基本的概念

本文主要針對多分類問題, 假設神經網絡F:xRnyRmF:x \in \mathbb{R}^n \rightarrow y \in \mathbb{R}^m, 其網絡參數爲θ\theta.

假設:
F(x)=softmax(Z(x))=y, F(x)=\mathrm{softmax}(Z(x))=y,
其中softmax(x)i=exijexj\mathrm{softmax}(x)_i=\frac{e^{x_i}}{\sum_j e^{x_j}}.

C(x)=argmaxiF(x)i, C(x) = \arg \max_i F(x)_i,
xx的預測類, 不妨設C(x)C^*(x)爲其真實的類別.

Adversarial samples 的目標就是構建一個與xx相差無幾的xx'(xx\|x-x'\|足夠小),但是C(x)C(x)C(x')\not =C^*(x). 很多構建Adversarial samples可以指定類別:

  • Average Case: 在不正確的標籤中隨機選取類別;
  • Best Case: 對所有不正確的標籤生成Adversariak samples, 並選擇最容易成功(即騙過網絡)的類別;
  • Worst Case:對所有不正確的標籤生成Adversariak samples, 並選擇最不容易成功的類別.

文章中介紹了不少現有的方法, 這裏不多贅述.

目標函數

一般可以通過如下問題求解x=x+δx'=x+\delta:
minD(x,x+δ)s.t.C(x+δ)=tx+δ[0,1]n, \begin{array}{ll} \min & \mathcal{D}(x, x+\delta) \\ \mathrm{s.t.} & C(x+\delta)=t \\ & x + \delta \in [0, 1]^n, \end{array}
其中D\mathcal{D}衡量x,x+δx,x+\delta之間的距離, 常常爲0,2,\ell_0, \ell_2, \ell_{\infty}.

但是C(x+δ)=tC(x+\delta)=t這個條件離散, 這個問題很難直接求解, 作者給出的思路是構造一些函數f(x,t)f(x,t), 使得當且僅當f(x,t)0f(x,t)\le0的時候此條件滿足.
則問題轉換爲:
minD(x,x+δ)s.t.f(x,t)0x+δ[0,1]n, \begin{array}{ll} \min & \mathcal{D}(x, x+\delta) \\ \mathrm{s.t.} & f(x,t) \le 0 \\ & x + \delta \in [0, 1]^n, \end{array}
進一步
minD(x,x+δ)+cf(x,t)s.t.x+δ[0,1]n. \begin{array}{ll} \min & \mathcal{D}(x, x+\delta) + cf(x,t) \\ \mathrm{s.t.} & x + \delta \in [0, 1]^n. \end{array}
作者給出了7種符合此類條件的函數(作者尤爲推薦第6種):
在這裏插入圖片描述

如何選擇c

binary search

如何應對Box約束

圖片的元素需要滿足0xi10\le x_i \le 1, 如何滿足此約束:

  • 簡單粗暴地對其裁剪, 大於1的爲1, 小於0的爲0, 但是這種方法在梯度下降方法比較複雜(如帶momentum)的時候效果可能不會太好(既然momemtum要記錄變量改變的方向, 而我們又擅自對此方向進行更改);
  • f(min(max(x+δ,0),1)f(\min (\max(x+\delta,0),1)替代f(x+δ)f(x+\delta), 我的理解是, 每次不改變原變量xx', 然後把clip後的xx'餵給ff. 作者說此類方法容易方法在次優解間來回振盪的現象;
  • 定義
    δi=12(tanh(wi)+1)xi, \delta_i = \frac{1}{2}(\tanh (w_i) +1)-x_i,
    於是我們只需優化wiw_i, 且保證xi+δi[0,1]x_i + \delta_i \in [0, 1].

L2L_2 attack

min12(tanh(w)+1)x22+cf(12(tanh(w)+1),t), \min \quad \|\frac{1}{2}(\tanh(w)+1)-x\|_2^2+c\cdot f(\frac{1}{2}(\tanh(w)+1), t),
其中
f(x,t)=max(max{Z(x)i:it}Z(x)t,κ), f(x',t)=\max(\max \{Z(x')_i:i \not =t\}-Z(x')_t, -\kappa),
是對第6種方法的一個小改進, 其中κ\kappa反應了我們對誤判發生的信心.

L0L_0 attack

因爲L0L_0範數不可微, 所以每一次, 我們先利用L2L_2 attack來尋找合適的δ\delta, 令g=f(x+δ)g=\nabla f(x+\delta), 根據giδig_i \delta_i判斷每個像素點的重要性, 最不重要的我們刪去(根據文中的意思是永久刪去).

  • Input: x,cx, c
  • I=I=\empty
  • Do …:
    1. 計算在L2L_2下的解x+δx+\delta(倘若在cc下找不到, 則在2c2c條件下找(嵌套));
    2. g=f(x+δ)g=\nabla f(x+\delta);
    3. i=argminigiδi,i∉Ii=\arg \min_i g_i \cdot \delta_i, i \not \in I, 然後I=I{i}I=I \cup \{i\};

在利用L2L_2尋找δ\delta的過程中, 若失敗, 令c=2cc=2c並重復進行, 直到其成功或者超過了最大的迭代次數.

LL_{\infty} attack

δ\|\delta\|_{\infty}作爲懲罰項(?)只會針對個別元素, 這在實際實驗的時候並不友好, 往往會出現振盪, 於是作者想了一種替代
mincf(x+δ)+i[(δiτ)+], \min \quad c \cdot f( x+ \delta) + \sum_i [(\delta_i-\tau)^+],
這樣我們就把可以關注部分突出而非個別.

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