對抗樣本與對抗訓練2


轉載自:https://blog.csdn.net/cdpac/article/details/53170940

對以下論文進行解讀:3.Intriguing properties of neural networks

5.Explaining and Harnessing Adversarial Examples

6.Ensemble adversarial training_Attacks and defenses

  詳細解讀:https://blog.csdn.net/kearney1995/article/details/79638389

 

1、什么是對抗樣本?

  自從2013年以來,深度的神經網絡模型在各方面得到了廣泛應用,甚至在某些方面達到可以匹配人類的性能,比如人臉識別,最高已經可以達到99.5%的識別率,代表產品有face++等。然而Christian Szegedy等人在2014年發表一篇文章:Intriguing properties of neural networks。這篇文章介紹了關於神經網絡一個有趣的現象,即神經網絡學習到的那個函數是不連續的!只需要在一張圖片上做微小的擾動,就能讓圖片以很高的置信度被錯誤分類,甚至能讓圖片被分類一個指定的標簽(不是圖片正確所屬的標簽)。這對圖片分類系統無疑是危害巨大!試想在支付寶這樣使用人臉識別的應用中,攻擊者可以輕輕松松偽裝成“馬雲”會怎么樣,呵呵。我們把這種攻擊方式叫做“adversarial example”。其實在機器學習領域中,對抗樣本的問題並不是第一次提到。Biggo等人在Evasion attacks against machine learning at test time這篇文章里就介紹過。他們給潛在的“敵人(adversary)”定義了一個模型“Adversary model”。一個敵對模型包括adversary goal, adversary knowledge和adversary capability等幾個方面:

  • adversary goal(攻擊目標): 分為兩種目標,一是能夠分類為好的即可(在垃圾郵件檢測中,指分類為好的郵件)。如果有一個函數g定義在樣本空間中X,g(x)<0表示分類為好,那么敵人的目標就是設計一個樣本x*,讓g(x*)<0。這種攻擊很容易破解,只要調整分類界限即可(這里指g(x)=0這條邊界)。所以,其實攻擊者還有一個更好的目標是讓g(x)盡可能小。
  • adversary knowledge: 敵人對機器學習訓練系統的知識包括:
    •   訓練集是什么
    •   樣本的特征表示
    •   學習算法是什么,決策函數是什么
    •   分類模型是什么,比如線性分類器的權重
    •   分類器的反饋

顯然敵人擁有什么樣的知識對系統的危害程度會不一樣。
- adversary capability: 敵人的能力,包括:
- 修改輸入數據
- 修改特征向量
- 修改某個制定的特征
顯然敵人的能力不同,攻擊的危害也不同。
建立在上面模型中的敵人(或者叫對抗者,攻擊者)就是試圖尋找對抗樣本來誤導分類器。

 

2、它們是怎么出現的?

那么作為一個攻擊方,怎么依賴他擁有的知識來做攻擊(即混淆分類器)呢?
Biggo和Szegedy都提出了類似的攻擊策略,基於最優化的方法,Biggo的攻擊策略如下:

它是說我們想找一個對抗樣本x,使它盡可能被分類為好,並且與某個原來的樣本x0在樣本空間里還很接近(距離小於dmax)。
Szegedy的攻擊策略為:

它是說對於給定的某個樣本x,怎么找離它最近的樣本,使得被分類為標簽ll.
這里不再贅述優化問題該怎么解,常用的方法有梯度下降,或者牛頓法,BFGS,L-BFGS. 上述兩個優化問題分別使用梯度下降法和L-BFGS來解決。這兩篇文章的實驗細節我們也不再舉例,我們只看一下結果。Biggo的實驗學術味更濃,Szegedy的實驗則很直觀了,他們的實驗顯示,給定一張圖片,加一個微小擾動使它被錯誤的分類為某個指定標簽。

上面每副圖片的左側是真實的圖片,中間是加的噪音(就是優化問題中的r),右邊是生成的對抗樣本圖片。很好笑的是,6張對抗樣本全部被錯分類為了鴕鳥!!
所以,這里已經解決了怎么找對抗樣本的問題,但是沒有深入到問題的本質,為什么能夠找到?能找到我們不意外,因為我們總可以在原來的圖片上“動手術”,讓他改成我們要的樣子,但是Szegedy的實驗很出人意料,因為結果顯示其實只需要很微小的擾動就能隨意改變分類的標簽,這又是為什么?
下面我們再繼續討論,首先先看goodfellow是怎么總結現有結論的:

  • 使用Box-constrained L-BFGS能夠找到對抗樣本
  • 在ImageNet這樣的數據集里,對抗樣本和原始樣本的差別非常小,人眼不可分別
  • 同樣的對抗樣本,會同時被不同的分類器錯誤分類,哪怕他們使用了不同的訓練集
  • 淺層的softmax回歸模型對對抗樣本也很脆弱
  • 在對抗樣本上訓練能夠正則化模型,但是代價高昂,因為訓練集不容易獲得。

