九、產生和防御對抗樣本的新方法 | 分享總結--廖方舟(論文11)


視頻連接:http://www.mooc.ai/course/383/learn#lesson/2163

論文總結:http://ai.yanxishe.com/page/blogDetail/5357

 

對抗樣本的攻防:

    • 什么是對抗樣本  adversarial examples 

  • 傳統的攻擊方法

  • 傳統的防守方法 

  • 動量迭代攻擊 

  • 去噪方法 

  • 高層引導去噪方法 

什么是對抗樣本 

對抗樣本的性質不僅僅是圖片所擁有的性質,也不僅僅是深度學習神經網絡獨有的性質。因此它是把機器學習模型應用到一些安全敏感性領域里的一個障礙。

 當時,機器學習大牛 Good fellow 找了些船、車圖片,他想逐漸加入一些特征,讓模型對這些船,車的識別逐漸變成飛機,到最后發現人眼觀測到的圖片依然是船、車,但模型已經把船、車當做飛機。

0?wx_fmt=png

 

我們之前的工作發現樣本不僅僅是對最后的預測產生誤導,對特征的提取也產生誤導。這是一個可視化的過程。

 當把一個正常樣本放到神經網絡后,神經元會專門觀察鳥的頭部,但我們給它一些對抗樣本,這些對抗樣本也都全部設計為鳥,就發現神經網絡提取出來的特征都是亂七八糟,和鳥頭沒有太大的關系。也就是說欺騙不是從最后才發生的,欺騙在從模型的中間就開始產生的。

 0?wx_fmt=png

不僅僅只是對最后的prediction產生了誤導,還影響了特征的提取。在模型中間就產生了。

將147號神經元的處理進行可視化,發現上圖中高亮部分,對所有real image會專門觀察鳥的頭部;

而對於被設計為鳥的對抗樣本而言,147號神經元會注意到的是一些跟鳥頭無關的特征點。

下圖是最簡單的攻擊方法——Fast Gradient Sign Method 

x*為要產生的對抗樣本,x為真實樣本,y為正確的分類名,

第一行Objective表示:最大化x*的基礎上,得到正確分類名label的損失函數(loss function(cross-entropy交叉熵)越大,預測的概率越小),說白了,目標就是為了最小化對抗樣本在正確分類名上的預測概率

第二行:做一個線性假設,將損失函數展開,L(x,y)對x求偏導數,然后取符號函數sign,乘上系數加到原來的真實樣本x上。說白了,就是將y反向梯度傳回原始圖片的梯度加到圖片中,得到對抗樣本

為什么不采用L2 norm,而采用L∞ norm呢?

L2可能會產生非常大的distortion:

下圖中第一列為原圖,第二列加入的干擾項的L2 norm是一樣的,第三列為附加后的圖片

肉眼就能看出來,第一張和第三張圖片已經和原圖有了非常大的差別了。

而L∞一般不會出現這種變化。

0?wx_fmt=png

 

除了 FGSM 單步攻擊的方法,它的一個延伸就是多步攻擊,即重復使用 FGSM。由於有一個最大值的限制,所以單步的步長也會相應縮小。比如這里有一個攻擊三步迭代,每一步迭代的攻擊步長也會相應縮小。

 

0?wx_fmt=png

 

產生圖片所用的 CNN 和需要攻擊的 CNN 是同一個,我們稱為白盒攻擊。

與之相反的攻擊類型稱為黑盒攻擊,也就是對需要攻擊的模型一無所知。此方法也可能成功,因為對抗樣本遷移。 

0?wx_fmt=png

 

0?wx_fmt=png

以上所說的都是 Non Targeted, 只要最后得到的目標預測不正確就可以了。

另一種攻擊 Targeted FGSM,目標是不僅要分的不正確,而且還要分到指定的類型。

y*為指定的錯誤分類目標類型 。現在目標應該是最小化loss function

0?wx_fmt=png

一個提高黑盒攻擊成功率行之有效的辦法,是攻擊一個集合。

例如第一行,將多個模型的logits層拼接起來,然后當成一個大的單個模型。

同理,不僅可以在logits,預測和損失函數都可以融合拼接。但實驗表明在logits上做效果最好。

0?wx_fmt=png

而目前為止一個行之有效的防守策略就是對抗訓練

在模型訓練過程中,訓練樣本不僅僅是干凈樣本,而是干凈樣本加上對抗樣本。在線生成訓練樣本。

隨着模型訓練越來越多,一方面干凈圖片的准確率會增加,另一方面,對對抗樣本的魯棒性也會增加。

下表為准確率accuracy:

e為不同的攻擊步長(能容忍的攻擊范圍)越大攻擊越強。隨着它變大,准確率下降

(1)baseline為一個普通網絡

