對抗樣本(五)DeepFool

一、論文相關信息

  1.論文題目

     DeepFool: a simple and accurate method to fool deep neural networks

  2.論文時間

    2015年

  3.論文文獻

    https://arxiv.org/abs/1511.04599

二、論文背景及簡介

    目前,沒有有效率的方法可以用來精確的計算深度模型對對抗擾動的魯棒性。在這篇論文中,提出了DeepFool的算法來生成擾動,並且提出了一種量化分類器魯棒性的方法


三、論文內容總結

  • 提出了一種計算分類器對對抗擾動的魯棒性的評價方法
  • FGSM雖然快,但是它只是提供了最優擾動的一個粗略的估計,它執行的梯度的方法,經常得到的是局部最優解,DeepFool能夠得到更小的擾動,甚至比FGSM小一個數量級
  • 提出了一個新的對抗攻擊方法DeepFool:

r(x0)=argminr2s.t.  sign(f(x0+r))sign(f(x0))=f(x0)w22w r_*(x_0)=argmin||r||_2 \\ s.t. \ \ sign(f(x_0+r)) \ne sign(f(x_0))=-\frac{f(x_0)}{||w||_2^2}w

  • 在DeepFool中可以採用任意的lp norm
  • DeepFool訓練出來的對抗樣本進行Fine-tuning後,網絡的魯棒性變的更好。FGSM的Fine-tuning卻讓網絡的魯棒性變差。作者認爲:用變動過大的擾動來進行Fine-tuning會讓網絡的魯棒性變差。但博主認爲:大的擾動在Fine-tuning後之所以讓魯棒性變差,是因爲實驗所使用的Epoch太少了,不足以讓網絡能夠清楚地學習到大的擾動所帶來的影響,才讓魯棒性變差,而增加Epoch或者增加網絡的複雜性,就可以訓練的很好。這只是個人理解。

附:如需繼續學習對抗樣本其他內容,請查閱對抗樣本學習目錄


四、論文主要內容

1、Introduction

    針對樣本x,標籤 k^(x)\ \hat{k}(x) ,我們可以用如下關係來生成對抗樣本:
(x,k^)=minrr2  s.t. k^(x+r)k^(x) \bigtriangleup(x,\hat{k}) = min_r||r||_2 \ \ s.t.\ \hat{k}(x+r) \neq \hat{k}(x)
    我們,可以把 (x,k^)\ \bigtriangleup(x,\hat{k}) 稱作 k^\ \hat{k} 在點 x\ x 上的魯棒性,分類器 k^\ \hat{k} 的魯棒性可以如下定義:
ρadv(k^)=Ex(x,k^)x2 \rho_{adv}(\hat{k}) = E_x \frac{\bigtriangleup(x,\hat{k})}{||x||_2}
    其中 Ex\ E_x 是對數據分佈的期望。

    對抗擾動的研究幫助我們明白了對一個分類器來說,什麼樣的特徵被使用了。一個準確的尋找對抗擾動的方法對於研究和比較不同分類其對對抗樣本的魯棒性是十分必要的,這可能有助於更好的理解目前結構的限制,然後能夠找到方法來增加魯棒性。目前,還沒有很好的方法被提出來得到對抗擾動,這篇論文就彌補了這一缺陷。

    這篇論文主要的貢獻如下:

  • 提出了一個簡單的精確的方法來計算對抗擾動以及比較不同分類器的魯棒性
  • 進行了一次實驗對比,發現由我們的方法得出來的對抗擾動 更可信 更有效率,而且,使用對抗樣本來增強實驗數據能夠極大的增加對對抗擾動的魯棒性
  • 使用不精確的方法來計算對抗性擾動可能會導致關於魯棒性的不同結論,有時甚至是誤導性的結論。因此,我們的方法可以更好地理解這種有趣的現象及其影響因素

    這篇論文提到,FGSM雖然快,但是它只是提供了最優擾動的一個粗略的估計,它執行的梯度的方法,經常得到的是局部最優解。


2、DeepFool For Binary Classifiers

    在該節, k^(x)=sign(f(x))\ \hat{k}(x) =sign(f(x)) f(x)\ f(x) 是一個二值分類器,我們把  F={x:f(x)=0}\ \mathcal{F}=\{x:f(x)=0\} 記爲分類器的邊界。 f(x)=wTx+b\ f(x) = w^T x+b

    如果 f\ f 是一個線性的,我們可以很容易的看出 f\ f 在點 x0\ x_0 出的魯棒性。 (x0;f)\ \bigtriangleup(x_0;f) 等於 x0\ x_0 到分類邊界 F\ \mathcal{F} 的距離,也可以用 r(x0)\ r_*(x_0) 表示。

在這裏插入圖片描述

    其公式如下:
r(x0)=argminr2s.t.  sign(f(x0+r))sign(f(x0))=f(x0)w22w r_*(x_0)=argmin||r||_2 \\ s.t. \ \ sign(f(x_0+r)) \ne sign(f(x_0))=-\frac{f(x_0)}{||w||_2^2}w
    如果 f\ f 是一個一般的可微的二值分類器,我們將會採用一個迭代的操作來估計其魯棒性。在每次迭代過程中,在點 xi\ x_i 的附近, f\ f 是線性的,線性分類器的擾動可以這樣計算:
