夏景明,丁春健+,談 玲
(1.南京信息工程大學 電子與信息工程學院,江蘇 南京 210044;2.南京信息工程大學 計算機與軟件學院,江蘇 南京 210044)
入侵檢測是互聯網安全體系中的一個重要部分,它通過對網絡中各種數據的收集與分析而檢測出異常信息[1]。隨著互聯網技術的日益發展,傳統的網絡入侵檢測技術已經無法應對更為復雜的信息防護問題,其檢測效果及水平的不足給網絡安全帶來的巨大隱患,因此,如何提高網絡入侵檢測技術對與網絡安全具有重大意義。
目前,與機器學習等領域相關的入侵檢測技術已成為國內外學者的一個重點研究方面,相關人員也提出了一些有效的入侵檢測方法。張曉峰等[2]利用K均值聚類算法對數據集劃分為不同的簇,再由SVM標記異常集群進行詳細分類,完成了對入侵攻擊的有效檢測并降低了誤報率;BlancoR等[3]利用遺傳算法重新排列輸入要素而優化卷積神經網絡,實現對數據集良好的入侵檢測;郝孫等[4]在分析BP神經網絡模型的基礎上引入了粒子群算法優化網絡的初始權值和閾值,提高了入侵檢測的整體性能;高妮等[5]利用深度信念網絡的特性提出了一種面向入侵檢測系統的深度信念網絡模型,即通過無監督學習對數據進行訓練及特征提取,再由監督學習微調網絡參數,提高了檢測水平。綜上所述,這些基于機器學習的檢測方法可以彌補傳統網絡入侵檢測技術的不足,并達到很好的效果,但仍可能存在一些問題:例如在使用常用機器學習方法或使用種群方法優化訓練過程時,可能會出現參數需要多次調節或陷入局部最優等問題而導致訓練過程不穩定[6];又如利用深度信念網絡可以提高入侵檢測水平,但在訓練數據集時無法確定網絡節點數而需增加訓練次數手動調節次數,從而造成對整個網絡訓練過程的影響等。
針對傳統網絡入侵技術的不足及上述方法可能會出現的問題,提出了一種改進的深度信念網絡應用于入侵檢測之中,即通過引入灰狼算法對深度信念網絡隱含層節點數進行全局尋優而近似確定網絡結構,并在網絡參數更新階段增加動量學習率,在提高入侵檢測效果的同時保證了網絡訓練的穩定性,最后利用NSL-KDD數據集[7]進行仿真驗證該方法的可行性,并與多種檢測方法進行對比。實驗結果表明,基于灰狼算法的深度信念網絡入侵檢測方法提高了入侵檢測的檢測效果。
深度信念網絡(deep belief network,DBN)[8]由多層受限玻爾茲曼機(restricted Boltzmann machine,RBM)及一層BP神經網絡堆疊而成,它訓練時分為無監督學習與有監督學習兩部分:首先采用自下而上的貪婪算法對RBM逐層進行無監督學習,并將底層RBM的輸出作為高層RBM的輸入,經過多次訓練迭代后得到無監督的DBN;其次在DBN的最后附加一層BP神經網絡,將最后一層RBM的輸出作為BP神經網絡的輸入而達到自上而下的監督學習,完成對網絡中訓練參數的微調。
受限玻爾茲曼機是深度信念網絡的主要組成部分[9],由可見層和隱含層兩部分構成,其結構特點是可見層與隱含層節點之間存在連接,而兩層之間的自身節點不存在連接,且所有可見層單元和隱含層單元都有兩種狀態:處于激活狀態時值為1,未激活狀態值為0,因此可表示為一個二分圖模型,如圖1所示。

