譚敏生,彭 敏,楊帥創(chuàng),丁 琳,吳 冕
(南華大學 計算機學院,衡陽421000)
隨著網(wǎng)絡技術的高速發(fā)展與廣泛應用,其安全問題備受國家與社會的強烈關注。入侵檢測作為安全防范的一種重要手段,通過收集和分析計算機系統(tǒng)和用戶的事件信息,及時發(fā)現(xiàn)入侵行為,提醒管理人員采取相應措施,采取有效的防范攻擊,減少相應損失。在數(shù)據(jù)挖掘和機器學習理論的不斷發(fā)展下,研究人員將機器學習算法與入侵檢測相結合,以獲得更高的檢測效率和準確率。
目前,基于機器學習的入侵檢測技術,主要有統(tǒng)計、聚類和分類[1]。
在基于統(tǒng)計的入侵檢測中,文獻[2]提出標準偏差歸一化熵精度分類器組合方法,利用9 個突出的分類器進行檢測,檢測率提高了3%~10%。文獻[3]提出基于非線性相關系數(shù)的入侵檢測方法,能夠準確地提取網(wǎng)絡流量記錄之間的線性和非線性相關性,能夠降低誤報率,有效區(qū)分正常和異常行為。
在基于聚類的入侵檢測中,文獻[4]提出基于K均值聚類算法,提高了入侵檢測的準確率;文獻[5]采用所改進的K 均值方法建立新的小訓練數(shù)據(jù)集,代表整個原始訓練數(shù)據(jù)集,大大縮短了分類器的訓練時間,提高了入侵檢測系統(tǒng)的性能。文獻[6]將K最近鄰KNN(k-nearest neighbor)和支持向量機SVM(support vector machine)相結合來檢測攻擊。
在基于分類的入侵檢測中,文獻[7]將支持向量機分類算法應用于入侵檢測;文獻[8]提出了基于K均值聚類和序列最小優(yōu)化分類相結合的混合機器學習入侵檢測技術。文獻[9]提出了基于機器學習的分類器來提高精確率。
然而,上述方法會隨著數(shù)據(jù)維數(shù)的不斷提高,丟失部分數(shù)據(jù)之間的隱形相關性,忽略一些有效的特征。近年來,深度學習已經(jīng)成為當今研究的一個熱點,深度神經(jīng)網(wǎng)絡等多種深度學習算法已經(jīng)逐步應用于入侵檢測中,取得了較好的效果。文獻[10]提出了5 層神經(jīng)網(wǎng)絡結構的檢測模型,將輸出類別分成4 種情況并進行分析。文獻[11]提出了基于多層人工神經(jīng)網(wǎng)絡和智能特征選擇的入侵檢測算法。文獻[12]將人工神經(jīng)網(wǎng)絡作為分類器對網(wǎng)絡中的數(shù)據(jù)包進行分類,同樣取得了不錯的檢測效果;文獻[13]利用遺傳優(yōu)化神經(jīng)網(wǎng)絡的入侵特征選取,進一步提高了網(wǎng)絡入侵檢測準確率。
然而,基于深度神經(jīng)網(wǎng)絡方法應用于入侵檢測領域時,其檢測性能易受權重、閾值、學習率的影響,導致準確率下降。在此,利用遺傳算法強大的全局尋優(yōu)能力,對文獻[14]提出的基于NDNN 的入侵檢測系統(tǒng)進行優(yōu)化,通過遺傳算法的選擇、交叉和變異等操作,對深度神經(jīng)網(wǎng)絡的各隱藏層數(shù)目、學習率以及訓練次數(shù)進行尋優(yōu)。
2006年Hinton[14]提出了深度神經(jīng)網(wǎng)絡DNN(deep neural network)算法。該算法具有更深的隱藏層數(shù)及神經(jīng)元數(shù),在處理大規(guī)模數(shù)據(jù)方面與淺層神經(jīng)網(wǎng)絡相比,能充分對數(shù)據(jù)特征進行非線性的映射,進一步挖掘各個特征之間的聯(lián)系,提高特征提取的準確度。假定深度神經(jīng)網(wǎng)絡模型由1 個輸入層、1 個輸出層和2 個隱藏層所構成,如圖1所示。

