對抗攻擊基礎知識
https://cloud.tencent.com/developer/news/162169算法
https://zhuanlan.zhihu.com/p/37260275網絡
什麼是對抗攻擊
-
爲圖片添加噪聲,人眼看不出明顯差異,但會致使機器識別錯誤.函數
攻擊模式分類
-
Black/White box:是否須要模型的先驗知識,如算法、參數、訓練集.在實際應用中,經過模型A生成對抗樣本,進而攻擊模型B,若二者是同一個模型則爲白盒,不然爲黑盒.佈局
-
Targeted/Non-targeted:對於攻擊樣本的目標分類是具備指向性仍是僅僅使其預測錯誤便可.學習
-
Specific/Universal:攻擊方式是否跟特定圖片有關.ui
-
Perturbation norm:對噪音的限制計算方式.spa
-
Learning:單次和逐漸迭代.orm
-
Strength:攻擊強度.blog
對抗攻擊的前因後果
-
《Intriguing properties of neural networks(神經網絡有趣的特性)》:圖片
-
神經網絡中包含語義信息的部分並非在每一個獨立的神經元,而是整個空間.
-
神經網絡學習到的從輸入到輸出的映射很大程度上是不連續的.
-
驗證了將圖片適當修改後能欺騙深度學習模型的可能性.
-
-
《Explaining and harnessing adversarial examples》:
-
產生對抗攻擊根本緣由的猜想:深度神經網絡在高維空間中的線性特徵.
-
更高效製造對抗樣本的方法.
-
-
《Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey》
如何理解對抗攻擊
-
每層神經元的輸出a=g(Wx+b),其實是二維平面上的旋轉、移動和拉伸:
-
使用W線性變換
-
使用b移動
-
使用g非線性變換.
對於簡單的分類問題,在二維平面被拉伸成能夠經過直線完成分類的佈局,對於較複雜問題,經過增長神經元,在高維空間進行分離.
-
-
神經網絡經過對空間進行變換後,從最終的表徵層中學習,所以包含該語義信息的是整個空間.
-
在上圖的拉伸結果中,距離較大的地方能夠認爲映射是連續的,但仍纏繞在一塊兒的部分超平面已經沒法連續.對抗樣本正是跨過了該界限.我理解是要保持與某類點的平均距離儘可能近的同時去跨過該界限.
-
抵禦對抗攻擊的一個直觀方法是將對抗樣本加入到訓練集中去.
-
GoodFellow提出生成對抗樣本的方法:
-
根基是目前神經網絡爲了提升訓練效率,所使用的激活函數在局部過於線性.
-
w是權重向量,x是真實樣本,n是 噪音.當n足夠小時肉眼沒法區分出x的變化,可是若n與w的方向徹底一致,則對激活值的計算會產生巨大幹擾.
-
快速梯度符號法FGSM:爲了能使n與w方向一致,即損失函數在待構造樣本上的梯度方向.ε是調節係數,J是損失函數.在調整損失函數時會用θ - ∂θ來進行,而該方法令x̄ = x +∂x.此方法有一個開源攻擊庫CleverHans.
-
如何抵禦攻擊
-
修改訓練樣本:例如經過添加對抗樣本到訓練集中.
-
梯度掩碼:將原始梯度隱藏起來.
-
修改訓練網絡:例如在最後一層使用更加非線性的激活函數、隨機化等.可分爲徹底抵抗和僅檢測兩種方式.
-
去噪:在樣本輸入模型前先去噪,剔除擾動信息.
-
附加網絡:在不改變原有模型的狀況下使用額外的網絡進行輔助,例如生成式對抗網絡GAN.