(2)adv.training對抗樣本訓練之后,對此攻擊基本上就免疫了。但此方法會消耗大量時間:

原因是1、在線生成用於訓練的對抗樣本(兩次操作:前饋+反饋)

      2、訓練模型去適應對抗樣本本身就比較困難

因此,此方法可能會耗費比訓練普通模型好幾倍的時間。

(3)一個增強的訓練對抗樣本的版本:ensemble adversarial training

在訓練時輸入模型的樣本是在攻擊一大堆模型時產生的一堆樣本。例如要訓練Inception模型,找來resnet、VGG、Alexnet做陪練來產生很多對抗樣本加上Inception自己也產生的很多對抗樣本。

通過此方法得到的網絡是目前最穩定的網絡。但訓練時間就更長了,基本上是一個普通網絡好幾十倍的訓練時間。

Deeper model:

0?wx_fmt=png

下面簡單介紹一下 NIPS 2017 上的這個比賽規則

 

 

第一個:將圖片分類為指定類別

第二個:將圖片不分為正確類別即可

第三個:防守 

比賽結構:主辦方提供dataset包含5000張圖片;

Non-target attacks(右上橘紅色)將原始圖片全部變成對抗樣本(例如有100個隊伍,就會利用原始的五千圖產生五十萬張對抗樣本)

target attacks(左下橘紅色)同理100個隊伍一共生成五十萬張對抗樣本

defense(藍色)每個隊伍都會講上述一起產生的一百萬張圖片進行處理。

評估防守方的標准就是看防守方分類正確了多少張樣本。

評估兩個攻擊方的標准:產生的對抗樣本成功欺騙了多少防守方。

因此,這個比賽中攻防雙方兩個隊伍之間進行對打,互相揣摩對方用了什么模型

 

0?wx_fmt=png

兩個限制條件:

容忍范圍不能太大,在4~16間測試模型的魯棒性;

不能花太長時間產生一個對抗樣本,或者防守一個對抗樣本

 

0?wx_fmt=png

FGSM 算法結果:下圖表示1000張圖片中分類正確的圖片數目 ,左邊列名為攻擊模型,上面行名為防守樣本

例如第一行表示用inception-v3產生的對抗樣本去攻擊各種模型,正確識別的圖片數越多,表示防御能力越強,越不受干擾。

對角線標紅的為白盒攻擊。注意到adv-incv3對白盒攻擊的正確分類相當高,能夠正確分類。

 可以看出,Adv-Incv3、Ens3-Adv-Incv3、Ens4-Adv-Incv3、Ens-IncR都達到了 較高准確率。

0?wx_fmt=png

 

圖中綠色模型為攻擊范圍,倒數三四欄R-50和R-152有“親戚”R-101在攻擊目標中,這兩列可以看出隨着迭代次數上升,識別准確率還是有所下降的。

最后兩欄灰色是黑盒模型,隨着迭代數量的增加, 攻擊成功率反而上升。這就給攻擊造成了難題。

 因此,白盒攻擊可以增加迭代次數,最終進入一個局部最小的識別率。

但對於我們不了解的模型而言,就是黑盒樣本應該減少迭代次數。

對於這些黑盒模型識別率較低的情況,實際是一個overfitting過擬合的問題。局部最小適用於綠色的模型,但卻不適合后兩個黑盒模型。

我們解決的辦法就是在迭代與迭代中間加入動量momentum,對於后四列有明顯的下降。

 

 

0?wx_fmt=png

加入動量之后,白盒攻擊變強了,而且對黑盒模型攻擊的成功率也大大提升了。

從而對於黑盒攻擊,也可以使用相當多數量的迭代次數了。

0?wx_fmt=png

0?wx_fmt=png

 

總結

 

以前方法(iterative attack)的弱點是在迭代數量增多的情況下,它們的遷移性,也就是黑盒攻擊性會減弱,在我們提出加入動量之后,這個問題得到了解決,可以很放心使用非常多的迭代數量進行攻擊。

 

在 NIPS 2017 比賽上得到最高的分數

 

0?wx_fmt=png

需要提到的一點,上面提到的都是 Non-targeted , 在 Targeted 攻擊里面,這個策略有所不同。在 Targeted 攻擊里面,基本沒有觀察到遷移性,也就是黑盒成功率一直很差,即便是加入動量,它的遷移程度也非常差。

因此,分數高是因為有很多人提交了baseline模型,而攻擊這些白盒做的很好,因此分數高。

 

 

下面講一下防守

 

 

我們常說對抗樣本用人眼是無法識別的,但此話不全對。當我們將原圖放大 ,左邊對抗樣本明顯有噪聲。

 

首先想到的就是去噪聲,我們嘗試用了一些傳統的去噪方法(median filter 、BM3D)效果都不好。之后我們嘗試使用了兩個不同架構的神經網絡去噪。