圖1 深度神經(jīng)網(wǎng)絡結構Fig.1 Deep neural network structure
圖中,輸入層、輸出層分別有n 和r 個神經(jīng)元;隱藏層1 和隱藏層2 分別具有m 和a 個神經(jīng)元;w1為輸入層與隱藏層1 之間的權重;w2為隱藏層1 與隱藏2 之間的權重;w3為隱藏層2 與輸出層之間的權重。
在前向傳遞中,假設:
x=[x1,x2,…,xn-1,xn]為輸入層輸入向量;
yb=[yb1,yb2,…,ybr]為輸出層輸入向量;
gb=[gb1,gb2,…,gbm]為隱藏層1 的輸入向量,
go=[go1,go2,…,gom]為隱藏層1 的輸出向量;
hb=[hb1,hb2,…,hbn]為隱藏層2 的輸入向量,
ho=[ho1,ho2,…,hon]為隱藏層2 的輸出向量。
w1is為輸入層與隱藏層1 之間的權重,bs為隱藏層1 各個神經(jīng)元的閾值,其中i=1,2,…,n;s=1,2,…,m。
w2su為隱藏層1 與隱藏層2 之間的權重,bu為隱藏層2 各個神經(jīng)元閾值,其中s=1,2,…,m;u=1,2,…,a。
w3uj為隱藏層2 與輸出層之間的權重,bj為輸出層個神經(jīng)元的閾值,其中u=1,2,…,a;j=1,2,…,r。
f(.)為激活函數(shù),k 為樣本中第k 個數(shù)據(jù)。
則有以下計算公式:

在反向傳遞中,因為輸出層與真實值之間會存在一定的誤差,所以通過誤差函數(shù)來刻畫預測值和真實值之間的誤差。輸入值往往是固定不變的,誤差的調(diào)節(jié)需要通過對每個輸出神經(jīng)元對應的權重和閾值進行。

式中:δj(k)為誤差函數(shù)對輸出層各神經(jīng)元求偏導的值;δu(k)為誤差函數(shù)對隱藏層2 各神經(jīng)元求偏導的值;δs(k)為誤差函數(shù)對隱藏層1 各神經(jīng)元求偏導的值;w3ju為輸出層和隱藏層2 調(diào)整的Δ權重值;w2us為隱藏層2 和隱藏1 調(diào)整的權重值;為隱藏層1 和輸入層的調(diào)整權重值;bj(k)為輸出層閾值的調(diào)整值;bu(k)為隱藏層2 閾值的調(diào)整值;bs(k)為隱藏層1 閾值的調(diào)整值;η 為學習率。
由上式可知,隱藏層神經(jīng)元個數(shù)可以決定深度神經(jīng)網(wǎng)絡的權重和閾值,從而決定正向傳播階段學習和反向?qū)W習階段的性能。而在神經(jīng)網(wǎng)絡的反向誤差調(diào)整中,學習率的取值和隱藏層神經(jīng)元個數(shù)同樣可以影響網(wǎng)絡的收斂速度和訓練結果的好壞。
在此所提出的基于遺傳算法的深度神經(jīng)網(wǎng)優(yōu)化算法GAODNN(genetic algorithm optimization deep neural network),利用遺傳算法強大的全局隨機搜索能力及深度神經(jīng)網(wǎng)絡挖掘特征聯(lián)系能力,克服了深度神經(jīng)網(wǎng)絡中權重、閾值和學習率對網(wǎng)絡學習的影響和陷入局部最優(yōu)問題。
在此將深度神經(jīng)網(wǎng)絡的各隱藏層神經(jīng)元、學習率和訓練次數(shù)作為遺傳算法的種群,然后通過浮點數(shù)編碼的方式進行編碼,各隱藏層神經(jīng)元的區(qū)間范圍為[1,100],訓練次數(shù)的區(qū)間范圍為[1,50],學習率的區(qū)間范圍為[0.00001,0.05]。
適應度函數(shù)是遺傳算法評價各個個體好壞的依據(jù),往往會將適應度高的個體進行下一代遺傳操作。在此將神經(jīng)網(wǎng)絡訓練和預測后,使用二分類交叉熵作為損失函數(shù),用所得到的準確率來定義適應度函數(shù),公式為

