劉 源,劉勝全,劉 艷
(新疆大學信息科學與工程學院,新疆 烏魯木齊 830046)
近些年來,互聯(lián)網(wǎng)技術(shù)飛速發(fā)展且逐漸成熟,網(wǎng)絡所帶來的便利已經(jīng)滲透到了人們生產(chǎn)生活中的各個方面,隨之而來的是網(wǎng)絡攻擊的風險也急劇增加.網(wǎng)絡攻擊的罪魁禍首之一就是網(wǎng)絡入侵,現(xiàn)有的入侵檢測技術(shù)基于模式匹配,準確率高但卻需要人工建立特征庫,而基于深度學習的入侵檢測方法無須人工提取特征,但對于少數(shù)類攻擊檢測率低,因此如何提高少數(shù)類的識別率是目前網(wǎng)絡入侵檢測方法面臨的主要難題.
在文本分類領域,TextCNN取得了非常好的分類效果[1],它采用一個主任務加兩個輔助任務完成整個分類模型的構(gòu)建,借助輔助任務來改善原任務模型的性能.
相較于傳統(tǒng)機器學習方法,深度學習在特征提取方面有著更好的表現(xiàn),近年來隨著深度學習的逐漸成熟,入侵檢測方法也逐漸向深度學習靠攏.Javaid等[2]采用稀疏自編碼器做特征提取,取得了比傳統(tǒng)機器學習更好的結(jié)果;Tan等[3]將預訓練深度置信網(wǎng)絡(DBN)引入入侵檢測,同時與傳統(tǒng)機器學習方法進行了對比;楊昆明等[4]在采用深度置信網(wǎng)絡的情況下,使用SVM代替SOFTMAX分類器,在二分類上取得了更好的結(jié)果;Deng等[5]將卷積神經(jīng)網(wǎng)絡(CNN)應用于入侵檢測,將流量信息轉(zhuǎn)換為灰度圖再通過CNN提取特征,加強了模型的通用性,同時取得了較好的成果;Kim等[6]使用了長短時記憶網(wǎng)絡(LSTM),同時提出了一種神經(jīng)語言模型,將系統(tǒng)調(diào)用序列建模為一種自然語言,降低了誤報率;方圓等[7]提出了一種混合模型,將卷積神經(jīng)網(wǎng)絡和長短時記憶網(wǎng)絡串聯(lián)起來,先經(jīng)過CNN提取出網(wǎng)絡流量的空間特征,再通過LSTM對已經(jīng)時間序列化的數(shù)據(jù)進行訓練最終得到結(jié)果.
上述深度學習方法均采用單一任務,即對模型只進行二分類或多分類訓練,該方法雖然對常見類型能夠有較好的判別,但流量數(shù)據(jù)不平衡性導致少數(shù)類別召回率低的問題仍然存在.本文結(jié)合注意力混合模型與多任務學習,對高維流量特征的權(quán)重進行初始化,從眾多信息中選擇出更關(guān)鍵的信息.再分別提取空間特征與時序特征,將兩部分特征進行融合,從而獲得更加全面的流量信息,通過輔助任務的加入,降低數(shù)據(jù)不平衡性的影響以提升分類準確率和泛化性能.
多任務學習的主要目標是通過多個相關(guān)的不同任務,來優(yōu)化共享網(wǎng)絡的參數(shù),多任務學習能夠更好地挖掘任務之間具有的聯(lián)系[8].
多任務學習包括聯(lián)合學習、自主學習和帶輔助任務的學習.其中帶輔助任務的學習方式通過劃分任務為主任務和輔助任務,利用輔助任務的信息來改進主任務的學習性能,從而可以學習到多個任務上的統(tǒng)一表示,進而實現(xiàn)對輔助任務的注意力機制.因此通過多任務學習,能夠改善樣本不平衡性帶來的分類誤差.多任務學習模型公式為
(1)
其中:wm為第m個任務的一列的權(quán)重,xm,j為第m個任務的第j個樣例,ym,j代表對應的輸出,εm代表噪聲.式中多個任務的信息共享是通過共享特征與共享隱層神經(jīng)元實現(xiàn)的,所有任務都由某種結(jié)構(gòu)相連接,通過同時優(yōu)化多個損失函數(shù),使網(wǎng)絡的泛化能力更加強大.
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡在池化層會丟失大量的信息,這就導致網(wǎng)絡的輸入微小變化的敏感度降低,其輸出幾乎是不變的.但是我們希望網(wǎng)絡能夠保留更多的細節(jié)信息.Sabour等[9]提出了膠囊網(wǎng)絡結(jié)構(gòu)克服了這些缺點.膠囊網(wǎng)絡提供了一個實體間局部到全局的關(guān)系方法,在膠囊網(wǎng)絡里,細節(jié)的層次結(jié)構(gòu)信息會被網(wǎng)絡提取出來,由于提取的細節(jié)信息更多,所以膠囊網(wǎng)絡僅需少量的數(shù)據(jù)即可達到更好的效果.
膠囊網(wǎng)絡由膠囊層組成,每一層都被劃分為一組稱為膠囊的神經(jīng)元,膠囊的輸入輸出均為向量形式.為使膠囊的輸出向量表示為某種概率,Hinton使用了壓縮函數(shù)(Squashing)對向量進行歸一化,保證向量的長度在0,1之間.
圖1為膠囊網(wǎng)絡示意圖,其中squash函數(shù)的公式為
(2)
式中:vj為膠囊j的輸出,sj為膠囊j所有輸入向量的加權(quán)和,即前層膠囊的輸出向量,其公式為
(3)
其中cij為耦合系數(shù),由softmax函數(shù)計算求出,其初值為bij,cij的公式為
(4)
其中bij是膠囊i耦合到膠囊j的對數(shù)先驗概率,它依賴于兩個膠囊的位置和類型.通過計算上一層中每個膠囊的輸出vj與預測μij之間的一致性,重新確定耦合系數(shù).
(5)
通過動態(tài)路由算法,不斷迭代,最終計算出膠囊的輸出vj.
圖1 膠囊網(wǎng)絡結(jié)構(gòu)
簡單循環(huán)單元(SRU)是由Tao等[10]于2017年提出.GRU網(wǎng)絡能夠很好地解決傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡誤差梯度隨著時間長度的增加而逐漸變小難以收斂的缺點,但是傳統(tǒng)RNN結(jié)構(gòu)如LSTM和GRU在計算當前時間步狀態(tài)時需要上一個時間步的隱層輸出,這嚴重限制了RNN模型的并行計算能力,拖慢了整個序列的處理速度.而SRU對GRU的門結(jié)構(gòu)進行了修改,引入了Skip-Connection結(jié)構(gòu)[11].使當前時間步計算不再依賴上一個時間步的隱層輸出,大大加強了并行計算能力.SRU的單元公式為
(6)
ft=s(Wfxt+bf);
(7)
rt=s(Wrxt+br);
(8)
(9)
ht=rt·g(ct)+(1-rt)·xt.
(10)
入侵檢測問題可以看作一個多分類問題,其問題可以形式化如下:存在一個流量空間X以及固定的類別集合L=(l1,l2,l3,…,lj),對于訓練集D,D?X,每條流量可以表示為〈d,l〉?X×L,我們的目標是訓練一個分類器C:X→L,對于給定的d?X,確定C(d)?L.
膠囊網(wǎng)絡沒法有效提取上下文數(shù)據(jù)長期的依賴關(guān)系,但卻能很好地提取局部層次結(jié)構(gòu)特征.SRU能夠提取數(shù)據(jù)間的時序依賴關(guān)系,但卻對局部層次特征表現(xiàn)較差.通過結(jié)合不同模型的特點,更加全面提取數(shù)據(jù)特征[12].而為了解決數(shù)據(jù)分布不平衡帶來的收斂速度慢、泛化性能差等影響,引入了輔助二分類任務,通過二分類判斷流量是否為入侵流量,將單任務學習中難以提取的入侵特征引入作為輔助信息,通過與多分類任務學習相同的共享網(wǎng)絡結(jié)構(gòu),來調(diào)整共享隱層的權(quán)重,減小模型對多數(shù)類別的偏向,增強其泛化能力,聯(lián)合學習模型的工作流程如圖2所示.
圖2 混合模型結(jié)構(gòu)
(1) 對78維的流量數(shù)據(jù)進行歸一化,其中xmin,xmax分別代表X每個分量的最小和最大值.
(11)
(2) 將歸一化后的數(shù)據(jù)一份轉(zhuǎn)化為9*9的灰度圖輸入膠囊網(wǎng)絡模塊得到特征向量Hc,一份通過注意力層后輸入SRU模塊得到特征向量Hr.
(3) 將Hc與Hr拼接,得到混合后的向量Hf.
(4) 通過全連接層由softmax分類器分類.
對于多任務損失函數(shù)來說,X為輸入向量,Yi為第i個任務的標簽,其總損失可以表示為
(12)
其中λi為損失Li的權(quán)重,是對于每個任務所做貢獻的衡量,手動調(diào)節(jié)λi十分耗時,本文引入動態(tài)權(quán)重搜索.
(13)
(14)
首先計算相對下降率wk,即每個子任務與前一輪epoch損失的比值,然后除以超參T,T越大代表個任務間權(quán)重差異越小,最后進行exp映射后,計算各個損失所占比.
為了提高少數(shù)類的召回率,額外引入一個二分類任務,其中Lc為多分類損失、Lbc為二分類損失,其公式為
Lmc=-α(1-softmax(H))γ·
log(softmax(H));
(15)
Lbc=-α(1-D(H))γlog(D(H))+
(1-α)D(H)γlog(1-D(H)).
(16)
該公式在原始交叉熵損失上加入平衡因子α和γ對損失函數(shù)進行約束,平衡因子α用來平衡正負樣本,當α趨近1時,1-α趨近0,即負樣本比正樣本占比小.而平衡因子γ則對樣本易分程度進行了平衡,由于D(H)的輸出在(0,1)之間,因此當γ>1時,D(H)γ增大而(1-D(H))γ減小,即置信度高則該樣本易分,其損失會降低,使模型更關(guān)注難分樣本.
大多數(shù)入侵檢測模型所采用的數(shù)據(jù)集KDD-99或NLS-KDD距今已有十多年[13].然而,對于當前的網(wǎng)絡威脅環(huán)境,這些數(shù)據(jù)集并不能全面反映網(wǎng)絡流量和入侵攻擊,考慮到網(wǎng)絡數(shù)據(jù)集應該具有時效性,本文采用了CICIDS2017數(shù)據(jù)集[14].該數(shù)據(jù)集由加拿大網(wǎng)絡安全研究所提供,其融合了真實的正常和攻擊流量.更適合模擬現(xiàn)有網(wǎng)絡環(huán)境.數(shù)據(jù)集中所包含攻擊類型見表1.其中KDD99與NSL-KDD數(shù)據(jù)集中并不包含Browser、Bdoor以及DNS攻擊類型,而CICIDS-2017包含了現(xiàn)在流行的大多數(shù)攻擊.因此采用該數(shù)據(jù)集訓練的模型更加適應現(xiàn)有的網(wǎng)絡環(huán)境.
表1 數(shù)據(jù)集包含攻擊類型
CICIDS2017數(shù)據(jù)集十分龐大.其包含3 119 345條數(shù)據(jù),15個類別標簽(14個攻擊類型+1個正常類型).刪除缺失數(shù)據(jù)后仍有2 830 540條數(shù)據(jù).該數(shù)據(jù)集雖然包含了大多數(shù)攻擊場景,但是其缺點是數(shù)據(jù)分布不平衡.各類別的分布如表2 所示.
表2 入侵類型分布
可以看出BEGIN的占比為83.4%,HeartBleed的占比為0.000 39%,數(shù)據(jù)集非常不平衡將會對分類器的分類性能有嚴重影響,分類器會更加偏向?qū)颖九袆e為多數(shù)類,而忽視少數(shù)類別,因為這樣能夠更加輕易獲得較低的損失值.因此,在進行訓練過程前,需要對數(shù)據(jù)集的不平衡性進行處理.最簡單的方法即為重新劃分類別,該數(shù)據(jù)集中正常類很難再細分,于是可以考慮將少數(shù)攻擊類合并為新的類別,調(diào)整后的類別分布如表3所示.
從表3中可以看出攻擊類別的占比有著明顯的提升,從而大大降低了類別的不平衡性.由于類別的分布有著很大的不平衡性,正樣本是負樣本的數(shù)倍之多,故模型采用分層K折交叉驗證,即在每一折中都保持著原始數(shù)據(jù)中各個類別的比例關(guān)系.選取K為3,將2/3用于訓練,1/3用于測試.訓練3次,取其平均值.
本文在Ubuntu18.04環(huán)境上進行,采用Keras深度學習框架,后端實現(xiàn)為TensorFlow-ROCm,集成環(huán)境為Anaconda3.系統(tǒng)硬件配置如下:CPU為AMD ryzen 3600x,內(nèi)存為16 GB,GPU為AMD RX580.具體設置參數(shù)見表4和5.
表4 膠囊網(wǎng)絡參數(shù)設置
表5 SRU網(wǎng)絡參數(shù)設置
聯(lián)合學習模型中,膠囊網(wǎng)絡和SRU單元的輸出向量均為64維,經(jīng)過拼接后為128維向量,該向量通過一層前饋全連接網(wǎng)絡后由softmax分類.層與層之間加入Layer Normalization對數(shù)據(jù)進行歸一化,使其分布一致,避免梯度消失,加快收斂速度.
本文通過混淆矩陣(見表6)分別計算準確率 (A),查準率(P),查全率 (R),和F1值(F1)來評估模型的性能.
(11)
表6 混淆矩陣
(12)
(13)
其中P是模型預測為正例中預測正確的比重,R是所有真實值是正例的結(jié)果中預測正確的比重,F(xiàn)1值是對查準率和查全率進行了綜合考慮,F(xiàn)1值越高,說明模型越穩(wěn)健,性能越好.
2.3.1 收斂性分析
圖3和4展示了多任務聯(lián)合模型訓練時的準確率和損失值的變化趨勢,其中acc和loss分別代表代表準確率和損失.在20次的迭代訓練中,準確率穩(wěn)定上升直至訓練后期趨于平穩(wěn),同時損失值也平穩(wěn)地下降,10輪之后基本穩(wěn)定不再變化,表明本模型良好且能夠快速收斂.訓練使用完整數(shù)據(jù)集,對比試驗也采用相同的數(shù)據(jù)集和測試集.
圖3 多任務聯(lián)合模型的準確率
圖4 多任務聯(lián)合模型損失
2.3.2 模型對比分析
為了驗證本文模型對入侵檢測有著更好的效果,分別對比了文獻[5]中基于卷積神經(jīng)網(wǎng)絡的入侵檢測方法,文獻[6]中基于長短時記憶網(wǎng)絡的方法以及文獻[7]中基于CNN+GRU混合模型的方法.同時也對比了本文模型添加輔助任務和不添加輔助任務的情況.通過對比各個模型的性能指標來分析模型的優(yōu)缺點,實驗結(jié)果如表7所示.
表7 不同模型的性能對比 %
可以看出在單一模型中LSTM和CNN模型的性能基本相同,而由于CNN+GRU混合模型能夠提取更加豐富的特征,故所有類別的F1均高于單一模型.但是3個模型對Infiltration和WebAttack類的檢測上均表現(xiàn)較差,尤其是 Infiltration類,這3種方法均無法檢測出該類.對于不添加輔助函數(shù)的本文模型,性能與CNN+GRU模型類似,對Infiltration類別的判斷有所提高,而添加了輔助任務的多任務聯(lián)合學習模型不僅在P,R,F(xiàn)1值方面均優(yōu)于對比模型,同時能夠很好的檢測出Infiltration與WebAttack這樣的少數(shù)類別.這是因為數(shù)據(jù)集中惡意樣本數(shù)相對較少,而少數(shù)類別對神經(jīng)網(wǎng)絡的權(quán)重影響過于小,損失函數(shù)通過忽視少數(shù)類別能夠更簡單的降低損失值,因此本文方法引入一個二分類的輔助損失,通過該損失函數(shù)來調(diào)整網(wǎng)絡共享層的權(quán)重,使其能夠注意到少數(shù)的攻擊類別.
2.3.3 輔助損失驗證分析
在多任務聯(lián)合學習模型中,需要對每個任務的損失進行權(quán)重分配,必須保證輔助損失能夠微調(diào)模型權(quán)重參數(shù)但又不能主導整個模型的訓練[15].通過使用動態(tài)損失權(quán)重和不使用動態(tài)損失權(quán)重進行模型訓練來確定該方法是否有效,結(jié)果如表8所示.可以發(fā)現(xiàn)使用動態(tài)損失權(quán)重的模型F1值明顯優(yōu)于不使用該方法.其動態(tài)調(diào)整二分類損失的比重可以更好地調(diào)整模型參數(shù),提高少數(shù)類別的召回率.
表8 動態(tài)損失權(quán)重 %
本文提出的多任務聯(lián)合學習方法,很好地解決了流量數(shù)據(jù)中少數(shù)類別檢測難的問題,將CapsNet與SRU相結(jié)合提取更加全面的流量信息,最后結(jié)合輔助任務來提升少數(shù)類的召回率.通過對比不同方法的檢測結(jié)果,結(jié)果顯示本文方法在大幅提高少數(shù)類別召回率,同時查準率也較其他方法有所提升.由于模型針對特定數(shù)據(jù)集訓練,未考慮真實網(wǎng)絡環(huán)境下的流量數(shù)據(jù),所以下一步研究將著重于真實情況下的網(wǎng)絡入侵,建立一個泛化能力與抗干擾能力更強的入侵監(jiān)測系統(tǒng),來驗證多任務聯(lián)合學習方法的性能.