譚敏生 楊帥創(chuàng) 丁 琳 彭 敏
(南華大學(xué)計算機(jī)學(xué)院 湖南 衡陽 421001)
據(jù)統(tǒng)計2018年全球互聯(lián)網(wǎng)用戶突破40億,數(shù)據(jù)的傳輸呈現(xiàn)爆發(fā)式增長。傳統(tǒng)的入侵檢測技術(shù)(Intrusion Detection System,IDS)已不能滿足人們的需求,并日益顯露弊端。因此,如何更好地提高網(wǎng)絡(luò)的有效防御已成為當(dāng)前網(wǎng)絡(luò)安全技術(shù)的研究熱點。
近階段的入侵檢測技術(shù)主要是將機(jī)器學(xué)習(xí)運(yùn)用于IDS中[1]。所采用的機(jī)器學(xué)習(xí)算法主要有支持向量機(jī)(SVM)[2]、神經(jīng)網(wǎng)絡(luò)[3]、卷積神經(jīng)網(wǎng)絡(luò)[4]。在此基礎(chǔ)上為進(jìn)一步提高檢測系統(tǒng)的檢測性能[5],機(jī)器學(xué)習(xí)融合群體智能算法的檢測系統(tǒng)也逐漸被研究者提起。例如:利用蟻群算法優(yōu)化SVM參數(shù)[6],混沌粒子群算法結(jié)合最小二乘支持向量機(jī)的混合算法[7],以及遺傳算法優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)的方法[8-9]。針對原始網(wǎng)絡(luò)數(shù)據(jù)包含大量冗余和無用特征,易出現(xiàn)“維數(shù)災(zāi)難”[10]降低入侵檢測效率,群體智能算法融合傳統(tǒng)機(jī)器學(xué)習(xí)存在入侵檢測準(zhǔn)確率低,卷積神經(jīng)網(wǎng)絡(luò)(CNN)的網(wǎng)絡(luò)結(jié)構(gòu)及初始參數(shù)對其性能影響較大的問題,本文提出結(jié)合隨機(jī)森林(RF)和粒子群(PSO)優(yōu)化CNN網(wǎng)絡(luò)結(jié)構(gòu)和初始參數(shù)的方法構(gòu)建入侵檢測模型。利用隨機(jī)森林對獨(dú)熱編碼后的數(shù)據(jù)進(jìn)行特征度量。在不影響分類性能的基礎(chǔ)上,保留主要特征信息,實現(xiàn)數(shù)據(jù)的最優(yōu)壓縮[11-12]。以此來縮減建立模型時數(shù)據(jù)的特征數(shù),降低模型復(fù)雜度。采用粒子群優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)和初始參數(shù),使卷積神經(jīng)網(wǎng)絡(luò)在非經(jīng)驗指導(dǎo)下自主選擇[13]最佳網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)和初始權(quán)重。實驗證明,相比之下,本文方法有效地提升了分類的準(zhǔn)確率和精確率,降低了誤報率。
隨機(jī)森林(RF)是由一組決策樹構(gòu)成的集成機(jī)器學(xué)習(xí)算法。運(yùn)用其魯棒性和分類準(zhǔn)確性特點,可對數(shù)據(jù)特征進(jìn)行篩選。使用隨機(jī)森林進(jìn)行特征選擇的兩個基本指標(biāo)分別是袋外數(shù)據(jù)誤差和基尼指數(shù)。
(1)
隨機(jī)森林使用基尼指數(shù)作為特征分割效果度量指標(biāo),其原則是選擇基尼指數(shù)小的特征,其值越小得到的分割效果就越好。主要計算過程是:根據(jù)所給節(jié)點t可計算出當(dāng)前節(jié)點的基尼指數(shù),然后選擇某一個特征構(gòu)建分離節(jié)點,劃分后的兩個子集也可計算出各自的基尼指數(shù),計算父節(jié)點與子節(jié)點的基尼指數(shù)差值作為當(dāng)前特征的重要性度量。其公式如下:
(2)
式中:Q為目標(biāo)變量的樣本個數(shù);p(k/t)為節(jié)點t中目標(biāo)變量為第k類的條件概率。使用式(2)計算所有決策樹的基尼指數(shù),對所有特征的重要性進(jìn)行排名,作為本文訓(xùn)練模型的輸入數(shù)據(jù)。
粒子群優(yōu)化算法(PSO)最初是由Eberhart和Kennedy于1995年提出的群體智能啟發(fā)式全局算法。該算法是模擬鳥群在飛行中覓食的社會行為,通過群體協(xié)作改進(jìn)目標(biāo)解來優(yōu)化問題的計算方法。粒子群算法與其他優(yōu)化方法相比具有的明顯特色是所需調(diào)整的參數(shù)少、收斂速度快、搜索范圍廣。其算法原理如下:
假設(shè)一個具有m個粒子的種群在一個D維空間進(jìn)行搜索,每個粒子都具有記憶功能,存儲所搜尋到的最佳位置表示為pbest,種群所搜尋的最好位置表示為gbest。每個粒子都根據(jù)搜索到的pbest和gbest調(diào)節(jié)自身速度vd和xd位置,以實現(xiàn)搜尋整個區(qū)域空間。通常位置變化范圍限定在[Xmin,d,Xmax,d],速度變化范圍限定在[-Vmax,d,Vmax,d]。第i個粒子在D維中的速度和位置更新公式為:
(3)
(4)
卷積神經(jīng)網(wǎng)絡(luò)起始于20世紀(jì)70年代,基本特征包含稀疏連接、權(quán)重共享和降采樣。其中LeNet-5是1998年LeCun等提出的迄今為止最經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。其網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1所示。
圖1 LeNet-5網(wǎng)絡(luò)結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)的卷積層主要通過上一層的特征向量使用激活函數(shù)與卷積核進(jìn)行卷積來進(jìn)行特征提取。假設(shè)yi為神經(jīng)元的輸出,xi為輸入向量。對于輸入向量與輸出向量之間對應(yīng)關(guān)系可表示為:
(5)
式中:n為輸入到神經(jīng)元j的向量總數(shù);*表示為卷積;wij為輸入向量xi與神經(jīng)元j連接的權(quán)重參數(shù);bj為偏置參數(shù);f()是激活函數(shù)。
本文卷積神經(jīng)網(wǎng)絡(luò)使用池化類型為Max-pooling,主要用于降采樣、全連接層整合卷積層或者池化層中具有類別區(qū)分性的局部信息[14]。
本文采用結(jié)合隨機(jī)森林(RF)的粒子群(PSO)優(yōu)化CNN網(wǎng)絡(luò)結(jié)構(gòu)和初始參數(shù)的融合算法構(gòu)建入侵檢測模型。主要使用隨機(jī)森林對原始數(shù)據(jù)進(jìn)行特征度量以減少數(shù)據(jù)維度和對硬件的依賴性;運(yùn)用粒子群算法的全局尋優(yōu)能力強(qiáng)、參數(shù)少等特點來優(yōu)化CNN網(wǎng)絡(luò)結(jié)構(gòu)及初始權(quán)重,有效地避免了CNN使用梯度下降算法使訓(xùn)練落入局部最優(yōu),影響模型性能。
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)合權(quán)值共享與局部區(qū)域連接技術(shù),降低了網(wǎng)絡(luò)模型的復(fù)雜度,減少了參數(shù)規(guī)模。但是,在研究過程中,傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)人工選取的濾波器大小、濾波器個數(shù)、激活函數(shù)和學(xué)習(xí)率等參數(shù)對卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)準(zhǔn)確率有較大影響。而且,傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的初始權(quán)重在使用最陡梯度下降算法訓(xùn)練過程中容易陷入局部最優(yōu),對學(xué)習(xí)性能產(chǎn)生較大影響。所以,本文提出利用具有參數(shù)少、收斂速度快、搜索范圍廣等特點的粒子群算法優(yōu)化CNN網(wǎng)絡(luò)結(jié)構(gòu)及初始參數(shù)。每一個粒子就是一種CNN網(wǎng)絡(luò)結(jié)構(gòu),其原理為:在卷積神經(jīng)網(wǎng)絡(luò)計算出期望值與實際值之間的誤差后,每個粒子都將CNN網(wǎng)絡(luò)的濾波器大小、濾波器個數(shù)、激活函數(shù)、學(xué)習(xí)率、初始權(quán)重、初始偏置作為粒子維度。以卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)得到的測試誤差作為適應(yīng)度函數(shù)值,經(jīng)過粒子群迭代選取訓(xùn)練過程最優(yōu)模型即為最終測試模型。圖2為PSO優(yōu)化CNN網(wǎng)絡(luò)結(jié)構(gòu)及初始參數(shù)算法流程。
圖2 PSO-CNN算法流程
PSO優(yōu)化CNN網(wǎng)絡(luò)結(jié)構(gòu)和初始參數(shù)的融合算法過程如下:
(1) 初始化系統(tǒng)參數(shù),如粒子群算法的迭代次數(shù)、學(xué)習(xí)因子、種群規(guī)模、每個粒子的位置向量及速度向量、常系數(shù)c1和c2、慣性權(quán)值、每個粒子個體極值與全局最優(yōu)值及其他參數(shù)[15]。
(2) 設(shè)置卷積神經(jīng)網(wǎng)絡(luò)需優(yōu)化的超參數(shù)取值范圍,并作為各粒子維度的速度和位置的更新區(qū)間,其中粒子位置作為網(wǎng)絡(luò)參數(shù)取值。隨機(jī)生成包括位置和速度的種群粒子作為PSO粒子初始化。
(3) 將初始化粒子作為CNN網(wǎng)絡(luò)結(jié)構(gòu),根據(jù)式(3)和式(4)更新粒子速度和位置,通過訓(xùn)練CNN得到CNN測試誤差作為粒子適應(yīng)度函數(shù)值,如果得到的適應(yīng)度值優(yōu)于個體最佳值,則更新個體最佳值;若得到的粒子適應(yīng)度值優(yōu)于群體極值,則更新群體極值;若群體極值滿足閾值判定或者迭代次數(shù)結(jié)束,所得的群體極值即為所求最優(yōu)的CNN網(wǎng)絡(luò)結(jié)構(gòu)。否則,返回步驟(3)。
本文依據(jù)CIDF(Common Intrusion Detection Framework)及IDWG(Intrusion Detection Working Group)兩個組織的入侵檢測系統(tǒng)設(shè)計標(biāo)準(zhǔn)[16]構(gòu)建基于隨機(jī)森林與粒子群優(yōu)化CNN結(jié)構(gòu)的入侵檢測模型。該模型主要包括原始數(shù)據(jù)、數(shù)據(jù)規(guī)范化、PSO-CNN模塊、響應(yīng)模塊4個模塊,其模型結(jié)構(gòu)如圖3所示。
圖3 RF-PSO-CNN入侵檢測結(jié)構(gòu)
PSO-CNN模塊主要分為PSO-CNN入侵檢測模型和PSO-CNN檢測代理兩部分,PSO-CNN入侵檢測模型部分功能為輸入規(guī)范化數(shù)據(jù)進(jìn)行模型訓(xùn)練得到最優(yōu)分組檢測模型,PSO-CNN檢測代理部分功能為對數(shù)據(jù)進(jìn)行分析并完成檢測階段的數(shù)據(jù)檢測與處理。
結(jié)合隨機(jī)森林(RF)的粒子群(PSO)優(yōu)化CNN網(wǎng)絡(luò)結(jié)構(gòu)和初始參數(shù)的融合算法構(gòu)建入侵檢測模型過程如下:
(1) 原始數(shù)據(jù):本實驗數(shù)據(jù)集采用KDD-CUP99入侵檢測數(shù)據(jù)集。
(2) 數(shù)據(jù)規(guī)范化:本文對原始數(shù)據(jù)集進(jìn)行one-hot編碼后,使用隨機(jī)森林特征度量標(biāo)準(zhǔn)篩選顯著特征,以降低數(shù)據(jù)特征數(shù)和計算復(fù)雜度。并對選擇出的子特征數(shù)據(jù)集進(jìn)行歸一化處理,以提高網(wǎng)絡(luò)訓(xùn)練準(zhǔn)確率。
(3) PSO-CNN模塊:CNN使用PSO優(yōu)化后的最優(yōu)參數(shù)及初始權(quán)重來進(jìn)行訓(xùn)練樣本并建造入侵檢測模型,使用規(guī)范化后的測試數(shù)據(jù)對最優(yōu)模型分類器進(jìn)行驗證分析。
(4) 響應(yīng)模塊:本模塊主要用以接收PSO-CNN模塊的檢測結(jié)果,并對入侵行為進(jìn)行響應(yīng)。
本文采用KDD-CUP99中10%的網(wǎng)絡(luò)入侵檢測數(shù)據(jù)子集,該數(shù)據(jù)集的測試數(shù)據(jù)包含了一些未出現(xiàn)在訓(xùn)練數(shù)據(jù)中的攻擊類型,使得檢測更具有現(xiàn)實性。整個數(shù)據(jù)子集中入侵行為細(xì)分為39類,又可分為遠(yuǎn)程攻擊(R2L)、獲取根權(quán)限攻擊(U2R)、拒絕服務(wù)攻擊(DOS)、探測攻擊(Probe)四種類型。該數(shù)據(jù)集包含訓(xùn)練樣本數(shù)494 021條,測試樣本數(shù)311 029條。實驗數(shù)據(jù)類別、數(shù)量見表1。
表1 實驗數(shù)據(jù)的類別與數(shù)量
KDD-CUP99數(shù)據(jù)集的每條記錄都有41維特征和1個被標(biāo)注為正?;蛘弋惓5臉?biāo)簽特征。本文使用Python對數(shù)據(jù)進(jìn)行預(yù)處理。具體步驟如下:
(1) 字符型特征數(shù)字化后才能輸入到模型,因此將41維特征中的服務(wù)類型特征轉(zhuǎn)化為70維能被計算機(jī)識別的二進(jìn)制特征,協(xié)議類型特征轉(zhuǎn)換為3維二進(jìn)制特征,狀態(tài)特征轉(zhuǎn)換為11維二進(jìn)制特征。41維特征的數(shù)據(jù)集轉(zhuǎn)換為122維數(shù)據(jù)集。
(2) 將獨(dú)熱編碼后得到的122個數(shù)字特征,使用隨機(jī)森林進(jìn)行特征重要性度量,獲取32維特征。
(3) 將篩選出的數(shù)值型特征進(jìn)行歸一化,消除特征間的量綱影響,提升模型的收斂速度。使用式(6)將數(shù)據(jù)統(tǒng)一映射到[0,1]區(qū)間上。
(6)
式中:Mmax為特征數(shù)據(jù)中的最大值;Mmin為特征數(shù)據(jù)中最小值;y為要?dú)w一化的特征數(shù)據(jù)。
隨機(jī)森林特征提取思想是由貝爾實驗室提出的一種特征度量方法,主要通過袋外數(shù)據(jù)誤差和基尼指數(shù)這兩個基本指標(biāo)實現(xiàn)特征提取。具體到本文來講,獨(dú)熱編碼后的特征向量還包含大量冗余和無用特征,會造成模型性能變差。為了提取出強(qiáng)相關(guān)性特征,使用隨機(jī)森林進(jìn)行特征提取處理。具體步驟:(1) 計算符號特征數(shù)字化后所得到的122維特征的重要性,并按降序排序;(2) 確定要剔除的比例,由于隨機(jī)森林的隨機(jī)性,每次大約產(chǎn)生25~35個顯著特征,所以本文每次選取前35個特征;(3) 重復(fù)9次度量,選取特征交集,最終獲取32維特征。
數(shù)據(jù)集經(jīng)上述過程處理后,隨機(jī)森林算法將無代表性的特征剔除,所產(chǎn)生的子數(shù)據(jù)集在隨機(jī)森林群投票機(jī)制下,取得了不錯的特征相關(guān)性效果。綜上,隨機(jī)森林算法降低了特征維數(shù),減少了特征間的冗余性,并且使得特征可以被自動提取。
為了驗證本文提出的結(jié)合RF降維的PSO優(yōu)化CNN網(wǎng)絡(luò)結(jié)構(gòu)的有效性,本文采用Linux系統(tǒng),使用Python 3.6編寫以TensorFlow為后端的深度學(xué)習(xí)框架Keras,該框架邏輯清晰,可快速實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)。
本文所述的粒子群算法和卷積神經(jīng)網(wǎng)絡(luò)算法都需要配置一些參數(shù),其中,粒子群算法相關(guān)參數(shù)見表2,卷積神經(jīng)網(wǎng)絡(luò)相關(guān)參數(shù)初始化范圍見表3。
表2 粒子群算法相關(guān)參數(shù)
表3 卷積神經(jīng)網(wǎng)絡(luò)相關(guān)參數(shù)初始化范圍
本文使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,其中卷積層數(shù)量為2層,卷積池化類型為Max-pooling,全連接層激活函數(shù)類型為Sigmoid,每一批次訓(xùn)練的批量大小為1 024,迭代次數(shù)為10次。
首先在經(jīng)RF預(yù)處理過的KDD-CUP99數(shù)據(jù)集下驗證根據(jù)人工經(jīng)驗選取的卷積神經(jīng)網(wǎng)絡(luò)參數(shù)在不同的組合方式下對CNN準(zhǔn)確率的影響,結(jié)果如表4所示。其中:C1代表第一層卷積(30(5)代表30個5×5的卷積核);C2代表第二層卷積;Acti代表兩層卷積的激活函數(shù);F-Acti代表全連接層的激活函數(shù);α代表學(xué)習(xí)率;Acc代表準(zhǔn)確率。
表4 人工選擇的CNN結(jié)構(gòu)及其識別率
CNN1與CNN2僅全連接層激活函數(shù)F-Acti不同。在Epoch=1的情況下,CNN1的精確率為42.21%,CNN2的精確率為91.54%,準(zhǔn)確率相差49.33百分點。CNN3和CNN4卷積層不同,同樣在Epoch=1的情況下,CNN3的精確率為90.91%,CNN4的精確率為92.25%,準(zhǔn)確率相差1.34百分點。結(jié)合表4中CNN1-CNN4可知,全連接層的激活函數(shù)在使用ReLU時效果較差,卷積層中卷積核個數(shù)及大小對結(jié)果有一定的影響。綜上,人工經(jīng)驗下選取參數(shù)對精確率有一定的影響。
其次為了確保本文方法與已有方法的對比實驗的完整有效性,本文實驗評價指標(biāo)選擇多次實驗的平均值。并采用準(zhǔn)確率、精確率、誤報率三項指標(biāo)對算法模型進(jìn)行評價。三項指標(biāo)定義如下:
本文使用數(shù)據(jù)預(yù)處理后的KDD-CUP99數(shù)據(jù)集作為輸入數(shù)據(jù),分別用于多種優(yōu)化算法進(jìn)行對比,仿真實驗結(jié)果如表5所示。表5中最后一行是未經(jīng)過任何優(yōu)化的CNN,且輸入數(shù)據(jù)為未經(jīng)過隨機(jī)森林特征篩選的大維度數(shù)據(jù)集,測試準(zhǔn)確率、檢測率較低。RF-CNN使用經(jīng)過隨機(jī)森林降維后的數(shù)據(jù)集作為CNN的輸入數(shù)據(jù)。RF-PSO-BP用粒子群算法優(yōu)化神經(jīng)網(wǎng)絡(luò),且使用隨機(jī)森林降維后的數(shù)據(jù)作為輸入數(shù)據(jù)。RF-PSO-SVM是基于隨機(jī)森林降維作為輸入數(shù)據(jù)的粒子群方法優(yōu)化SVM參數(shù)。本文方法是結(jié)合RF降維的粒子群算法優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)初始參數(shù)與網(wǎng)絡(luò)結(jié)構(gòu)。
表5 實驗結(jié)果比較(%)
表5中,RF-CNN與CNN使用相同的網(wǎng)絡(luò)結(jié)構(gòu)及初始參數(shù),可以發(fā)現(xiàn)使用隨機(jī)森林降維的數(shù)據(jù)集作為輸入數(shù)據(jù)的CNN較使用傳統(tǒng)數(shù)據(jù)集的CNN在準(zhǔn)確率、檢測率上有極大提升,在誤報率上有較大下降,說明使用隨機(jī)森林進(jìn)行特征度量的重要性。RF-PSO-BP和RF-PSO-SVM與本文所提結(jié)合RF降維的PSO-CNN相比較,可以看出傳統(tǒng)機(jī)器學(xué)習(xí)融合群體智能算法存在入侵檢測準(zhǔn)確率低的問題。RF-CNN的識別率在此次四個對比實驗中僅次于本文方法,但因其網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)為人工經(jīng)驗選取,對其性能影響較大。本文方法使用群體智能算法PSO自動選取CNN最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu),測試準(zhǔn)確率上升至94.07%。相比于其他四者在分類上均有較好的效果;同時檢測率上升至92.95%,誤報率下降至1.26%。由此可知,與傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)及PSO融合傳統(tǒng)機(jī)器學(xué)習(xí)相比較本文方法有較好的性能提升。
此外,使用本文方法與目前比較流行集成學(xué)習(xí)常用方法做性能對比,結(jié)果如圖4所示。其中:GBDT代表梯度提升決策樹算法(Gradient Boosting Decision Tree);XGBoost代表極端梯度提升(Extreme Gradient Boosting)方法。由于這里使用的四種集成學(xué)習(xí)方法用到的都是基于樹的算法,所以不需要進(jìn)行標(biāo)準(zhǔn)化、歸一化、正則化。
圖4 不同方法對比
針對傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)及PSO融合傳統(tǒng)機(jī)器學(xué)習(xí)在入侵檢測中的不足,本文提出結(jié)合RF降維的PSO優(yōu)化CNN網(wǎng)絡(luò)結(jié)構(gòu)的入侵檢測方法,將PSO的全局尋優(yōu)特點與CNN提取特征的局部相關(guān)性能力融合起來。通過在KDD-CUP99數(shù)據(jù)集上的仿真實驗證明:本文算法消除了在人工經(jīng)驗下選取參數(shù)的不確定性,實現(xiàn)了在非經(jīng)驗指導(dǎo)下選擇最佳CNN結(jié)構(gòu),提高了入侵檢測的準(zhǔn)確率和精確率,并降低了誤報率,為未來入侵檢測系統(tǒng)的研究提供了新的思路和方法。