對抗樣本機器學習_cleverhans_FGSM/JSMA

 對抗樣本機器學習_Note1_機器學習安全

轉載自: https://yq.aliyun.com/ziliao/292780網絡

  機器學習方法,如SVM,神經網絡等,雖然在如圖像分類等問題上已經outperform人類對同類問題的處理能力,可是也有其固有的缺陷,即咱們的訓練集喂的都是natural input,所以在正常狀況下處理的比較好。然而若是咱們想要對ML模型進行攻擊的話,能夠經過必定的手段生成對抗樣本(adversarial examples),以圖像爲例,對抗樣本在每一個像素點只有微小的擾動(pertubations),所以對於人類的眼睛是沒法分辨的,即生成先後咱們人類還會將其歸爲同一類別。然而ML模型在面對這些對抗樣本時會出現不魯棒的特色,對它們會產生錯分。對抗樣本生成的基本思路是:在訓練模型的過程當中,咱們把輸入固定去調整參數,使得最後的結果能對應到相應的輸入;而生成對抗樣本時,咱們將模型固定,經過調整輸入,觀察在哪一個特徵方向上只須要微小的擾動便可使得咱們的模型給出咱們想要的錯分的分類結果。研究對抗樣本機器學習的目的就是,但願咱們的模型對於對抗樣本更加robust。app

上圖能夠說明對抗樣本是如何工做的。Model decision boundary 是咱們訓練的模型的分類邊界,這個邊界能夠較好的將兩類樣本分開,可是若是咱們對標出來的兩個Test point 作一個微小的擾動,便可使其越過邊界產生misclassification,所以咱們的Task decision boundary就應當將這些對抗樣本也分到其本來的類別。機器學習

對於這個問題,與廣泛的安全問題相似,咱們通常考慮兩種角度,即attack和defense。其中attack試圖更好的生成對抗樣本以便使得分類結果符合attacker本身的預期;defense但願經過提升模型的魯棒性,從而對這些adversarial examples 不敏感,從而抵禦攻擊。常見的attack方法,即生成對抗樣本的方法有 fast gradient sign method (FGSM)和 Jacobian-based saliency map approach(JSMA)。以下圖,生成的對抗樣本中的擾動對人類視覺來講不敏感,可是對於ML模型來講,本來以57.7percent的機率被判成熊貓的圖片在修改後以99.3的機率被判成了長臂猿。學習

對抗樣本機器學習_Note1_機器學習

對於defense,常見的方法有:設計

(1)Adversarial training:該方法思路很是平凡,即在訓練網絡的過程當中,對每一個圖片都生成一些對抗樣本,而後給他們與原圖相同的標籤餵給網絡訓練,從而使得網絡相對來講對於對抗樣本更魯棒一些。開源的cleverhans即爲用FGSM或JSMA生成對抗樣本進行對抗訓練的一個library。orm

  (2)Defensive distillation:該方法用來smooth對抗樣本進行擾動的方向的decision surface,Distillation(勉強譯爲 蒸餾。) 是Hinton大神提出來的一種用來使得小模型能夠模仿大模型的方法,基本思路爲,咱們在訓練分類模型的時候,輸出來的時one-hot的向量,這種叫作hard label,用hard label對一個模型進行訓練後,咱們不只僅保留softmax以後最大的機率的那一個維度,而是將整個機率向量做爲label(感受和label smoothing的思路有點像),這叫作soft label, 這樣來講,每一個輸入樣本不只僅只有一個信息量較小的(由於對於分類結果太過肯定,即該圖片肯定爲該類別,其餘類別徹底無關)one-hot的向量,而是一個對每一個類別都有必定機率的vector。這樣因爲訓練網絡,就會獲得一些附加信息,若有一張圖片可能在某兩類之間比較難以分別,這樣它們就會有較高的機率,這樣的label實際上附帶了大模型訓練獲得的信息,所以能夠提升小模型的效果。(flag:以上爲我的理解,以後閱讀Hinton的參考論文)所謂的Defensive distillation即先訓練用硬標籤一個網絡,而後獲得軟標籤,並訓練另外一個網絡(蒸餾網絡),用蒸餾過的網絡去分類就會對adversarial更加魯棒。blog

一個失敗的defense案例是 gradient masking,即直接輸出類別而不是機率,使得無法經過gradient微小擾動圖像,可是經過訓練一個有gradient 的網絡,在此基礎上擾動,也能夠attack通過該方法defense過的網絡。圖片

對抗樣本機器學習_Note1_機器學習

上圖說明,即便defense使得gradient被掩蓋,可是咱們能夠訓練替代模型用來生成對抗樣本。ci

相對於attack,機器學習的defense更難一些。由於缺乏較好的theoratical model 來講明某種方法能夠將某類對抗樣本排除出去。

對於設計一個穩定可靠的系統來講,須要有testing和verification,所謂testing是指,在若干不一樣的條件下評估該系統,觀察其在這些條件下的表現;而verification是指,給出一個有說服裏的理由證實該系統在broad range of circumstances下都不會misbehave。僅僅testing是不夠的,由於testing只給出了系統的失敗率的一個下界,可是爲了安全防禦的目的,咱們須要知道失敗率的上界。可是對於機器學習的verification無法對對抗樣本有一個guarantee,所以還很不完善。

reference: cleverhans-blog : http://www.cleverhans.io/

相關文章
相關標籤/搜索