郭佳麗 邢雙云 欒昊 賈艷婷
時(shí)間序列預(yù)測[1-2]是機(jī)器學(xué)習(xí)的一個(gè)重要領(lǐng)域,其典型問題有交通流的預(yù)測[3]、旅游人數(shù)的預(yù)測、天氣的預(yù)測、網(wǎng)絡(luò)流量的預(yù)測[4]等.智能交通系統(tǒng)[5-7](ITS)被視為緩減交通壓力、減少汽車污染物的排放、降低各種交通事故的有效手段.交通流預(yù)測性能的提高是當(dāng)下智能交通系統(tǒng)亟需解決的問題.交通流的預(yù)測可分為長時(shí)交通流預(yù)測和短時(shí)交通流預(yù)測.長時(shí)交通流預(yù)測以年、月、日為單位,主要用于道路規(guī)劃與設(shè)計(jì).短時(shí)交通流以min為單位,大多小于15 min,主要用于交通控制或作為引導(dǎo)系統(tǒng)的依據(jù).針對交通流量的不確定性、非線性以及規(guī)律性弱等特點(diǎn),已有不同的組合模型來進(jìn)行交通流量的預(yù)測.例如:Du 等[8]提出深度不規(guī)則卷積殘差LSTM(Long Short-Term Memory,長短期記憶)網(wǎng)絡(luò)模型,集成了不規(guī)則卷積住宅網(wǎng)絡(luò)和LSTM單元的深度學(xué)習(xí)框架來學(xué)習(xí)時(shí)空特征用于城市交通客流預(yù)測;武佳琪等[9]提出了LSTM和BP算法組合而成的預(yù)測道路堵塞時(shí)間的智能模型;李磊等[10]提出分時(shí)段預(yù)測交通流的思想,設(shè)計(jì)了CNN-LSTM的組合預(yù)測模型;Lu等[11]提出了ARIMA-LSTM組合的交通流量預(yù)測算法,利用滾動回歸ARIMA模型獲取交通數(shù)據(jù)的線性回歸特征,再利用反向傳播對LSTM網(wǎng)絡(luò)進(jìn)行訓(xùn)練,獲取交通數(shù)據(jù)的非線性特征.網(wǎng)絡(luò)規(guī)模的日益增大,應(yīng)用需求也變得多種多樣,網(wǎng)絡(luò)擁塞、故障等問題接踵而來,因此網(wǎng)絡(luò)流量預(yù)測模型[12]的建立至關(guān)重要.黎佳玥等[13]設(shè)計(jì)了一種LSTM組合預(yù)測分類算法對異常流量進(jìn)行預(yù)測,通過訓(xùn)練遭受典型攻擊事件的大規(guī)模網(wǎng)絡(luò)流量公共數(shù)據(jù)集,用以預(yù)測來自網(wǎng)絡(luò)流量信號的典型異常攻擊事件出現(xiàn)概率;王海寧等[14]提出了一個(gè)基于LSTM神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)流量預(yù)測模型,與傳統(tǒng)的機(jī)器學(xué)習(xí)的流量預(yù)測方法相比,該模型在網(wǎng)絡(luò)流量預(yù)測中具有適用性和較高的精確度.
LSTM是一種改進(jìn)的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN),它解決了RNN中的梯度消失和長期依賴的問題.LSTM是在RNN的基礎(chǔ)上進(jìn)化而來的.在標(biāo)準(zhǔn)的RNN網(wǎng)絡(luò)中,循環(huán)模塊只有一個(gè)tanh層,如圖1所示.
圖1 RNN中的重復(fù)模塊Fig.1 Repeated module in RNN
LSTM也有類似的鏈結(jié)構(gòu),但是循環(huán)模塊的結(jié)構(gòu)不同.它有4個(gè)神經(jīng)網(wǎng)絡(luò)層,以一種特殊的方式相互作用.“門”是LSTM的重要組成部分,門的“開”和“關(guān)”決定了歷史信息的保留和刪除,門的工作原理如圖2所示.
圖2 LSTM基本工作原理Fig.2 Basic working principle of LSTM
遺忘門ft決定是否將上一次單元狀態(tài)ct-1保留給當(dāng)前時(shí)間ct以及哪些信息要丟棄.遺忘門的計(jì)算公式如下:
ft=σ(wf·[ht-1,xt]+bf).
(1)
輸入門it確定當(dāng)前時(shí)間輸入xt保留到單元狀態(tài)ct的信息的多少,以過濾掉不相關(guān)的信息.輸入門的計(jì)算公式如下:
it=σ(wi·[ht-1,xt]+bi).
(2)
輸出門ot要控制狀態(tài)ct輸出多少信息到LSTM的當(dāng)前輸出值ht,并控制長期內(nèi)存對當(dāng)前輸入的影響.輸出門的計(jì)算公式如下:
ot=σ(wo·[ht-1,xt]+bo).
(3)
輸出結(jié)果ht的計(jì)算公式如下:
第二天晚上,好友如約而來,女人也做好了拌面,并加了幾道精致的小菜,還開了一瓶紅酒。兩人喝得興起時(shí),女人跟好友說不是白情你吃飯啊,你得幫我辦件事。好友放下筷子拿紙巾擦著嘴角說,真是應(yīng)了那句話了,天下沒有白吃的宴席,既然吃了喝了就還真得答應(yīng)你,誰讓吃人家嘴短呢?
ht=ot*tanh(ct),
(4)
其中tanh和σ是兩個(gè)常用的激活函數(shù),計(jì)算公式為
(5)
(6)
在上述公式中,w是隱藏層的權(quán)值矩陣,b是偏移量.
首先,經(jīng)過大量的實(shí)驗(yàn),我們發(fā)現(xiàn)在神經(jīng)網(wǎng)絡(luò)的使用過程中,神經(jīng)網(wǎng)絡(luò)的層數(shù)、神經(jīng)元的個(gè)數(shù)以及各層之間的連接方式對流量預(yù)測的結(jié)果影響很大,因此,本文設(shè)計(jì)了多層LSTM人工神經(jīng)網(wǎng)絡(luò).綜合考慮時(shí)間序列的預(yù)測精度和降低模型時(shí)間復(fù)雜度的問題,預(yù)測精度與其他組合模型基本相同,但由于簡化了模型設(shè)計(jì)的復(fù)雜度,使得機(jī)器運(yùn)行速度更快,機(jī)器學(xué)習(xí)效率更高.其次,網(wǎng)絡(luò)層數(shù)的增加會使機(jī)器學(xué)習(xí)面臨過擬合的問題,因此本文模型在網(wǎng)絡(luò)層中插入了Dropout層,Dropout可以隨機(jī)斷開網(wǎng)絡(luò)層之間的連接,進(jìn)而減少訓(xùn)練時(shí)實(shí)際參與的模型的參數(shù)量,從而減少模型的實(shí)際容量,可以防止過擬合.經(jīng)實(shí)驗(yàn)驗(yàn)證,選取Dropout的值為0.4時(shí)可以達(dá)到最優(yōu)效果.改進(jìn)后的LSTM人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)(多層LSTM模型1)如圖3所示,該模型選擇adam為模型優(yōu)化器、mlse為模型損失函數(shù)、relu為模型激活函數(shù).
圖3 多層LSTM模型Fig.3 Multilayer LSTM model
為了驗(yàn)證網(wǎng)絡(luò)層對模型預(yù)測能力的影響以及本文搭建的多層LSTM人工神經(jīng)網(wǎng)絡(luò)的有效性,同時(shí)搭建了三層LSTM人工神經(jīng)網(wǎng)絡(luò)(多層LSTM模型2),如圖4所示.
圖4 三層LSTM模型Fig.4 Three-layer LSTM model
模型采用滑動窗口的方式劃分?jǐn)?shù)據(jù)集和驗(yàn)證集,利用隨機(jī)梯度下降法以及誤差的反向傳播原理不斷地減小損失函數(shù),自動更新權(quán)重,通過合理次數(shù)的迭代訓(xùn)練,使模型擁有相對更優(yōu)的學(xué)習(xí)能力.
本文選用Google開源的基于數(shù)據(jù)流圖的機(jī)器學(xué)習(xí)框架tensorflow,以及Keras作為深度學(xué)習(xí)庫.在16 GB內(nèi)存和i5-11300H的機(jī)器上完成訓(xùn)練過程.
本文采用均方根誤差(RMSE,量值記為ηRMSE)、平均絕對誤差(MAE,量值記為ηMAE)和平均絕對百分比誤差(MAPE,量值記為ηMAPE)三個(gè)誤差指標(biāo)來評價(jià)模型的預(yù)測能力:
(7)
(8)
(9)
數(shù)據(jù)來自英國政府公布的公共高速公路網(wǎng)絡(luò)數(shù)據(jù)庫(http://tris.highwaysengland.co.uk/detail/trafficflowdata).數(shù)據(jù)集網(wǎng)站包含英國M、A級所有高速公路,數(shù)據(jù)非常全面,以15 min為間隔采集,由傳感器自動收集,或由操作員手動收集.本文提取的數(shù)據(jù)為M25高速希思羅機(jī)場附近的2019年8月的3個(gè)站點(diǎn)的數(shù)據(jù)集.每個(gè)數(shù)據(jù)集包含2 976個(gè)數(shù)據(jù).圖5為其中一個(gè)站點(diǎn)的原始數(shù)據(jù),可以看出該數(shù)據(jù)有明顯的周期性且平穩(wěn),可以作為時(shí)間序列流量預(yù)測的數(shù)據(jù)集.
圖5 原始序列Fig.5 Original sequence
為了驗(yàn)證多層LSTM算法在時(shí)間序列預(yù)測方面的作用,本文采用3個(gè)數(shù)據(jù)集對傳統(tǒng)LSTM算法與改進(jìn)不同程度的多層LSTM算法進(jìn)行訓(xùn)練和測試.用RMSE、MAE、MAPE三個(gè)誤差評價(jià)指標(biāo)對改進(jìn)的LSTM算法的有效性進(jìn)行驗(yàn)證,結(jié)果如表1所示.
表1 模型改進(jìn)前后預(yù)測結(jié)果比較Table 1 Comparison of indicators before and after model improvement
由表1可以看出,多層LSTM模型1的各項(xiàng)誤差遠(yuǎn)小于傳統(tǒng)的單層LSTM算法.由圖6可知:改進(jìn)后的模型預(yù)測值更接近實(shí)際值,表明改進(jìn)后模型的預(yù)測精度更高.
圖6 預(yù)測值與真實(shí)值結(jié)果對比Fig.6 Comparison between predicted values and real values
本文考慮到LSTM的網(wǎng)絡(luò)層數(shù)、神經(jīng)元的個(gè)數(shù)、網(wǎng)絡(luò)層之間的連接方式等網(wǎng)絡(luò)結(jié)構(gòu)以及優(yōu)化器和損失函數(shù)的作用,提出了多層LSTM算法的時(shí)間序列流量的預(yù)測模型.本文模型綜合考慮了時(shí)間序列預(yù)測精度和模型設(shè)計(jì)的復(fù)雜度.與傳統(tǒng)的LSTM神經(jīng)網(wǎng)絡(luò)相比,本文模型具有更好的預(yù)測效果.本文僅采用歷史流量數(shù)據(jù)來模擬和預(yù)測未來的流量數(shù)據(jù),后期可以通過增加輸入數(shù)據(jù)的維度來提高時(shí)間序列流量的預(yù)測精度.
南京信息工程大學(xué)學(xué)報(bào)2021年5期