楊曼婷
(安徽理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232001)
近年來深度學(xué)習(xí)(Deep Learning)[1]技術(shù)飛速發(fā)展,越來越多的生產(chǎn)生活領(lǐng)域運(yùn)用深度學(xué)習(xí)思想來處理問題。深度神經(jīng)網(wǎng)絡(luò)也在圖像處理,語音識(shí)別,機(jī)器翻譯等人工智能領(lǐng)域取得了顯著的發(fā)展,其能力已經(jīng)遠(yuǎn)遠(yuǎn)的超過了人類。深度神經(jīng)網(wǎng)絡(luò)具有層次結(jié)構(gòu),通過多層處理,將在低層的特征逐步轉(zhuǎn)化為高層特征表達(dá)出來,對(duì)輸入進(jìn)行分類。運(yùn)用簡單的模型解決復(fù)雜的分類問題。但遺憾的是,深度神經(jīng)網(wǎng)絡(luò)也存在一些缺陷[2],它很容易受到一些惡意設(shè)計(jì)的輸入,以觸發(fā)目標(biāo)深度學(xué)習(xí)模型產(chǎn)生錯(cuò)誤的分類的攻擊,即對(duì)抗樣本的攻擊。為了解決上述問題,各國學(xué)者從模型與樣本的各個(gè)角度提出解決方法。其中,防御蒸餾(DD)[3]是現(xiàn)有的較為有效的防御方法之一,防御蒸餾是在蒸餾模型的基礎(chǔ)在對(duì)抗防御上的運(yùn)用。蒸餾其實(shí)就是一個(gè)訓(xùn)練程序,使用從不同的DNN傳來的知識(shí)來訓(xùn)練一個(gè)目標(biāo)DNN。J.Ba和R.Caruana[4]解釋了為何神經(jīng)網(wǎng)絡(luò)需要多個(gè)中間層,介紹了神經(jīng)網(wǎng)絡(luò)處理信息的過程,G.Hinton[5]在其思想下正式引入了蒸餾概念。通過減少或平滑網(wǎng)絡(luò)梯度的幅度,使防御模型在對(duì)抗樣本中的擾動(dòng)不那么敏感。A.Madry[6]等人提出基于PGD的對(duì)抗訓(xùn)練(PAT),通過用PGD迭代生成的對(duì)抗樣本重新訓(xùn)練模型,已達(dá)到對(duì)對(duì)抗樣本的識(shí)別能力。A.S.Ross和F.Doshi-Velez[7]直接優(yōu)化了模型,以便在訓(xùn)練期間預(yù)測更加平滑的梯度,提出了梯度正則化(IGR),修改模型自身的性能提高模型的魯棒性。
本文提出了一種壓縮樣本訓(xùn)練防御蒸餾模型的方法,將防御蒸餾思想與數(shù)據(jù)預(yù)處理方法相結(jié)合,在樣本輸入模型之前,先對(duì)對(duì)抗樣本進(jìn)行特征壓縮處理,減少圖像中每個(gè)像素的顏色深度,再將壓縮后的樣本聯(lián)合原模型產(chǎn)生的概率向量訓(xùn)練蒸餾模型。
圖1 干凈樣本(識(shí)別為5)
圖2 加入擾動(dòng)的對(duì)抗樣本(將1識(shí)別為8)
x′=x+ε·sign(xL(g(x;θ),t))
(1)
其中,L是損失函數(shù)。攻擊之后是剪切操作,以確保x∈[0,1]。攻擊強(qiáng)度由擾動(dòng)約束決定。
以及FGSM的多步變體,投影梯度下降算法(Project Gradient Descent,PGD)[6],它是最強(qiáng)的L∞對(duì)抗性示例生成算法之一。當(dāng)x1=x作為初始化時(shí),擾動(dòng)數(shù)據(jù)x的迭代更新可表示為:
xt+1=∏p∈(x)(xt+α·sign(xL(g(xt;θ),t)))
(2)
其中P(x)是由x±ε界定的投影空間是直到Nstep的階躍指數(shù),a是步長。
防御蒸餾就是使用蒸餾[5]思想來訓(xùn)練一個(gè)模型,其神經(jīng)網(wǎng)絡(luò)中softmax層僅僅是一個(gè)層,它考慮由DNN的最后一個(gè)隱藏層(稱為logits)產(chǎn)生的輸出的向量Z(x),并將它們歸一化成概率向量F(x),該概率向量F(x)是DNN的輸出,為數(shù)據(jù)集的每個(gè)類分配一個(gè)輸入x的概率。在softmax層中,一個(gè)給定的神經(jīng)元,對(duì)應(yīng)于一個(gè)由i∈0,…,N-1(其中N是類的數(shù)目)索引的類。計(jì)算下列輸出向量F(x)的i分量:
(3)
其中Z(x)=Z0(x),…,ZN-1(x)是對(duì)應(yīng)于數(shù)據(jù)集中N個(gè)類中每個(gè)類的隱藏層輸出的N個(gè)logit,T是一個(gè)名為溫度的參數(shù),并且在softmax層中共享。溫度在蒸餾的潛在現(xiàn)象中起著中心作用。在蒸餾過程中,把這個(gè)溫度稱為蒸餾溫度。對(duì)第一個(gè)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練的唯一約束條件是,在softmax層中應(yīng)使用一個(gè)大于1的高溫。
通過蒸餾[5]提取的知識(shí),以概率向量的形式,在較小的網(wǎng)絡(luò)中傳輸,以保持與較大的網(wǎng)絡(luò)相當(dāng)?shù)木?,也有助于提高DNN在訓(xùn)練數(shù)據(jù)集之外的泛化能力,從而提高其對(duì)擾動(dòng)的恢復(fù)能力。防御蒸餾[8]與Hinton等提出的原蒸餾的主要區(qū)別。是保持了相同的網(wǎng)絡(luò)結(jié)構(gòu)來訓(xùn)練原始網(wǎng)絡(luò)和蒸餾網(wǎng)絡(luò)。由此產(chǎn)生的防御性蒸餾訓(xùn)練程序如圖3所示。
圖3 防御蒸餾流程示意
本文提出了一種簡單有效的模型訓(xùn)練方法來防御對(duì)抗樣本,將該方法稱之為Pre-DD(Pretreatment Distillation as a defense)。Pre-DD方法首次將圖像特征壓縮與防御蒸餾[8]操作相結(jié)合,通過對(duì)訓(xùn)練時(shí)期的輸入樣本進(jìn)行特征壓縮處理來減少對(duì)抗樣本中的對(duì)抗噪聲,使得對(duì)抗樣本攻擊失敗。由于對(duì)抗樣本即是在樣本中加入擾動(dòng),改變各像素的顏色深度。所以將樣本的顏色深度降低,減少擾動(dòng)對(duì)圖像的干擾。而對(duì)于經(jīng)過特征壓縮處理后的正常樣本,圖片基本特性保持不變,標(biāo)簽不發(fā)生變化。所以我們通過此方法來提高模型對(duì)于樣本的識(shí)別精度。
防御性蒸餾訓(xùn)練的輸入是一組具有類標(biāo)簽的樣本X,所以,設(shè)x∈X是一個(gè)樣本,用Y(x)表示它的離散標(biāo)簽,也稱為硬標(biāo)簽。Y(x)是一個(gè)指示向量,使得唯一的非零元素對(duì)應(yīng)于正確的類索引(例如,(0,0,1,0,…,0)表示樣本位于索引為2的類中)。給定訓(xùn)練集{(x,Y(x)):x∈X},在溫度T下訓(xùn)練了一個(gè)具有softmax層的基礎(chǔ)深度神經(jīng)網(wǎng)絡(luò)F。F(x)是所有可能標(biāo)號(hào)類上的一個(gè)概率向量。更準(zhǔn)確地說,如果模型F有參數(shù)θF,則它在X上的輸出是概率分布F(x)=p(·|X,θF),其中對(duì)于標(biāo)簽類中的任何一個(gè)標(biāo)簽Y,p(Y|X,θF)給出了標(biāo)簽Y的概率。為了簡化以后的記法,使用Fi(x)來表示輸入x在i∈0,…,N-1類在模型F和參數(shù)θF中的概率。通過考慮x∈X的形式(x,F(x))的樣本,構(gòu)造了一個(gè)新的訓(xùn)練集,來訓(xùn)練的目標(biāo)DNN模型Fd,其softmax層的溫度仍為T。不使用x的硬標(biāo)簽Y(x),而是在標(biāo)號(hào)類上使用編碼F的置信概率的軟標(biāo)簽F(x)。利用新的訓(xùn)練集{(x,F(x)):x∈X},又訓(xùn)練了一個(gè)與F具有相同神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
Pre-DD方法的處理過程,即在圖像輸入到DNN分類器之前,采用降低顏色深度方法對(duì)數(shù)據(jù)進(jìn)行降噪。輸入是一組具有類標(biāo)簽的樣本X。根據(jù)給定訓(xùn)練集{(x,Y(x)):x∈X},在溫度T下訓(xùn)練了一個(gè)具有softmax層的深度神經(jīng)網(wǎng)絡(luò)F。通過神經(jīng)網(wǎng)絡(luò)識(shí)別的樣本,構(gòu)造了一個(gè)新的訓(xùn)練集,即不使用X的硬標(biāo)簽Y(x),而是在標(biāo)號(hào)類上使用基礎(chǔ)神經(jīng)網(wǎng)絡(luò)產(chǎn)生的F的概率向量F(x),即樣本的軟標(biāo)簽。將新的訓(xùn)練集中的樣本進(jìn)行特征壓縮,降低其顏色深度,但其軟標(biāo)簽不變。利用新的訓(xùn)練集{(x,F(x)):x∈X},又訓(xùn)練了一個(gè)與F具有相同神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的目標(biāo)模型Fd,其softmax層的溫度仍為T,利用訓(xùn)練好的Fd模型去識(shí)別對(duì)抗樣本。
常用的圖像壓縮方法是利用顏色位的深度,因此降低顏色位的深度可以在不影響分類器精度的情況下減少對(duì)抗性的干擾。在常用的測試數(shù)據(jù)集中,關(guān)注的兩種常見表示形式是8位灰度和24位顏色。我們實(shí)驗(yàn)采用的是8位的灰度圖像,它為每個(gè)像素提供28=256個(gè)可能的值。8位值表示像素的強(qiáng)度,其中0為黑色,255為白色,中間數(shù)字表示不同的灰度。8位縮放可以擴(kuò)展以顯示具有單獨(dú)紅、綠、藍(lán)三種顏色通道的彩色圖像。手寫數(shù)學(xué)數(shù)據(jù)都是灰度圖像,灰度值為8,將圖片的灰度值降低為4,降低顏色的深度。
圖4 Pre-DD方法處理流程
本文實(shí)驗(yàn)部分選用MNIST驗(yàn)證集,MNIST驗(yàn)證集包含7萬個(gè)手寫數(shù)字圖像(0到9)。其中,6萬張圖像用作訓(xùn)練數(shù)據(jù),其余10,000張圖像用于測試。每幅圖像為具有28*28個(gè)像素編碼為8位灰度圖。本實(shí)驗(yàn)利用自行編寫的簡單的三層神經(jīng)網(wǎng)絡(luò)其中第一層神經(jīng)元個(gè)數(shù)為300,第二層神經(jīng)元個(gè)數(shù)為100,輸出層神經(jīng)元個(gè)數(shù)為10。利用降低顏色深度有損壓縮來對(duì)輸入圖片進(jìn)行壓縮,降低顏色深度有損壓縮可以有效的減少人類難以察覺的圖像細(xì)節(jié)。使用Numpy庫在Python中實(shí)現(xiàn)了位顏色深度縮減操作。輸入和輸出在相同的數(shù)值尺度上[0,1],這樣就不需要改變?nèi)魏文繕?biāo)模型。為了減小到i位深度(1i7),首先將輸入值與2i-1(由于零值而減去1)相乘,然后取整為整數(shù)。再將整數(shù)縮放回[0,1],除以2i-1。通過整數(shù)舍入運(yùn)算,表示的信息容量從8位減少到i位。主要選用FGSM,PGD攻擊方法去分別生成對(duì)抗樣本。
首先在PyTorch里面建立了一個(gè)三層全連接的基礎(chǔ)神經(jīng)網(wǎng)絡(luò)。這個(gè)三層網(wǎng)絡(luò)的各個(gè)參數(shù)如下:輸入的維度為28*28,(和我們的數(shù)據(jù)集MNIST的圖片大小也為28*28。輸出層)神經(jīng)元的個(gè)數(shù)為10,因?yàn)檫@是一個(gè)分類問題,一共有0~9這10個(gè)數(shù)字,所以是10分類。損失函數(shù)定義為分類問題中最常見的損失函數(shù)交叉熵,使用隨機(jī)梯度下降來優(yōu)化損失函數(shù)。
對(duì)隨機(jī)選擇的60000張的圖片訓(xùn)練基礎(chǔ)模型,再采用特征壓縮方法處理這些隨機(jī)樣本,將處理后的圖片輸入到模型。對(duì)訓(xùn)練好的樣本進(jìn)行識(shí)別精度的測試,測試從MNIST數(shù)據(jù)集中隨機(jī)選取10000個(gè)測試樣本,記錄各個(gè)模型在不同學(xué)習(xí)率下的識(shí)別精度。
普通蒸餾方法和進(jìn)行特征壓縮處理后的神經(jīng)網(wǎng)絡(luò)模型對(duì)普通未加噪的樣本的識(shí)別精度隨學(xué)習(xí)率的變化結(jié)果如圖5。圖5展示了輸入圖片經(jīng)過特征壓縮后的模型的樣本精度的變化,以及防御蒸餾模型在識(shí)別干凈樣本時(shí)的精度隨著學(xué)習(xí)率的增加的突減的變化。而的特征壓縮蒸餾模型,對(duì)學(xué)習(xí)率的變化反應(yīng)并沒有那么劇烈,而且在學(xué)習(xí)率較大時(shí)對(duì)樣本的識(shí)別精度均大于防御蒸餾模型。在學(xué)習(xí)率為0.0125時(shí)特征壓縮蒸餾模型的識(shí)別精度為45.22%,而防御蒸餾模型的識(shí)別精度僅為11.35%。并且在學(xué)習(xí)率不斷增加的情況下,我們的模型識(shí)別精度始終比防御蒸餾模型的識(shí)別精度高。
圖5 不同學(xué)習(xí)率下模型的識(shí)別精度
將訓(xùn)練完的目標(biāo)模型的性能進(jìn)行了實(shí)驗(yàn),觀察其對(duì)于Epsilon參數(shù)的敏感程度。如圖6所示,模型在擾動(dòng)較低的情況下,對(duì)于對(duì)抗樣本的識(shí)別還較高。在擾動(dòng)過大時(shí),模型對(duì)樣本的識(shí)別準(zhǔn)確度就不斷降低。但隨著擾動(dòng)的不斷增加,對(duì)抗樣本的失真也就更加的明顯,所以不考慮擾動(dòng)過大的樣本對(duì)于模型識(shí)別精度的影響。
圖6 Pre-DD模型對(duì)Epsilon參數(shù)的敏感度
為了定量的評(píng)估Pre-DD方法的性能,將本文方法訓(xùn)練的模型與防御蒸餾方法訓(xùn)練的模型進(jìn)行對(duì)比,針對(duì)于不同的攻擊方法,考察模型對(duì)對(duì)抗樣本的識(shí)別率。在學(xué)習(xí)率為0.0125的條件下測試Pre-DD與DD對(duì)于對(duì)抗樣本的識(shí)別能力。具體細(xì)節(jié)參見表1,可以看出,本文方法能夠有效地抵御FGSM和PGD兩種攻擊。
表1 實(shí)驗(yàn)結(jié)果對(duì)比
本文融合防御蒸餾與特征壓縮的思想,提出一種Pre-DD方法對(duì)模型輸入數(shù)據(jù)進(jìn)行預(yù)處理來降低對(duì)抗樣本中的噪聲量,以便模型能正確的對(duì)樣本進(jìn)行分類。該方法在訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型時(shí)需先將樣本進(jìn)行壓縮。在進(jìn)行樣本時(shí),將所有傳入模型的樣本都進(jìn)行相同的壓縮操作。特征壓縮能夠有效減少對(duì)抗樣本圖片中的細(xì)小噪聲,降低對(duì)抗樣本中的噪聲量,使得模型能更好的識(shí)別樣本進(jìn)行正確的分類。實(shí)驗(yàn)結(jié)果表明,Pre-DD方法能夠在保證模型對(duì)原始樣本識(shí)別精確度的同時(shí)對(duì)對(duì)抗樣本的正確分類也有明顯的提高。