注意最后一條,大家可能在想,我們手動生成對抗樣本喂給分類器學習不就完了嗎,但是效果並不好,因為對抗樣本的生成比較expensive。如果我們能知道對抗樣本產生的原因,也許能更輕松的制造對抗樣本,從而訓練。
在這些結論基礎上,我們開始學習Ian Goodfellow的這篇文章,Explaining and Harnessing Adversarial Examples.
對抗樣本產生的原因仍然不是特別清楚,有人懷疑是因為深度神經網絡模型的非線性性,也許再加上不充分的模型平均和不充分的正則化(即過擬合)。G認為這些猜測都是不必要的,相反,他認為模型在高維空間中的線性性是對抗樣本存在的罪魁禍首!!!
舉個例子,下面從一個線性模型入手,來解釋對抗樣本的存在性問題。
在很多問題當中,一個輸入的特征的取值精度通常是有限制的,這就意味着當在特征的取值上做一個微小的擾動(在精度范圍內),分類器不應該返回不同的結果。比如我們現在有一個樣本x和一個對抗輸入x~=x+η,當η足夠小的時候,分類器對x和x~的響應應該要一樣的。考慮一個權值向量ω,此時的響應為ω,此時的響應為

對抗擾動使得激發增長了ω⊤η. 顯然,我們可以讓η=sign(ω)來使激發增長最大。如果ω有n個維度,如果在每個維度上增加m,那么激發可以增加ϵmn。因為||η||∞與維度無關,而激發增加量隨維度線性增長,那么在高維問題中,我們可以很大程度改變輸出,但是在輸入上只需要做極小的改動!這個例子說明,如果維度足夠的話,一個簡單的線性模型同樣存在對抗樣本的問題。過去對對抗樣本的那些牽扯到神經網絡的性質的解釋,比如誤認他們具有高度的非線性性,可能都不對。Ian基於線性性的假設更簡單,並且能夠解釋softmax回歸也對對抗樣本很脆弱的事實。 因此,基於線性性,對抗樣本很容易生成。Ian假設神經網絡同樣是因為太“線性”而不能抵抗對抗樣本。LSTMs, ReLUs, 和maxout網絡都設計得很“線性”,所以他們很容易被利用。我們可以想象一個具有高度線性性的網絡訓練出來的函數,它的高階導數近似於0,Taylor展開以后占主導作用的是線性部分,所以可以類比為線性分類器。線性性意味着線性模型上面的微小擾動同樣能夠破壞神經網絡。假設有一個模型,它的參數是θ,輸入是x,y是x的目標,J(θ,x,y)是神經網絡的損失函數。在目前的θ值,局部上可以將函數近似為線性,使用線性模型的攻擊方法,我們得到一個最優的擾動

這種方法稱為生成對抗模型的快速梯度符號法,梯度可以通過反向傳播算法(backpropagation)計算獲得。

3、它們是怎么危害到機器學習系統?

  如果我們有兩張圖片,人眼看上去一模一樣,都是一間房子,但是cnn把一張分類為房子,一張分類為鴕鳥,這種分類器還有什么用啊。如果我們的模型隨隨便便就被欺騙,還能被投入使用嗎,那那些研究不成了紙上談兵了嗎。但仔細看的人可能會說,不要慌。呵呵,確實,我們回過頭去看,對抗樣本是怎么找到的。即使是Ian的方法,都需要知道梯度怎么求,可是攻擊者怎么知道我的模型是什么樣子呢,換句話說,他不會求梯度生成對抗樣本啊!
  可惜,對抗樣本還有一個重要性質,叫做Transferability,轉移性。什么意思呢,就是我在我的模型上找到一個對抗樣本,放到別人的模型上,居然也有效。而且我通過我的模型把房子分類成鴕鳥,別人的模型很多時候居然也分類成了鴕鳥。這個可以稱作災難了,最后的堡壘也被攻破了,我們再怎么隱藏模型的細節,也可能會被攻擊。(引用:Transferability in Machine Learning: from Phenomena to Black-Box Attacks using Adversarial Samples)
  先等一下,我們再好好思考一下對抗樣本的問題:有一張圖片(房子),加了噪音,變成了鴕鳥。首先我們不用擔心的是,這個噪音很難找,不是任意一個隨機的噪音都能讓原來圖片被誤分類。在線性模型中,在一張227*227圖片的每個像素里做隨機擾動,他們基本上都能抵消,即使不抵消,余下的也很少,而且擾動的方向不一定沿着梯度的負梯度符號方向,所以我們不擔心這種情況。
  再回來,現在的分類器,正確率都特別高,softmax,cnn在mnist上面都有90%以上的正確率。這些分類器基本上都接近了分類的正確准則,他們差不多是等價的。cnn和線性分類器很像,他們對輸入的圖片所做的操作,變換,最終結果都是線性的變換。而一張精心制作的對抗樣本,是在負梯度符號方向上做微小擾動,而大部分的分類模型都有很高的線性性,他們對這種對抗策略應該是一樣脆弱。 

