靳明飛
(合肥工業(yè)大學(xué) 安徽 宣城 242000)
隨著互聯(lián)網(wǎng)的迅速發(fā)展,使用人群日益增加。同時,網(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ò)攻擊流量特征十分明顯。通過對網(wǎng)絡(luò)流量預(yù)測與分析,使相關(guān)人員能更好地進行網(wǎng)絡(luò)管理以及預(yù)防可能出現(xiàn)的網(wǎng)絡(luò)攻擊。
目前,國內(nèi)針對網(wǎng)絡(luò)流量預(yù)測方法大部分是基于規(guī)則、范例或基于數(shù)理統(tǒng)計等推理技術(shù),如SVM、貝葉斯信念網(wǎng)絡(luò)等。隨著深度學(xué)習(xí)中循環(huán)神經(jīng)網(wǎng)絡(luò)的發(fā)展,其在網(wǎng)絡(luò)故障檢測中具有極大潛力,受到了學(xué)者們廣泛關(guān)注和應(yīng)用。
本文將利用不同結(jié)構(gòu)的LSTM神經(jīng)網(wǎng)絡(luò)對流量數(shù)據(jù)進行特征提取,再利用多項式擬合的方法,并基于強化學(xué)習(xí)的思想,對不同的特征進行修正,從而得到預(yù)測效果更準確的LSTM模型。
基于強化學(xué)習(xí)(將多個模型的輸出結(jié)果通過某一規(guī)則融合修正從而得到更符合需求的模型)的思想,本文設(shè)計出基于多項式修正的LSTM模型。利用多個LSTM模型對同一數(shù)據(jù)樣本的不同特征進行特征提取與迭代訓(xùn)練。最后利用多項式擬合的方法對不同LSTM模型的輸出進行多項式加權(quán)修正,以此來取得更好的預(yù)測結(jié)果。此外,不同的LSTM模型可以并行訓(xùn)練,減少模型整體的訓(xùn)練時間,極大提高模型的訓(xùn)練效率??傮w模型結(jié)構(gòu)設(shè)計見圖1。
其中數(shù)據(jù)集來自CICIDS中的網(wǎng)絡(luò)流量數(shù)據(jù)。初期通過數(shù)據(jù)分析、數(shù)理統(tǒng)計等手段劃分出內(nèi)生性特征和外生性特征數(shù)據(jù)集,分別將其輸入到不同結(jié)構(gòu)的LSTM模型中。LSTM模型的搭建采用了Tensorflow2框架中的序列組網(wǎng),可以高效地進行模型的訓(xùn)練。而最后多項式修正的目的是尋求一組合適的系數(shù){a1,a2,…,an},盡量保證擬合方程得到的數(shù)據(jù)盡可能地與實際樣本數(shù)據(jù)相重合。通過多項式擬合來相互修正兩個LSTM模型結(jié)果的偏差,從而達到更精確地預(yù)測值Y′。至此,基于多項式修正的LSTM模型可以簡化為:
Y(x1,x2)=a0+a1x12+a2x22+a3x1x2+a4x1+a5x2
其中,x1為LSTM_1模型的輸出(提取結(jié)果1),x2為LSTM_2模型的輸出(提取結(jié)果2)。具體步驟如下所述。
1.1.1 數(shù)據(jù)預(yù)處理
通過不同的預(yù)處理方法,構(gòu)造內(nèi)生性特征的樣本集和外生性特征的樣本集。
1.1.2 內(nèi)生性特征數(shù)據(jù)
(1)選取相鄰時期的流量速率分別作為自變量和因變量。
(2)進行數(shù)據(jù)歸一化,防止不同量綱的影響(歸一化后的x=(x-xmean)/(xmax-xmin))。
(3)通過滑動窗口[1](選取輸入滑動窗口大小k=400,標簽滑動窗口大小j=64)的方法構(gòu)造樣本集。構(gòu)造歷史時刻樣本集和訓(xùn)練標簽樣本集。
劃分結(jié)果為:對于第i個樣本,其輸入為:xi=ri,ri+1,ri+2,…ri+k,(k=400)。
對應(yīng)的標簽為:yi=ri,ri+1,ri+2,…,ri+j,(j=64)。
(4)劃分訓(xùn)練集和驗證集,比例為8∶2(劃分訓(xùn)練集和驗證集必須在構(gòu)造完滑動窗口之后進行。如果提前劃分將打亂數(shù)據(jù)的時序結(jié)構(gòu),將會無法達到預(yù)期的結(jié)果)。
1.1.3 外生性特征的提取
(1)選取外生性特征,見表1,包含F(xiàn)low_rate,Flow_IAT_Std,Bwd_Packets/s,Init_Win_bytes_forward等共11個特征。
表1 外生性特征
(2)進行數(shù)據(jù)歸一化處理,消除特征中不同量綱之間的影響。該步驟必須進行,否則容易造成“梯度爆炸或梯度消失”等問題。
(3)通過滑動窗口(選取輸入滑動窗口大小k=400,標簽滑動窗口大小n=64)的方法構(gòu)造樣本集。構(gòu)造歷史時刻樣本集和訓(xùn)練標簽樣本集。
劃分結(jié)果為:對于第個樣本,其輸入為
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為特征個數(shù)。
第個樣本標簽為:yi=r1,r2,r3,…,rn-1,rn。
(4)劃分訓(xùn)練集和驗證集,比例為8∶2。
LSTM_1是通過LSTM神經(jīng)網(wǎng)絡(luò)和全連接網(wǎng)絡(luò)的組合,使得計算后的結(jié)果盡可能地逼近真實值Y。同時,利用Loss函數(shù)作為評估標準,不斷地通過迭代訓(xùn)練模型更新網(wǎng)絡(luò)參數(shù)至模型收斂,從而達到預(yù)測的目的。
其中的LSTM神經(jīng)網(wǎng)絡(luò)是為解決RNN不能學(xué)習(xí)長期歷史信息的問題而提出的模型,其獨特“門機制”在時間序列預(yù)測方面頗見成效。該模型特殊的“記憶細胞”將自身的真實值與之前積累的外部信息相互結(jié)合,從而利用長期的信息進行學(xué)習(xí)[2]。LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)見圖2。
其中LSTM單元內(nèi)部由各種“門”結(jié)構(gòu)組成,每一個“門”結(jié)構(gòu)發(fā)揮一種特定的功能,其中不同的“門”發(fā)揮著不同的作用。
遺忘門:完全保持歷史信息或者完全擺脫歷史信息(反映歷史信息的自相關(guān)系數(shù))。計算公式為:ft=σ(Wf·[ht-1,xt]+bf)。輸入層門:決定將更新哪些值。計算公式為:。更新門:放棄了關(guān)于舊信息并添加新信息。計算公式為:Ct=ft*Ct-1+it*Ct~。輸出門:決定要輸出的單元狀態(tài)的哪些部分。計算公式為。上述使用的激活函數(shù)均為:tanh(x)=(ex-e-x)/(ex+e-x)。
LSTM_1的內(nèi)部結(jié)構(gòu)及其參數(shù)見表2。表2從左至右,對應(yīng)圖2中的由下至上,括號內(nèi)的參數(shù)為depth的值,參數(shù)共計616 440。該部分模型共有3個LSTM層,2個Dropout層和1個Dense(全連接)層。使用多層的LSTM可以更充分地提取數(shù)據(jù)的歷史信息。Dropout層可以隨機選取樣本進行訓(xùn)練,預(yù)防過擬合現(xiàn)象的出現(xiàn),使得模型在驗證集中也能夠取得較好的效果。
表2 LSTM各層模型選擇1
以內(nèi)生性數(shù)據(jù)特征作為該模型的輸入,構(gòu)建batch依次送入LSTM_1模型進行訓(xùn)練模型的參數(shù),并將真實的結(jié)果值作為標簽。
該部分模型的Loss函數(shù)選取平均絕對誤差MAE(X,h)=1/mh(xi)-yi|,其中m為樣本個數(shù),h為回歸函數(shù),yi為真實值。優(yōu)化器(optimizer)選取RMSprop(均方根反向傳播)。其訓(xùn)練步驟為:(1)從訓(xùn)練集中取m個樣本為{x1,...,xm},對應(yīng)的目標為yi。(2)將數(shù)據(jù)樣本輸入至LSTM自回歸模型計算結(jié)果及損失。(3)計算各層梯度:g=1/m▽θ∑iL(f(xi;θ),yi)。(4)累積平方梯度:E[g2]t=ρ*E[g2]t-1+(1-ρ)*gt2。(5)計算參數(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,從左至右,對應(yīng)圖2中由下至上,表3中的3個Dense層作為整體的全連接網(wǎng)絡(luò)層,參數(shù)共計1 428 572。LSTM_2模型依舊采用了3層的LSTM層,但為了增加該模型的性能,使用了3個DNN全連接層,且額外添加了l1,l2約束,使得模型具有更高的魯棒性和健壯性。
表3 LSTM各層模型選擇2
以外生性數(shù)據(jù)特征作為該模型的輸入,構(gòu)建batch依次送入LSTM_2模型進行訓(xùn)練模型的參數(shù),并將真實的結(jié)果值作為標簽。
該部分模型的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個樣本{X1,X2,...,Xm}(其中Xi={xi1,xi2,...,xij|j:特征數(shù)})),對應(yīng)標簽為yi。(2)將樣本數(shù)據(jù)和標簽輸入多特征LSTM模型計算結(jié)果及損失。(3)計算各層梯度。(4)更新矩估計:。(5)修正偏差:。(6)更新初始值:。(7)重復(fù)上述步驟直至收斂,得到最終的模型及其參數(shù)值。
經(jīng)過了50輪的訓(xùn)練后,LSTM_1(左)和LSTM_2(右)模型的訓(xùn)練結(jié)果(loss值)見圖3。
為了比較本文提出的模型的準確度以及性能,選擇了傳統(tǒng)的GRACH模型、LSTM自回歸模型以及基于多特征的LSTM模型進行對比。上述各個預(yù)測效果見表4。
表4 預(yù)測模型效果對比
圖4(a)、圖4(b)、圖4(c)分別為GRACH模型[3-4]、LSTM自回歸模型以及基于多特征的LSTM模型的預(yù)測效果。其中GRACH模型的預(yù)測僅能反映出某種趨勢,而且失真比較嚴重。此類預(yù)測模型的優(yōu)點是所需特征簡單,且不需要大量數(shù)據(jù)來支撐訓(xùn)練,可依靠自身歷史信息的相關(guān)性來進行預(yù)測。但此方法受到一定程度的限制,需要數(shù)據(jù)具有自相關(guān)性且必須通過相應(yīng)的數(shù)據(jù)檢驗才能保證其準確性,否則會造成嚴重的失真現(xiàn)象。
LSTM自回歸的預(yù)測結(jié)果如圖4(b)所示。與GARCH模型相比較,LSTM神經(jīng)網(wǎng)絡(luò)的優(yōu)勢及其能夠?qū)W習(xí)長期歷史信息的特性,使得其在擬合優(yōu)度方面已經(jīng)有了極大地改善,尤其是對于一些處于極點的值有了準確的預(yù)測效果。如圖4(c)所示,再增加多特征后的LSTM自回歸模型[5-6]在原有基礎(chǔ)上預(yù)測準確度有所提升,同時也說明了外生變量在一定程度上對于數(shù)據(jù)的預(yù)測有優(yōu)化作用。這證明了本文提出區(qū)分外生性特征和內(nèi)生性特征的必要性?;诙囗検叫拚腖STM模型的預(yù)測結(jié)果見圖5。
雖然本文提出的模型相比于基于多特征的LSTM模型的準確程度并未有明顯增加。但是后者在訓(xùn)練過程中極易因“輸入過于復(fù)雜或產(chǎn)生稀疏矩陣”等情況而出現(xiàn)“梯度消失”等問題,從而造成訓(xùn)練效果不佳,甚至出現(xiàn)負數(shù)的情況。而本文設(shè)計的多項式修正的LSTM模型由于采用的是“強化學(xué)習(xí)”的思想,恰好可以有效減少此類問題的出現(xiàn)。多項式修正的詳細結(jié)果見表5。
表5 多項式修正系數(shù)解析
由此表得出最終的多項式修正LSTM模型的計算公式為:y(x1,x2)=0.18+0.45x12+0.71x22+0.06x1x2-0.13x1-0.03x2。
綜上所述,對于不同的模型有著不同的應(yīng)用場合。當所擁有的數(shù)據(jù)樣本有限時,此時無法建立LSTM模型,只能采用對數(shù)據(jù)樣本數(shù)量要求不高的GARCH模型。當擁有較多的數(shù)據(jù)樣本支撐時,可以采用LSTM自回歸模型和多特征LSTM模型進行預(yù)測。這兩者的區(qū)別在于前者對于輸入特征的要求簡單,易于獲取,但預(yù)測的準確度不及后者。而后者雖然預(yù)測準確度較高,有較大的抗干擾能力,但其需要多個特征的輸入,而較多特征會使網(wǎng)絡(luò)的復(fù)雜度呈指數(shù)級增長,將耗費大量時間進行訓(xùn)練,甚至訓(xùn)練無法收斂。因此,本文提出的方法可以使得多個LSTM模型同時訓(xùn)練,極大地降低了模型訓(xùn)練以及達到收斂所需的時間。并且最后將各模型的輸出結(jié)果通過多項式擬合修正,得到一個性能更好,準確度較高的融合模型。
此外,當數(shù)據(jù)集劃分不同輸入特征后,僅有一個內(nèi)生性特征時,本文提出的模型將會“退化”LSTM自回歸模型,可以適用于對多維輸入數(shù)據(jù)獲取不易的場合。