文/呂勛 蔡暢
(湖南省衡陽市南華大學(xué)計算機(jī)學(xué)院 湖南省衡陽市 421001)
近年來,無線通信在網(wǎng)絡(luò)流量方面經(jīng)歷了巨大的增長。但是,與傳統(tǒng)的有線網(wǎng)絡(luò)相比,無線網(wǎng)絡(luò)更容易受到攻擊。由于無線通信中的節(jié)點缺乏監(jiān)督,惡意攻擊很容易入侵系統(tǒng)并造成破壞,設(shè)計有效的異常檢測系統(tǒng)對于保護(hù)無線通信至關(guān)重要。深度學(xué)習(xí)在近幾年變得越來越流行,漸漸成為一種主流的解決方法[1-2],而且學(xué)者們發(fā)現(xiàn)深度學(xué)習(xí)在處理復(fù)雜大規(guī)模數(shù)據(jù)方面比傳統(tǒng)機(jī)器學(xué)習(xí)算法有更出色的表現(xiàn),它不僅可以表達(dá)出數(shù)據(jù)之間更加深層次的關(guān)系,而且深度學(xué)習(xí)算法有著強大的數(shù)據(jù)表示和特征選擇能力,可以使相關(guān)數(shù)據(jù)信息得到保留。而深度學(xué)習(xí)中常用到的自編碼器[3],作為一種新穎的特征提取方法,同樣對異常檢測的研究非常有效。所以將深度學(xué)習(xí)與異常檢測技術(shù)相結(jié)合的研究,將是未來異常檢測技術(shù)的研究方向。
異常檢測方法[4-5]在過去幾年中受到許多關(guān)注,為了提高異常檢測系統(tǒng)的效率和性能,學(xué)者們從各個角度構(gòu)建網(wǎng)絡(luò)異常入侵檢測系統(tǒng)[6-7]并取得了大量研究成果。Chen 等[8]提出一種基于特征的MSPCA 與sketch 的異常檢測系統(tǒng),通過結(jié)合PCA 和小波分析,MSPCA 可以有效分離異常數(shù)據(jù),從而能夠識別異常的源IP 地址。Anderson 等[9]人提出一種基于遺傳算法和模糊邏輯的網(wǎng)絡(luò)異常檢測系統(tǒng),遺傳算法用于使用流分析生成網(wǎng)絡(luò)段的數(shù)字簽名,模糊邏輯方案來確定數(shù)據(jù)是否表示異常,實驗結(jié)果獲得了比較好的準(zhǔn)確度和誤報率。Juliette 等[10]人提出了一種新的在線和實時無監(jiān)督網(wǎng)絡(luò)異常檢測算法,依賴于離散的時間滑動窗口來連續(xù)更新特征空間和增量網(wǎng)格聚類以快速檢測異常。Hong 等[11]人提出了一種用于高維數(shù)據(jù)的混合半監(jiān)督異常檢測模型,模型由兩部分組成:深度自動編碼器(DAE)和基于集合k-最近鄰圖的異常檢測器,訓(xùn)練DAE 以學(xué)習(xí)高維數(shù)據(jù)集的固有特征,然后,從整個數(shù)據(jù)集中隨機(jī)抽取的不同子集構(gòu)建幾個非參數(shù)的基于KNN 的異常檢測器。
大多數(shù)研究在處理低維度的數(shù)據(jù)集時,效果表現(xiàn)良好,但是在處理海量高維度的數(shù)據(jù)時,檢測率和誤報率不能讓人滿意。本文提出一種基于SDAE-DNN 的網(wǎng)絡(luò)異常檢測方法,首先對NSL-KDD數(shù)據(jù)集進(jìn)行預(yù)處理,使用onehot 編碼將數(shù)據(jù)預(yù)處理后,數(shù)據(jù)集擴(kuò)展為122 維的數(shù)據(jù);然后利用SDAE-DNN 模型對數(shù)據(jù)進(jìn)行分類檢測,實驗與支持向量機(jī)(SVM)、深度神經(jīng)網(wǎng)絡(luò)、融合主成分分析(PCA)和深度神經(jīng)網(wǎng)絡(luò)的異常檢測方法進(jìn)行了對比,結(jié)果表明該模型要優(yōu)于其他方法。
圖1:棧式自編碼器結(jié)構(gòu)
圖2:深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
簡單的自編碼器(AE)是一種三層的神經(jīng)網(wǎng)絡(luò)模型,包含數(shù)據(jù)輸入層、隱含層、輸出重構(gòu)層,同時也是一種無監(jiān)督學(xué)習(xí)模型。從輸入層到隱層稱為編碼過程,從隱層到輸出層稱為解碼過程。而棧式自編碼(SAE)神經(jīng)網(wǎng)絡(luò)是由多個自編碼器級聯(lián)組成的神經(jīng)網(wǎng)絡(luò),上一個自編碼器的輸出用作下一個自編碼器的輸入,以便可以獲得輸入數(shù)據(jù)的更高級別的特征表示,可以通過數(shù)據(jù)映射(變化)的方法,把數(shù)據(jù)從高維度的特征向量變換到低維度的特征向量。棧式自編碼器結(jié)構(gòu)如圖1 所示。
棧式自編碼器的網(wǎng)絡(luò)可分為兩個結(jié)構(gòu):編碼器和解碼器,這兩個結(jié)構(gòu)可定義為:
編碼器:把輸入數(shù)據(jù)的特征向量(Xn∈Rd)進(jìn)行壓縮變換,構(gòu)成隱含層的m(m 解碼器:將編碼器的隱含層輸出特征向量Hi解碼重構(gòu)回原始輸入數(shù)據(jù)的特征向量大小。映射函數(shù)如下: 通過調(diào)整優(yōu)化編碼器和解碼器的參數(shù),使得輸入數(shù)據(jù)和重構(gòu)數(shù)據(jù)之間的重構(gòu)誤差函數(shù)最小化。隱含層單元輸出的數(shù)據(jù)是原始數(shù)據(jù)的最佳低維表示,并且包括原始數(shù)據(jù)中存在的相關(guān)信息,優(yōu)化自編碼器使得數(shù)據(jù)重構(gòu)的誤差最小化,以此獲得最佳子空間。損失函數(shù)函數(shù)一般使用均方差函數(shù)表示,公式如下: 而棧式去噪自編碼器(SDAE)通過在輸入層添加噪聲,來提高自編碼器的魯棒性。將輸入數(shù)據(jù)X 通過一個樣本損壞過程C(X'/X),處理成一個含噪聲的樣本X',然后再對數(shù)據(jù)X'進(jìn)行重構(gòu)。本文使用加性高斯噪聲對輸入數(shù)據(jù)進(jìn)行處理,通過引入噪聲使棧式去噪自編碼器利用含噪聲的樣本去重構(gòu)不含噪聲的輸入,使SDAE-DNN網(wǎng)絡(luò)更具更具魯棒性。 2006年Hinton 提出了深度神經(jīng)網(wǎng)絡(luò)(DNN),其結(jié)構(gòu)主要是由全連接層構(gòu)成,也就是每一層節(jié)點的輸出結(jié)果會發(fā)送到下一層所有的節(jié)點作為輸入,把簡單的單層神經(jīng)網(wǎng)絡(luò)的隱含層擴(kuò)展出多層,就可以得到一個深度神經(jīng)網(wǎng)絡(luò)[12-13],如圖2 所示就是一個含有兩個隱含層的深度神經(jīng)網(wǎng)絡(luò)。深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程主要由前向傳遞和反向傳遞過程組成,在前向傳遞過程中,輸入向量從輸入層到隱含層,再到輸出層,當(dāng)輸出層的結(jié)果達(dá)不到預(yù)期要求時,那么再通過反向傳播算法來調(diào)整神經(jīng)元之間的連接權(quán)重,經(jīng)過多次的訓(xùn)練迭代,使得輸出值被控制在誤差允許范圍。 深度神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)一般有relu 函數(shù)、tanh 函數(shù)、sigmoid 函數(shù),本文把relu 函數(shù)和tanh 函數(shù)作為深度神經(jīng)網(wǎng)絡(luò)的激活函數(shù),對于損失函數(shù),DNN 一般取交叉熵函數(shù),本文同樣把交叉熵函數(shù)作為損失函數(shù),公式如式(4)所示。為了防止深度神經(jīng)網(wǎng)絡(luò)過擬合,在DNN 中引入Dropout 技術(shù),將DNN 全連接層的輸出結(jié)果按比例P 為0。 本文提出的基于SDAE-DNN 的網(wǎng)絡(luò)異常檢測模型總體框架如圖3 所示,模型包括兩個部分:第一部分為棧式自編碼器用于異常檢測數(shù)據(jù)特征降維,第二部分為搭建深度神經(jīng)網(wǎng)絡(luò)對降維后的數(shù)據(jù)進(jìn)行異常檢測識別。 在構(gòu)建基于SDAE-DNN 的網(wǎng)絡(luò)異常檢測模型中,通過對數(shù)據(jù)集進(jìn)行預(yù)處理后輸入到SDAE 模型,進(jìn)行無監(jiān)督訓(xùn)練,將數(shù)據(jù)降到30 維,然后在把降維數(shù)據(jù)輸入到深度神經(jīng)網(wǎng)絡(luò)中,利用BP 算法進(jìn)行監(jiān)督學(xué)習(xí),使用測試集對數(shù)據(jù)進(jìn)行分類和異常檢測。具體步驟如下: 表1:混淆矩陣 表2:不同分類模型性能比較 圖3:SDAE-DNN 檢測模型 步驟1:數(shù)據(jù)預(yù)處理。使用onehot 編碼對NSL-KDD 數(shù)據(jù)集進(jìn)行符號特征數(shù)值化,然后對數(shù)據(jù)進(jìn)行最小最大歸一化處理,將所有特征轉(zhuǎn)換到[0,1]的范圍。 步驟2:將預(yù)處理后的數(shù)據(jù)輸入輸入到棧式去噪自編碼器中,利用編碼器-解碼器對數(shù)據(jù)進(jìn)行降維重構(gòu),調(diào)整參數(shù),進(jìn)行無監(jiān)督訓(xùn)練,使得損失函數(shù)最小化。 步驟3:抽取訓(xùn)練集10%作為驗證集,根據(jù)損失函數(shù)值不斷進(jìn)行參數(shù)調(diào)優(yōu),得到最終參數(shù),獲得隱含層的低維度的訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)。 步驟4:構(gòu)建深度神經(jīng)網(wǎng)絡(luò)。確定隱含層層數(shù),設(shè)置好DNN各參數(shù)值。 步驟5:將獲得的低維數(shù)據(jù)加上標(biāo)簽輸入到DNN 中,利用反向傳播算法(BP)對DNN 模型進(jìn)行有監(jiān)督訓(xùn)練,使得損失函數(shù)最小化。 步驟6:把降維后的測試集輸入到已經(jīng)訓(xùn)練好的DNN 模型中,利用DNN 最后一層的sigmoid 函數(shù)進(jìn)行分類檢測。 針對KDD CUP 99 數(shù)據(jù)集出現(xiàn)的一些不足,本文使用NSLKDD 來評價基于SDAE-DNN 的異常檢測方法,NSL-KDD 數(shù)據(jù)集在KDD CUP 99 數(shù)據(jù)集基礎(chǔ)上做出了改進(jìn),新的數(shù)據(jù)集除去了原有的KDD CUP 99 數(shù)據(jù)集中冗余重復(fù)的數(shù)據(jù)。NSL-KDD 數(shù)據(jù)集包含41 個分類特征,還有最后一列的標(biāo)簽,使用one-hot 編碼來進(jìn)行數(shù)據(jù)集數(shù)字化。NSL-KDD 數(shù)據(jù)集包括“Protocol_type”,“Service”和“Flag”等3 種符號特征,其中“Protocol_type”包括3 種不同的符號特征值,“Service”包括70 種不同的符號特征值,“Flag”包括11 種不同的符號特征值。因此,在完成數(shù)據(jù)數(shù)值化處理后,NSL-KDD 數(shù)據(jù)集的特征數(shù)據(jù)大小由41 維擴(kuò)展為122 維。 為了便于比較結(jié)果,提高網(wǎng)絡(luò)收斂速度和精度,使用公式(5)來對NSL-KDD數(shù)據(jù)集進(jìn)行數(shù)字化化處理的數(shù)據(jù)再進(jìn)行歸一化處理,將數(shù)據(jù)特征映射到[0,1]區(qū)間上。xman和xmin分別表示原始特征值的最大值和最小值。x 表示原始特征值。 本文使用混淆矩陣的方法來評估本文的實驗結(jié)果,混淆矩陣的定義如表1 所示。在表中,TP(True Positive)表示被預(yù)測為正類的正類數(shù)據(jù),TN(True Negative)表示被預(yù)測為負(fù)類的負(fù)類數(shù)據(jù),F(xiàn)P(False Positive)表示被預(yù)測為正類的負(fù)類數(shù)據(jù),F(xiàn)N(False Negative)表示被預(yù)測為負(fù)類的正類數(shù)據(jù)。 本文使用的度量指標(biāo)主要包括ACC(準(zhǔn)確度)和Precision(檢測率),F(xiàn)AR(誤報率),定義如下。 實驗中棧式去噪自編碼器的訓(xùn)練中采用[122-100-90-30]的網(wǎng)絡(luò)結(jié)構(gòu),噪聲系數(shù)取0.5,采用自適應(yīng)矩陣估計(Adam)算法進(jìn)行優(yōu)化,學(xué)習(xí)率α 取0.001,batch-size 設(shè)為128,網(wǎng)絡(luò)迭代次數(shù)設(shè)置為50 次,激活函數(shù)為relu 函數(shù);深度神經(jīng)網(wǎng)絡(luò)中采用[30-128-128-64-32-1]的網(wǎng)絡(luò)結(jié)構(gòu),Dropout 比例P 設(shè)為0.5,采用隨機(jī)梯度下降(SGD)算法來進(jìn)行優(yōu)化,batch-size 設(shè)為128,網(wǎng)絡(luò)迭代次數(shù)設(shè)置為50 次,輸出層采用sigmoid 函數(shù),其他層激活函數(shù)為relu 函數(shù)和tanh 函數(shù)。 為了分析SDAE-DNN 異常檢測模型的性能,本文把基于深度神經(jīng)網(wǎng)絡(luò)的異常檢測方法、基于SVM(支持向量機(jī))的異常檢測方法和基于主成分分析(PCA)和了深度神經(jīng)網(wǎng)絡(luò)的異常檢測方法與本模型SDAE-DNN)進(jìn)行了對比,從準(zhǔn)確率和誤報率,精確率進(jìn)行評估。 從表2 可以看出,本文提出的基于SDAE-DNN 模型性能要遠(yuǎn)優(yōu)于基于DNN 的模型和基于SVM 模型,SDAE-DNN 的準(zhǔn)確率比DNN、SVM、PCA-DNN 分別提高了3.65%、2.87%、2.39%,檢測率比其他幾種方法也要高,同時誤報率比DNN、SVM、PCA-DNN分別降低了1.33%、3.51%、0.66%。同時可以看出基于棧式去噪自編碼器的降維性能要由于基于PCA 的降維性能。 綜上,本文提出的網(wǎng)絡(luò)異常檢測方法與傳統(tǒng)的異常檢測方法相比,有著較低的誤報率和較高的檢測率,模型整體性能有了不錯的提升。 針對對高維度網(wǎng)絡(luò)流量攻擊數(shù)據(jù)的準(zhǔn)確率和誤報率問題,本文提出了一種基于棧式去噪自編碼器和深度神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)異常檢測方法,對高維數(shù)據(jù)集輸入到棧式去噪自編碼器中,進(jìn)行特征降維,然后降維數(shù)據(jù)輸入到深度神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,再把測試集輸入到訓(xùn)練好的DNN 模型中進(jìn)行分類和異常檢測。實驗結(jié)果表明,本模型要優(yōu)于其他方法。下一步工作將研究真實網(wǎng)絡(luò)情況下的異常檢測,大大降低模型的誤報率。2.2 深度神經(jīng)網(wǎng)絡(luò)
3 基于SDAE-DNN的網(wǎng)絡(luò)異常檢測方法
4 實驗結(jié)果與分析
4.1 數(shù)據(jù)預(yù)處理
4.2 實驗評估指標(biāo)與設(shè)置
4.3 實驗結(jié)果與模型對比分析
5 結(jié)束語