嚴(yán)志兵,馬自強(qiáng),王 恒,黃 巖
(寧夏大學(xué) 信息工程學(xué)院,銀川 750000)
隨著計(jì)算機(jī)技術(shù)的發(fā)展,網(wǎng)絡(luò)流量也呈現(xiàn)井噴式增長(zhǎng),各類新型應(yīng)用流量層出不窮,這些各式各樣的流量中可能混雜著惡意攻擊流量,給網(wǎng)絡(luò)信息安全帶來(lái)了嚴(yán)重威脅??茖W(xué)地對(duì)網(wǎng)絡(luò)中的異常流量進(jìn)行分類,一方面能夠根據(jù)分類結(jié)果科學(xué)預(yù)測(cè)網(wǎng)絡(luò)中傳輸?shù)闹饕獦I(yè)務(wù),從而制定合理的網(wǎng)絡(luò)資源分配策略;另一方面也能發(fā)現(xiàn)網(wǎng)絡(luò)中存在的惡意流量,保障網(wǎng)絡(luò)安全[1]。
目前傳統(tǒng)的網(wǎng)絡(luò)流量分類有如下幾種方法,分別是基于端口的流量檢測(cè)、基于深度包檢測(cè)方法、基于機(jī)器學(xué)習(xí)的方法和基于深度學(xué)習(xí)的網(wǎng)絡(luò)流量檢測(cè)[2-3]?;诙丝诘牧髁孔R(shí)別比較簡(jiǎn)單,由于每一項(xiàng)應(yīng)用程序都有一個(gè)固定的端口號(hào),如HTTP協(xié)議的端口號(hào)是8080、SSH協(xié)議的端口號(hào)為22等,所以研究人員只需要通過(guò)流量中的端口信息,就可以知道該流量的所屬應(yīng)用類別,但是隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,互聯(lián)網(wǎng)普遍采用隨機(jī)端口號(hào)策略[4]和端口偽裝[5],這樣就使得基于端口的流量檢測(cè)技術(shù)性能下降,同時(shí)對(duì)于新型的網(wǎng)絡(luò)流量,基于端口的流量檢測(cè)技術(shù)也無(wú)法有效地進(jìn)行識(shí)別。為了彌補(bǔ)端口檢測(cè)技術(shù)的不足,研究人員便提出了深度包檢測(cè)技術(shù),所謂的深度包檢測(cè)技術(shù)是在進(jìn)行流量識(shí)別時(shí),通過(guò)分析數(shù)據(jù)包中是否有特殊的字符來(lái)進(jìn)行分類,這種方法不僅彌補(bǔ)了端口檢測(cè)技術(shù)的不足,而且檢測(cè)的準(zhǔn)確度也很高。但隨著現(xiàn)在加密技術(shù)的使用,一些攻擊者會(huì)將攻擊進(jìn)行加密,這樣就使得深度包檢測(cè)技術(shù)識(shí)別率下降,同時(shí)深度包檢測(cè)技術(shù)也無(wú)法對(duì)新型流量進(jìn)行檢測(cè),因?yàn)樯疃劝鼨z測(cè)技術(shù)需要專家將流量指紋添加到指紋庫(kù)中,隨著新型網(wǎng)絡(luò)流量的增加,手工添加指紋也是一個(gè)龐大的工程,這些缺點(diǎn)使得深度包檢測(cè)技術(shù)逐漸被淘汰。隨著機(jī)器學(xué)習(xí)技術(shù)的興起,研究者開(kāi)始將機(jī)器學(xué)習(xí)技術(shù)應(yīng)用到流量分類上,首先將原始流量進(jìn)行一系列特征預(yù)處理,包括對(duì)空值的處理、字符的處理、歸一化處理、降維處理等,然后將處理好的數(shù)據(jù)分為訓(xùn)練集和測(cè)試集,最后應(yīng)用機(jī)器學(xué)習(xí)算法對(duì)訓(xùn)練集和測(cè)試集進(jìn)行訓(xùn)練和分類。機(jī)器學(xué)習(xí)技術(shù)不僅可以識(shí)別新型的網(wǎng)絡(luò)流量,且識(shí)別率也比較高。韓曉燕[6]提出了一種改進(jìn)的貝葉斯算法,文章中將每個(gè)流量特征賦予不同的權(quán)重,通過(guò)權(quán)值來(lái)加強(qiáng)檢測(cè)的精度,但是沒(méi)有考慮不同流量特征之間的聯(lián)系。饒鮮等[7]使用SVM作為異常流量檢測(cè)的分類器,實(shí)驗(yàn)證明與其他算法相比,SVM算法的準(zhǔn)確率更高。雖然機(jī)器學(xué)習(xí)的方法在流量檢測(cè)上有很高的準(zhǔn)確性,也能對(duì)新型流量進(jìn)行預(yù)測(cè),但是機(jī)器學(xué)習(xí)的方法過(guò)度依賴人工特征選擇。顯然基于機(jī)器學(xué)習(xí)的方法也無(wú)法滿足當(dāng)前流量快速增長(zhǎng)的需求。
近年來(lái),深度學(xué)習(xí)在圖像和語(yǔ)音識(shí)別領(lǐng)域也有了長(zhǎng)足的發(fā)展。一些人開(kāi)始將深度學(xué)習(xí)技術(shù)與流量檢測(cè)相結(jié)合。其中,卷積神經(jīng)網(wǎng)絡(luò)在圖像處理方面表現(xiàn)很突出,于是很多人開(kāi)始將網(wǎng)絡(luò)流量轉(zhuǎn)化為二維矩陣形式,然后用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,這個(gè)過(guò)程是一個(gè)完全端到端的過(guò)程,它不需要復(fù)雜的人工提取特征,而且預(yù)測(cè)準(zhǔn)確率更高。深度學(xué)習(xí)從“深度”和“學(xué)習(xí)”兩方面來(lái)進(jìn)行理解,學(xué)習(xí)是指對(duì)提取數(shù)據(jù)從一個(gè)抽象到具體的過(guò)程,深度是指隨著網(wǎng)絡(luò)層數(shù)的加深,模型的學(xué)習(xí)效果會(huì)更好,但是實(shí)際上隨著網(wǎng)絡(luò)層數(shù)的加深,基于深度學(xué)習(xí)的網(wǎng)絡(luò)會(huì)出現(xiàn)梯度爆炸或者梯度消失的問(wèn)題,導(dǎo)致訓(xùn)練精度逐漸下降。為了解決這個(gè)問(wèn)題,文中嘗試將改進(jìn)的殘差網(wǎng)絡(luò)(ResNet)應(yīng)用到流量分類中,實(shí)驗(yàn)?zāi)M了真實(shí)網(wǎng)絡(luò)環(huán)境,選取公開(kāi)數(shù)據(jù)集Moore,將該一維流量數(shù)據(jù)轉(zhuǎn)化為16×16的灰度圖,以準(zhǔn)確度和損失值作為衡量指標(biāo),實(shí)驗(yàn)證明該算法比卷積神經(jīng)網(wǎng)絡(luò)有更佳的表現(xiàn)。
卷積神經(jīng)網(wǎng)絡(luò)由卷積層、激活函數(shù)層、池化層、全連接層以及softmax層組成。卷積層負(fù)責(zé)提取數(shù)據(jù)的特征,在進(jìn)行卷積操作時(shí)共享一個(gè)相同的卷積核,這樣極大地減少卷積操作的參數(shù),也省去人工提取特征的步驟。激活函數(shù)層主要負(fù)責(zé)將一些冗余信息和很弱的特征剔除,常用的激活函數(shù)有ReLU、Sigmod、tannh等,通過(guò)激活函數(shù),模型會(huì)提取到更加有用的信息。在提取到特征之后,對(duì)這些特征進(jìn)行一系列計(jì)算,但是如果提取到的數(shù)據(jù)特征很大,模型的運(yùn)算量相應(yīng)會(huì)變大,這樣使得模型訓(xùn)練時(shí)間變長(zhǎng)。所以選擇對(duì)不同位置的特征進(jìn)行聚合統(tǒng)計(jì),如計(jì)算一個(gè)區(qū)域的最大值或者平均值作為特征,這種方法稱為池化操作,常用的池化操作有最大池化和平均池化。卷積神經(jīng)網(wǎng)絡(luò)模型具體架構(gòu)如圖1所示。
圖1 卷積神經(jīng)網(wǎng)絡(luò)模型架構(gòu)
王偉[8]在對(duì)異常流量分析中就采用一維卷積神經(jīng)網(wǎng)絡(luò),將原始流量經(jīng)過(guò)一系列處理之后,生成28×28的灰度圖,實(shí)驗(yàn)以2分類、10分類和20分類作為分類器,證明了3種分類器的精度都非常高,且查準(zhǔn)率、查全率、F1值都達(dá)到了98%。張小莉等[9]設(shè)計(jì)了離差標(biāo)準(zhǔn)化的卷積神經(jīng)網(wǎng)絡(luò),將Moore數(shù)據(jù)集作為訓(xùn)練集和測(cè)試集,相比傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)精度提升了5%~8%,開(kāi)銷降低了3.2%。隨著網(wǎng)絡(luò)層數(shù)的加深,卷積神經(jīng)網(wǎng)絡(luò)將出現(xiàn)梯度下降或者梯度消失的問(wèn)題。這是由于在網(wǎng)絡(luò)層數(shù)加深之后,在向后傳播時(shí)無(wú)法將梯度更新到前面的網(wǎng)絡(luò)層,導(dǎo)致一些超參數(shù)無(wú)法更新,從而使得測(cè)試的結(jié)果變差。針對(duì)卷積神經(jīng)網(wǎng)絡(luò)梯度消失或梯度爆炸的問(wèn)題,He等[10]提出了一種殘差網(wǎng)絡(luò)。通過(guò)在一個(gè)淺層網(wǎng)絡(luò)基礎(chǔ)上疊加一個(gè)恒等映射層,可以讓網(wǎng)絡(luò)隨著深度的增加而不出現(xiàn)退化。很多研究證明,殘差網(wǎng)絡(luò)不僅可以緩解梯度消失或梯度爆炸的問(wèn)題,而且它也能夠提高訓(xùn)練的精度。
殘差網(wǎng)絡(luò)即它允許原始輸入的信息直接通過(guò)恒等映射層傳輸?shù)缴顚泳W(wǎng)絡(luò)中,圖2所示是一個(gè)ResNet學(xué)習(xí)的原理。
圖2 ResNet原理
假設(shè)某段網(wǎng)絡(luò)輸入是X,期望的輸出是H(X),此時(shí)殘差網(wǎng)絡(luò)的學(xué)習(xí)目標(biāo)為H(X)=F(X)+X。它的基本原理為
Z[l+1]=W[l+1]a[l]+b[l].
(1)
式中:a為l層的激活值;a[l]與權(quán)重W[l+1]相乘加上偏置b[l]得到線性激活值Z[l+1],然后經(jīng)過(guò)非線性激活函數(shù)ReLU函數(shù)激活得到a[l+1],ReLU函數(shù)能夠刪除數(shù)據(jù)中的噪音和冗余信息,加強(qiáng)對(duì)關(guān)鍵信息的提取,一個(gè)殘差塊中包括線性激活和非線性激活,在恒等映射層的作用下,上層的信息能夠傳入到更深的網(wǎng)絡(luò)層中,這也是殘差網(wǎng)絡(luò)能夠防止梯度消失的關(guān)鍵所在。式(2)為正向傳播過(guò)程中非線性激活操作
a[l+1]=g(Z[l+1]).
(2)
再進(jìn)行下一輪的線性激活和非線性激活
Z[l+2]=W[l+2]a[l+1]+b[l+2],
(3)
a[l+2]=g(Z[l+2]+a[l]).
(4)
式中:a[l+1]為l+1層的激活值;W[l+2]和b[l+2]為l+2層的權(quán)重和偏置,經(jīng)過(guò)線性激活之后得到Z[l+2],然后再經(jīng)過(guò)非線性激活時(shí)將a[l]與Z[l+2]的和作為變量直接傳入ReLU函數(shù),對(duì)應(yīng)到殘差網(wǎng)絡(luò)就是直接將a[l]拷貝到更深的網(wǎng)絡(luò)中,這樣就能將上一層的網(wǎng)絡(luò)輸出傳輸?shù)礁顚泳W(wǎng)絡(luò),同時(shí)也解決了卷積神經(jīng)網(wǎng)絡(luò)中梯度爆炸或梯度消失的問(wèn)題。這樣的一個(gè)2層網(wǎng)絡(luò)組成一個(gè)block,兩個(gè)或者多個(gè)block組成一個(gè)殘差單元,許多的殘差單元堆疊起來(lái)形成一個(gè)殘差網(wǎng)絡(luò)模型。原始的殘差網(wǎng)絡(luò)模型并沒(méi)有加入批量歸一化層,使得模型容易過(guò)擬合,且收斂速度比較慢,批量歸一化可以有效地加速模型的收斂,能夠很好地防止過(guò)擬合問(wèn)題。在殘差網(wǎng)絡(luò)中隨著殘差單元的不斷疊加,使得網(wǎng)絡(luò)層數(shù)越來(lái)越深,這也會(huì)出現(xiàn)模型訓(xùn)練時(shí)間長(zhǎng)的問(wèn)題。
為了進(jìn)一步提高殘差網(wǎng)絡(luò)的精確度和收斂時(shí)間,文中提出了一種改進(jìn)的殘差網(wǎng)絡(luò)。圖3為改進(jìn)殘差網(wǎng)絡(luò)的架構(gòu)。
圖3 改進(jìn)殘差網(wǎng)絡(luò)架構(gòu)
圖中殘差模塊由直接映射和恒等映射2個(gè)部分組成,多個(gè)殘差塊組成一個(gè)殘差網(wǎng)絡(luò)模型。首先輸入的數(shù)據(jù)經(jīng)過(guò)一個(gè)BN層,對(duì)輸入數(shù)據(jù)做一個(gè)批量歸一化處理,防止過(guò)擬合現(xiàn)象的發(fā)生。文獻(xiàn)[11]把這種改進(jìn)叫做預(yù)激活殘差網(wǎng)絡(luò),將殘差網(wǎng)絡(luò)批量歸一化層和非線性激活函數(shù)放到卷積層之前,文獻(xiàn)[12]也證明了預(yù)激活殘差網(wǎng)絡(luò)比原始?xì)埐罹W(wǎng)絡(luò)有更高的精確度和泛化能力。文中的改進(jìn)思路是將批量歸一化層和非線性激活函數(shù)層移動(dòng)到卷積層之前,形成預(yù)激活殘差網(wǎng)絡(luò)。為了縮短殘差網(wǎng)絡(luò)的訓(xùn)練時(shí)間和減少過(guò)擬合,在恒等映射層中加入BN層和Conv2D層,這樣使得殘差網(wǎng)絡(luò)收斂更快。本次實(shí)驗(yàn)中每128個(gè)數(shù)據(jù)作為一個(gè)批量,經(jīng)過(guò)一個(gè)1×1的卷積運(yùn)算,再經(jīng)過(guò)一個(gè)3×3的卷積運(yùn)算,最后經(jīng)過(guò)一個(gè)1×1的卷積運(yùn)算,每次卷積運(yùn)算之后都會(huì)通過(guò)一個(gè)非線性函數(shù)去除特征圖中的一些冗余信息,加強(qiáng)對(duì)關(guān)鍵信息的提取。與傳統(tǒng)殘差網(wǎng)絡(luò)不同的是,本次實(shí)驗(yàn)在恒等映射層中加入了一個(gè)BN層和一個(gè)卷積層,這樣操作的目的是使X與F(X)的維數(shù)一樣,而且能大大加強(qiáng)對(duì)關(guān)鍵特征的提取。本實(shí)驗(yàn)殘差網(wǎng)絡(luò)為18層,有4個(gè)殘差單元,每一個(gè)殘差單元中都有線性激活與非線性激活操作,首先對(duì)特征數(shù)據(jù)進(jìn)行一個(gè)降維,然后升維,再將F(X)與X進(jìn)行相加,將相加后的結(jié)果進(jìn)行一次非線性整流函數(shù)運(yùn)算,最后進(jìn)入下一個(gè)殘差單元。
實(shí)驗(yàn)選擇的數(shù)據(jù)集是公開(kāi)的數(shù)據(jù)集Moore。Moore數(shù)據(jù)集是在不同的局域網(wǎng)中抓取的網(wǎng)絡(luò)流量[13],一共包含377 526個(gè)流量樣例,每個(gè)流量中有249個(gè)特征,第249個(gè)特征表示的是流量的所屬類別,其中,每個(gè)數(shù)據(jù)集基本由12種應(yīng)用程序流量組成。
在將數(shù)據(jù)導(dǎo)入模型訓(xùn)練之前,需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,本次實(shí)驗(yàn)考慮將網(wǎng)絡(luò)流量轉(zhuǎn)化灰度圖來(lái)進(jìn)行處理。對(duì)數(shù)據(jù)的預(yù)處理分為以下步驟:
1)流量數(shù)據(jù)的數(shù)值化。由于每個(gè)數(shù)據(jù)流量有249個(gè)特征,但有些特征是布爾類型或文本類型,為了將流量數(shù)據(jù)轉(zhuǎn)化為灰度圖,需要對(duì)這些非數(shù)值類型進(jìn)行數(shù)值化。處理過(guò)程為:布爾類型的True表示1,F(xiàn)alse表示0。對(duì)于文本類型,由于文本特征有多個(gè)取值,此次選擇1~N來(lái)表示不同的文本特征。
2)缺省值處理。每一條數(shù)據(jù)流中都有249個(gè)特征,但由于一些意外情況,使得一些特征并沒(méi)有被采集,從而導(dǎo)致一些流量缺失特征。處理過(guò)程為:對(duì)于布爾類型數(shù)據(jù),用0和1進(jìn)行填充,對(duì)于數(shù)值特征采用平均值來(lái)填充特征數(shù)據(jù)。
3)流量數(shù)據(jù)歸一化。由于流量數(shù)據(jù)數(shù)值的差異,如有些數(shù)值很大,有些數(shù)值很小,這樣會(huì)大大降低預(yù)測(cè)的精度,為了解決這個(gè)問(wèn)題,對(duì)流量進(jìn)行歸一化處理,將數(shù)值限制在0和1之間。
4)數(shù)據(jù)圖片化。由于本次實(shí)驗(yàn)要求輸入的形式是圖片格式,故需要將一維流量轉(zhuǎn)化為灰度圖,根據(jù)Moore數(shù)據(jù)集的特征,設(shè)置灰度圖的大小為16×16。將訓(xùn)練集的特征值和測(cè)試集特征值分別轉(zhuǎn)化為16×16的灰度圖。
為了驗(yàn)證文中改進(jìn)模型在網(wǎng)絡(luò)流量分類中有較好的表現(xiàn),將經(jīng)典的CNN算法[14]與改進(jìn)殘差網(wǎng)絡(luò)進(jìn)行對(duì)比,本次實(shí)驗(yàn)評(píng)價(jià)的指標(biāo)是精確度與損失值,由于數(shù)據(jù)量比較大,迭代次數(shù)選擇5。取5輪的精度值和損失值為衡量標(biāo)準(zhǔn),得到如圖4~6所示的結(jié)果。
圖4 改進(jìn)殘差網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)精度關(guān)系
圖5 卷積神經(jīng)網(wǎng)絡(luò)與改進(jìn)殘差網(wǎng)絡(luò)損失值比較
圖6 改進(jìn)殘差網(wǎng)絡(luò)與深度殘差收縮網(wǎng)絡(luò)精確度比較
由圖4可知卷積神經(jīng)網(wǎng)絡(luò)在5次迭代之后模型精度為98.3%,且隨著網(wǎng)絡(luò)層數(shù)的加深,卷積神經(jīng)網(wǎng)絡(luò)的精度也有較大的波動(dòng),而改進(jìn)的殘差網(wǎng)絡(luò)在第一次迭代之后精度就達(dá)到1,且在后期幾次迭代中都表現(xiàn)穩(wěn)定,精度都保持在1左右。圖5為卷積神經(jīng)網(wǎng)絡(luò)和改進(jìn)殘差網(wǎng)絡(luò)的損失值曲線,從圖中可以發(fā)現(xiàn),改進(jìn)的殘差網(wǎng)絡(luò)損失值一直保持較低的水平,而卷積神經(jīng)網(wǎng)絡(luò)的初始值為0.26,到第5次迭代之后變?yōu)?.05,達(dá)到平穩(wěn)的趨勢(shì)。從精度和損失值2個(gè)指標(biāo)可以看出,改進(jìn)殘差網(wǎng)絡(luò)的性能都優(yōu)于卷積神經(jīng)網(wǎng)絡(luò)。查閱資料知Zhao等[15]提出了深度殘差收縮網(wǎng)絡(luò),通過(guò)在殘差網(wǎng)絡(luò)中加入注意力機(jī)制來(lái)提高模型的精度和減少模型訓(xùn)練時(shí)間,通過(guò)圖6可知,改進(jìn)的殘差網(wǎng)絡(luò)的準(zhǔn)確度與深度殘差收縮網(wǎng)絡(luò)達(dá)到持平,證明了文中設(shè)計(jì)的改進(jìn)殘差網(wǎng)絡(luò)相比于卷積神經(jīng)網(wǎng)絡(luò)在對(duì)流量分類上有更好的表現(xiàn),達(dá)到了預(yù)期的效果。
隨著現(xiàn)代社會(huì)的快速發(fā)展,網(wǎng)絡(luò)流量出現(xiàn)井噴式增長(zhǎng),這給網(wǎng)絡(luò)安全和網(wǎng)絡(luò)管理帶來(lái)了新的挑戰(zhàn),對(duì)網(wǎng)絡(luò)流量進(jìn)行分類,提升網(wǎng)絡(luò)資源利用率或者識(shí)別網(wǎng)絡(luò)中的一些惡意流量成為當(dāng)下一個(gè)研究熱點(diǎn)。文中設(shè)計(jì)了一種改進(jìn)的殘差網(wǎng)絡(luò),在傳統(tǒng)殘差網(wǎng)絡(luò)的恒等映射層中引入Conv2D層和BN層,并模擬了卷積神經(jīng)網(wǎng)絡(luò)和改進(jìn)殘差網(wǎng)絡(luò)在公開(kāi)數(shù)據(jù)集中的表現(xiàn),以預(yù)測(cè)精度和損失值為衡量指標(biāo),最終實(shí)驗(yàn)證明了改進(jìn)殘差網(wǎng)絡(luò)有更好的表現(xiàn)。如何通過(guò)改進(jìn)殘差網(wǎng)絡(luò)的架構(gòu)來(lái)彌補(bǔ)數(shù)據(jù)流量不平衡導(dǎo)致的精度下降和誤差仍是今后工作的重點(diǎn)。