圖1 RBN網絡結構
RBM進行無監督訓練設定為以下3個步驟:
(1)參數初始化求解。設v、h為RBM的可見層單元和隱含層單元,一個RBM網絡有n個可見層節點、m個隱含層節點,對于一組給定狀態并服從伯努利下的(v,h)值,每一個可見層節點與隱含層節點的取值之間都存在一個能量值,可通過計算求出整個聯合組態的能量E,即
(1)
其中,ai、bj表示第i、j個可見層節點的閾值,vi、hj表示可見層和隱含層的第i、j個節點,Wij則表示第i個可見層節點數和第j個隱含層節點數之間的權值;然后通過對能量進行指數化和正則化,便可得到可見層節點與隱含層節點集合分別處于某種狀態下(v,h)聯合概率分布公式,也可描述為可視層和隱含層單元激活的概率
(2)
(3)
其中,Z(θ)表示對可見層和隱含層節點集合的所有可能狀態的能量指數求和函數。
(2)訓練算法的選擇。為了使RBM在訓練時擬合樣本的分布并減少訓練時間,使用k步對比散度算法(CD-k)[10]作為RBM模型的標準算法,首先通過極大似然函數求導得到權值w,并使當前樣本在該分布下的概率最大,即
(4)
(5)
(6)
最終進行權值的更新。
(3)網絡的評估。一般使用重構誤差法作為RBM的評判標準,即以訓練數據作為初始狀態,經過RBM的分布進行一次Gibbs采樣,然后得到與原始數據的差異,若差異減小滿足條件,則訓練結束,否則返回總誤差進行網絡參數微調直到滿足誤差條件。
灰狼算法[11]是一種模擬自然界中灰狼群捕食與狩獵的群體智能優化方法,其中灰狼群內部具有明顯的社會等級制度,按職能可分為4類而構成金字塔結構,分別是具有領頭作用的首領狼、協助首領狼的副首領狼、負責其它工作的小頭目狼及普通灰狼,可表示為α、β、δ、ω,結構如圖2所示。

圖2 灰狼等級金字塔結構
整個算法可描述為3個部分:包圍、追捕和攻擊,最終成功捕獲獵物(即得到全局最優解)。
定義灰狼與獵物之間的距離為D,迭代次數為t,整個算法步驟如下所述:
(1)包圍獵物。灰狼群根據獵物大概位置對其包圍,距離為
D=C·Xp(t)-X(t)
(7)
X(t+1)=Xp(t)-A·D
(8)
其中,Xp(t)、X(t)可表示第t次迭代后獵物的位置(全局最優解位置)與灰狼群的位置(全局潛在解位置),而A與C為系數因子,計算公式為
A=2a·r1-a
(9)
C=2r2
(10)
其中,a從2到0線性遞減,與迭代次數有關;r1、r2為0~1之間的隨機數。
(2)追捕獵物。定義Dα、Dβ、Dδ為灰狼個體之間的距離,在該過程中灰狼群個體之間的位置會隨著獵物的位置改變而發生變化,根據灰狼群更新后的位置后便可重新確定獵物位置(即全局最優解),整個更新方程如下所示
(11)
(12)
(13)
(3)攻擊獵物。最終狼群對獵物進行攻擊并捕獲即可得到全局最優解。
由RBM訓練過程可知,DBN在訓練過程中一般通過重構誤差對網絡參數進行微調從而確定網絡整體結構,當返回總誤差較小并趨于穩定數值時,表示目前DBN結構較好。由于在構建DBN模型時無法具體確定其網絡隱含層節點數,只能類似BP神經網絡通過經驗公式或試湊法等大概確定[12],因此在訓練過程中需增加訓練次數及手動調節網絡節點數次數,為了避免在訓練過程中出現網絡性能損耗等問題,本文將根據特征向量的維度關系,在DBN模型搭建之后引入灰狼算法對DBN隱含層節點數進行尋優而近似確定網絡結構,使得重構誤差最小,并且為了避免由于引入灰狼算法可能導致DBN在訓練時與網絡設定的學習率沖突而造成收斂速度變慢、陷入局部最優等問題,在網絡參數更新階段引入了動量學習率[13],以保證網絡收斂速度而達到最佳訓練效果。公式如下
(14)
灰狼算法優化DBN模型可分為以下幾個步驟:
(1)構建一個DBN入侵檢測模型并初始化網絡參數,根據特征維度選擇適當的網絡節點數;
(2)將DBN模型的網絡隱含層節點數作為灰狼算法的求解對象并對其進行全局搜索而尋得最優解;
(3)判斷是否達到最大迭代次數,若符合要求,則將此時灰狼個體對應的隱含層節點數為全局最優解;
(4)設定DBN神經網絡的隱含層節點數,對其進行訓練并評估,判斷重構誤差是否減小;
(5)如果誤差減小到一定程度則滿足最優解條件,將最終求得的隱含層節點數作為DBN模型的初始訓練參數并近似確定DBN網絡結構,結束訓練;否則返回第(3)步,更新灰狼群個體位置并重新計算。整個流程如圖3所示。