argminriri2s.t.  f(xi)+f(xi)Tri=0 argmin_{r_i} ||r_i||_2 \\ s.t. \ \ f(x_i) + \bigtriangledown f(x_i)^Tr_i=0
    迭代過程爲:先用上面線性的公式來得到 ri\ r_i ,然後更新 xi=x0+ri\ x_i=x_0+r_i ,進行不斷迭代。當 f(xi+1)\ f(x_{i+1}) 改變了符號時,迭代停止。

在這裏插入圖片描述

    實際上,上述算法經常會收斂到 F\ \mathcal{F} 邊界上的一個點,爲了到達分類邊界的另一邊,最後的擾動向量 r^\ \hat{r} 通常會乘以一個常數 1+η\ 1+\eta ,在實驗中, η\ \eta 取0.02。

3、DeepFool For Multiclass classifiers

    在多分類分類器上的DeepFool實際上可以看作是,在二值分類器上DeepFool的聚合。在這裏,假設多分類分類器由 c\ c 類。我們可以知道  k^(x)=argmaxkfk(x)\ \hat{k}(x) = argmax_kf_k(x)

3.1 Affine Multiclass Classifier(線性的多分類分類器)

    對於線性多分類的分類器來說,我們只需要:
argminrr2s.t.k:wkT(x0+r)+bkwk^(x0)T(x0+r)+bk^(x0) argmin_r||r||_2 \\ s.t. \exist k:w_k^T(x_0+r) + b_k \geq w_{\hat{k}(x_0)}^T(x_0+r) + b_{\hat{k}(x_0)}
     wk\ w_k W\ W 的第k列,即是類別k的,權重。

    上面的問題,我們可以轉化成,針對  x0\ x_0 與 凸多面體P的補的運算,其中凸多面體的定義如下:
P=k=1c{x:fk^(x0)(x)fk(x)} P = \bigcap_{k=1}^c\{x:f_{\hat{k}(x_0)}(x)\geq f_k(x)\}
    這個凸多面體,表示的是可以正確分類的域,所以 x0\ x_0 是 在P內部的。而我們要想將其誤分類,我們就要讓 x0\ x_0 進入到P的補集的域中,於是我們需要用到 x0Pcdist(x0,Pc)\ x_0 與P^c的距離,dist(x_0,P^c) ,我們記 x0\ x_0 離P的邊界最近的標籤爲 l^(x0)\ \hat{l}(x_0) ,對於下面這個圖來說, l^(x0)=3\ \hat{l}(x_0)=3

在這裏插入圖片描述
    其實,我們可以用如下公式來計算 l^(x0)\ \hat{l}(x_0)
l^(x0)=argminkk^(x0)fk(x0)fk^(x0)(x0)wkwk^(x0)2 \hat{l}(x_0) = argmin_{k\ne \hat{k}(x_0)} \frac{|f_k(x_0)-f_{\hat{k}(x_0)}(x_0)|}{||w_k - w_{\hat{k}(x_0)}||_2}
    在分母上加l2範數,只是爲了得到的值免受權重的大小的影響,該公式的意思,其實就是兩個$\ f(x_0) $ 之間的距離。

    因此,我們可以將 x0\ x_0 誤分類爲 l^(x0)\ \hat{l}(x_0) ,擾動爲:
r(x0)=fl^(x0)(x0)fk^(x0)(x0)wl^(x0)wk^(x0)22(wl^(x0)wk^(x0)) r_*(x_0) = \frac{|f_{\hat{l}(x_0)}(x_0)-f_{\hat{k}(x_0)}(x_0)|}{||w_{\hat{l}(x_0)} - w_{\hat{k}(x_0)}||_2^2} (w_{\hat{l}(x_0)} - w_{\hat{k}(x_0)})

3.2 General Classfier

    在本節,我們將拓展DeepFool算法到非線性的可微的多分類器中。

    在非線性的情況下,我們依然使用迭代的方法,在每次迭代過程中,P可用如下表述:
Pi~=k=1c{x:fk(xi)fk^(x0)(xi)+fk(xi)Txfk^(x0)(xi)Tx0} \tilde{P_i} =\bigcap_{k=1}^c\{x:f_k(x_i)-f_{\hat{k}(x_0)}(x_i) + \bigtriangledown f_k(x_i)^Tx - \bigtriangledown f_{\hat{k}(x_0)}(x_i)^Tx\le0\}
    其迭代方法如下:

在這裏插入圖片描述

    該迭代算法是貪婪算法,沒有被證實一定可以收斂到最優解,但能夠得到最小擾動的良好的近似。

    DeepFool與優化算法緊密相連,在二值分類器情形下,它可以看作是牛頓迭代算法,用於在欠定情形下求非線性方程組的根,這種算法被稱爲正規流法。這個算法,也可以被看成是梯度下降方法,在每次迭代時自動選擇自適應步長。在多分類器的算法中的線性化也類似於序列凸規劃,其中約束在每一步都被線性化。