選擇算子是將當前種群中選擇好的個體作為父代將基因傳給下一代。在此使用錦標賽選擇tournament selection 算法作為遺傳算法的選擇策略。該算法具有更小的復雜度,易并行化處理,不容易陷入局部最優(yōu),并且不需要對所有適應度值進行排序處理。
交叉算子使用洗牌交叉算法,在交叉之前在父代中利用random.shuffle 函數(shù)進行洗牌運算,然后當在(0,1)之間產(chǎn)生的隨機數(shù)小于所給的交叉率大小,則進行交叉變換。
在變異算子中,當在(0,1)之間產(chǎn)生的隨機數(shù)小于所給的變異率大小,則進行變異操作。其中隱藏層神經(jīng)元個數(shù)、學習率和訓練次數(shù)變異的規(guī)則為

式中:c.lr 為種群中的學習率;c.maxe 為種群中的訓練次數(shù);c.Li為種群中隱藏層神經(jīng)元個數(shù),i=[1,2,…]。
在此給出GAODNN 算法描述。


根據(jù)GAODNN,提出了一種基于優(yōu)化深度神經(jīng)網(wǎng)絡的入侵檢測算法GAODNN-IDA (genetic algo rithm optimization deep neural network intrusion detection algorithm)。利用遺傳算法的全局尋優(yōu)能力和深度神經(jīng)網(wǎng)絡的特征提取能力,對入侵數(shù)據(jù)進行檢測,將通過GAODNN 算法獲得的DNN 各隱藏層神經(jīng)元數(shù)、學習率以及訓練次數(shù),更新到基于深度神經(jīng)網(wǎng)絡的入侵檢測算法中,并重新進行訓練測試,通過對攻擊數(shù)據(jù)和正常數(shù)據(jù)進行學習來判斷入侵數(shù)據(jù)的屬性。在此給出了GAODNN-IDA 算法描述。

試驗數(shù)據(jù)采用KDD CUP99 網(wǎng)絡入侵數(shù)據(jù)集,該數(shù)據(jù)集約有500 萬條連接數(shù)據(jù)記錄,每一條數(shù)據(jù)記錄包含41 個特征屬性和1 個類標簽屬性,數(shù)據(jù)集包含4 種攻擊類型和1 種正常數(shù)據(jù)標簽。部分數(shù)據(jù)記錄如下:
0,tcp,http,SF,239,304,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,10,20,0.00,0.00,0.00,0.00,1.00,0.00,0.20,121,255,1.00,0.00,0.01,0.04,0.00,0.00,0.00,0.00,normal.
0,icmp,ecr_i,SF,1032,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,511,511,0.00,0.00,0.00,0.00,1.00,0.00,0.00,255,255,1.00,0.00,1.00,0.00,0.00,0.00,0.00,0.00,smurf.
0,tcp,http,SF,54540,8314,0,0,0,2,0,1,1,0,0,0,0,0,0,0,0,0,3,3,0.00,0.00,0.00,0.00,1.00,0.00,0.00,100,100,1.00,0.00,0.01,0.00,0.01,0.01,0.01,0.01,back.
將“kddcup.data_10_percent_corrected”數(shù)據(jù)用做訓練數(shù)據(jù),將“orrected”數(shù)據(jù)用做測試數(shù)據(jù),見表1。

表1 KDD 數(shù)據(jù)類型Tab.1 KDD data types
由于KDD CUP99 數(shù)據(jù)集的每一個連接都由41 維特征組成,樣本數(shù)據(jù)集數(shù)據(jù)非常多,因此需要從中選擇合理的數(shù)據(jù)進行試驗分析。文中試驗根據(jù)文獻[15]所提出觀點,將對決策判定沒有任何作用的屬性刪除,即刪除數(shù)據(jù)集中l(wèi)and,urgent,su_attempted,num_outbound_cmds,is_hot_login 這5 項屬性。由于該數(shù)據(jù)集每一條正常或者異常數(shù)據(jù)記錄都包含41 個特征屬性,大部分特征數(shù)據(jù)是數(shù)值型的,但協(xié)議名、網(wǎng)絡服務類型和flag 標志位為非數(shù)值型,為了便于深度神經(jīng)網(wǎng)絡計算與處理,將這些非數(shù)值數(shù)據(jù)進行數(shù)值化編碼。例如,對于protocol_typr 特征,其包含3 個符號即tcp,udp,icmp,將其編碼為0,1,2。同理,對網(wǎng)絡服務類型和flag 標志位進行相應的數(shù)值化處理。為了讓深度神經(jīng)網(wǎng)絡更容易訓練,收斂速度更快,對所有的數(shù)據(jù)按照式(15)進行歸一化處理:

