靳明飛
(合肥工業(yè)大學(xué) 安徽 宣城 242000)
隨著互聯(lián)網(wǎng)的迅速發(fā)展,使用人群日益增加。同時(shí),網(wǎng)絡(luò)安全問題也越發(fā)復(fù)雜。網(wǎng)絡(luò)流量是網(wǎng)絡(luò)傳輸?shù)年P(guān)鍵因素,能更好地反映出網(wǎng)絡(luò)系統(tǒng)的工作狀態(tài)。許多常見的網(wǎng)絡(luò)攻擊流量特征十分明顯。通過對(duì)網(wǎng)絡(luò)流量預(yù)測(cè)與分析,使相關(guān)人員能更好地進(jìn)行網(wǎng)絡(luò)管理以及預(yù)防可能出現(xiàn)的網(wǎng)絡(luò)攻擊。
目前,國內(nèi)針對(duì)網(wǎng)絡(luò)流量預(yù)測(cè)方法大部分是基于規(guī)則、范例或基于數(shù)理統(tǒng)計(jì)等推理技術(shù),如SVM、貝葉斯信念網(wǎng)絡(luò)等。隨著深度學(xué)習(xí)中循環(huán)神經(jīng)網(wǎng)絡(luò)的發(fā)展,其在網(wǎng)絡(luò)故障檢測(cè)中具有極大潛力,受到了學(xué)者們廣泛關(guān)注和應(yīng)用。
本文將利用不同結(jié)構(gòu)的LSTM神經(jīng)網(wǎng)絡(luò)對(duì)流量數(shù)據(jù)進(jìn)行特征提取,再利用多項(xiàng)式擬合的方法,并基于強(qiáng)化學(xué)習(xí)的思想,對(duì)不同的特征進(jìn)行修正,從而得到預(yù)測(cè)效果更準(zhǔn)確的LSTM模型。
基于強(qiáng)化學(xué)習(xí)(將多個(gè)模型的輸出結(jié)果通過某一規(guī)則融合修正從而得到更符合需求的模型)的思想,本文設(shè)計(jì)出基于多項(xiàng)式修正的LSTM模型。利用多個(gè)LSTM模型對(duì)同一數(shù)據(jù)樣本的不同特征進(jìn)行特征提取與迭代訓(xùn)練。最后利用多項(xiàng)式擬合的方法對(duì)不同LSTM模型的輸出進(jìn)行多項(xiàng)式加權(quán)修正,以此來取得更好的預(yù)測(cè)結(jié)果。此外,不同的LSTM模型可以并行訓(xùn)練,減少模型整體的訓(xùn)練時(shí)間,極大提高模型的訓(xùn)練效率。總體模型結(jié)構(gòu)設(shè)計(jì)見圖1。
其中數(shù)據(jù)集來自CICIDS中的網(wǎng)絡(luò)流量數(shù)據(jù)。初期通過數(shù)據(jù)分析、數(shù)理統(tǒng)計(jì)等手段劃分出內(nèi)生性特征和外生性特征數(shù)據(jù)集,分別將其輸入到不同結(jié)構(gòu)的LSTM模型中。LSTM模型的搭建采用了Tensorflow2框架中的序列組網(wǎng),可以高效地進(jìn)行模型的訓(xùn)練。而最后多項(xiàng)式修正的目的是尋求一組合適的系數(shù){a1,a2,…,an},盡量保證擬合方程得到的數(shù)據(jù)盡可能地與實(shí)際樣本數(shù)據(jù)相重合。通過多項(xiàng)式擬合來相互修正兩個(gè)LSTM模型結(jié)果的偏差,從而達(dá)到更精確地預(yù)測(cè)值Y′。至此,基于多項(xiàng)式修正的LSTM模型可以簡(jiǎn)化為:
Y(x1,x2)=a0+a1x12+a2x22+a3x1x2+a4x1+a5x2
其中,x1為L(zhǎng)STM_1模型的輸出(提取結(jié)果1),x2為L(zhǎng)STM_2模型的輸出(提取結(jié)果2)。具體步驟如下所述。
1.1.1 數(shù)據(jù)預(yù)處理
通過不同的預(yù)處理方法,構(gòu)造內(nèi)生性特征的樣本集和外生性特征的樣本集。
1.1.2 內(nèi)生性特征數(shù)據(jù)
(1)選取相鄰時(shí)期的流量速率分別作為自變量和因變量。
(2)進(jìn)行數(shù)據(jù)歸一化,防止不同量綱的影響(歸一化后的x=(x-xmean)/(xmax-xmin))。
(3)通過滑動(dòng)窗口[1](選取輸入滑動(dòng)窗口大小k=400,標(biāo)簽滑動(dòng)窗口大小j=64)的方法構(gòu)造樣本集。構(gòu)造歷史時(shí)刻樣本集和訓(xùn)練標(biāo)簽樣本集。
劃分結(jié)果為:對(duì)于第i個(gè)樣本,其輸入為:xi=ri,ri+1,ri+2,…ri+k,(k=400)。
對(duì)應(yīng)的標(biāo)簽為:yi=ri,ri+1,ri+2,…,ri+j,(j=64)。
(4)劃分訓(xùn)練集和驗(yàn)證集,比例為8∶2(劃分訓(xùn)練集和驗(yàn)證集必須在構(gòu)造完滑動(dòng)窗口之后進(jìn)行。如果提前劃分將打亂數(shù)據(jù)的時(shí)序結(jié)構(gòu),將會(huì)無法達(dá)到預(yù)期的結(jié)果)。
1.1.3 外生性特征的提取
(1)選取外生性特征,見表1,包含F(xiàn)low_rate,Flow_IAT_Std,Bwd_Packets/s,Init_Win_bytes_forward等共11個(gè)特征。

