吉珊珊 柯 鋼
(東莞職業(yè)技術(shù)學院計算機工程系 東莞 523808)
隨著計算機網(wǎng)絡(luò)的深入發(fā)展,網(wǎng)絡(luò)的業(yè)務(wù)持續(xù)增長,由此產(chǎn)生的網(wǎng)絡(luò)流量約來越多,從而帶來了日益嚴重的網(wǎng)絡(luò)擁塞問題。網(wǎng)絡(luò)流量預(yù)測是網(wǎng)絡(luò)QoS 管理的重要依據(jù)。實現(xiàn)精準的流量預(yù)測,對于精準分析網(wǎng)絡(luò)帶寬狀況、提高網(wǎng)絡(luò)QoS管理的工作效率具有重要的意義[1~2]。
為了提高網(wǎng)絡(luò)流量預(yù)測的精度,國內(nèi)外許多學者致力于網(wǎng)絡(luò)流量數(shù)據(jù)的分析,并提出了多種預(yù)測模型。文獻[3]提出了一種改進人工蜂群ABC(artificial bee colony)算法優(yōu)化LSSVM 的網(wǎng)絡(luò)流量預(yù)測模型(ABC-LSSVM)。文獻[4]提出了基于ARMA-RESN 的網(wǎng)絡(luò)流量預(yù)測模型,融合回聲狀態(tài)網(wǎng)絡(luò)和自回歸移動平均模型的優(yōu)點。文獻[5]提出了基于小波變換的PCNN 網(wǎng)絡(luò)流量預(yù)測算法。對預(yù)處理的網(wǎng)絡(luò)流量進行小波分解,利用PCNN 模型預(yù)測獲得的近似系數(shù)和細節(jié)系數(shù),通過小波逆變換對預(yù)測的小波系數(shù)進行重構(gòu),得到預(yù)測的網(wǎng)絡(luò)流量。文獻[6]提出了將灰色系統(tǒng)理論和馬爾科夫鏈相結(jié)合的流量預(yù)測方法,取得了較高的預(yù)測效果。
神經(jīng)網(wǎng)絡(luò)是一個具有高度非線性的動力學系統(tǒng),具有非線性擬合能力。針對標準的BP 神經(jīng)網(wǎng)絡(luò)在網(wǎng)絡(luò)流量預(yù)測過程中存在收斂速度慢、易陷入局部極小值的缺點,本文引入了引入動量因子和自適應(yīng)學習速率來改進BP神經(jīng)網(wǎng)絡(luò)。模型的仿真結(jié)果表明,改進的BP神經(jīng)網(wǎng)絡(luò)預(yù)測的結(jié)果誤差更小,精確度高,訓練次數(shù)少,具有較高的實際應(yīng)用價值。
機器學習中,模仿生物神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)算法可以說是當下使用最廣泛的算法,而其中誤差逆?zhèn)鞑ニ惴ǎ˙P)又是神經(jīng)網(wǎng)絡(luò)中最有代表性的算法,也是迄今為止使用最多、最成功的算法。
BP 神經(jīng)網(wǎng)絡(luò)[7~10]是一種多層前饋神經(jīng)網(wǎng)絡(luò),由輸入層、隱含層和輸出層組成,如圖1所示。

圖1 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
圖1 中,xi表示輸入層第i 個節(jié)點的輸入,i=1,…,M;wi,j表示隱含層第i 個節(jié)點到輸入層第j 個節(jié)點的權(quán)值;θi表示隱含層第i 個節(jié)點的閾值;φ 表示隱含層的激勵函數(shù),令其為Sigmoid 函數(shù);wk,i表示輸出層第k 個節(jié)點到隱含層第i 個節(jié)點的權(quán)值,i=1,…,q;ak表示輸出層第k 個節(jié)點的閾值,k=1,…,L;Ψ 表示輸出層的激勵函數(shù),令其為Sigmoid 函數(shù);ok表示輸出層第i 個節(jié)點的輸出。
BP 的核心思想是通過調(diào)整各神經(jīng)元之間的權(quán)值和閾值,使得模型輸出逼近實際輸出。此過程可分為兩個階段:先實現(xiàn)輸入信號的正向傳播,再實現(xiàn)誤差的反向傳播。因此,BP 算法的核心步驟如下:先求得在特定輸入下實際輸出與理想輸出的平方誤差函數(shù);再利用誤差函數(shù)對神經(jīng)網(wǎng)絡(luò)中的閾值以及連接權(quán)值進行求導(dǎo),求導(dǎo)原則就是導(dǎo)數(shù)的“鏈式求導(dǎo)”法則;最后根據(jù)梯度下降算法,對極小值進行逼近,當滿足條件時,跳出循環(huán)。具體的計算過程如下。
1)信號正向傳播
隱含層第i 個神經(jīng)元的輸入Hi(i):

隱含層第i 個神經(jīng)元的輸出Ho(i):

輸出層第k 個神經(jīng)元的輸入Oi(k):

輸出層第k 個神經(jīng)元的輸出:

2)誤差反向傳播
輸入樣本中的輸入節(jié)點xj經(jīng)由前饋網(wǎng)絡(luò)傳遞所產(chǎn)生的輸出節(jié)點的輸出ok與樣本中所期望輸出Tk之間存在著誤差,其平方型誤差函數(shù)為

輸出層權(quán)值調(diào)整公式為

輸出層閾值調(diào)整公式為

隱含層權(quán)值調(diào)整公式為

隱含層閾值調(diào)整公式為

計算全局誤差:

