陳 虹,趙建智,肖成龍,陳建虎,肖 越
遼寧工程技術(shù)大學(xué) 軟件學(xué)院,遼寧 葫蘆島125105
進(jìn)入21 世紀(jì),隨著IT 技術(shù)的發(fā)展與網(wǎng)絡(luò)信息化的建設(shè),各種各樣的網(wǎng)絡(luò)信息廣泛傳播,給人們生活帶來快捷和便利的同時(shí),其所造成的網(wǎng)絡(luò)安全問題也日益嚴(yán)峻[1],如何對入侵攻擊類型進(jìn)行有效檢測,以及預(yù)警與保護(hù)系統(tǒng)的安全,成為網(wǎng)絡(luò)安全問題的研究方向之一。
入侵檢測系統(tǒng)(Intrusion Detection System,IDS)是一種對網(wǎng)絡(luò)或主機(jī)傳輸網(wǎng)絡(luò)流量進(jìn)行監(jiān)控,檢測違反系統(tǒng)安全策略入侵行為的主動(dòng)安全防護(hù)措施[2]。一般來說,入侵檢測方法分為基于誤用和異常的檢測?;谡`用的檢測能夠以低誤報(bào)率檢測已知類型網(wǎng)絡(luò)攻擊?;诋惓5臋z測方法通過正?;顒?dòng)捕捉偏差識別攻擊行為。與誤用檢測不同的是,基于異常的檢測方法可以更好識別未知攻擊行為。但該方法仍面臨著高誤報(bào)率的風(fēng)險(xiǎn)。入侵檢測[3]系統(tǒng)一般使用誤用與異常檢測的混合方法來判別網(wǎng)絡(luò)或系統(tǒng)中入侵攻擊行為[4]。
網(wǎng)絡(luò)環(huán)境中可能存在著數(shù)量極少破壞力卻極大的攻擊數(shù)據(jù),即網(wǎng)絡(luò)環(huán)境中存在著數(shù)據(jù)比例不平衡問題,如何在這些網(wǎng)絡(luò)數(shù)據(jù)中取得較為理想的檢測效果,以及在海量高維度的網(wǎng)絡(luò)數(shù)據(jù)環(huán)境中,盡可能避免檢測模型過擬合現(xiàn)象,成為入侵檢測研究領(lǐng)域中不可避免的關(guān)鍵性問題。目前,基于淺層神經(jīng)網(wǎng)絡(luò)與簡易的機(jī)器學(xué)習(xí)[5]的入侵檢測方法,已經(jīng)難以滿足人們的需求,于是提出了深度學(xué)習(xí)[6]的入侵檢測方法。
深度學(xué)習(xí)的概念于2006 年由Hinton 等人提出,深度神經(jīng)網(wǎng)絡(luò)具有逐層性、參數(shù)多等特點(diǎn),具備擬合任意復(fù)雜函數(shù)的優(yōu)勢,因此,可以進(jìn)行復(fù)雜的非線性映射,使用深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型處理海量高維度數(shù)據(jù)[7]進(jìn)行入侵檢測,實(shí)現(xiàn)高維數(shù)據(jù)的低維度集成式特征,提取出更優(yōu)質(zhì)的數(shù)據(jù)特征,得出檢測效果更高的分類結(jié)果。
近年來,入侵檢測研究領(lǐng)域?qū)W者提出了多種基于深度學(xué)習(xí)的檢測模型。Niyaz Q[8]等人提出一種基于深度學(xué)習(xí)的自學(xué)習(xí)(STL)技術(shù)的網(wǎng)絡(luò)入侵檢測方法,該模型使用無監(jiān)督學(xué)習(xí)的方式從未標(biāo)記的數(shù)據(jù)中學(xué)習(xí)良好的特征表示,再進(jìn)行分類任務(wù)。Fiore U[9]等人提出使用判別受限的受限制玻爾茲曼機(jī)(DRBM),用于半監(jiān)督式的網(wǎng)絡(luò)異常檢測,提升神經(jīng)網(wǎng)絡(luò)泛化能力,并對提高分類精度方面有明顯效果。Yin C[10]等人提出一種深度學(xué)習(xí)方法,使用遞歸神經(jīng)網(wǎng)絡(luò)(RNN-IDS)進(jìn)行檢測,提高入侵檢測的準(zhǔn)確性。
過高的數(shù)據(jù)維度會使模型出現(xiàn)過擬合的現(xiàn)象,訓(xùn)練集上表現(xiàn)良好,但模型對新數(shù)據(jù)的泛化學(xué)習(xí)能力下降,從而導(dǎo)致模型檢測率的降低。自編碼器對于高維度數(shù)據(jù)的集成式特征學(xué)習(xí)可以較好地解決該問題。
2006年,Hinton等人提出采用自編碼器對高維數(shù)據(jù)進(jìn)行降維處理,避免高維數(shù)據(jù)產(chǎn)生的維數(shù)災(zāi)難[11]。2007年,Bengio等人模仿RBM構(gòu)建DBN的方法,使用自編碼器實(shí)現(xiàn)堆疊式自編碼[12]。2008 年,Vincent P 等人提出通過向傳統(tǒng)自編碼器中加入一定概率分布的噪聲,修改了基本的自編碼器,實(shí)現(xiàn)從破損不完整的數(shù)據(jù)集實(shí)現(xiàn)到對數(shù)據(jù)集的修復(fù)[13],從而得到魯棒性更強(qiáng)的數(shù)據(jù)集。2010 年,Vincent P 等人又提出基于去噪自編碼器的逐層相連的結(jié)構(gòu),將降噪自編碼器隱藏層作為下一層降噪自編碼器的輸入,構(gòu)成堆疊式降噪自編碼器[14],相比于普通自編碼器,具備了更強(qiáng)的特征學(xué)習(xí)能力。2014年,Srivastava 等人提出了調(diào)節(jié)Dropout 正則化中的超參數(shù)p(在網(wǎng)絡(luò)中保留某個(gè)神經(jīng)元的概率,獨(dú)立于其他神經(jīng)元),即以概率p 保留神經(jīng)元,構(gòu)造一種更加“稀疏”的網(wǎng)絡(luò)來防止DBN 網(wǎng)絡(luò)出現(xiàn)過擬合問題[15]。2017 年,蘭州大學(xué)陶亮亮等人同樣提出了使用Dropout方法來解決數(shù)據(jù)不均衡造成的堆疊式自編碼器深度網(wǎng)絡(luò)過擬合問題,提升模型的泛化學(xué)習(xí)能力,同時(shí)將Simgoid替換為Relu,加快網(wǎng)絡(luò)的收斂速度[16]。
數(shù)據(jù)的不平衡問題導(dǎo)致少數(shù)類入侵?jǐn)?shù)據(jù)的檢測率下降,本文中所采用的NSL-KDD數(shù)據(jù)集[17-18]存在一定程度的數(shù)據(jù)比例不均衡問題,即存在某一種或幾種少數(shù)類別類型的數(shù)據(jù)所占比例很小,導(dǎo)致少數(shù)類別的分類檢測率低。解決數(shù)據(jù)比例的不平衡問題,數(shù)據(jù)層面的處理方法包括重采樣和數(shù)據(jù)合成。本文使用基于數(shù)據(jù)合成ADASYN 算法[19]。該算法根據(jù)少數(shù)樣本的分布特點(diǎn)自適應(yīng)在難以分類的地方合成新樣本。首先針對低頻率攻擊檢測率低的問題,使用ADASYN 算法自適應(yīng)合成新樣本添加到訓(xùn)練數(shù)據(jù)集中,提高少數(shù)類的檢測率。其次針對入侵檢測模型檢測率低的問題,將Dropout 正則化[20]與Adam優(yōu)化算法[21]應(yīng)用于堆疊式降噪自編碼器進(jìn)行模型改進(jìn)。利用深度學(xué)習(xí)的逐層性,使數(shù)據(jù)空間中的高維特征表達(dá)映射為低維特征表達(dá),在非監(jiān)督學(xué)習(xí)過程中,實(shí)現(xiàn)海量高維度數(shù)據(jù)到低維度魯棒性數(shù)據(jù)的特征重構(gòu)??梢越档蜕疃葘W(xué)習(xí)網(wǎng)絡(luò)的收斂時(shí)間,提高入侵檢測模型的檢測性能。
ADASYN(Adaptive Synthetic Sampling Approach)算法是自適應(yīng)綜合過采樣算法。該方法可以根據(jù)少數(shù)類樣本的概率分布ri(ri為少數(shù)樣本合成數(shù)目的判定準(zhǔn)則)自適應(yīng)地合成少數(shù)類樣本,將合成的新樣本添加到數(shù)據(jù)集中,在難以分類的類別中合成更多的樣本,使樣本比例達(dá)到相對均衡的效果,緩解數(shù)據(jù)不平衡的問題。
假設(shè)訓(xùn)練集樣本D 包含m 個(gè)樣本{xi,yi} ,i=1,2,…,m,其中xi是n 維特征空間X 的一個(gè)樣本,yi∈Y={0,1,2,3,4} 是類標(biāo)簽,yi=3,4 時(shí)為少數(shù)樣本,yi=0,1,2 為多數(shù)類樣本。這里用ms和ml分別表示少類和多數(shù)類樣本的數(shù)目。因此,有ms≤ml,且ms+ml=m。
算法流程如下:
(1)計(jì)算不平衡度d=ms/ml,式中d ∈(0,1]。
(2)計(jì)算合成少數(shù)樣本數(shù):G=(ml-ms)×β ,式中β ∈[0,1]表示加入合成樣本后的不平衡度。 β=1 表示加入合成樣本后多數(shù)類和少數(shù)類完全平衡,G 等于少數(shù)類和多數(shù)類的差值。
(3)對少數(shù)類的每個(gè)樣本xi,找出它們在n 維空間的K 近鄰,并計(jì)算其比率ri=Δi/K ,i=1,2,…,m,式中Δi是xi的K 近鄰中多數(shù)類的數(shù)目。因此,ri∈(0,1]。
(5)根據(jù)每個(gè)少數(shù)樣本xi計(jì)算合成的樣本數(shù)目gi:×G,式中G 是合成樣本的總數(shù)。
(6)在每個(gè)待合成的少數(shù)類樣本周圍k 個(gè)鄰居中選擇1個(gè)少數(shù)類樣本,根據(jù)下列等式進(jìn)行合成:
自編碼器(AutoEncoder,AE)是一種簡單的神經(jīng)網(wǎng)絡(luò)判別模型屬于無監(jiān)督網(wǎng)絡(luò)。自編碼器主要用于捕捉可以代表輸入數(shù)據(jù)的最重要因素,y 可以作為原始數(shù)據(jù)x 的一種集成特征表達(dá)。自編碼器在結(jié)構(gòu)上根據(jù)隱層的數(shù)量可分為淺層自編碼器和堆疊式自編碼器。自編碼器的基本原理如圖1所示。
圖1 自編碼器原理
自編碼器基于以下流程:
(1)從輸入層到隱藏層的計(jì)算過程,即原始數(shù)據(jù)輸入x 經(jīng)過神經(jīng)元之間加權(quán)與偏置θ1=(W1,b1)處理后,進(jìn)行編碼器Encoder 中的激活函數(shù)f 編碼,得到了編碼數(shù)據(jù)y。
(2)從隱藏層到輸出層的計(jì)算過程,即編碼數(shù)據(jù)y經(jīng)過θ2=(W2,b2)后,在進(jìn)行解碼器Decoder的函數(shù)g 解碼后,得到編碼重構(gòu)
(3)編碼器的權(quán)值矩陣W1,通常與解碼器的權(quán)值矩陣W2互為轉(zhuǎn)置,即=W2。隱層神經(jīng)元的激活函數(shù)通常使用Sigmoid 函數(shù),通過非線性變換找到輸入數(shù)據(jù)的輸入表示。通過對參數(shù)θ 進(jìn)行反復(fù)的迭代調(diào)優(yōu),使編碼重構(gòu)誤差Lloss達(dá)到最小。
自動(dòng)編碼(AE)對于完整保留的數(shù)據(jù)輸入,通過簡單重構(gòu)可以學(xué)習(xí)到特征表達(dá),在原始數(shù)據(jù)中加入數(shù)據(jù)噪聲,對數(shù)據(jù)集進(jìn)行破壞,可以實(shí)現(xiàn)破損數(shù)據(jù)集到正常數(shù)據(jù)集的還原,可以使用降噪噪編碼器(DAE)進(jìn)行噪聲數(shù)據(jù)集的誤差重構(gòu),從而得到魯棒性更強(qiáng)的集成式特征表達(dá)。其中x 是n 維特征空間X 的一個(gè)樣本,降噪自編碼器原理如圖2所示。
降噪自編碼器(DAE)是在自動(dòng)編碼器的基礎(chǔ)上,在原始輸入(raw input)中加入概率分布為qD數(shù)據(jù)高斯噪聲(Gaussian noise)X~qD(X′|X)的隨機(jī)映射,將X 實(shí)例中部分特征置為零,可以得到“破壞后”的噪聲數(shù)據(jù)輸入X′(Corrupted Input)。定義聯(lián)合分布函數(shù):
圖2 降噪自編碼器
Y 為X′的映射函數(shù),以θ 為參數(shù)。并使用梯度下降算法最小化目標(biāo)函數(shù):
當(dāng)處理大規(guī)模、高緯度的數(shù)據(jù)集時(shí),淺層自編碼器很難發(fā)揮出它的作用,堆疊式自編碼器處理海量高維數(shù)據(jù)時(shí),使用深層模型可以提取出更加有效的集成式特征。
堆疊式降噪自編碼器與2006年Hinton提出的深度信念網(wǎng)絡(luò)(DBN)以相同的方式來初始化神經(jīng)網(wǎng)絡(luò)。為了可以學(xué)習(xí)到有效的特征提取,噪聲輸入僅用于初始化單層的噪聲數(shù)據(jù)訓(xùn)練。
降噪自編碼器由三層神經(jīng)網(wǎng)絡(luò)構(gòu)成,向第一層自編碼器DA1輸入“噪聲數(shù)據(jù)”X′,得到函數(shù)fθ,再使用DA1中的fθ函數(shù)學(xué)習(xí)原始數(shù)據(jù)X ,并使用DA1的原始數(shù)據(jù)的輸出作為第2 層自編碼器的輸入,將第2 層輸入再次進(jìn)行破壞,并重復(fù)訓(xùn)練第一層自編碼器的過程。
形成逐層連接,實(shí)現(xiàn)堆疊式降噪自編碼器結(jié)構(gòu)如圖3所示。噪聲輸入通過逐層自編碼器的訓(xùn)練,實(shí)現(xiàn)特征變換的過程(X →DA1→DA2→…→DAn)。
圖3 堆疊式去噪自編碼器
在堆疊式降噪自編碼器模型輸出降噪降維的數(shù)據(jù)后,最后一層采用softmax 層,使用BP 算法進(jìn)行權(quán)值微調(diào),將神經(jīng)網(wǎng)絡(luò)的參數(shù)進(jìn)行調(diào)整,并實(shí)現(xiàn)對數(shù)據(jù)集的分類功能。
典型神經(jīng)網(wǎng)絡(luò)訓(xùn)練通過網(wǎng)絡(luò)進(jìn)行正向傳導(dǎo)輸入值,之后將網(wǎng)絡(luò)生成的誤差進(jìn)行反向傳播。Dropout針對該過程,隨機(jī)刪除隱藏層單元,由于刪除隱藏單元是隨機(jī)過程,并且隨機(jī)采取一定批次訓(xùn)練集進(jìn)行訓(xùn)練,保證最后每個(gè)模型用相同權(quán)重來融合,實(shí)現(xiàn)類似boosting[22]算法的效果。保證每2個(gè)隱含節(jié)點(diǎn)不能每次同時(shí)出現(xiàn),使全連接網(wǎng)絡(luò)具有了一定稀疏化的性質(zhì),減輕不同特征的協(xié)同效應(yīng)(即有效組織了某些特征在其他特征存在下才有效果的情況),增加了神經(jīng)網(wǎng)絡(luò)的魯棒性。Dropout可以有效減輕過擬合的發(fā)生,一定程度上達(dá)到了正則化的效果,并且減少神經(jīng)網(wǎng)絡(luò)收斂時(shí)間。Dropout 工作原理如圖4所示。
圖4 dropout工作原理
Adam(適應(yīng)性矩陣估計(jì))算法是隨機(jī)梯度下降算法的擴(kuò)展式,是一種可以替代傳統(tǒng)隨機(jī)梯度下降(SGD)[23]過程的一階優(yōu)化算法,近年來被廣泛應(yīng)用于深度學(xué)習(xí)中。它能夠訓(xùn)練數(shù)據(jù),并更新神經(jīng)網(wǎng)絡(luò)的權(quán)重。能夠進(jìn)行高效計(jì)算,適應(yīng)性地改變學(xué)習(xí)率,所需內(nèi)存少,減少神經(jīng)網(wǎng)絡(luò)收斂時(shí)間,適用于解決大規(guī)模數(shù)據(jù)和參數(shù)優(yōu)化、非穩(wěn)定目標(biāo)以及高噪聲和稀疏梯度問題。
隨機(jī)梯度下降算法保持單一學(xué)習(xí)率調(diào)節(jié)自編碼器中各層的權(quán)值。學(xué)習(xí)率在訓(xùn)練過程中不會改變。Adam算法結(jié)合了Adagrad算法[24]善于處理稀疏梯度和RMSprop算法[25]善于處理非平穩(wěn)目標(biāo)的優(yōu)點(diǎn),為不同參數(shù)提供不同的自適應(yīng)學(xué)習(xí)率,適用于高維空間和大數(shù)據(jù)集。
Adam優(yōu)化算法如下:
(1)計(jì)算參數(shù)的梯度值g
輸入:hn-1與hn的損失函數(shù),數(shù)據(jù)集的小批量m
輸出:計(jì)算參數(shù)的梯度值g
For i=1,2,…,n
End for
(2)計(jì)算矩估計(jì)mt和vt
輸入:指數(shù)衰減率β1,β2∈[0,1]
輸出:修正后一階、二階矩陣估計(jì)mt與vt
While θtnot converged do
mt和vt分別為有偏差的一階矩估計(jì)和有偏差的二階矩估計(jì)。
其中β1,β2∈[0,1]為控制mt與vt的指數(shù)衰減率。
對一階矩估計(jì)與二階矩估計(jì)進(jìn)行相應(yīng)的偏差值修正,如公式(9)和(10):
梯度g 的矩估計(jì)經(jīng)過偏置矯正后,每一次迭代學(xué)習(xí)率都有一個(gè)固定范圍,使參數(shù)相對平穩(wěn)。
(3)參數(shù)θ 更新
通過以上計(jì)算實(shí)現(xiàn)模型參數(shù)θ 的更新,其中ε 為用于數(shù)值穩(wěn)定的小常數(shù),防止尋找最優(yōu)梯度時(shí)發(fā)生除零現(xiàn)象。當(dāng)參數(shù)θ 沒有收斂時(shí),循環(huán)迭代更新各個(gè)部分。
輸出:模型參數(shù)θt
End while
Return θt
基于改進(jìn)堆疊式降噪自編碼的入侵檢測模型(ADASYN-SDA)如圖5所示。其工作流程如下:
(1)預(yù)處理(Pre-treatment)。第一步,對數(shù)據(jù)集單條實(shí)例進(jìn)行數(shù)據(jù)與標(biāo)簽分離。第二步,將字符型特征進(jìn)行數(shù)值化處理,實(shí)現(xiàn)數(shù)據(jù)高維空間映射。第三步,進(jìn)行數(shù)據(jù)集最大最小歸一化。第四步,進(jìn)行標(biāo)簽one-hot編碼。第五步,采用ADASYN 算法對訓(xùn)練集進(jìn)行數(shù)據(jù)過采樣操作,增加少數(shù)樣本R2L,U2R攻擊類型數(shù)據(jù)的數(shù)量。
圖5 ADASYN-SDA入侵檢測模型
(2)特征降維(Extract feature)。第一步,使用Dropout正則化與Adam優(yōu)化算法對神經(jīng)網(wǎng)絡(luò)進(jìn)行改進(jìn),針對其隱層層數(shù)、節(jié)點(diǎn)數(shù)進(jìn)行設(shè)計(jì)。第二步,神經(jīng)網(wǎng)絡(luò)模型的預(yù)訓(xùn)練、權(quán)值微調(diào)。第三步,用堆疊式降噪自編碼器對預(yù)處理數(shù)據(jù)集進(jìn)行集成式特征提取。
(3)入侵檢測(Intrusion detection)。將深度網(wǎng)絡(luò)模型生成的低維度、高魯棒性數(shù)據(jù)集輸入到softmax 分類器[26]中,進(jìn)行入侵檢測。
降噪自編碼器模型參數(shù)初始化,其目的在于找出降噪自編碼器模型最合適的參數(shù),可按照以下步驟進(jìn)行參數(shù)更新,具體過程如算法1所示。
算法1 DAE
輸入:原始輸入X ,輸入層節(jié)點(diǎn)數(shù),隱藏層節(jié)點(diǎn)數(shù),學(xué)習(xí)率l r,噪聲破壞率c r,最大迭代次數(shù)Tmax
輸出:模型參數(shù)θ={W,b},隱藏層輸出Y算法如下:
(1)X′=get corrupted input(X,c r)
(2)For T from 1 to Tmax
(3) Y=get hidden(X′,W1,b1)
(4) Z=get reconstruction(Y,W2,b2)
(5) cost=get cost(X,Z)
(6) for param in Adam(W,b)
(7) gparam=get gradient(cost,param)
(8) param=param-l r*gparam
(9) End for
(10)End for
SDA模型的預(yù)訓(xùn)練與權(quán)值微調(diào)如圖6所示。
圖6 SDA模型預(yù)訓(xùn)練與微調(diào)
堆疊式降噪自編碼器預(yù)訓(xùn)練的過程中,采用無監(jiān)督貪婪逐層預(yù)訓(xùn)練對每一層降噪自編碼器進(jìn)行預(yù)訓(xùn)練,進(jìn)行深度網(wǎng)絡(luò)模型的權(quán)值初始化,并將上一層自編碼器的隱藏層作為下一編碼器的輸入層,逐層進(jìn)行連接,預(yù)訓(xùn)練的過程如算法2所示。
算法2 Pre-Train-DAE
輸入:隱藏層輸出Y out,隱藏層層數(shù)n layers,學(xué)習(xí)率l r,噪聲破壞率c r,單層自編碼器最大迭代次數(shù)Tmax
算法如下:
(1)For i from 1 to n layers
(2)X′=get corrupted input(Y out,c r[i])
(3) For T from 1 to Tmax
(4) Y=get hidden(X′,W1[i],b1[i])
(5) Z=get reconstruction(Y,W2[i],b2[i])
(6) Cost=get cost(Y out,Z)
(7) For param in Adam(W[i],b[i])
(8) gparam=get gradient(cost,param)
(9) param=param-l r[i]*gparam
(10) End for
(11) End for
(12)Y out=X
(13)End for
堆疊降噪自編碼器權(quán)值微調(diào)的過程中,使用反向傳播算法對深度網(wǎng)絡(luò)模型進(jìn)行有監(jiān)督的權(quán)值微調(diào),將原始數(shù)據(jù)與重構(gòu)數(shù)據(jù)之間的重構(gòu)誤差降低至最小。
算法3 Fine-Tune-DAE
輸出:堆疊式降噪自編碼器模型(SDA)
算法如下:
(1)While T <Tmaxdo
(2) For batch in m
(3) Cost=get fine cost(X)
(4) For i from 1 to n layers
(5) For param in Adam(W[i],b[i])
(6) gparam=get gradient(cost,param)
(7) param=param-l r[i]*gparam
(8) End for
(9) End for
(10) valid error=get valid error(batch)
(11) if valid error <best valid error
(12) update best vaild error
(13) test error=get test error(n)
(14) if test error <best test error
(15) update best test error
(16) End if
(17) End if
(18) End for
(19)End while
(1)實(shí)驗(yàn)環(huán)境
操作系統(tǒng):Window 10
編程環(huán)境:python 3.5、matlab7.0
處理器:Inter?CoreTMi5-4210U CPU@ 1.70 GHz 2.40 GHz
內(nèi)存(RAM):4.00 GB
系統(tǒng)類型:64位硬件環(huán)境
(2)評價(jià)指標(biāo)
評估樣例采用二分類混淆矩陣,如表1所示。其中TP 代表正確的正例,TN 代表正確的負(fù)例,F(xiàn)P 代表錯(cuò)誤的正例,F(xiàn)N代表錯(cuò)誤的負(fù)例。
表1 二分類混淆矩陣
評價(jià)指標(biāo)如下:
準(zhǔn)確率(Accuracy):被正確分類的樣本除以所有樣本,整體模型檢測能力。檢測率(Detection):被正確識別的異常樣本除以異常樣本,模型對攻擊類別的檢測能力。誤判率(Error):正常樣本被誤報(bào)為異常的樣本除去所有正常樣本,對正常樣本的檢測能力。
實(shí)驗(yàn)數(shù)據(jù)集采用NSL-KDD數(shù)據(jù)集作為入侵檢測實(shí)驗(yàn)的訓(xùn)練集和測試集。NSL-KDD 數(shù)據(jù)集解決了KDDCUP99 數(shù)據(jù)集存在的固有問題,不包含冗余記錄,分類器不會偏向更頻繁的記錄,提高了分類器檢測性能。實(shí)驗(yàn)數(shù)據(jù)分布如表2所示。
表2 實(shí)驗(yàn)數(shù)據(jù)分布
數(shù)據(jù)集中單條實(shí)例包括22種TCP連接的基本特征與內(nèi)容特征,19 種基于主機(jī)和時(shí)間的網(wǎng)絡(luò)流量統(tǒng)計(jì)特征。網(wǎng)絡(luò)連接實(shí)例類型可以分為5大類,數(shù)據(jù)集正常類別數(shù)據(jù)標(biāo)簽為Normal,以及4大攻擊類型數(shù)據(jù)標(biāo)簽分別為DOS(拒絕服務(wù)攻擊)、Probe(端口監(jiān)視或掃描)、R2L(未授權(quán)的本地超級用戶特權(quán)訪問)、U2R(來自遠(yuǎn)程主機(jī)未授權(quán)訪問)。
NSL-KDD 數(shù)據(jù)集單條實(shí)例的41 個(gè)特征由38 個(gè)數(shù)字型特征與3 個(gè)字符型特征構(gòu)成。數(shù)據(jù)預(yù)處理分為以下3個(gè)步驟:
(1)高維特征映射
本文將符號型的特征轉(zhuǎn)化為二進(jìn)制數(shù)字型特征,將protocol_type_dict(協(xié)議類型)中3 種字符類型進(jìn)行轉(zhuǎn)換,tcp-[1,0,0],udp-[0,1,0],icmp-[0,0,1]。server_type_dict(目標(biāo)主機(jī)網(wǎng)絡(luò)類型)70種,flag_dict(連接正確或錯(cuò)誤類型)11 種,字符特征轉(zhuǎn)化為數(shù)字特征,將41 維特征轉(zhuǎn)化為122 維特征,采用該方法處理數(shù)據(jù),使歸一化后數(shù)據(jù)范圍為[0,1],方便進(jìn)行分類處理,減少與原數(shù)據(jù)間誤差。
(2)One-Hot編碼
將各個(gè)小類型的字符型標(biāo)簽替換為五種大類型標(biāo)簽,五種字符型的數(shù)據(jù)標(biāo)簽進(jìn)行One-Hot 編碼,過程如下:將Normal映射為1,0,0,0,0;將Probe映射為0,1,0,0,0;將Dos 映射為0,0,1,0,0;將R2L 映射為0,0,0,1,0;將U2R映射為0,0,0,0,1。
(3)歸一化
將原始數(shù)據(jù)歸一化,轉(zhuǎn)化到[0,1]范圍的操作稱為最大最小歸一化。為了數(shù)據(jù)方便處理,防止大數(shù)據(jù)對小數(shù)據(jù)的覆蓋,提高模型的檢測性能。 x 為單條數(shù)據(jù)實(shí)例的特征,Xmin為該特征最大值,Xmin為該特征最小值。
本文使用的堆疊式降噪自編碼器為深度神經(jīng)網(wǎng)絡(luò)。參數(shù)設(shè)置如表3所示。
表3 參數(shù)設(shè)置
將自編碼器網(wǎng)絡(luò)總層數(shù)設(shè)置為5層,隱藏層數(shù)量為3 層,其中輸入層節(jié)點(diǎn)數(shù)為高維映射后數(shù)據(jù)維數(shù)122 個(gè)節(jié)點(diǎn),3個(gè)隱藏層節(jié)點(diǎn)數(shù)量分別為90-60-30,輸出層隱層節(jié)點(diǎn)數(shù)設(shè)置為5。其中每層自編碼器迭代次數(shù)設(shè)置為70 次,網(wǎng)絡(luò)權(quán)值BP 反向傳播算法微調(diào)迭代次數(shù)設(shè)置為100次。Adam算法中,學(xué)習(xí)率設(shè)置為0.001,一階矩估計(jì)指數(shù)衰減率設(shè)置為0.9,二階矩估計(jì)指數(shù)衰減率設(shè)置為0.999,常數(shù)穩(wěn)定值為10E-8,Dropout正則化參數(shù)設(shè)置為0.5,各個(gè)網(wǎng)絡(luò)層節(jié)點(diǎn)的參數(shù)由逐層訓(xùn)練進(jìn)行初始化,并且逐層加入一定概率的噪聲值分別為0.7,0.4,0.4,0.2。
4.5.1 模型參數(shù)分析
在NSL-KDD 數(shù)據(jù)集的基礎(chǔ)上進(jìn)行數(shù)據(jù)抽樣,使用該數(shù)據(jù)在ADASYN-SDA中進(jìn)行對比實(shí)驗(yàn),分析模型參數(shù)對模型性能的影響。數(shù)據(jù)抽樣如表4所示。
表4 抽樣數(shù)據(jù)
(1)網(wǎng)絡(luò)層數(shù)以及隱層的節(jié)點(diǎn)數(shù)設(shè)置
確定最佳深層網(wǎng)絡(luò)層數(shù)結(jié)構(gòu)。為了確定SDA模型的最佳層數(shù)結(jié)構(gòu),進(jìn)行了5種不同層數(shù)的對比實(shí)驗(yàn)。當(dāng)網(wǎng)絡(luò)層數(shù)由2 層增長到6 層時(shí),訓(xùn)練時(shí)間由78 s 增加到144 s。而當(dāng)網(wǎng)絡(luò)層數(shù)確定在5 層時(shí),準(zhǔn)確率達(dá)到了99.39%。當(dāng)層數(shù)為6 層時(shí),訓(xùn)練時(shí)間大幅增加,達(dá)到144 s。而準(zhǔn)確率卻下降了,通過綜合對比,將深層網(wǎng)絡(luò)層數(shù)設(shè)置為5層。層數(shù)對比如表5所示。
表5 層數(shù)對比
(2)Dropout的參數(shù)設(shè)置
確定最佳Dropout 隨機(jī)刪除率。將Dropout 隨機(jī)刪除率設(shè)置為從0.1~0.5,當(dāng)Dropout 隨機(jī)刪除率設(shè)置為0.15時(shí),準(zhǔn)確率達(dá)到最高值,之后準(zhǔn)確率開始逐漸下降,將Dropout隨機(jī)刪除率設(shè)置為0.1或0.15時(shí),模型檢測性能達(dá)到最佳值。Dropout對比如表6所示。
表6 Dropout對比
(3)優(yōu)化器對比
確定最佳優(yōu)化器。選擇4 種常見的優(yōu)化算法放入模型中,進(jìn)行模型的檢測性能對比,如表7 所示。深度神經(jīng)網(wǎng)絡(luò)中常見的SGD 優(yōu)化器的準(zhǔn)確率為96.54%,檢測效果一般,其中選用Adam 優(yōu)化器時(shí),神經(jīng)網(wǎng)絡(luò)模型的檢測效果最佳,準(zhǔn)確率達(dá)到99.53%。優(yōu)化器對比如表7所示。
表7 優(yōu)化器對比
4.5.2 與其他模型對比分析
(1)數(shù)據(jù)抽樣對比
為了驗(yàn)證ADASYN-SDA 模型的有效性,隨機(jī)抽取4個(gè)實(shí)驗(yàn)數(shù)據(jù)集進(jìn)行驗(yàn)證,并與SDA、AE-DNN和MSVM模型進(jìn)行實(shí)驗(yàn)對比。4 個(gè)實(shí)驗(yàn)數(shù)據(jù)集數(shù)據(jù)分布如表8所示。
表8 實(shí)驗(yàn)數(shù)據(jù)分配
(2)檢測結(jié)果分析
將4 個(gè)實(shí)驗(yàn)數(shù)據(jù)集IDS1、IDS2、IDS3 和IDS4 數(shù)據(jù)輸入ADASYN-SDA、SDA、AE-DNN 和MSVM 模型中進(jìn)行準(zhǔn)確率、檢測率、誤報(bào)率等對比實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如圖7~9、表9~11 所示,4 種模型實(shí)驗(yàn)結(jié)果平均值如表12所示。
圖7 準(zhǔn)確率實(shí)驗(yàn)結(jié)果
由圖7~9、表9~11 實(shí)驗(yàn)結(jié)果可知,在4 種不同數(shù)據(jù)集中,ADASYN-SDA 模型的準(zhǔn)確率、檢測率和誤報(bào)率三項(xiàng)指標(biāo)均優(yōu)于對比實(shí)驗(yàn)的3 個(gè)模型。
圖9 誤報(bào)率實(shí)驗(yàn)結(jié)果
表9 準(zhǔn)確率實(shí)驗(yàn)結(jié)果 %
表10 檢測率實(shí)驗(yàn)結(jié)果 %
表11 誤報(bào)率實(shí)驗(yàn)結(jié)果 %
穩(wěn)定性分析:ADASYN-SDA 模型表現(xiàn)出相對平穩(wěn)的檢測性能,其中誤報(bào)率最為平穩(wěn),4 個(gè)數(shù)據(jù)的誤報(bào)率分別為0.29%、0.50%、0.34%和0.22%。而AE-DNN 和MSVM 模型在平均準(zhǔn)確率、誤報(bào)率和檢測率上出現(xiàn)了較大波動(dòng)。在穩(wěn)定性上,不及ADASYN-SDA模型。SDA模型,穩(wěn)定性上與ADASYN-SDA模型相似。
性能分析:由表12 可知ADASYN-SDA 模型對比SDA、AE-DNN、MSVM 模型,平均準(zhǔn)確率分別提高了1.39%、4.69%和4.82%,平均檢測率分別提高了6.74%、9.62%和11.93%,平均誤報(bào)率分別降低了0.58%、0.77%和0.93%。
表12 四種模型實(shí)驗(yàn)結(jié)果平均值 %
綜上所述,ADASYN-SDA 模型在穩(wěn)定性上優(yōu)于AE-DNN和MSVM模型,在平均準(zhǔn)確率、平均檢測率和平均誤報(bào)率三種評價(jià)指標(biāo)上優(yōu)于SDA、AE-DNN和MSVM模型。因此,ADASYN-SDA 模型在檢測性能上擁有比較明顯的優(yōu)勢。
(3)U2R、R2L檢測率
表4 的抽樣測試集中R2L 攻擊類型的數(shù)量為196,U2R攻擊類型的數(shù)量為10,相比其他類型實(shí)驗(yàn)數(shù)據(jù)樣本比例嚴(yán)重失衡。使用ADASYN 方法對訓(xùn)練集中U2R、R2L類型數(shù)據(jù)進(jìn)行過采樣處理。
同時(shí)對ADASYN-SDA、SDA、AE-DNN 和MSVM四種模型。使用表4的抽樣數(shù)據(jù),進(jìn)行檢測率實(shí)驗(yàn)對比分析。實(shí)驗(yàn)表明,ADASYN-SDA 模型的分類檢測率上略高于SDA、AE-DNN、MSVM模型,并提高了少數(shù)類別攻擊類型數(shù)據(jù)(U2R,R2L)檢測率,低頻攻擊檢測率如表13所示。
表13 低頻攻擊檢測率 %
對于海量高維度、不平衡數(shù)據(jù),傳統(tǒng)入侵檢測模型效果差的問題,提出了自適應(yīng)過采樣算法(ADASYN)算法與堆疊式降噪自編碼器(SDA)結(jié)合算法。在SDA模型中加入一定概率的Dropout 正則化,可以緩解深度網(wǎng)絡(luò)模型容易產(chǎn)生過擬合現(xiàn)象。Adam算法優(yōu)化損失函數(shù)有效避免了局部最優(yōu)問題,加快了網(wǎng)絡(luò)收斂速度,大幅度提升了模型檢測性能。針對NSL-KDD數(shù)據(jù)集存在數(shù)據(jù)比例不平衡問題,采用ADASYN 算法對少數(shù)類別的數(shù)據(jù)U2R 與R2L 進(jìn)行過采樣處理,有效提升了低頻攻擊數(shù)據(jù)檢測率。使用預(yù)處理后數(shù)據(jù)集,在SDA 模型中進(jìn)行集成式特征提取,進(jìn)行入侵檢測。實(shí)驗(yàn)表明,相較于對比模型,在準(zhǔn)確率、檢測率、誤判率三個(gè)評價(jià)指標(biāo)上都提升了一定的百分比,ADASYN-SDA 模型的平均準(zhǔn)確率達(dá)到99.01%,平均誤報(bào)率達(dá)到0.34%,平均檢測率達(dá)到97.01%。雖然該方法具有較為良好與穩(wěn)定的檢測性能,但仍然具有提升空間,如何提高該模型異常樣本檢測率,是下一步需要解決的關(guān)鍵問題。