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