表1 外生性特征
(2)進(jìn)行數(shù)據(jù)歸一化處理,消除特征中不同量綱之間的影響。該步驟必須進(jìn)行,否則容易造成“梯度爆炸或梯度消失”等問題。
(3)通過滑動(dòng)窗口(選取輸入滑動(dòng)窗口大小k=400,標(biāo)簽滑動(dòng)窗口大小n=64)的方法構(gòu)造樣本集。構(gòu)造歷史時(shí)刻樣本集和訓(xùn)練標(biāo)簽樣本集。
劃分結(jié)果為:對(duì)于第個(gè)樣本,其輸入為
Xi=[r1,i,r1,i+1,r1,i+2,…,r1,i+k;r2,i,r2,i+1,r2,i+2,…,r2,i+k;…;rj,i,rj,i+1,rj,i+2,…,xj,i+k;]
其中j為特征個(gè)數(shù)。
第個(gè)樣本標(biāo)簽為:yi=r1,r2,r3,…,rn-1,rn。
(4)劃分訓(xùn)練集和驗(yàn)證集,比例為8∶2。
LSTM_1是通過LSTM神經(jīng)網(wǎng)絡(luò)和全連接網(wǎng)絡(luò)的組合,使得計(jì)算后的結(jié)果盡可能地逼近真實(shí)值Y。同時(shí),利用Loss函數(shù)作為評(píng)估標(biāo)準(zhǔn),不斷地通過迭代訓(xùn)練模型更新網(wǎng)絡(luò)參數(shù)至模型收斂,從而達(dá)到預(yù)測(cè)的目的。
其中的LSTM神經(jīng)網(wǎng)絡(luò)是為解決RNN不能學(xué)習(xí)長(zhǎng)期歷史信息的問題而提出的模型,其獨(dú)特“門機(jī)制”在時(shí)間序列預(yù)測(cè)方面頗見成效。該模型特殊的“記憶細(xì)胞”將自身的真實(shí)值與之前積累的外部信息相互結(jié)合,從而利用長(zhǎng)期的信息進(jìn)行學(xué)習(xí)[2]。LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)見圖2。
其中LSTM單元內(nèi)部由各種“門”結(jié)構(gòu)組成,每一個(gè)“門”結(jié)構(gòu)發(fā)揮一種特定的功能,其中不同的“門”發(fā)揮著不同的作用。
遺忘門:完全保持歷史信息或者完全擺脫歷史信息(反映歷史信息的自相關(guān)系數(shù))。計(jì)算公式為:ft=σ(Wf·[ht-1,xt]+bf)。輸入層門:決定將更新哪些值。計(jì)算公式為:。更新門:放棄了關(guān)于舊信息并添加新信息。計(jì)算公式為:Ct=ft*Ct-1+it*Ct~。輸出門:決定要輸出的單元狀態(tài)的哪些部分。計(jì)算公式為。上述使用的激活函數(shù)均為:tanh(x)=(ex-e-x)/(ex+e-x)。
LSTM_1的內(nèi)部結(jié)構(gòu)及其參數(shù)見表2。表2從左至右,對(duì)應(yīng)圖2中的由下至上,括號(hào)內(nèi)的參數(shù)為depth的值,參數(shù)共計(jì)616 440。該部分模型共有3個(gè)LSTM層,2個(gè)Dropout層和1個(gè)Dense(全連接)層。使用多層的LSTM可以更充分地提取數(shù)據(jù)的歷史信息。Dropout層可以隨機(jī)選取樣本進(jìn)行訓(xùn)練,預(yù)防過擬合現(xiàn)象的出現(xiàn),使得模型在驗(yàn)證集中也能夠取得較好的效果。

