譚敏生,呂 勛,丁 琳,李行健
(南華大學(xué) 計(jì)算機(jī)學(xué)院,湖南 衡陽 421001)
與傳統(tǒng)有線網(wǎng)絡(luò)相比,無線網(wǎng)絡(luò)更容易受到惡意攻擊。由于無線通信中的傳感節(jié)點(diǎn)缺乏監(jiān)督,惡意攻擊很容易入侵系統(tǒng)并浪費(fèi)大量資源。為此,學(xué)者們從各個(gè)角度對(duì)異常檢測(cè)方法[1,2]進(jìn)行了研究,如多尺度主成分分析算法(MSPCA[3])、支持向量機(jī)(SVM)、K最近鄰算法(K-NN)等。深度學(xué)習(xí)作為一種很有前景的解決方案[4,5],在處理復(fù)雜大規(guī)模數(shù)據(jù)方面有著更出色的性能,一方面,深度學(xué)習(xí)算法[6]可以揭示輸入數(shù)據(jù)之間更深層的關(guān)系;另一方面,深度學(xué)習(xí)算法具有更強(qiáng)大的特征提取和表示能力,同時(shí)盡可能地保留有關(guān)信息。自編碼器[7]作為深度學(xué)習(xí)的一種新穎降維方法[8],通過使用神經(jīng)網(wǎng)絡(luò)[9]可以找到最佳子空間,捕獲特征之間的非線性相關(guān)性。例如,V.L.Cao等[10]提出了結(jié)合自編碼器和密度估計(jì)的異常檢測(cè)方法;Zong等[11]提出了用于無監(jiān)督異常檢測(cè)的深度自編碼高斯混合模型,能避免陷入局部最優(yōu);Zhou等[12]提出了一種魯棒深度自編碼器(RDA)來用于異常檢測(cè),但是誤檢率較高;Hong等[13]提出了一種用于高維數(shù)據(jù)的混合半監(jiān)督異常檢測(cè)模型,降低了計(jì)算復(fù)雜度;L.Bontemps等[14]提出了基于長(zhǎng)短時(shí)記憶遞歸神經(jīng)網(wǎng)絡(luò)(LSTM-RNN)的集體異常檢測(cè)方法,但存在過擬合現(xiàn)象。
現(xiàn)有研究成果在處理維度不高的數(shù)據(jù)時(shí),效果不錯(cuò),但在處理多元和高維數(shù)據(jù)時(shí),算法的誤報(bào)率較高,性能達(dá)不到預(yù)期效果。為此,本文提出一種基于彈性網(wǎng)的深度去噪自編碼器異常檢測(cè)方法,用正常數(shù)據(jù)對(duì)基于彈性網(wǎng)的深度去噪自編碼器進(jìn)行訓(xùn)練獲得數(shù)據(jù)的重構(gòu)誤差閾值,來對(duì)數(shù)據(jù)進(jìn)行異常檢測(cè)。
自編碼器(AE)是一種無監(jiān)督[15]的三層神經(jīng)網(wǎng)絡(luò),將輸入壓縮成潛在的空間表征來重構(gòu)輸出,利用反向傳播算法使輸出值盡可能等于輸入值。自編碼器由編碼器和解碼器構(gòu)成,如圖1所示。
圖1 自編碼器模型
深度自編碼器(DAE)是由多個(gè)自編碼器端到端連接組成的神經(jīng)網(wǎng)絡(luò),前一層自編碼器的輸出作為下一個(gè)自編碼器層的輸入,以獲得輸入數(shù)據(jù)的更高級(jí)別特征表示,逐步將特定特征向量轉(zhuǎn)換為抽象特征向量,實(shí)現(xiàn)從高維數(shù)據(jù)空間到低維數(shù)據(jù)空間的非線性轉(zhuǎn)換。深度自編碼器結(jié)構(gòu)如圖2所示。
圖2 深度自編碼器結(jié)構(gòu)
深度自編碼器的工作過程可分為兩個(gè)步驟:編碼和解碼,這兩個(gè)步驟可定義為:
編碼:輸入向量(Xn∈Rd)被壓縮成構(gòu)成隱藏層的mm (1) 其中,X為輸入向量,θ為參數(shù)Winput,φinput,W表示大小為m×d的編碼器權(quán)重矩陣,φ表示維數(shù)為m的偏置向量。 解碼:將得到的隱藏層輸出Hi解碼回原始輸入空間Rd,映射函數(shù)如下 (2) 其中,解碼器的參數(shù)θ′=Whidden,φhidden,Y是輸入數(shù)據(jù)后的重構(gòu)向量,fθ(·)和gθ′(·)分別表示隱藏層神經(jīng)元和輸出層神經(jīng)元的激活函數(shù),激活函數(shù)是非線性函數(shù),用以揭示輸入特征之間的非線性相關(guān)性。本文采用relu函數(shù)和tanh函數(shù)作為激活函數(shù),relu函數(shù)和tanh函數(shù)表達(dá)式如式(3)和式(4)所示 (3) relu(x)=max(0,x) (4) 通過訓(xùn)練自編碼器來重構(gòu)原始數(shù)據(jù),調(diào)整編碼器和解碼器的參數(shù),使輸出重構(gòu)數(shù)據(jù)和輸入數(shù)據(jù)之間的誤差最小化,即誤差函數(shù)最小,把編碼器最后一層隱藏層的輸出數(shù)據(jù)作為輸入的最佳低維數(shù)據(jù)。重構(gòu)誤差函數(shù)JE(W,φ)用式(5)所示均方差函數(shù)表示 (5) 深度自編碼器是由多個(gè)自編碼器端到端連接而形成的神經(jīng)網(wǎng)絡(luò),相比簡(jiǎn)單的自編碼器,深度自編碼器能更好的逐層學(xué)習(xí)原始數(shù)據(jù)的多種表達(dá),刻畫更復(fù)雜的特征。θ,θ′用均方誤差函數(shù)來優(yōu)化深度自編碼器的參數(shù) (6) 其中,n表示樣本數(shù)量,JE表示均方差函數(shù)。將訓(xùn)練集中一部分標(biāo)簽為“正?!钡臄?shù)據(jù)去訓(xùn)練基于彈性網(wǎng)的深度去噪自編碼器,對(duì)重構(gòu)誤差進(jìn)行閾值處理,利用正常數(shù)據(jù)與異常數(shù)據(jù)的重構(gòu)誤差值,來對(duì)不同數(shù)據(jù)特征進(jìn)行分類。 為了提高網(wǎng)絡(luò)的泛化能力和抗擾動(dòng)能力,使結(jié)構(gòu)風(fēng)險(xiǎn)最小化,在深度自編碼器的隱藏層輸出值加入某種約束,降低不重要特征的權(quán)重。一般在自編碼器中加入正則化,可用L1范數(shù)來正則化,L1范數(shù)符合拉普拉斯變換,是指權(quán)值向量W中各個(gè)元素的絕對(duì)值之和,可以產(chǎn)生稀疏權(quán)重矩陣即產(chǎn)生一個(gè)稀疏模型,用于特征選擇,這樣式(6)更新為如下表達(dá)式 (7) 也可以利用L2范數(shù)來正則化,L2范數(shù)符合高斯分布,是完全可微的,指權(quán)值向量W中各個(gè)元素的平方和然后再求平方根,也就是歐幾里得距離之和,這樣式(6)更新成如下表達(dá)式 (8) 而彈性網(wǎng)的正則化是L1和L2懲罰函數(shù)的線性混合,所以基于彈性網(wǎng)的深度自編碼器的重構(gòu)誤差函數(shù)如式(9)所示 (9) 利用參數(shù)λ2可以控制稀疏性,利用參數(shù)λ1可以防止網(wǎng)絡(luò)過擬合,最小化重構(gòu)誤差,提高網(wǎng)絡(luò)的泛化能力。 自編碼器是高度非線性的,通過在輸入層添加噪聲,可以提高自編碼器的重構(gòu)能力。如圖3所示,引入一個(gè)損壞過程C(X′/X)將輸入X進(jìn)行處理后產(chǎn)生一個(gè)損壞樣本X′,然后再對(duì)數(shù)據(jù)X′進(jìn)行重構(gòu)。本文使用加性高斯噪聲作為對(duì)輸入數(shù)據(jù)進(jìn)行處理,通過引入噪聲使學(xué)習(xí)到的特征更具魯棒性,從而給深度自編碼器帶來更好的性能。 圖3 去噪自編碼器訓(xùn)練過程 考慮到網(wǎng)絡(luò)中存在約束,對(duì)不同參數(shù)使用不同的學(xué)習(xí)速率,例如降低不頻繁特征的更新頻率。然而,大多數(shù)傳統(tǒng)流行的梯度下降算法包括隨機(jī)梯度下降和小批量梯度下降,對(duì)網(wǎng)絡(luò)中所有需要更新的參數(shù)使用相同的學(xué)習(xí)速率,使得難以選擇合適的學(xué)習(xí)速率以及容易陷入局部最小。因此,為了訓(xùn)練更好的深度網(wǎng)絡(luò),本文使用自適應(yīng)矩估計(jì)(Adam)梯度下降算法[16]來實(shí)現(xiàn)不同參數(shù)的動(dòng)態(tài)自適應(yīng)調(diào)整,Adam算法通過計(jì)算梯度一階矩估計(jì)mt和二階矩估計(jì)vt來實(shí)現(xiàn)不同參數(shù)的動(dòng)態(tài)調(diào)整,調(diào)整方法如式(10)~式(15)所示 mt=β1mt-1+(1-β1)gt (10) (11) (12) 計(jì)算mt和vt的偏差矯正 (13) (14) (15) β1和β2分別表示一階和二階的矩估計(jì)指數(shù)衰減率,gt表示損失函數(shù)中時(shí)間步長(zhǎng)t的參數(shù)梯度,γ表示更新的步長(zhǎng),ξ表示采用一個(gè)很小常數(shù)來防止分母為零。 本文把[122-110-90-10-90-110-122]作為深度網(wǎng)絡(luò)的結(jié)構(gòu)。由于輸入數(shù)據(jù)是122維,所以把輸入層的神經(jīng)元數(shù)設(shè)為122,在神經(jīng)元數(shù)為10的隱含層中采用relu函數(shù)作為激活函數(shù),其余層的激活函數(shù)采用tanh函數(shù)。 在訓(xùn)練階段使用標(biāo)簽為“正?!钡臄?shù)據(jù)進(jìn)行訓(xùn)練,則相應(yīng)的測(cè)試集中正常數(shù)據(jù)的重構(gòu)誤差會(huì)較小,而異常數(shù)據(jù)將具有相對(duì)較高的重構(gòu)誤差。通過對(duì)重構(gòu)誤差進(jìn)行閾值處理,可以對(duì)惡意數(shù)據(jù)進(jìn)行分類,如式(16)所示 (16) 基于彈性網(wǎng)的深度自編碼器網(wǎng)絡(luò)異常檢測(cè)算法(e-DDAE)主要步驟如下: 步驟1 數(shù)據(jù)預(yù)處理。使用獨(dú)熱(one-hot)編碼對(duì)NSL-KDD數(shù)據(jù)集進(jìn)行符號(hào)特征數(shù)值化,然后對(duì)數(shù)據(jù)進(jìn)行最小最大歸一化處理,將所有特征轉(zhuǎn)換為[0,1]的范圍。 步驟2 構(gòu)建彈性網(wǎng)正則化的深度自編碼器。根據(jù)式(7)-式(9),在深度自編碼器的損失函數(shù)中加入彈性網(wǎng)正則化即L1和L2范數(shù)的線性混合,使得重構(gòu)誤差函數(shù)最小化。 步驟3 對(duì)彈性網(wǎng)正則化的深度自編碼器的輸入數(shù)據(jù)加入高斯噪聲,提高深度自編碼器重構(gòu)能力,根據(jù)式(10)-式(15),用Adam算法對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化,對(duì)輸入數(shù)據(jù)進(jìn)行降維重構(gòu),把輸入數(shù)據(jù)壓縮降維到10維,再重構(gòu)為122維數(shù)據(jù)。 步驟4 自編碼器訓(xùn)練。在訓(xùn)練階段,抽取NSL-KDD訓(xùn)練集中90%的標(biāo)簽為“正常”數(shù)據(jù)樣本作為基于彈性網(wǎng)的深度去噪自編碼器的訓(xùn)練集,剩下的10%的“正?!睌?shù)據(jù)作為驗(yàn)證集,并結(jié)合BP算法來訓(xùn)練基于彈性網(wǎng)的深度去噪自編碼器,用驗(yàn)證數(shù)據(jù)集進(jìn)行測(cè)試,使其能夠捕獲正常數(shù)據(jù)的特征。通過訓(xùn)練基于彈性網(wǎng)的深度去噪自編碼器,構(gòu)建正常數(shù)據(jù)的重構(gòu)誤差閾值。 步驟5 自編碼器檢測(cè)。將測(cè)試數(shù)據(jù)集輸入到自編碼器網(wǎng)絡(luò)中并根據(jù)式(16)進(jìn)行分類,把訓(xùn)練集的重構(gòu)誤差作為異常閾值,重構(gòu)誤差低于閾值的數(shù)據(jù)將被分類為正常,高于閾值的數(shù)據(jù)則被分類為異常。 使用NSL-KDD數(shù)據(jù)集來評(píng)價(jià)基于彈性網(wǎng)的深度去噪自編碼器異常檢測(cè)算法(e-DDAE),NSL-KDD數(shù)據(jù)集在KDD99數(shù)據(jù)集基礎(chǔ)上得到了改進(jìn),消除了KDD99數(shù)據(jù)集中的冗余數(shù)據(jù)。NSL-KDD數(shù)據(jù)集包含125 973個(gè)訓(xùn)練樣本和22 543個(gè)測(cè)試樣本,包括拒絕服務(wù)攻擊(Dos)、探測(cè)攻擊(Probe)、遠(yuǎn)程到本地攻擊(R2L)、用戶到根攻擊(U2R)這4種攻擊樣本類型,具體分布見表1。 表1 NSL-KDD數(shù)據(jù)集攻擊數(shù)目和分類 NSL-KDD數(shù)據(jù)集包含41個(gè)屬性特征,使用獨(dú)熱(one-hot)編碼來對(duì)數(shù)據(jù)集數(shù)字化。NSL-KDD數(shù)據(jù)集的符號(hào)特征包括“Protocol_type”,“Service”和“Flag”,其中“Protocol_type”包括TCP,UDP,ICMP這3種不同的協(xié)議類型,“Service”包括70種不同的符號(hào)特征值,“Flag”包括11種不同的符號(hào)特征值。因此,在完成數(shù)字化處理后,NSL-KDD數(shù)據(jù)集的41維特征數(shù)據(jù)擴(kuò)展為122維。 為了將特征統(tǒng)一量綱,提高算法收斂速度和精度,使用式(17)歸一化方法來處理NSL-KDD數(shù)據(jù)集中的特征值,將特征線性映射到[0,1]區(qū)間上。xmax和xmin分別表示原始特征最大值和最小值,x表示原始特征值 (17) 本文使用基于混淆矩陣的方法來評(píng)估實(shí)驗(yàn)結(jié)果,混淆矩陣的定義見表2,TP(true positive)表示預(yù)測(cè)為正常的正常數(shù)據(jù),TN(true negative)表示預(yù)測(cè)為攻擊的攻擊數(shù)據(jù),F(xiàn)P(false positive)表示被預(yù)測(cè)為正常的攻擊數(shù)據(jù),F(xiàn)N(false negative)表示被預(yù)測(cè)為攻擊的正常數(shù)據(jù)。 表2 混淆矩陣 本文使用的度量指標(biāo)主要包括ACC(準(zhǔn)確度)、FAR(誤報(bào)率)、DR(檢測(cè)率)、Recall(召回率)、F1值(F1 score),定義如下 (18) (19) (20) (21) (22) 實(shí)驗(yàn)采用Adam優(yōu)化算法,學(xué)習(xí)率取0.001,batch-size設(shè)置為128,網(wǎng)絡(luò)迭代次數(shù)設(shè)置為20,懲罰項(xiàng)系數(shù)λ1=0.0001,λ2=0.00001,β1=0.9,β2=0.999,ξ=10e-8。 e-DDAE算法構(gòu)建一個(gè)深度去噪自編碼器,在損失函數(shù)中加入彈性網(wǎng)正則化,抽取訓(xùn)練集中標(biāo)簽為“正?!钡臄?shù)據(jù)來訓(xùn)練網(wǎng)絡(luò)以獲得重構(gòu)誤差閾值,利用閾值和自編碼器來對(duì)測(cè)試集數(shù)據(jù)進(jìn)行分類。實(shí)驗(yàn)通過正常數(shù)據(jù)和異常數(shù)據(jù)的重構(gòu)數(shù)據(jù)值的分布來評(píng)估e-DDAE算法的有效性。 圖4的提琴圖顯示了測(cè)試集中所有數(shù)據(jù)樣本的重構(gòu)損失值的分布,從圖中陰影部分也就是數(shù)據(jù)的分布密度可以明顯看出,異常數(shù)據(jù)(攻擊數(shù)據(jù))的重構(gòu)值基本要高于閾值,而正常樣本的數(shù)據(jù)要低于閾值。 圖4 不同數(shù)據(jù)重構(gòu)誤差值分布 圖5是NSL-KDD數(shù)據(jù)集中不同訓(xùn)練集比例下5種不同數(shù)據(jù)重構(gòu)誤差值,可以明顯看出,隨著訓(xùn)練集比例的增加,正常數(shù)據(jù)的重構(gòu)誤差值明顯低于其它4種攻擊類數(shù)據(jù),其中R2L攻擊和U2R攻擊數(shù)據(jù)的重構(gòu)誤差值要比其它兩種攻擊的重構(gòu)誤差值低,說明本文提出方法可以有效地對(duì)異常數(shù)據(jù)進(jìn)行檢測(cè)。 圖5 不同訓(xùn)練集比例下5種數(shù)據(jù)的重構(gòu)誤差值 為了更好地分析本文e-DDAE算法的性能,從準(zhǔn)確率、誤報(bào)率、精確率、召回率和F1值方面與AE算法(自編碼器算法)、SVM算法(支持向量機(jī)算法)、K-NN算法(K最近鄰算法)進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果見表3。 表3 不同分類算法性能比較/% 從表3可以看出,e-DDAE的召回率比AE、SVM、K-NN分別提高了4.06%、3%、8.56%;e-DDAE的F1值比AE、SVM、K-NN分別提高了1.98%、0.12%、4.42%;e-DDAE誤報(bào)率比AE、SVM、K-NN分別降低了4.33%、3.85%、3.76%;e-DDAE分類準(zhǔn)確率比AE提高了2.23%,比SVM略低了1.35%、比K-NN提高了4.15%;e-DDAE檢測(cè)率比AE略低了0.28%,比SVM略低了2.90%,比K-NN提高了0.17%。 e-DDAE算法的靈敏度高,總體性能良好,在保證較好的分類準(zhǔn)確率和檢測(cè)率的情況下,召回率和F1值明顯提高,誤報(bào)率明顯降低。 e-DDAE等4種算法對(duì)數(shù)據(jù)集中4種攻擊類數(shù)據(jù)被分類為異常數(shù)據(jù)的準(zhǔn)確率見表4,可以看出,在Dos攻擊類數(shù)據(jù)方面,e-DDAE比AE、SVM、K-NN分別提高了0.18%、1.09%、4.23%;在U2R攻擊類數(shù)據(jù)方面,e-DDAE比AE、SVM、K-NN分別提高了7.47%、5.65%、11.29%;在R2L攻擊類數(shù)據(jù)方面,e-DDAE比AE、SVM、K-NN分別提高了2.10%、5.33%、9.21%;在Probe攻擊類數(shù)據(jù)方面,e-DDAE比AE、SVM、K-NN分別提高了0.19%、4.67%、10.67%。e-DDAE算法對(duì)不同攻擊類數(shù)據(jù)被分類為異常數(shù)據(jù)的準(zhǔn)確率明顯高于其它同類算法。 表4 不同算法對(duì)不同攻擊數(shù)據(jù)的分類準(zhǔn)確率比較 本文提出了一種基于彈性網(wǎng)的深度去噪自編碼器網(wǎng)絡(luò)異常檢測(cè)方法,在構(gòu)建深度去噪自編碼器中加入彈性網(wǎng)正則化,用經(jīng)過預(yù)處理的訓(xùn)練集中的一部分“正?!睒?biāo)簽數(shù)據(jù)去訓(xùn)練網(wǎng)絡(luò),獲得數(shù)據(jù)的重構(gòu)誤差閾值,通過自編碼器和閾值來檢測(cè)網(wǎng)絡(luò)異常數(shù)據(jù),避免了人為操縱閾值帶來的主觀影響。實(shí)驗(yàn)結(jié)果表明,該方法的檢測(cè)性能優(yōu)于其它的異常檢測(cè)方法,在保持了較高分類準(zhǔn)確率和檢測(cè)率的同時(shí),降低了誤報(bào)率,提高了召回率和F1值,對(duì)不同攻擊類數(shù)據(jù)被分類為異常數(shù)據(jù)的準(zhǔn)確率也優(yōu)于其它算法。2 基于彈性網(wǎng)的深度去噪自編碼器構(gòu)建
3 基于彈性網(wǎng)的深度去噪自編碼器異常檢測(cè)方法
4 實(shí)驗(yàn)與結(jié)果分析
4.1 實(shí)驗(yàn)數(shù)據(jù)集
4.2 數(shù)據(jù)預(yù)處理
4.3 實(shí)驗(yàn)評(píng)估指標(biāo)與設(shè)置
4.4 實(shí)驗(yàn)結(jié)果分析
5 結(jié)束語