一個是 Denoising Autoencoder,卷積型的去噪。

另一個是 Denoising Additive U-Net。在中間加上neural connection。目標不再是先重建原圖,二是先重建出噪聲,然后將重建出來的噪音對adversarial樣本進行預測,然后加回去,得到純凈圖片。

 

0?wx_fmt=png

 下圖為Denoising Additive U-Net的結構

 

 

我們的訓練樣本是從 ImageNet 數據集中取了三萬張圖片 ,使用了七個不同的攻擊方法對三萬張圖片攻擊,得到 21 萬張對抗樣本圖片以及三萬張對應的原始圖片。

除了訓練集,我們還做了兩個測試集。一個白盒攻擊測試集(針對Inception-v3)和一個黑盒攻擊測試集(針對Inception-v4)。

可以看到訓練效果:NA表示不設防守的模型;DAE:Denoising AutoEncoder;DUNET:Denoising U-NET;

前三行算的是去噪后的剩下的噪音(用l1來統計):DAE增加了噪聲。DUNET部分減少了噪聲

 后三行為去噪后的分類正確率:結果發現正確率並不高。特別是對於DUNET,明明噪聲在白盒攻擊的時候已經降到了0.0164了,識別率卻還沒有NA的高。分析原因:

我們發現經過去噪以后,正確率反而有點下降。我們分析了一下原因,輸入一個干凈圖片,再輸入一個對抗圖片,然后計算每一層網絡在這兩張圖片上表示的差距,我們發現這個差距是逐層放大的。

 

計算網絡在這兩張圖片(第一張為干凈圖片,一張為對抗圖片)上表示的差異:右圖折線圖可以看出差距是在逐層增大的

綠線為baseline去噪后仍然在放大,

圖中藍線發現放大的幅度非常大,圖中紅線是去噪過后的圖片,仍然在放大,導致最后還是被分錯。

經過去噪后的PGD為紅線,仍然在放大,這說明經過去噪后的噪音仍然會被放大。所以會被分錯。

既然,都是會被放大的,那不如就將最后迭代結束的作為loss function

為了解決這個問題,我們提出了經過改良后的網絡 HGD:

變種:和之前的方法相比,改良后的網絡 HGD 防守准確率得到很大的提升

FGD:CNN提取出來的特征算距離

LGD:不再是用卷積核的距離去度量了,直接用logist(最后一層softmax的上一層)的一千維向量

CGD:直接用CNN進行預測,得到的結果和真實正確的計算一個誤差cross-entropy

 

比較一下魯棒性:后三排的防守准確率得到了極大的提升。

現在來看,誤差放大也得到了很好的抑制。

LGD訓練后的誤差放大曲線為黑線,只比綠線random noise高一丟丟

1、發現HGD遷移性很好,訓練750張,對測試250張的防守效果很好

2、由於denoising的訓練需要CNN的輔助,這邊從模型A借了一個,安到了模型B上

同時也比較了一下模型A自己訓練出來的效果。

可以看出,借來的模型完成了95%的防守任務。

denoising就像是一個安全帽。自己的帽子肯定比別人的帽子效果更好。

 

 

A訓練一個denoising,B也訓練一個denoising,然后把這兩個的denoising合並一下,這樣會不會是一個效果更好的denoising呢?結果如下:

事實表明,還是自己用自己的denoising效果最好,合並起來效果沒那么好。

最后比賽中,我們集成了四個不同的模型,以及訓練了他們各自的去噪denoising,最終把它們合並起來提交了上去。

為什么LGD比PGD好的原因:

因為PGD並沒有去掉所有噪聲,橫坐標為噪聲的幅值,縱坐標為denoising預測出來的幅值。

將橫縱坐標做一個correlation關系,發現系數為0.48,而不是想象中的接近1,說明PGD沒能將圖片中噪聲去除干凈。從而剩下的52%噪聲造成了之前的error amplification effect。

而LGD的去噪效果比例為1.05,是能夠將噪聲完全去除掉的。

還做了一個補充實驗:將PGD的估計噪聲乘以2會不會就能達到全去除噪聲呢?測試結果表明會多去除一點噪聲,但是還遠不及LGD的效果。

 

0?wx_fmt=png

 

 

 

  HGD 網絡總結 

優點:

 

 

  • 效果顯著比其他隊伍的模型好。 

  • 比前人的方法使用更少的訓練圖片和更少的訓練時間。 只需要三萬張圖片,半天的訓練即可

  • 可遷移。 

缺點:

 

 

  • 還依賴於微小變化的可測量 

  • 問題並沒有完全解決。 

  • 仍然會受到白盒攻擊,除非假設對手不知道 HGD 的存在


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM