劉梟天,郝曉燕,馬 垚,于 丹,陳永樂
(太原理工大學(xué) 信息與計(jì)算機(jī)學(xué)院,山西 晉中 030600)
目前,投毒防御是對機(jī)器學(xué)習(xí)模型在訓(xùn)練階段遭受攻擊的主要防御方式,針對數(shù)據(jù)投毒攻擊的通用防御方法主要有兩種,一是Diakonikolas等[1]提出的Sever,該算法使用基礎(chǔ)學(xué)習(xí)器實(shí)現(xiàn)投毒防御;二是Chen等[2]提出的De-Pois,通過比較模型之間的預(yù)測差異,實(shí)現(xiàn)投毒防御。已有的通用防御方法主要存在的問題如下:①均難以保證數(shù)據(jù)集不被污染,需要在保證數(shù)據(jù)集“干凈”的前提下進(jìn)行防御;②均難以對未知模型進(jìn)行防御。
針對機(jī)器學(xué)習(xí)數(shù)據(jù)集安全方面的問題,考慮對數(shù)據(jù)集中的樣本進(jìn)行檢測,剔除數(shù)據(jù)集中的惡意樣本,從而保證數(shù)據(jù)集的“干凈”。在數(shù)據(jù)集制作過程中,一些離群點(diǎn)、異常值,即擾動較大的惡意樣本可以通過數(shù)據(jù)清洗等方式剔除出去,但只添加極少擾動的樣本——投毒樣本卻仍存在于數(shù)據(jù)集中。在數(shù)據(jù)投毒攻擊領(lǐng)域,投毒樣本經(jīng)模型訓(xùn)練后,改變了模型分類邊界,從而降低模型的預(yù)測準(zhǔn)確率,由于投毒樣本中添加的擾動很小,投毒樣本原有的特征并沒有大幅度改變。受此啟發(fā),將投毒樣本的原生特征與人為特征分離后,提高模型對樣本原生特征的訓(xùn)練權(quán)重,即可實(shí)現(xiàn)樣本的正確分類。
基于此,本文設(shè)計(jì)一種投毒樣本原生特征的提取方法,采用耦合infoGAN結(jié)構(gòu)實(shí)現(xiàn)樣本原生特征與人為特征的分離與提??;構(gòu)建了一個(gè)重構(gòu)投毒樣本的原生特征的網(wǎng)絡(luò)框架,實(shí)現(xiàn)對投毒樣本的檢測及對機(jī)器學(xué)習(xí)模型的防御。
機(jī)器學(xué)習(xí)模型的非健壯性促進(jìn)了投毒防御方法的發(fā)展。根據(jù)防御對象的不同,針對數(shù)據(jù)投毒攻擊的防御方法又可分為針對特定類型攻擊的防御方法和通用投毒防御方法兩大類。
針對特定類型攻擊的防御方法包括基于標(biāo)簽翻轉(zhuǎn)的投毒防御[3,4]、基于Clean-label的投毒防御[5-7]、基于訓(xùn)練生成模型的投毒防御[8,9]和基于最優(yōu)訓(xùn)練集的投毒防御[10-13]。這些防御方法都是針對特定類型的數(shù)據(jù)投毒攻擊進(jìn)行防御,當(dāng)涉及針對不同學(xué)習(xí)任務(wù)的攻擊時(shí),其防御效果會變差;而現(xiàn)有的通用防御方法主要有Server和De-Pois,Diakonikolas等[1]提出的Sever,該算法在存在離群點(diǎn)及異常值的情況下具有很強(qiáng)的理論魯棒性,但由于該算法難以擬合各種未知DNN模型,因此可能會防御失??;Chen等[2]提出的De-Pois,該算法需要訓(xùn)練一個(gè)模擬模型,通過比較模擬模型和目標(biāo)模型之間的預(yù)測差異,區(qū)分投毒樣本和正常樣本,但由于在構(gòu)建模擬模型的過程中,很難保證數(shù)據(jù)集不被污染,因此,訓(xùn)練出來的模擬模型很難保證其預(yù)測準(zhǔn)確率。到目前為止,在數(shù)據(jù)投毒防御領(lǐng)域,很少有防御效果較好的通用防御策略。
針對樣本特征分離這一難題,在對抗防御領(lǐng)域,Pouya Samangouei等[14]和Jin等[15]利用GAN模型生成了對抗樣本的近似樣本,該近似樣本滿足干凈樣本特征分布,即提取了對抗樣本的魯棒性特征,從而實(shí)現(xiàn)對抗防御。然而這種基于GAN結(jié)構(gòu)的防御方法直接在原始數(shù)據(jù)集上進(jìn)行樣本特征提取,增加了防御的復(fù)雜性和難度,同時(shí)存在計(jì)算時(shí)間長、實(shí)現(xiàn)效率低的缺點(diǎn)。
由于infoGAN結(jié)構(gòu)可以訓(xùn)練得到數(shù)據(jù)集中有意義的圖像特征,使模型學(xué)習(xí)到樣本的可解釋性特征,因此本文采用耦合infoGAN結(jié)構(gòu)實(shí)現(xiàn)樣本原生特征與人為特征的分離與提取,生成樣本的防御標(biāo)簽,構(gòu)建了機(jī)器學(xué)習(xí)模型的整體防御框架,最后給出投毒樣本特征提取算法及投毒樣本檢測算法,并詳細(xì)說明投毒防御方案infoGAN_Defense。
機(jī)器學(xué)習(xí)模型由輸入層、隱藏層及輸出層組成。本文用f(x)表示模型將輸入示例x傳播到倒數(shù)第二層(隱藏層最后一層)時(shí)對應(yīng)的函數(shù),用f(X)表示樣本集X傳播到倒數(shù)第二層時(shí)對應(yīng)的函數(shù)。
定義1 樣本原生特征及人為特征:樣本原生特征指在模型正確分類時(shí)樣本所依賴的特征,人為特征指攻擊者為欺騙模型所精心設(shè)計(jì)的微小擾動。給定一個(gè)樣本集對
在數(shù)據(jù)投毒攻擊中,樣本特征被修改的投毒樣本利用其人為特征欺騙模型,使得攻擊者攻擊成功;標(biāo)簽被修改的投毒樣本雖然在輸入空間內(nèi)的數(shù)據(jù)特征并未發(fā)生改變,但經(jīng)模型訓(xùn)練后,該樣本在特征空間內(nèi)的高維特征與其對應(yīng)的基類樣本的高維特征分別所屬不同的類別,改變了模型訓(xùn)練集中原有的數(shù)據(jù)分布,從而改變模型的分類邊界,導(dǎo)致模型誤分類,降低了模型的預(yù)測準(zhǔn)確率。
因此,本文將問題表述如下:對于機(jī)器學(xué)習(xí)模型來說,模型所依賴的訓(xùn)練集中數(shù)據(jù)的特征及標(biāo)簽均有可能受到污染,即當(dāng)模型遭受攻擊時(shí),模型訓(xùn)練到的是投毒樣本的人為特征,此時(shí)投毒樣本在特征空間內(nèi)的高維特征會發(fā)生變化,改變模型原來的分類邊界,因此,本文首先設(shè)計(jì)了一種投毒樣本特征提取算法,使目標(biāo)模型經(jīng)過訓(xùn)練后可以關(guān)注到投毒樣本的原生特征,從而實(shí)現(xiàn)對投毒樣本的正確分類;之后本文設(shè)計(jì)了投毒樣本檢測器,可以檢測并移除機(jī)器學(xué)習(xí)模型訓(xùn)練集中的投毒樣本;最后,本文通過得到的樣本正確標(biāo)簽更新訓(xùn)練集,重新訓(xùn)練模型,實(shí)現(xiàn)了目標(biāo)模型對投毒樣本的正確分類,保證了模型在預(yù)測階段對樣本的預(yù)測準(zhǔn)確率。(模型防御框架如圖1所示)。
圖1 模型防御框架
基于樣本原生特征的投毒防御主要包括3個(gè)步驟:
(1)分離并提取投毒樣本的原生特征及人為特征。進(jìn)行投毒防御的第一步是有效分離并提取投毒樣本的原生特征與人為特征,通過訓(xùn)練,使得模型提高對投毒樣本原生特征的訓(xùn)練權(quán)重,即是模型關(guān)注到投毒樣本的原生特征。本文利用鑒別器共享參數(shù)的耦合infoGAN結(jié)構(gòu)實(shí)現(xiàn)特征分離及提取。
(2)投毒樣本檢測算法的設(shè)計(jì)。由于投毒樣本在模型訓(xùn)練前后所屬類別會發(fā)生變化,本文在獲取樣本的正確標(biāo)簽后,通過比較樣本在模型訓(xùn)練前后的標(biāo)簽是否發(fā)生變化,實(shí)現(xiàn)了投毒樣本的檢測及移除。若標(biāo)簽發(fā)生改變則為投毒樣本,反之,則為基類樣本。
(3)實(shí)現(xiàn)模型防御。本文將訓(xùn)練集輸入到機(jī)器學(xué)習(xí)模型中進(jìn)行訓(xùn)練,將隱藏層輸出的樣本高維特征作為耦合infoGAN結(jié)構(gòu)的輸入,利用infoGAN結(jié)構(gòu)重構(gòu)樣本原生特征和人為特征,之后利用模型的softmax層生成樣本正確的防御標(biāo)簽,最后,模型使用更新標(biāo)簽后的訓(xùn)練集重新訓(xùn)練,生成新的模型,這就是模型的防御機(jī)制。
實(shí)現(xiàn)投毒防御的關(guān)鍵在于建立高效的投毒樣本特征提取算法,而使用樣本的高維特征作為耦合infoGAN結(jié)構(gòu)的輸入,不僅可以簡化耦合infoGAN結(jié)構(gòu)分離提取樣本原生特征與人為特征的過程,同時(shí)能加快耦合infoGAN結(jié)構(gòu)的收斂速度。為了使模型達(dá)到防御多種類型投毒攻擊的目的,本文提出了一種基于生成對抗網(wǎng)絡(luò)的投毒樣本特征提取算法,該算法利用耦合infoGAN結(jié)構(gòu)實(shí)現(xiàn)樣本原生特征與人為特征的分離與提取。
本文采用兩個(gè)infoGAN模型結(jié)構(gòu)同時(shí)進(jìn)行訓(xùn)練的方式實(shí)現(xiàn)需求,降低了訓(xùn)練過程的復(fù)雜度。同時(shí)本文采用infoGAN模型鑒別器共享參數(shù)的方式實(shí)現(xiàn)對生成數(shù)據(jù)的判定,這種方式使得當(dāng)投毒樣本輸入到鑒別器時(shí),可以捕捉到投毒樣本的原生特征,從而提高投毒樣本原生特征提取的準(zhǔn)確性。圖2為投毒樣本特征提取器的設(shè)計(jì)原理,其中,投毒樣本特征提取器由兩個(gè)infoGAN模型耦合而成,在樣本高維特征輸入到infoGAN模型中后,生成器A與生成器B分別用于生成樣本的原生特征與人為特征,之后利用鑒別器進(jìn)行分類并反饋分類結(jié)果,生成器得到反饋結(jié)果后,繼續(xù)更新infoGAN模型參數(shù),直到infoGAN模型收斂。在投毒樣本提取特征的過程中,一方面,基類樣本集與投毒樣本集分別輸入到兩個(gè)infoGAN模型中,保證了樣本原生特征與人為特征提取的獨(dú)立性;另一方面,兩個(gè)infoGAN模型的鑒別器會通過共享參數(shù)的方式進(jìn)行更新,從而提高了infoGAN模型對投毒樣本原生特征的關(guān)注度。(投毒樣本特征提取器如圖2所示)
圖2 投毒樣本特征提取器
本文將模型訓(xùn)練所得的樣本高維特征輸入到耦合infoGAN模型中,實(shí)現(xiàn)投毒樣本的特征提取。算法1給出了投毒樣本特征提取的形式化描述。該算法具體按照以下步驟實(shí)現(xiàn)特征提?。?/p>
(1)首先需要初始化infoGAN模型的參數(shù),并將基類樣本高維特征集F=f(X)與投毒樣本高維特征集F′=f(X′) 分別作為模型A_infoGAN與B_infoGAN的輸入;
(1)
(2)
其中,A_G(·)表示A_infoGAN的生成器函數(shù),B_G(·)表示B_infoGAN的生成器函數(shù);D(·)表示鑒別器對應(yīng)函數(shù)。
(3)將生成的樣本原生特征與人為特征分別送至鑒別器A_D與B_D,鑒別器的功能是判斷生成的樣本特征是否為真,即使得A_D輸出A_G(f(x)) 的值為1的概率盡可能低,B_D輸出B_G(f(x′)) 為1的概率盡可能低。本文可將A_D與B_D的損失函數(shù)量化為
lossA_D=E[logD(f(x))]+E[log(1-D(A_G(f(x))))]-
λI(c;A_G(f(x),c))
(3)
lossB_D=E[logD(f(x′))]+E[log(1-D(B_G(f(x′))))]-
λI(c;B_G(f(x′),c))
(4)
其中,I(·)為正則化約束項(xiàng),λ為平衡系數(shù),c為附加的隱含編碼。由于我們需要使目標(biāo)模型在特征空間關(guān)注到投毒樣本的原生特征,因此本文采用鑒別器共享參數(shù)的方式進(jìn)行實(shí)現(xiàn),并可將優(yōu)化鑒別器參數(shù)的目標(biāo)函數(shù)量化為
(5)
(4)本文采用交替優(yōu)化的方式訓(xùn)練infoGAN模型。鑒別器優(yōu)化參數(shù)后,將鑒別結(jié)果反饋至生成器;如果鑒別器 A_D鑒別結(jié)果為True,則返回1,反之,返回0;鑒別器B_D亦是如此。而生成器A_G與B_G分別根據(jù)得到鑒別結(jié)果,基于式(1)、式(2)更新生成器參數(shù),直到模型收斂。
算法1:投毒樣本特征提取算法
輸入:基類樣本集X、投毒樣本集X′、基類樣本高維特征集F=f(X)、投毒樣本高維特征F′=f(X′)
(1)Initialize(A)
(2)Initialize(B)
Repeat
(7)根據(jù)式(5)更新鑒別器參數(shù);
(8)鑒別器將鑒別結(jié)果反饋至生成器;
(9)生成器基于式(1)、式(2)更新生成器參數(shù),生成新一輪的樣本特征;
Until 模型收斂
End
基于投毒樣本特征提取算法,本文進(jìn)一步提出了投毒防御方案infoGAN_Defense。由于投毒樣本特征提取器中的A_G可以使模型提高對投毒樣本原生特征的關(guān)注度,因此,當(dāng)我們不明確目標(biāo)模型的訓(xùn)練集中是否含有投毒樣本時(shí),可以將目標(biāo)模型訓(xùn)練至隱藏層最后一層,并將隱藏層的輸出作為A_G的輸入,凍結(jié)A_G的所有參數(shù),重構(gòu)樣本原生特征并提高其權(quán)重,將重構(gòu)后的樣本數(shù)據(jù)送入目標(biāo)模型的softmax層進(jìn)行分類,若樣本標(biāo)簽發(fā)生改變,則該樣本為投毒樣本;反之,則為基類樣本,這就是投毒樣本的檢測原理,算法2為投毒樣本檢測算法的形式化描述。
若在檢測出投毒樣本之后對該樣本標(biāo)簽進(jìn)行更新,得到標(biāo)簽正確的訓(xùn)練集,然后將更新后的訓(xùn)練集作為目標(biāo)模型的輸入,重新對目標(biāo)模型進(jìn)行訓(xùn)練,當(dāng)訓(xùn)練完成后,模型可以對投毒樣本進(jìn)行正確分類,實(shí)現(xiàn)了模型防御。infoGAN_Defense投毒防御方案的形式化描述如算法3所示。
算法2:投毒樣本檢測算法
輸出:投毒樣本集P
Repeat
(1)xf←Layer(Tsoftmax)
(2)if (xflabel_begin≠xflabel_new) then
(3)do P←P∪xf
Return 投毒樣本集P
End
算法3:infoGAN_Defense投毒防御方案訓(xùn)練算法
輸入:樣本集X=Xclean∪Xpoison、目標(biāo)模型T、投毒樣本特征提取器A_infoG
輸出:更新參數(shù)后的目標(biāo)模型T′
(1)Trainset(T)←X
(2)獲取目標(biāo)模型隱藏層輸出Fall
(3)F′all←A_infoG(Fall)
Repeat
(4)x′f←Layer(Tsoftmax(xf))
(5)if (label(xf)≠label(x′f)) then
(6) doxflabel≠x′flabel
Untilxf?F′all
(7)F″all←update(F″all,X)
(8)X′←update(X,F″all)
(9)Trainset(T)←X′
Return 訓(xùn)練完成的模型T′
End
本文在MNIST數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),實(shí)現(xiàn)基于樣本原生特征的投毒防御方案,并與現(xiàn)有典型投毒防御方案進(jìn)行對比,分析我們提出的投毒防御方案infoGAN_Defense的有效性。
本文選擇Tensorflow框架+MNIST數(shù)據(jù)集進(jìn)行訓(xùn)練,評估infoGAN_defense的防御效果,其中,MNIST數(shù)據(jù)集由10個(gè)類別手寫數(shù)字的28×28灰度圖像、包含60 000張圖像的訓(xùn)練數(shù)據(jù)集和10 000張圖像的測試數(shù)據(jù)集組成。本實(shí)驗(yàn)將會采用卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,并評估infoGAN_defense防御效果。
本文利用直接梯度法制作所需投毒樣本,并將一定比例的投毒樣本注入MNIST數(shù)據(jù)集中,生成新的訓(xùn)練集,之后利用infoGAN_Defense方案進(jìn)行防御。
首先,本文通過將不同比例的投毒樣本注入模型,并分析此時(shí)模型的預(yù)測準(zhǔn)確率變化趨勢,評估投毒樣本的制作有效性。為更準(zhǔn)確地說明實(shí)驗(yàn)結(jié)果,本文進(jìn)行多次訓(xùn)練迭代,并選取不同投毒情況下模型的準(zhǔn)確率作為評估依據(jù)。投毒樣本生成有效性評估結(jié)果如圖3所示,由圖3可以看出,在模型未使用防御方案前,我們將生成的投毒樣本注入到訓(xùn)練集中明顯降低了模型的預(yù)測準(zhǔn)確率,這就表明我們生成的投毒樣本是有效的,成功攻擊了模型;而當(dāng)我們使用防御方案infoGAN_Defense后,模型的預(yù)測準(zhǔn)確率未出現(xiàn)明顯下降的趨勢,因此表明,本文所提出的防御方案infoGAN_Defense可以有效提高模型的預(yù)測準(zhǔn)確率。為了進(jìn)一步評估防御方案infoGAN_Defense的有效性,我們將infoGAN_Defense與現(xiàn)有的投毒防御方案進(jìn)行對比,并觀察不同防御方案下模型的預(yù)測準(zhǔn)確率。
圖3 投毒樣本生成有效性評估
從圖3可以看出,隨著投毒率的增加,模型的預(yù)測準(zhǔn)確率逐漸降低,因此本文選擇模型平均預(yù)測準(zhǔn)確率所對應(yīng)注入樣本集的投毒樣本比例進(jìn)行實(shí)驗(yàn)。為得出infoGAN_Defense的投毒防御效果,本文將15%的投毒樣本注入訓(xùn)練集中進(jìn)行訓(xùn)練,并選取4種針對特定類型攻擊的投毒防御方法與infoGAN_Defense進(jìn)行防御效果的對比。
圖4給出了infoGAN_Defense與現(xiàn)有投毒防御方案的模型預(yù)測準(zhǔn)確率對比結(jié)果(infoGAN_Defense防御效果如圖4所示)。由圖4可以看出,在針對基于Clean-label的投毒攻擊進(jìn)行防御時(shí),infoGAN_Defense達(dá)到與Deep-kNN幾乎同樣的防御效果;而針對其余3種投毒攻擊進(jìn)行防御時(shí),infoGAN_Defense防御效果明顯較好,模型準(zhǔn)確率明顯提高;同時(shí),我們比較了infoGAN_Defense與通用投毒防御策略De-Pois的防御效果,可以看出,De-Pois在針對基于訓(xùn)練生成模型的投毒攻擊進(jìn)行防御時(shí),防御效果比infoGAN_Defense要差,但比認(rèn)證防御(certified defense,CD)防御效果好,而infoGAN_Defense均可以有效防御現(xiàn)有的數(shù)據(jù)投毒攻擊,且平均準(zhǔn)確率達(dá)到90%以上。
圖4 infoGAN_Defense防御效果
在投毒防御算法設(shè)計(jì)過程中,除算法有效性外,還需要進(jìn)行算法復(fù)雜度分析?,F(xiàn)有的投毒防御方法均是直接對原始數(shù)據(jù)集進(jìn)行處理,而本文提出的infoGAN_Defense算法處理的是模型訓(xùn)練得到的樣本數(shù)據(jù)高維特征,這就大大降低算法的復(fù)雜度,加快了樣本特征提取的速度,減少了所需的訓(xùn)練時(shí)間。
為驗(yàn)證算法的時(shí)間復(fù)雜度,本文選用MNIST數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),觀察并比較4種針對特定類型攻擊的投毒防御方法與infoGAN_Defense所需要的訓(xùn)練時(shí)間和測試時(shí)間。CD、TRIM、De-Pois均需要訓(xùn)練一個(gè)新的模型,因此非常耗時(shí);Deep-kNN和標(biāo)簽消毒(label sanitization,LS)需要原始數(shù)據(jù)集進(jìn)行處理,相比之下,infoGAN_Defense只需要重構(gòu)從模型中提取的樣本高維特征,因此,訓(xùn)練成本遠(yuǎn)小于現(xiàn)有的投毒防御方法。infoGAN_Defense復(fù)雜度對比結(jié)果如圖5所示,從圖5看出,infoGAN所需的訓(xùn)練時(shí)間最短,測試時(shí)間與現(xiàn)有方法所需的測試時(shí)間接近,綜合訓(xùn)練時(shí)間與測試時(shí)間兩個(gè)指標(biāo)來看,infoGAN_Defense算法時(shí)間復(fù)雜度最低,效率最高。
圖5 infoGAN_Defense復(fù)雜度對比
隨著機(jī)器學(xué)習(xí)在安全關(guān)鍵領(lǐng)域的應(yīng)用,模型的安全性能尤為重要?,F(xiàn)有的通用投毒防御研究可以應(yīng)對特定類型的投毒攻擊,但難以對未知模型進(jìn)行擬合,導(dǎo)致防御失敗。本文從樣本特征的角度入手,設(shè)計(jì)一種投毒樣本原生特征的提取方法,構(gòu)建一個(gè)重構(gòu)樣本特征的框架,以完成投毒樣本的檢測及模型的防御。在MNIST數(shù)據(jù)集上的防御結(jié)果驗(yàn)證了基于樣本原生特征投毒防御方法的有效性,并且優(yōu)于現(xiàn)有的防御技術(shù)。未來,我們將進(jìn)一步研究樣本特征提取器算法,旨在提高特征提取的精確度,進(jìn)一步提升機(jī)器學(xué)習(xí)模型的預(yù)測準(zhǔn)確率。