表2 LSTM各層模型選擇1
以內(nèi)生性數(shù)據(jù)特征作為該模型的輸入,構(gòu)建batch依次送入LSTM_1模型進(jìn)行訓(xùn)練模型的參數(shù),并將真實(shí)的結(jié)果值作為標(biāo)簽。
該部分模型的Loss函數(shù)選取平均絕對(duì)誤差MAE(X,h)=1/mh(xi)-yi|,其中m為樣本個(gè)數(shù),h為回歸函數(shù),yi為真實(shí)值。優(yōu)化器(optimizer)選取RMSprop(均方根反向傳播)。其訓(xùn)練步驟為:(1)從訓(xùn)練集中取m個(gè)樣本為{x1,...,xm},對(duì)應(yīng)的目標(biāo)為yi。(2)將數(shù)據(jù)樣本輸入至LSTM自回歸模型計(jì)算結(jié)果及損失。(3)計(jì)算各層梯度:g=1/m▽?duì)取苅L(f(xi;θ),yi)。(4)累積平方梯度:E[g2]t=ρ*E[g2]t-1+(1-ρ)*gt2。(5)計(jì)算參數(shù)更新。(6)重復(fù)上述步驟直至收斂,得到最終的模型及其參數(shù)值。
LSTM_2的內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu)與LSTM_1相似,但在層結(jié)構(gòu)的搭建上有所不同。
LSTM_2模型的層結(jié)構(gòu)及其參數(shù),見表3,從左至右,對(duì)應(yīng)圖2中由下至上,表3中的3個(gè)Dense層作為整體的全連接網(wǎng)絡(luò)層,參數(shù)共計(jì)1 428 572。LSTM_2模型依舊采用了3層的LSTM層,但為了增加該模型的性能,使用了3個(gè)DNN全連接層,且額外添加了l1,l2約束,使得模型具有更高的魯棒性和健壯性。

表3 LSTM各層模型選擇2
以外生性數(shù)據(jù)特征作為該模型的輸入,構(gòu)建batch依次送入LSTM_2模型進(jìn)行訓(xùn)練模型的參數(shù),并將真實(shí)的結(jié)果值作為標(biāo)簽。
該部分模型的Loss函數(shù)選取均方誤差Mse(X,h)=1/m(h(xi)-yi)2,其中m為樣本數(shù),h為回歸函數(shù)。優(yōu)化器(optimizer)選取Adam(Momentum+RMSProp)。其訓(xùn)練步驟為:(1)從外生性特征樣本中取出m個(gè)樣本{X1,X2,...,Xm}(其中Xi={xi1,xi2,...,xij|j:特征數(shù)})),對(duì)應(yīng)標(biāo)簽為yi。(2)將樣本數(shù)據(jù)和標(biāo)簽輸入多特征LSTM模型計(jì)算結(jié)果及損失。(3)計(jì)算各層梯度。(4)更新矩估計(jì):。(5)修正偏差:。(6)更新初始值:。(7)重復(fù)上述步驟直至收斂,得到最終的模型及其參數(shù)值。
經(jīng)過了50輪的訓(xùn)練后,LSTM_1(左)和LSTM_2(右)模型的訓(xùn)練結(jié)果(loss值)見圖3。
為了比較本文提出的模型的準(zhǔn)確度以及性能,選擇了傳統(tǒng)的GRACH模型、LSTM自回歸模型以及基于多特征的LSTM模型進(jìn)行對(duì)比。上述各個(gè)預(yù)測(cè)效果見表4。