4、怎樣使用對抗樣本訓練機器學習?

以最簡單的logistic regression為例。如果我們要訓練一個模型來識別標簽y∈{−1,1}, ,其中σ為sigmoid函數,然后在

 

上作梯度下降,其中ζ(x)=log(1+exp(z))是softplus函數。下面將x代替為x上面的線性擾動,推到出的解析式為

這類似於L1正則化,但不同的是,L1罰項是從激發中減去,而不是加到損失函數中。這樣的壞處是會惡化欠擬合的情況。下圖是Ian的解釋原文:

  需要注意的是,這里對於損失函數的估計過於悲觀。在softmax回歸中,很難找到一個擾動,讓他在每個標簽的梯度上都達到最壞(即與他們的符號相反),因此我們有必要減少ϵ。
  Szegedy的文章Intriguing properties of neural networks表明將對抗樣本和普通樣本一起給模型訓練能夠使模型稍微正則化。訓練對抗樣本和普通的數據增加不一樣:通常我們通過對數據進行變形來增加數據,這樣變形后的數據是可能出現在測試集里的。而對抗樣本這種數據通常不可能自然地出現在測試集中,但是它們可以揭露出模型的缺陷。增加對抗樣本來訓練並沒有顯著提高性能,有可能是因為實驗樣本不太夠(Szegedy那篇文章使用expensive的L-BFGS來尋找對抗樣本)。
  Ian發現使用對抗目標函數(基於快速梯度符號法)能夠有效正則化模型:

用這個方法來訓練dropout網絡,能夠使錯誤率從0.94%降到0.84%。Ian發現訓練集上的錯誤率並沒有下降到0,作者做了兩個改變,首先使網絡更大,將每一層網絡的節點從240增加到1600。如果沒有對抗訓練這可能會導致過擬合,此時測試集上錯誤率有1.14%。原來的maxout網絡中驗證集上錯誤率會平坦下降,但速度很慢,而對抗驗證集不是,因此在對抗驗證集上使用早停法。
對抗訓練的過程可以看做當數據被惡意擾動的時候,最小化最差情況的錯誤率。

對於使用正則化能有效降低對抗樣本的錯誤分類率的質疑:
Q.正則化以后的實驗是不是仍然用同樣的對抗樣本,如果是,那就沒有意義,因為模型參數改變了,對抗樣本理應重新找。如果不是,那很難理解,因為模型的線性性並沒有改變,仍然可以找到對抗樣本,沒有理由錯誤率會降低。
回答:
A.在論文原文里面作者是這樣描述的:
“The model also became somewhat resistant to adversarial examples. Recall that without adversarial training, this same kind of model had an error rate of 89.4% on adversarial examples based on the fast gradient sign method. With adversarial training, the error rate fell to 17.9%.”
所以對於上面那個問題,我傾向於后者,也就是作者針對新模型,使用了Fast gradient sign method方法重新生成一批新的對抗樣本。那為什么線性性沒有改變,錯誤率能降低這么多呢。我覺得有一種可能解釋是對於strong的正則化,模型(比如說線性模型)的weight會變得比較低。記得我們舉過的例子,對線性模型,精心設計的對抗樣本能使模型的activation改變大約ϵmn,這里的\epsilon是樣本允許的波動范圍,是固定的,m是平均的weight,當m很小的時候,對activation的擾動ϵmn會很小,從而對分類的影響比較小。所以,這里問題的關鍵變成了為什么strong的正則化會使weight降低。還記得在cost function里面加的正則化,是對樣本的擾動進行懲罰,而高weight會使樣本的擾動更大,那訓練的時候模型顯然會自然的降低weight來減少cost function的值。所以strong的正則化會使weight降低。*


免責聲明!

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



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