引言
在之前的文章中,我們介紹了對抗樣本和對抗攻擊的方法。在該系列文章中,我們介紹一種對抗樣本防禦的策略--對抗樣本檢測,可以通過檢測對抗樣本來強化DNN模型。本篇文章論述其中一種方法:feature squeezing,特徵壓縮通過將原始空間中許多不同特徵向量對應的樣本合併成一個樣本,減少了對手可用的搜尋空間。通過比較DNN模型對原始輸入的預測與對實施特徵壓縮後的輸入的預測,特徵壓縮能夠以高精度檢測出對抗樣本,並且誤報率很低。本文探討兩種特徵壓縮方法:減少每個畫素的顏色位深度和空間平滑。這些簡單的策略相比於其他防禦方法的代價較小(訓練時間等),並且可以與其他防禦相補充,實現效能很好的對抗防禦效果。
預備知識
Color Depth
色深(Color Depth),顧名思義,就是“色彩的深度”,這裡的“深度”就是指精細度。在數字影像中,最小的單位叫“畫素”(Pixel),這裡的畫素是彩色的畫素,每一個畫素都有自己獨立完整的引數,在RGB三通道影像中,每一個畫素都由R,G,B三個通道組成,其中每個通道又由若干個二進位制位來表示其“含量”,例如,11001101100110011111111(共24位),表示102紅,204綠和255藍,根據加色系理論,這個顏色就是我們常說的“天依藍”。其中,用來表示該顏色的2進位制位數,就是“色深”,即24bit。
Spatial Smoothing
空間平滑(也稱為模糊)是一組廣泛應用於影像處理以降低影像噪聲的技術。
Local Smoothing
區域性平滑方法利用附近的畫素來平滑每個畫素。通過選擇不同的加權機制,可以設計不同的區域性平滑方法:Gaussian smoothing、mean smoothing or median smoothing。本篇文章涉及的特徵壓縮選擇median smoothing。下圖是中值平滑的效果:
一些對比:
廢話:中值濾波是一種典型的非線性濾波,是基於排序統計理論的一種能夠有效抑制噪聲的非線性訊號處理技術,基本思想是用畫素點鄰域灰度值的中值來代替該畫素點的灰度值,讓周圍的畫素值接近真實的值從而消除孤立的噪聲點。該方法在取出脈衝噪聲、椒鹽噪聲的同時能保留影像的邊緣細節。
簡單敘述之:一張圖片由一堆畫素點組成,取一個小窗,假設大小為3 * 3(即9個畫素點),將該小窗在整張圖片上移動,每次移動後做如下的工作:
- 找到9個畫素點的中值(中位數),記為δ
- 用δ替代中間畫素點的值
不斷移動小窗,重複上面的工作。
Non-local Smoothing
非區域性平滑不同於區域性平滑,因為它在更大的區域內處理相似的畫素,而不僅僅是附近的畫素。很多影像平滑技術,比如高斯平滑,中值平滑等,當噪聲比較小時這些技術的效果都是很好的。在這些技術中我們選取畫素周圍一個小的鄰域然後用高斯平均值或者中值平均值取代中心畫素。簡單來說,畫素級別的噪聲去除是限制在區域性鄰域的。
NL-Means的全稱是∶Non-Local Means,直譯過來是非區域性平均,在2005年由Baudes提出,該演算法使用自然影像中普遍存在的冗餘資訊來去噪聲。與常用的雙線性濾波、中值濾波等利用影像區域性資訊來濾波不同的是,它利用了整幅影像來進行去噪,以影像塊為單位在影像中尋找相似區域,再對這些區域求平均,能夠比較好地去掉影像中存在的高斯噪聲。對於彩色影像,要先轉換到 CIELAB
顏色空間,然後對L
和AB
成分分別去噪。
非區域性平滑方法的引數通常包括搜尋視窗大小(用於搜尋類似補丁的大區域)、補丁大小和濾波器強度(高斯核的頻寬)。我們將把一個過濾器表示為nl(a-b-c)
,其中a
表示搜尋視窗a*a
,b
表示補丁大小b*b
,c
表示過濾器強度。
對抗樣本檢測原理及實施方法
原理:一個直覺與猜想
下圖是從8-bit色深依次降低到1-bit色深時的影像:
下圖是對影像應用中值平滑後的效果:
我們可以看到,從人眼角度,我們能夠分辨出色深bit降低不多時的影像,以及中值平滑後的影像。在人眼看來,原始影像和處理後的影像差別不大,從分辨的角度來看,結果可以說是高度一致。那麼,我們希望DNN分類器能夠做到與人類相同的分辨,而對於對抗樣本,我們猜想,應用這些特徵壓縮後,DNN分類器會給出與原始輸入對應的輸出差別較大的輸出。
實施方法
我們知道使用softmax
的DNN分類器輸出概率向量,對於原始輸入,我們能得到DNN分類器的對應輸出概率向量,將原始輸入實施特徵壓縮後,再輸入到DNN分類器中,又會得到一個概率向量。通過測量這兩個概率向量之間的差距,我們就能分辨對抗樣本。因為之前我們已經基於直覺推出,特徵壓縮後的正常影像和沒有壓縮的特徵影像的概率向量輸出差別不會大,否則與人眼識別的效果不一致,說明模型本身不合格(即使沒有加對抗樣本,這樣的模型可以說不合格),而我們也假設,對抗樣本施加特徵壓縮後會得到與原始對抗樣本輸入對應的輸出差別較大的輸出。
度量概率向量之間的差異
可以有很多方法度量概率向量之間的差異,這裡採用\(L_1\)範數度量:
\(\boldsymbol{x}\)是原始輸入影像,\(\boldsymbol{x}_{squ}\)是對原始輸入實施特徵壓縮後的影像,\(g(\boldsymbol{x})\)是原始輸入影像的輸出概率向量,\(g(\boldsymbol{x}_{squ})\)是特徵壓縮後的輸入影像的輸出概率向量,那麼兩者之間輸出向量的差異值如下:
選擇threshold:判斷差異多大才屬於對抗樣本
\(score^{(\boldsymbol{x},\boldsymbol{x}_{squ})}\)較小的\(\boldsymbol{x}\)我們認為是正常影像,差異大認為是對抗樣本,這個閾值多大決定了檢測的效果:
- threshold太小,雖然能夠檢測到幾乎全部的對抗樣本,但是正常影像被錯分為對抗樣本的機率大增
- threshold太大,不能有效檢測到大部分的對抗樣本
實驗:對直覺和猜想的檢驗
分別在三個資料集上統計\(score^{(\boldsymbol{x},\boldsymbol{x}_{squ})}\),橫軸為\(score^{(\boldsymbol{x},\boldsymbol{x}_{squ})}\)的數值,縱軸為得分等於橫軸某個值的輸入x的數量。藍色代表正常影像,紅色代表對抗樣本,結果如下:
可以看到絕大部分的正常影像的得分值都很小,絕大部分對抗樣本的得分值都很大,這驗證了我們之前的猜想。
聯合檢測方法
可以將上述特徵壓縮方法結合起來,每種特徵壓縮方法和原始輸入計算輸出,得到多個\(score^{(\boldsymbol{x},\boldsymbol{x}_{squ})}\),取最大值作為評判指標。因此對抗樣本的聯合檢測模型如下:
模型訓練:選擇適當的threshold
在上面的聯合檢測模型中,我們需要確定適當的threshold:T
,以區分對抗樣本和正常輸入。因為DNN分類的輸入絕大部分是正常輸入,對抗樣本只是少數,在資料不平衡的情況下,準確率無法體現模型的真實水平。因此,用準確率作為指標不合適。在此,我們選擇使正常輸入被錯分為對抗樣本不能超過5%為指標,因此只用正常影像作為輸入訓練檢測器即可。
防止對抗攻擊對特徵壓縮的適應性
引入隨機:
- 在color depth中,不再四捨五入(即不固定0.5為舍入閾值,而是在正負0.1範圍內的隨機值,即隨機選擇0.4-0.6為舍入閾值)
- 在median smoothing中,選擇隨機區域大小,不再是2 * 2或3 * 3等固定大小的區域
- ......
參考資料
[1] Xu, Weilin & Evans, David & Qi, Yanjun. (2018). Feature Squeezing: Detecting Adversarial Examples in Deep Neural Networks. 10.14722/ndss.2018.23210.
[2] Nicholas Carlini. Robust Evasion Attacks against Neural Network to Find Adversarial Examples. https://github.com/carlini/nn_robust_attacks/.
[3] 「色深」和「位深」有什麼區別? - 天才Pika小透明的文章 - 知乎 https://zhuanlan.zhihu.com/p/144207333
[4] 影像平滑處理-中值濾波 - Monster_H7 - CSDN https://blog.csdn.net/Monster_H7/article/details/83788754