式中:Mmin為某一列中最小的值;Mmax為某一列中最大的值;y 為需要歸一化的值。
試驗在臺式計算機上完成。計算機配置如下:Inter3.50 GHz 處理器,128 GB 內(nèi)存,64 位Windows 10 操作系統(tǒng);編程工具為基于TensorFlow 的Keras。遺傳算法相關參數(shù)設置和深度神經(jīng)網(wǎng)絡優(yōu)化參數(shù)見表2,其中所有隱藏數(shù)目一致。

表2 遺傳算法相關參數(shù)和深度神經(jīng)網(wǎng)絡優(yōu)化參數(shù)Tab.2 Genetic algorithm related parameters and DNN optimization parameters
入侵檢測指標主要有準確率AR(accuracy rate)、檢測率DR(detection rate)和誤報率FAR(flase alarm rate)。通過這3 個指標可以知道入侵檢測方法的性能。指標的計算方法如下:

式中:TP為真正(true positive);TN為真負(true negative);FP為假正(false positive);FN為假負(false negative)。
5.3.1 GAODNN-IDA 與其他DNN 的比較
為驗證本文所提算法的有效性,首先給出6 種深度神經(jīng)網(wǎng)絡模型結構,隱藏層數(shù)為3 層和4 層,輸入層和輸出層都為1,見表3。然后,利用遺傳算法對深度神經(jīng)網(wǎng)絡模型進行優(yōu)化,并利用入侵檢測數(shù)據(jù)集進行測試。所有的深度神經(jīng)網(wǎng)絡模型都采用relu 函數(shù)作為激活函數(shù),該函數(shù)是一種非線性函數(shù),可以減少采用其他激活函數(shù)導致計算量大的問題,有助于提高深層神經(jīng)網(wǎng)絡的收斂速度,降低梯度消失,加快訓練速度,計算公式如下:


表3 深度經(jīng)網(wǎng)絡結構參數(shù)Tab.3 DNN structure parameters
所有深度神經(jīng)網(wǎng)絡模型都采用Adam 優(yōu)化器,該優(yōu)化器可以替代傳統(tǒng)隨機梯度下降過程的一階優(yōu)化算法,實現(xiàn)高效的計算,適合大規(guī)模數(shù)據(jù);使用“binary_crossentropy”作為損失計算函數(shù)。得到的檢測結果如果見表4。

表4 GAODNN-IDA 與DNN 性能對比Tab.4 GAODNN-IDA and DNN performance comparison
由表4可知,經(jīng)過遺傳算法優(yōu)化的深度神經(jīng)網(wǎng)絡應用于入侵檢測,其準確率和檢測率有一定提升,誤報率有一定降低。
5.3.2 GAODNN 與其他機器學習算法的比較
將本文GAODNN3-IDA 算法與典型機器學習算法應用于入侵檢測并進行對比,所用數(shù)據(jù)集同樣經(jīng)過預處理過程,檢測結果見表5。

表5 GAODNN3-IDA 與其他典型機器學習算法的性能比較Tab.5 Performance comparison between GAODNN3-IDA and other typical machine learning
由表可知,GAODNN3-IDA 算法的準確率和檢測率明顯高于其他典型機器學習算法,誤報率明顯低于其他典型機器學習算法。因此,所提出的GAODNN3-IDA 算法明顯優(yōu)于其他幾種典型機器學習算法。
深度神經(jīng)網(wǎng)絡算法應用于入侵檢測領域,其檢測性能與隱藏層的權重、 閾值和學習率密切相關。本文利用遺傳算法強大的全局尋優(yōu)能力,通過遺傳算法的選擇、交叉和變異等操作獲得最優(yōu)隱藏層神經(jīng)元數(shù)和學習率來優(yōu)化深度神經(jīng)網(wǎng)絡;將優(yōu)化后的深度神經(jīng)網(wǎng)絡應用于入侵檢測,對入侵數(shù)據(jù)進行學習和識別。與BP神經(jīng)網(wǎng)絡、決策樹、支持向量機等算法相比,本文算法對入侵數(shù)據(jù)檢測的準確率、 檢測率有明顯提高,誤報率有明顯降低。