表4 預(yù)測(cè)模型效果對(duì)比
圖4(a)、圖4(b)、圖4(c)分別為GRACH模型[3-4]、LSTM自回歸模型以及基于多特征的LSTM模型的預(yù)測(cè)效果。其中GRACH模型的預(yù)測(cè)僅能反映出某種趨勢(shì),而且失真比較嚴(yán)重。此類預(yù)測(cè)模型的優(yōu)點(diǎn)是所需特征簡(jiǎn)單,且不需要大量數(shù)據(jù)來支撐訓(xùn)練,可依靠自身歷史信息的相關(guān)性來進(jìn)行預(yù)測(cè)。但此方法受到一定程度的限制,需要數(shù)據(jù)具有自相關(guān)性且必須通過相應(yīng)的數(shù)據(jù)檢驗(yàn)才能保證其準(zhǔn)確性,否則會(huì)造成嚴(yán)重的失真現(xiàn)象。
LSTM自回歸的預(yù)測(cè)結(jié)果如圖4(b)所示。與GARCH模型相比較,LSTM神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)及其能夠?qū)W習(xí)長(zhǎng)期歷史信息的特性,使得其在擬合優(yōu)度方面已經(jīng)有了極大地改善,尤其是對(duì)于一些處于極點(diǎn)的值有了準(zhǔn)確的預(yù)測(cè)效果。如圖4(c)所示,再增加多特征后的LSTM自回歸模型[5-6]在原有基礎(chǔ)上預(yù)測(cè)準(zhǔn)確度有所提升,同時(shí)也說明了外生變量在一定程度上對(duì)于數(shù)據(jù)的預(yù)測(cè)有優(yōu)化作用。這證明了本文提出區(qū)分外生性特征和內(nèi)生性特征的必要性?;诙囗?xiàng)式修正的LSTM模型的預(yù)測(cè)結(jié)果見圖5。
雖然本文提出的模型相比于基于多特征的LSTM模型的準(zhǔn)確程度并未有明顯增加。但是后者在訓(xùn)練過程中極易因“輸入過于復(fù)雜或產(chǎn)生稀疏矩陣”等情況而出現(xiàn)“梯度消失”等問題,從而造成訓(xùn)練效果不佳,甚至出現(xiàn)負(fù)數(shù)的情況。而本文設(shè)計(jì)的多項(xiàng)式修正的LSTM模型由于采用的是“強(qiáng)化學(xué)習(xí)”的思想,恰好可以有效減少此類問題的出現(xiàn)。多項(xiàng)式修正的詳細(xì)結(jié)果見表5。

表5 多項(xiàng)式修正系數(shù)解析
由此表得出最終的多項(xiàng)式修正LSTM模型的計(jì)算公式為:y(x1,x2)=0.18+0.45x12+0.71x22+0.06x1x2-0.13x1-0.03x2。
綜上所述,對(duì)于不同的模型有著不同的應(yīng)用場(chǎng)合。當(dāng)所擁有的數(shù)據(jù)樣本有限時(shí),此時(shí)無法建立LSTM模型,只能采用對(duì)數(shù)據(jù)樣本數(shù)量要求不高的GARCH模型。當(dāng)擁有較多的數(shù)據(jù)樣本支撐時(shí),可以采用LSTM自回歸模型和多特征LSTM模型進(jìn)行預(yù)測(cè)。這兩者的區(qū)別在于前者對(duì)于輸入特征的要求簡(jiǎn)單,易于獲取,但預(yù)測(cè)的準(zhǔn)確度不及后者。而后者雖然預(yù)測(cè)準(zhǔn)確度較高,有較大的抗干擾能力,但其需要多個(gè)特征的輸入,而較多特征會(huì)使網(wǎng)絡(luò)的復(fù)雜度呈指數(shù)級(jí)增長(zhǎng),將耗費(fèi)大量時(shí)間進(jìn)行訓(xùn)練,甚至訓(xùn)練無法收斂。因此,本文提出的方法可以使得多個(gè)LSTM模型同時(shí)訓(xùn)練,極大地降低了模型訓(xùn)練以及達(dá)到收斂所需的時(shí)間。并且最后將各模型的輸出結(jié)果通過多項(xiàng)式擬合修正,得到一個(gè)性能更好,準(zhǔn)確度較高的融合模型。
此外,當(dāng)數(shù)據(jù)集劃分不同輸入特征后,僅有一個(gè)內(nèi)生性特征時(shí),本文提出的模型將會(huì)“退化”LSTM自回歸模型,可以適用于對(duì)多維輸入數(shù)據(jù)獲取不易的場(chǎng)合。