圖3 灰狼算法優化DBN訓練過程
實驗的數據來源于NSL-KDD數據集,是KDDCup99數據集的一部分,其中KDDCup99數據集由美國麻省理工學院實驗室真實模擬美國空軍局域網9個星期的網絡連接數據,分成具有標識的訓練數據和未加標識的測試數據,雖然該數據集是在1999年發布,但由于其數據集的有效性仍可以評估入侵檢測模型的性能。NSL-KDD數據集去除了KDDCup99數據集中的冗余部分并重新調整了訓練測試集比例,并將異常數據類型分為4大類,分別為:DOS(拒絕服務攻擊)、R2L(來自遠程主的未授權訪問)、U2R(未授權的本地超級用戶特權訪問)、PROBE(端口監視或掃描),Normal則表示為正常數據,這在一定程度上對不同入侵檢測技術的準確評估更為有效,其分布情況見表1。
由于NSL-KDD數據集的總特征由38個數字型特征和3個字符型共同構成,無法直接用于入侵檢測算法,為了便于進行后續實驗可對其進行編碼處理。例如數據的第二列protcol_type包含tcp、udp、icmp這3種不同字符類型,實驗采用One-Hot編碼[14]方法將其分別表示為[0 0 1]、[0 1 0]、[1 0 0];同理,可將DOS、R2L、U2R、Probe、Normal這幾種數據進行作為決策項進行編碼操作并作為DBN網絡的輸出,決策表見表2。

表2 決策
在編碼完成之后,使用標準化方法[15]對原始數據進行歸一化處理,使結果落到之間,目的是減少數據量綱的影響并提高算法收斂速度。轉換函數為
(15)
其中,xmin、xmax分別表示數據最小值和最大值。
實驗硬件平臺為搭載Windows10的PC機,軟件平臺為Matlab2018a。設定RBM訓練迭代次數為100,BP神經網絡微調參數迭代次數為300,動量學習率取0.5,由數據集的41個特征維度可設定輸入層節點數為122。初始參數設定之后根據2.2節使用灰狼算法對DBN進行隱含層節點數多次尋優,可近似得到每層隱含層節點數為94-58-27-10時效果較好,然后構建其它幾種不同的DBN網絡結構進行對比驗證,每一種DBN網絡都包含不同的RBM層數及網絡節點數,可表示為122-60-10、122-90-30-1、122-100-80-40-20-10,122-110-90-70-50-30-10,將它們分別編號為進行訓練,最后利用準確率與檢測率作為評判指標,其中

(16)

(17)
結果見表3。

表3 不同結構對應的準確率與檢測率/%
實驗結果表明,隨著DBN網絡層數的增加,入侵檢測的綜合準確率與檢測率都有了明顯的提高,當網絡結構為122-94-58-27-10時檢測效果最佳,綜合準確率達到98.53%,并且檢測率也達到97.23%,但隨著網絡層數進一步增加,準確率與檢測率反而有所下降。為了進一步探索本文方法的優越性,在對DBN網絡隱含層節點數進行尋優之后,實驗綜合文獻資料并與其它幾種主流入侵檢測算法進行檢測效果對比,并且為了保證實驗的公平性,對每一種常用方法都在同一環境進行多次實驗,盡量保證檢測率達到最佳效果,最后并引入誤報率(FA)作為評判標準,其中

(18)
對比結果見表4。
根據表4可求出不同入侵檢測方法的平均檢測率分別達到92.64%、94.87%、92.47%、95.73%、97.23%,如圖4所示,不同方法對各種入侵數據的誤報率對比如圖5所示。從實驗結果不難看出,與常用的入侵檢測方法相比,基于深度信念的入侵檢測方法在一定程度上提高了檢測效果,對于5種不同類型數據的檢測率都有了一定程度的提升,并且經過灰狼算法對DBN隱含層節點數尋優過后,DBN訓練過程得到了進一步優化,相比一般DBN檢測方法平均檢測率增高了2個百分點;從圖5折線走向可得,面對同一數據集時所有檢測方法對其它4種數據類型處理較好,但對U2R類型的數據集的誤報率稍有欠缺,但相對而言本文方法將誤報率降至一個比較好的層面,總體平均水平達到2.77%,也驗證了本文方法的有效性。

表4 不同算法檢測率與誤報率對比結果/%

圖4 平均檢測率及誤報率

圖5 誤報率對比
針對傳統入侵檢測方法在檢測效果上的不足,提出了一種基于灰狼算法的深度信念網絡入侵檢測方法,在面對海量數據集時,利用灰狼算法強大的搜索能力對DBN網絡隱含層節點數全局尋優從而增加DBN模型的入侵檢測效果,實驗結果表明,與多種常用的入侵檢測方法相比,該方法有效提高了入侵檢測的檢測率并降低了誤報率。雖然該方法具有良好的檢測能力,但面對數據集較少的U2R類型時檢測效果仍需進一步優化。