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

圖1 深度神經網絡結構Fig.1 Deep neural network structure
圖中,輸入層、輸出層分別有n 和r 個神經元;隱藏層1 和隱藏層2 分別具有m 和a 個神經元;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 各個神經元的閾值,其中i=1,2,…,n;s=1,2,…,m。
w2su為隱藏層1 與隱藏層2 之間的權重,bu為隱藏層2 各個神經元閾值,其中s=1,2,…,m;u=1,2,…,a。
w3uj為隱藏層2 與輸出層之間的權重,bj為輸出層個神經元的閾值,其中u=1,2,…,a;j=1,2,…,r。
f(.)為激活函數,k 為樣本中第k 個數據。
則有以下計算公式:

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

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

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

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


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

試驗數據采用KDD CUP99 網絡入侵數據集,該數據集約有500 萬條連接數據記錄,每一條數據記錄包含41 個特征屬性和1 個類標簽屬性,數據集包含4 種攻擊類型和1 種正常數據標簽。部分數據記錄如下:
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”數據用做訓練數據,將“orrected”數據用做測試數據,見表1。

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

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

表2 遺傳算法相關參數和深度神經網絡優化參數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 種深度神經網絡模型結構,隱藏層數為3 層和4 層,輸入層和輸出層都為1,見表3。然后,利用遺傳算法對深度神經網絡模型進行優化,并利用入侵檢測數據集進行測試。所有的深度神經網絡模型都采用relu 函數作為激活函數,該函數是一種非線性函數,可以減少采用其他激活函數導致計算量大的問題,有助于提高深層神經網絡的收斂速度,降低梯度消失,加快訓練速度,計算公式如下:


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

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

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