3.3 Extension to lp norm

    之前所使用的公式中都是使用的 l2 norm\ l_2\ norm ,其實,我們也可以使用 lp norm\ l_p \ norm ,我們的算法也依舊可以找到比較好的結果。

    相應的公式,更改成:
l^=argminkk^(x0)fkwkqri=fl^wl^qqwl^q1sign(wl^) \hat{l} = argmin_{k\ne\hat{k}(x_0)}\frac{f_k'}{||w_k'||_q} \\ r_i = \frac{f_{\hat{l}}'}{||w_{\hat{l}}'||_q^q} |w_{\hat{l}}'|^{q-1} · sign(w_{\hat{l}}')
    其中 q=pp1\ q = \frac{p}{p-1}

    特別的,當 p=\ p=\infty 時,公式爲:
l^=argminkk^(x0)fkwk1ri=fl^wl^1sign(wl^) \hat{l} = argmin_{k\ne\hat{k}(x_0)}\frac{f_k'}{||w_k'||_1} \\ r_i = \frac{f_{\hat{l}}'}{||w_{\hat{l}}'||_1} · sign(w_{\hat{l}}')

4、實驗結果

4.1 準備工作

    所使用的數據集,以及相應的網絡如下:

  • MNIST:一個兩層的全連接網絡,以及一個兩層的LeNet卷積網絡。這兩個網絡都是用SGD和Momentum來訓練的。
  • CIFAR-10:一個三層的LeNet網絡,以及NIN網絡
  • ISCVRC 2012:CaffeNet以及GoogLeNet預訓練模型

    對對抗擾動的魯棒性評估如下,使用的平均魯棒性:
ρ^adv(f)=1DxDr^(x)2x2 \hat{\rho}_{adv}(f) = \frac{1}{|\mathcal{D}|} \sum_{x\in \mathcal{D}}\frac{||\hat{r}(x)||_2}{||x||_2}
     D\ \mathcal{D} 表示測試集。

    作者拿DeepFool與L-BFGS以及FGSM的方法進行對比。
r^(x)=ϵsign(xJ(θ,x,y)) \hat{r}(x) = \epsilon sign(\bigtriangledown_xJ(\theta,x,y))

4.2 結果

    各個模型的測試的準確率、平均魯棒性以及一個對抗樣本生成的時間的結果如下:

在這裏插入圖片描述

    從實驗可以看出,DeepFool能夠得到更小的擾動,甚至比FGSM小一個數量級。而且,DeepFool花費的時間是比L-BFGS要少的,因爲L-BFGS的優化的目標函數代價太高,而DeepFool會在很少的迭代後就能夠收斂。

在這裏插入圖片描述


4.3使用對抗樣本Fine-tunning

    作者使用對抗樣本對上述的模型進行Fine-tuning,並用FGSM的對抗樣本進行對比。

    作者對每一個網絡在擾動了的訓練集上Fine-tuning了5個epoch,並且使用了50%的學習率下降。爲了做對比,作者也對每個網絡在原始訓練集上進行了相同的操作。

    在四個網絡上的結果如下:

在這裏插入圖片描述

    微調後的網絡,在面對攻擊時的準確率如下:

在這裏插入圖片描述

    可以看到,使用由DeepFool訓練出來的對抗樣本進行Fine-tuning後,網絡的魯棒性變的更好了。令人喫驚的是,FGSM的Fine-tuning卻讓網絡的魯棒性變差了,作者認爲,這是因爲由FGSM生成的擾動太大了,用變動過大的擾動來進行Fine-tuning會讓網絡的魯棒性變差。作者認爲,FGSM起的作用更像是正則化,而不能夠代替原始數據來進行訓練。作者也爲此進行了實驗:用DeepFool,使用 α=1,2,3\ \alpha=1,2,3 ,生成對抗樣本,來進行Fine-tuning,得到的結果如下:

在這裏插入圖片描述

    因此,設計一個方法來得到最小的擾動,是很重要的。

    博主在此時認爲,大的擾動在Fine-tuning後之所以讓魯棒性變差,是因爲實驗所使用的Epoch太少了,不足以讓網絡能夠清楚地學習到大的擾動所帶來的影響,才讓魯棒性變差,而增加Epoch或者增加網絡的複雜性,就可以訓練的很好。這只是個人理解,還未證明。

    而,神奇的是,在NIN網絡上,作者此次採用了90%的學習率衰減,在FGSM和DeepFool上做實驗,得到的結果如下:

在這裏插入圖片描述

    這次的實驗結果,與上面的實驗結果就不同了,而且,Fine-tuning一個Epoch不足以說明其影響。這也就說明,使用一個精確的工具來測量分類器的魯棒性對於得出關於網絡魯棒性的結論是至關重要的


5、Conclusion

    這篇論文,提出了一個算法,DeepFool。它採用了迭代的方法來生成對抗樣本。並且進行了大量的實驗證明了該方法在計算對抗擾動以及效率上的優勢。同時,提出了一個方法來評價分類器的魯棒性

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