判斷全局誤差是否滿足要求,當誤差達到預(yù)設(shè)精度或者學習次數(shù)大于設(shè)定的最大次數(shù),則結(jié)束算法。否則,選取下一個學習樣本及對應(yīng)的期望輸出,進入下一輪學習。
由于BP神經(jīng)網(wǎng)絡(luò)采用線性規(guī)劃中的梯度下降方法,按誤差函數(shù)的方向修改權(quán)值和閾值,常常存在以下問題:1)在訓練過程中收斂速度慢。2)易陷入局部極小值狀態(tài)。針對以上問題,本文從以下兩個方面對BP神經(jīng)網(wǎng)絡(luò)算法進行了改進。
BP 神經(jīng)網(wǎng)絡(luò)在修正其權(quán)值時,往往不考慮之前的梯度方向,只從梯度下降的方向進行權(quán)值調(diào)整。這樣會導(dǎo)致BP神經(jīng)網(wǎng)絡(luò)在學習過程中發(fā)生振蕩,從而陷入局部最小值。本文引入了增加動量因子的方法[11~12],該方法是在反向傳播法的基礎(chǔ)上在每一個權(quán)值(或閾值)的變化上加上一項正比于前次權(quán)值(或閾值)變化量的值,并根據(jù)反向傳播法來產(chǎn)生新的權(quán)值(或閾值)變化。帶有動量因子的權(quán)值(或閾值)的調(diào)節(jié)公式為

式中,μ 為學習因子,0<μ<1;α 為動量因子,0<α<1,一般取0.8。
學習速率取值非常重要。取值過大時,收斂速度快,但會引起權(quán)值振蕩;取值過小,收斂速度慢,訓練時間太長。本文引入了一種自適應(yīng)學習速率,判斷檢查權(quán)值是否真正降低了誤差函數(shù),如果降低了,就表明學習速率低,這時就增加學習速率;如果沒有降低,反而增大了誤差函數(shù),就表明學習速率高,這時就減小學習速率[13~14]。下面給出了一個自適應(yīng)學習速率的調(diào)整公式為

網(wǎng)絡(luò)流量數(shù)據(jù)來源于BellCore 實驗室的高分辨率流量數(shù)據(jù)(BC-pAug89)[15],收集了從1989 年8 月29 日11:25 分開始的大約3142.82s 內(nèi)捕獲的100 萬個數(shù)據(jù)分組。考慮到網(wǎng)絡(luò)流量的時間相關(guān)特性,我們對數(shù)據(jù)進行了預(yù)處理。以1s 為采樣周期,把每一秒的網(wǎng)絡(luò)流量數(shù)據(jù)進行加和統(tǒng)計,得到3142 個樣本數(shù)據(jù)。這些數(shù)據(jù)組成了一個網(wǎng)絡(luò)時間流量序列{x(t),t=1,2,…3142},網(wǎng)絡(luò)流量時間序列數(shù)據(jù)如圖2 所示。

圖2 網(wǎng)絡(luò)流量數(shù)據(jù)
由于BC-p Aug89 數(shù)據(jù)集的網(wǎng)絡(luò)流量存在變化范圍較大的特點(其中最大值與最小值有好幾個數(shù)量級的差距),因此對其進行了歸一化預(yù)處理,如圖3所示。

圖3 歸一化后的BC-p Aug89數(shù)據(jù)集
將該數(shù)據(jù)集劃分成訓練集和測試集兩部分,每組訓練樣本數(shù)據(jù)包含共4 個時刻的流量數(shù)據(jù),即以當前時刻之前4 個時刻的網(wǎng)絡(luò)流量數(shù)據(jù)來預(yù)測當前時刻的網(wǎng)絡(luò)流量數(shù)據(jù)。訓練集包含3000 個樣本,測試集包含138個樣本。
4.3.1 參數(shù)設(shè)置
本文實驗的BP 網(wǎng)絡(luò)采用5-11-1 的機構(gòu),即網(wǎng)絡(luò)的輸入節(jié)點數(shù)為5,隱層神經(jīng)元為11 個,輸出節(jié)點數(shù)為1。神經(jīng)元之間的激勵函數(shù)采用非線性激勵函數(shù)Sigmoid 函數(shù)。動量因子α=0.8,學習率μ=0.01,最大迭代次數(shù)為100,收斂精度為0.00001。其他參數(shù)均為缺省值。
4.3.2 實驗結(jié)果分析
按照4.3.1 節(jié)的參數(shù)設(shè)置,建立改進BP 神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)預(yù)測模型,并對網(wǎng)絡(luò)流量訓練樣本進行擬合。從圖4 中可知,預(yù)測曲線與實際流量曲線的趨勢幾乎一致。

圖4 改進BP神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)流量預(yù)測結(jié)果
為了進一步評價預(yù)測方法的性能,本文引入了RMSE(均方根誤差)和MAPE(平均絕對百分率誤差),這兩項指標可以反映預(yù)測值與真實值之間的整體偏差估計。對預(yù)測效果進行整體的評估,這兩項指標值越低,表示模型的預(yù)測精度越高。它們的計算公式如下:


表1 各種方法預(yù)測性能對比
從表1可知,相對于BP神經(jīng)網(wǎng)絡(luò),改進BP神經(jīng)網(wǎng)絡(luò)無論預(yù)測精度、泛化能力均取得更加理想的結(jié)果。
本文針對BP神經(jīng)網(wǎng)絡(luò)在網(wǎng)絡(luò)流量預(yù)測過程中存在收斂速度慢、易陷入局部極小值的問題,提出了一種改進BP神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)流量預(yù)測模型。該模型引入了動量因子和自適應(yīng)學習速率。仿真結(jié)果表明,改進BP 神經(jīng)網(wǎng)絡(luò)改善了算法后期的收斂速度、局部搜索能力弱的缺點,提高了網(wǎng)絡(luò)流量的預(yù)測精度。