王家寶 繆祥華,b
(昆明理工大學a.信息工程與自動化學院;b.云南省計算機技術應用重點實驗室)
隨著網(wǎng)絡規(guī)模的不斷擴大和網(wǎng)絡技術的不斷更迭, 給網(wǎng)絡安全帶來了更多的問題和挑戰(zhàn),國內(nèi)外的網(wǎng)絡安全事件頻發(fā),網(wǎng)絡安全問題得到了更多的重視。 近年來,入侵檢測技術作為保護網(wǎng)絡的有效安全技術被廣泛研究,許多研究者引入了神經(jīng)網(wǎng)絡、支持向量機等來予以解決,并且取得了較好的效果。 但是在面對海量復雜數(shù)據(jù)時,傳統(tǒng)機器學習方法在特征學習時易受時間復雜度和空間復雜度制約,導致入侵檢測識別攻擊數(shù)據(jù)的準確率低、誤報率高[1]。而深度學習在面對海量數(shù)據(jù)分析時有突出的表現(xiàn),可用于復雜網(wǎng)絡環(huán)境下的入侵檢測問題。
深度置信網(wǎng)絡(Deep Belief Network,DBN)是深度學習中的一個經(jīng)典模型,是一個由多層受限玻爾茲曼機(Restricted Boltzmann Machine,RBM)和一個反向傳播神經(jīng)網(wǎng)絡(Backpro Pagation Neural Network,BPNN)構成的深度學習分類器,通過非線性的神經(jīng)網(wǎng)絡結構擬合復雜函數(shù),來提高分類和預測的準確率[2]。 DBN的網(wǎng)絡結構指的是網(wǎng)絡層層數(shù)和每層的神經(jīng)元數(shù)。 DBN的網(wǎng)絡結構設置對DBN的性能有著重要的影響。 DBN作為深度學習的經(jīng)典模型,常被應用在入侵檢測領域。 但DBN的網(wǎng)絡結構一般由科研人員憑經(jīng)驗設定,如果DBN的網(wǎng)絡結構未達到最優(yōu),則無法完全發(fā)揮DBN的性能。 因此,筆者提出采用麻雀搜索算法(Sparrow Search Algorithm,SSA)對DBN的網(wǎng)絡結構進行優(yōu)化,以提高DBN模型的性能。
DBN由數(shù)個RBM堆疊構成,通常會在頂層加入一個BPNN來實現(xiàn)有監(jiān)督的分類,DBN中下一層的隱藏層就是上一層的可見層[3]。 圖1所示的DBN即由兩個RBM和頂層一個BPNN構成。
DBN模型的訓練分兩個階段[4]:第1階段是預訓練階段,自下而上分別對每一個RBM進行無監(jiān)督訓練, 得到每一層之間的權重w和每一層的偏置b;第2階段是微調階段,自上而下對整個DBN中的參數(shù)進行微調,以提高模型性能。 頂層BPNN接收下一層RBM輸出的特征向量作為輸入,可以進行無監(jiān)督訓練,也可以在輸入層中加入標簽實現(xiàn)有監(jiān)督訓練。
DBN在特征提取方面的性能較好,通過頂層BPNN的有監(jiān)督訓練可以學習已知攻擊類型的網(wǎng)絡流量特征,對于未知的攻擊類型也可以通過它在特征提取方面的優(yōu)勢提高檢測率,適用于需要處理大量網(wǎng)絡數(shù)據(jù)的入侵檢測。
RBM是一種隨機神經(jīng)網(wǎng)絡,由一層可見層和一層隱藏層構成,一般可見層為輸入層,隱藏層為輸出層。 RBM同一網(wǎng)絡層的神經(jīng)元無連接,相鄰網(wǎng)絡層間的神經(jīng)元全連接。 RBM的網(wǎng)絡結構如圖2所示。
用向量v表示可見層的狀態(tài),向量h表示隱藏層的狀態(tài),可見層有m個神經(jīng)元,隱藏層有n′個神經(jīng)元,vi表示可見層第i個神經(jīng)元,hj表示隱藏層第j個神經(jīng)元,RBM的參數(shù)θ={wij,ai,bj},wij為兩層神經(jīng)元之間的權重值,ai表示可見層第i個神經(jīng)元的偏置值,bj表示隱藏層第j個神經(jīng)元的偏置值。 則RBM的能量函數(shù)E[5]定義為:
當參數(shù)確定時,基于能量函數(shù)E可得(v,h)的聯(lián)合概率分布:
其中,Z(θ)為所有可能情況下的能量和,稱為配分因子。
因此,可以得到兩層的激活概率分別為:
其中,σ(x)為sigmoid激活函數(shù)。
為了盡快得到最大概率,采用對比散度算法訓練RBM。 該算法通常僅需要1次迭代就可以得到最大概率。 對比散度算法利用訓練數(shù)據(jù)初始化可見層,通過條件分布概率得到隱藏層,再通過條件分布概率得到最終的可見層,最終得到的可見層就是輸入數(shù)據(jù)的重建。
SSA是于2020年由薛建凱和沈波根據(jù)麻雀的覓食行為和反捕食行為提出的一種新型群智能優(yōu)化算法。 SSA[6]將麻雀分為發(fā)現(xiàn)者和加入者,麻雀中發(fā)現(xiàn)者和加入者的身份可以互相轉換,但是總體比例不變。 發(fā)現(xiàn)者負責在全局中搜尋食物資源豐富的區(qū)域,加入者會監(jiān)視發(fā)現(xiàn)者,靠近發(fā)現(xiàn)者的區(qū)域進行覓食或者搶奪發(fā)現(xiàn)者的食物。 當麻雀種群發(fā)現(xiàn)危險時,處在邊緣區(qū)域的麻雀會迅速向安全區(qū)域靠攏,處在中心區(qū)域的麻雀則會隨機移動。 SSA的步驟如下:
a. 初始化麻雀種群,定義其相關參數(shù),計算所有麻雀個體的適應度并進行排序,找出全局適應度值最優(yōu)的麻雀,記錄其適應度值及其全局最優(yōu)位置;
b. 迭代更新發(fā)現(xiàn)者、加入者和意識到危險的麻雀的位置,若當前全局最優(yōu)適應度值比上一代最優(yōu)值高就進行更新操作, 否則不進行更新操作,繼續(xù)迭代;
c. 適應度函數(shù)收斂或達到滿足條件,獲得全局最優(yōu)值和最優(yōu)適應度值。
SSA與其他傳統(tǒng)優(yōu)化算法相比, 具有收斂速度快、 精度高和不易陷入局部最優(yōu)值的優(yōu)勢,更容易獲得優(yōu)化問題中的全局最優(yōu)解。 因此,筆者采用SSA對DBN進行優(yōu)化。
DBN在特征提取方面具有較好的性能,適用于入侵檢測技術。 DBN的網(wǎng)絡結構是否為最優(yōu)決定了DBN的性能是否為最佳。 但是研究者憑借經(jīng)驗設定的DBN網(wǎng)絡結構無法完全發(fā)揮DBN的性能。 因此,筆者用SSA優(yōu)化DBN得到新的入侵檢測模型SSA-DBN。 使用SSA優(yōu)化DBN的核心思想就是得到位置最優(yōu)的麻雀, 也就是適應度最高的麻雀個體, 在迭代結束時根據(jù)此麻雀的參數(shù)設置DBN的最優(yōu)網(wǎng)絡結構,得到最優(yōu)的入侵檢測模型。基于SSA-DBN的入侵檢測模型框架如圖3所示。
圖3 SSA-DBN入侵檢測模型框架
SSA-DBN入侵檢測模型分為數(shù)據(jù)預處理模塊和SSA-DBN模塊。 數(shù)據(jù)預處理模塊的功能是處理原始數(shù)據(jù),使處理后的數(shù)據(jù)可以輸入SSA-DBN模塊。 SSA-DBN模塊的功能是對輸入數(shù)據(jù)進行分類,識別攻擊類型的數(shù)據(jù)。
數(shù)據(jù)預處理共分為3個步驟:
a. 字符型數(shù)據(jù)轉換為數(shù)值型數(shù)據(jù)。由于入侵檢測數(shù)據(jù)集中的某些特征是字符型數(shù)據(jù),而DBN只能處理數(shù)值型數(shù)據(jù),因此將該數(shù)據(jù)集中的字符型數(shù)據(jù)轉換成數(shù)值型數(shù)據(jù)。
SSA-DBN模塊的功能是對輸入的數(shù)據(jù)進行識別分類,可分為兩個步驟:
a. 使用訓練數(shù)據(jù)集對SSA-DBN模塊進行訓練和參數(shù)調優(yōu),得到最優(yōu)入侵檢測模型;
b. 將測試數(shù)據(jù)集輸入到訓練好的SSA-DBN模塊中得到分類結果。
該模塊基本步驟偽代碼如圖4所示,其中,I為最大迭代次數(shù),PD為麻雀中發(fā)現(xiàn)者的數(shù)量,SD為發(fā)現(xiàn)危險的麻雀的數(shù)量,A為警戒值,s為麻雀種群的數(shù)量,F(xiàn)(X)為適應度函數(shù),X表示DBN的網(wǎng)絡結構。
該算法首先隨機初始化麻雀種群的數(shù)量并定義相關參數(shù),計算并找出當前適應度函數(shù)的最優(yōu)值。 然后更新麻雀的位置,再次計算當前適應度函數(shù)的最優(yōu)值,若為最優(yōu),則X為DBN最優(yōu)的網(wǎng)絡結構參數(shù),否則繼續(xù)更新麻雀位置直到獲得最優(yōu)值或達到最大迭代次數(shù)。 最后根據(jù)最優(yōu)參數(shù)構建最優(yōu)入侵檢測模型進行識別分類操作。
本次實驗采用UNSW-NB15入侵檢測數(shù)據(jù)集,該數(shù)據(jù)集中共包含10種類型的數(shù)據(jù), 其中1種為普通類型的數(shù)據(jù),9種為攻擊類型的數(shù)據(jù),每條數(shù)據(jù)共有49種特征。 9種攻擊類型的數(shù)據(jù)分別為模糊攻擊(Fuzzers)、分析攻擊(Analysis)、后門攻擊(Backdoors)、拒絕服務攻擊(DoS)、漏洞攻擊(Exploits)、 泛型攻擊(Generic)、 偵察攻擊(Reconnaissance)、惡意代碼攻擊(Shellcode)和蠕蟲攻擊(Worms)。該數(shù)據(jù)集中共包含2 540 044條數(shù)據(jù),在該數(shù)據(jù)集中已經(jīng)進行了訓練數(shù)據(jù)集和測試數(shù)據(jù)集的劃分,訓練集中共有175 341條數(shù)據(jù),測試集中共有82 332條數(shù)據(jù)。
實驗使用Python V3.6作為編程語言,并使用Tensorflow框架進行實驗。
使用4個評價指標對本次實驗進行評估,分別是P(精度)、AC(準確率)、R(召回率)和F1(F1-measure)。
在實驗中,根據(jù)預測和實際是否一致可以分為真陽性(TP)、真陰性(TN)、假陽性(FP)和假陰性(FN)。 真陽性為預測和實際都為真;真陰性為預測和實際都為假;假陽性為預測為真,實際為假;假陰性為預測為假,實際為真。
精度為正確預測為真的占全部預測為真的比重,其公式為:
準確率為所有正確預測的占全部預測的比重,其公式為:
召回率為正確預測為真的占全部實際為真的比重,其公式為:
F1-measure的公式為:
為使結果更加客觀, 進行多次重復實驗,結果顯示,多次實驗的差值較小,實驗數(shù)據(jù)較穩(wěn)定。
對多次實驗結果求平均值進行分析,結果如圖5所示, 可以看出,SSA-DBN模型的準確率為92.05%, 召回率為90.62%, 精度為94.23%,F(xiàn)1-measure 值 為92.38% ;DBN 模 型 的 準 確 率 為90.86%, 召回率為88.65%, 精度為93.31%,F(xiàn)1-measure值為90.91%。SSA-DBN模型對比未優(yōu)化的DBN模型的4個評價指標均有所提高, 說明SSADBN模型有效提升了入侵檢測的效率。
圖5 模型性能評估結果
SSA-DBN、RepTree、LR-RFE和HMC 4種模型的準確率對比如圖6所示,可以看出,文獻[7]提出的RepTree模型準確率為88.95%,文獻[8]提出的LR-RFE模型準確率為88.27%,文獻[9]提出的HMC模型準確率為80.78%,而SSA-DBN模型的準確率達到了92.05%。 說明SSA-DBN模型比其他3種模型在UNSW-NB15數(shù)據(jù)集上的準確率具有明顯優(yōu)勢。
圖6 4種模型的對比結果
DBN的網(wǎng)絡結構對其性能起到重要的作用,筆者提出用SSA優(yōu)化DBN,通過找到麻雀的最優(yōu)適應度值確定DBN的網(wǎng)絡結構,使SSA-DBN模型達到最優(yōu),提高了模型的檢測性能。 通過實驗分析,SSA-DBN模型相比傳統(tǒng)DBN模型在各項評價指標上都有更優(yōu)異的表現(xiàn), 與RepTree、LR-RFE和HMC3種模型相比也具有一定的優(yōu)勢。 如何解決數(shù)據(jù)集中各種類型數(shù)據(jù)的平衡問題, 繼續(xù)提高模型的檢測性能, 是筆者需要進一步研究的方向。