陳 雄,王海晨
(長(zhǎng)安大學(xué) 信息工程學(xué)院,陜西 西安 710064)
進(jìn)入21世紀(jì)以來(lái),隨著人們的生活水平不斷提高,私人汽車擁有量持續(xù)攀升,伴隨而來(lái)的就是交通流急劇增長(zhǎng)、交通擁堵問(wèn)題越來(lái)越嚴(yán)重。實(shí)時(shí)精確的交通流量預(yù)測(cè)能夠幫助出行者選擇合適的出行方案,提高出行效率,有效緩解城市交通的壓力,提高道路資源的利用率,對(duì)于交通管控和規(guī)劃具有重要的價(jià)值[1-2]。
對(duì)交通流進(jìn)行預(yù)測(cè),不同時(shí)期有不同的方式,早期是使用基于統(tǒng)計(jì)分析的預(yù)測(cè)方法,如差分整合移動(dòng)平均自回歸模型ARIMA[3]、卡爾曼濾波模型[4]等。這類統(tǒng)計(jì)模型對(duì)于數(shù)據(jù)會(huì)有比較高的要求,只能預(yù)測(cè)對(duì)精度要求不高的場(chǎng)合,對(duì)具有較高隨機(jī)性的交通流數(shù)據(jù)無(wú)法很好地?cái)M合,不能處理實(shí)時(shí)突發(fā)性的交通狀況。
交通流數(shù)據(jù)受多方面因素影響,有著復(fù)雜的非線性特征,基于統(tǒng)計(jì)分析的預(yù)測(cè)模型存在局限性,因此出現(xiàn)了一些非線性預(yù)測(cè)模型,擬合數(shù)據(jù)的非線性特征。如小波分析預(yù)測(cè)模型[5]將時(shí)間序列分解為不同的信號(hào)序列,然后再對(duì)這些序列分別預(yù)測(cè),將預(yù)測(cè)結(jié)果合成得到最后的預(yù)測(cè)結(jié)果。該模型在預(yù)測(cè)精度上優(yōu)于基于統(tǒng)計(jì)分析的模型,但是其計(jì)算量大,需要配合其他預(yù)測(cè)模型進(jìn)行預(yù)測(cè),且理論復(fù)雜,可用性不高。
伴隨著交通數(shù)據(jù)量的增長(zhǎng),能夠處理大量數(shù)據(jù)的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的模型在交通流預(yù)測(cè)方向已經(jīng)發(fā)展起來(lái)。與之前的模型相比,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)不對(duì)數(shù)據(jù)分布進(jìn)行基本假設(shè),有較強(qiáng)的學(xué)習(xí)能力和挖掘數(shù)據(jù)深層特征的能力,預(yù)測(cè)精度有顯著提升。經(jīng)典的機(jī)器學(xué)習(xí)模型有支持向量機(jī)(SVM)[6]、K近鄰算法(KNN)[7]等,深度學(xué)習(xí)模型有BP神經(jīng)網(wǎng)絡(luò)[8]、LSTM網(wǎng)絡(luò)等。其中LSTM模型由于其循環(huán)性結(jié)構(gòu)和長(zhǎng)期記憶能力,在處理大數(shù)據(jù)量的時(shí)序問(wèn)題上有著巨大的優(yōu)勢(shì),預(yù)測(cè)精度更高、效果更好。如陳治亞[9]使用LSTM進(jìn)行多維度的交通流預(yù)測(cè),探究各種維度對(duì)于模型預(yù)測(cè)精度的影響;羅向龍[10]提出了基于KNN-LSTM的預(yù)測(cè)模型,預(yù)測(cè)準(zhǔn)確率相較傳統(tǒng)模型有顯著提高;張陽(yáng)[11]將改進(jìn)小波包分析算法和LSTM相結(jié)合,提高了在樣本數(shù)量較少時(shí)模型的可用性和預(yù)測(cè)精度。但是LSTM模型預(yù)測(cè)結(jié)果的好壞與神經(jīng)元數(shù)量、學(xué)習(xí)率等超參數(shù)有著直接的關(guān)系,且其超參數(shù)通常受經(jīng)驗(yàn)影響,有著較強(qiáng)的主觀性,需要進(jìn)行大量的調(diào)試。因此,如何優(yōu)化LSTM、確定合適的超參數(shù)來(lái)進(jìn)行模型的訓(xùn)練是一個(gè)難題。
針對(duì)以上問(wèn)題,該文提出了一種基于改進(jìn)麻雀搜索算法與長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)的交通流預(yù)測(cè)模型。利用SSA優(yōu)秀的全局搜索能力對(duì)LSTM模型的兩個(gè)關(guān)鍵參數(shù)(隱藏層神經(jīng)元數(shù)目和學(xué)習(xí)率大小)進(jìn)行優(yōu)化,并且改進(jìn)了SSA算法麻雀初始化時(shí)位置分布隨機(jī)的特點(diǎn),使其能均勻地分布在各個(gè)維度,避免出現(xiàn)局部最優(yōu)的結(jié)果。根據(jù)優(yōu)化后的參數(shù)構(gòu)建ISSA-LSTM組合預(yù)測(cè)模型,減少了參數(shù)選擇過(guò)程中人為因素的影響,提高了模型的泛化能力,也在一定程度上提高了LSTM模型的預(yù)測(cè)精度。模型在Python3.8的keras API環(huán)境下進(jìn)行預(yù)測(cè)實(shí)驗(yàn),將預(yù)測(cè)結(jié)果與BP、GRU、LSTM、PSO-LSTM、SSA-LSTM網(wǎng)絡(luò)的預(yù)測(cè)進(jìn)行對(duì)比,從而證明其具備良好的預(yù)測(cè)精度和預(yù)測(cè)穩(wěn)定性。
長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(long short-term memory)是一種時(shí)間循環(huán)神經(jīng)網(wǎng)絡(luò),簡(jiǎn)稱LSTM,它是循環(huán)神經(jīng)網(wǎng)絡(luò)RNN的變體,在一定程度上解決了傳統(tǒng)RNN在訓(xùn)練過(guò)程中容易出現(xiàn)的梯度爆炸和消失問(wèn)題。LSTM引入輸入門、遺忘門和輸出門,設(shè)置三個(gè)門相應(yīng)的門限來(lái)調(diào)節(jié)長(zhǎng)期記憶信息和短期記憶信息的記憶和遺忘程度,還引入了細(xì)胞狀態(tài)來(lái)保存長(zhǎng)期記憶信息,從而有效地緩解模型訓(xùn)練中的梯度爆炸和消失問(wèn)題,LSTM的結(jié)構(gòu)如圖1所示。
圖1 LSTM結(jié)構(gòu)示意圖
其中,遺忘門的作用是將上一個(gè)細(xì)胞狀態(tài)中傳下來(lái)的信息進(jìn)行有選擇地遺忘,公式為:
ft=σ(Wf·[ht-1,xt]+bf)
(1)
輸入門的作用是將當(dāng)前時(shí)刻有價(jià)值的信息更新到細(xì)胞狀態(tài)中,公式為:
it=σ(Wi·[ht-1,xt]+bi)
(2)
(3)
(4)
輸出門的作用是輸出當(dāng)前時(shí)刻的細(xì)胞狀態(tài)和當(dāng)前時(shí)刻LSTM網(wǎng)絡(luò)的輸出值。具體表達(dá)式為:
Ot=σ(Wo·[ht-1,xt]+bo)
(5)
ht=Ot*tanh(Ct)
(6)
麻雀搜索算法(sparrow search algorithm,SSA)是受到麻雀在覓食過(guò)程中不同分工所做出的不同行為的啟發(fā)而提出的群智能優(yōu)化算法,其全局的搜索能力強(qiáng)、搜索精度高、穩(wěn)定性好,在一定程度上優(yōu)于現(xiàn)有算法[12-14]。
在覓食的過(guò)程中,麻雀有兩種不同的分工:發(fā)現(xiàn)者和加入者。發(fā)現(xiàn)者的覓食范圍大,容易發(fā)現(xiàn)食物,在算法中體現(xiàn)為適應(yīng)度的函數(shù)值小。發(fā)現(xiàn)者在找到食物后,將食物所在的地方提供給其他發(fā)現(xiàn)者和加入者,而食物通常是有限的,距離食物地點(diǎn)較遠(yuǎn)的麻雀來(lái)不及獲取食物,只能自己再?gòu)钠渌胤饺フ摇T谶@個(gè)覓食的過(guò)程中,如果某只加入者先找到食物,它就自動(dòng)成為發(fā)現(xiàn)者,而發(fā)現(xiàn)者的數(shù)量是固定的,因此就會(huì)有一只發(fā)現(xiàn)者變成加入者,保持尋找食物的麻雀占麻雀總體比例的平衡。同時(shí),種群中還有一定比例麻雀會(huì)進(jìn)行偵察預(yù)警,當(dāng)發(fā)現(xiàn)危險(xiǎn)時(shí),它們會(huì)迅速轉(zhuǎn)向其他安全區(qū)域進(jìn)行覓食,負(fù)責(zé)偵察預(yù)警的麻雀和他們本身分工并不沖突,即預(yù)警麻雀可能是發(fā)現(xiàn)者,也可能是加入者。
SSA算法發(fā)現(xiàn)者位置迭代公式如下:
(7)
加入者位置迭代公式如下:
(8)
進(jìn)行偵察預(yù)警的麻雀在種群中的初始位置是隨機(jī)產(chǎn)生的,其位置迭代公式如下:
(9)
式中,Xbest是當(dāng)前的全局最優(yōu)位置,β和K(K∈[-1,1])是步長(zhǎng)控制參數(shù),且都是隨機(jī)數(shù),β服從方差為1、均值為0的正態(tài)分布。fi、fg和fw分別是當(dāng)前麻雀?jìng)€(gè)體、當(dāng)前全局最佳和最差的適應(yīng)度值。ε是一個(gè)為了防止分母出現(xiàn)零(fi=fw)而加入的極小常數(shù)。當(dāng)fi>fg時(shí),表示該麻雀的適應(yīng)度值不是最優(yōu)適應(yīng)度值,即麻雀在種群的外圍位置,這個(gè)時(shí)候麻雀為了安全會(huì)向全局最優(yōu)位置Xbest的方向移動(dòng);fi=fg時(shí),表明麻雀處于中心位置,此時(shí)該麻雀的最優(yōu)解就是靠近周圍的麻雀,減輕自己被捕食的風(fēng)險(xiǎn)。
SSA算法在對(duì)函數(shù)進(jìn)行優(yōu)化時(shí),其種群的位置初始化通常是完全隨機(jī)的,麻雀在各維度空間的分布是不均勻的,這會(huì)導(dǎo)致算法的收斂性變慢,且容易得到局部最優(yōu)解。而混沌序列在一定范圍內(nèi)具有隨機(jī)性、規(guī)律性以及便利性的特點(diǎn),其能夠使麻雀在初始化時(shí)分布更加均勻、提高全局搜索能力、維持種群的多樣性。
現(xiàn)有的混沌映射主要有Logistic映射、Tent[15]映射等。不同的混沌映射對(duì)于提高函數(shù)的優(yōu)化能力有很大區(qū)別,Logistic映射本身分布不均勻,有較高概率分布在[0,0.1]和[0.9,1]區(qū)間,這會(huì)影響其尋找最優(yōu)解的速度和難度。而Tent映射能將參數(shù)更均勻分布在各個(gè)維度,遍歷均勻性更好,因此,該文將利用Tent映射初始化種群的位置,其表達(dá)式為:
(10)
當(dāng)u=0.5時(shí),Tent映射得到的序列分布最均勻,此時(shí)的公式為:
(11)
使用公式(11)對(duì)麻雀的初始位置進(jìn)行初始化,具體為:
yn+1=xn+1(ub-lb)+lb
(12)
其中,ub、lb分別是參數(shù)在各維度的上下限,xn+1是在[0,1]區(qū)間均勻分布的混沌序列。
實(shí)踐證明,LSTM的預(yù)測(cè)精度與隱藏神經(jīng)元和學(xué)習(xí)率有很大關(guān)系。隱藏層神經(jīng)元數(shù)目一般是憑經(jīng)驗(yàn)加以調(diào)試,而學(xué)習(xí)率在keras的Adam優(yōu)化器中默認(rèn)為0.001,都無(wú)法確定是否選擇了最優(yōu)超參數(shù)。
考慮到隱藏神經(jīng)元和學(xué)習(xí)率對(duì)最終預(yù)測(cè)精度的影響,為了使預(yù)測(cè)達(dá)到最好的效果,該文通過(guò)ISSA算法來(lái)確定使LSTM網(wǎng)絡(luò)預(yù)測(cè)精度最佳的隱藏神經(jīng)元和學(xué)習(xí)率。ISSA-LSTM預(yù)測(cè)流程如圖2所示。
圖2 ISSA-LSTM預(yù)測(cè)流程
首先,確定ISSA-LSTM模型的初始參數(shù):ISSA算法的麻雀數(shù)量、迭代次數(shù)和預(yù)警麻雀的安全值的大小;LSTM的隱藏層神經(jīng)元數(shù)目和學(xué)習(xí)率大小的取值范圍。根據(jù)LSTM這兩個(gè)參數(shù)的取值范圍,利用Tent映射對(duì)麻雀位置進(jìn)行初始化。
其次,將麻雀位置對(duì)應(yīng)的參數(shù)作為L(zhǎng)STM模型的參數(shù)的輸入,將建立的LSTM模型在訓(xùn)練集上進(jìn)行訓(xùn)練。將訓(xùn)練好的模型在測(cè)試集進(jìn)行測(cè)試,得到每次測(cè)試的均方根誤差RMSE。由于神經(jīng)網(wǎng)絡(luò)每次訓(xùn)練的效果有一定的偏差,本實(shí)驗(yàn)取3次訓(xùn)練RMSE的最佳值作為適應(yīng)度值返回給ISSA算法。
然后,根據(jù)麻雀適應(yīng)度值的大小確定其分工,前20%的麻雀為發(fā)現(xiàn)者,剩下的為加入者。按照20%預(yù)警麻雀的比例,隨機(jī)確定此次迭代的預(yù)警值大小和負(fù)責(zé)預(yù)警的麻雀位置,記錄最佳和最差的適應(yīng)度值和對(duì)應(yīng)的麻雀位置。
通過(guò)公式(7)、(8)分別對(duì)發(fā)現(xiàn)者和加入者的位置進(jìn)行更新,然后再根據(jù)公式(9)更新預(yù)警麻雀的位置。
將更新后的位置所對(duì)應(yīng)的數(shù)據(jù)作為L(zhǎng)STM模型的參數(shù)輸入,重復(fù)之前過(guò)程,得到新的適應(yīng)度值,然后更新麻雀分工。對(duì)比之前記錄的最佳和最差適應(yīng)度值,更新最佳和最差適應(yīng)度值及其對(duì)應(yīng)位置。
重復(fù)上述步驟,直到達(dá)到最大迭代次數(shù),輸出本次算法迭代得到的最佳適應(yīng)度值及其對(duì)應(yīng)的位置參數(shù)信息,將此參數(shù)設(shè)置為L(zhǎng)STM的超參數(shù),構(gòu)建ISSA-LSTM模型,對(duì)交通流數(shù)據(jù)進(jìn)行預(yù)測(cè),得到模型的最終預(yù)測(cè)結(jié)果。
實(shí)驗(yàn)數(shù)據(jù)是從英國(guó)高速公路交通流數(shù)據(jù)集網(wǎng)站下載的M25公路4916A檢測(cè)點(diǎn)的數(shù)據(jù),該數(shù)據(jù)集每隔15分鐘采集一條數(shù)據(jù),從2021年1月1日到2021年1月31日共2 976條數(shù)據(jù),有Local Date、Local Time、Total Carriageway Flow、Speed Value等11個(gè)特征。Local Date和Local Time是單條數(shù)據(jù)所采集的時(shí)間,Total Carriageway Flow是15分鐘內(nèi)經(jīng)過(guò)該檢測(cè)點(diǎn)的車流量總量,Speed Value是15分鐘內(nèi)經(jīng)過(guò)該監(jiān)測(cè)點(diǎn)的車流的平均速度。該數(shù)據(jù)集還有關(guān)于車長(zhǎng)的屬性,根據(jù)公式(13)計(jì)算道路占有率。
(13)
設(shè)定一個(gè)Festivals屬性,查詢2021年1月1日至2021年1月31日英國(guó)的節(jié)假日及周六日,將相應(yīng)的屬性值設(shè)為1,其余默認(rèn)為0。經(jīng)過(guò)處理后的數(shù)據(jù)集部分?jǐn)?shù)據(jù)如表1所示。
表1 4916A監(jiān)測(cè)點(diǎn)數(shù)據(jù)集部分?jǐn)?shù)據(jù)
該數(shù)據(jù)集的交通流量、占有率、速度趨勢(shì)如圖3所示。經(jīng)處理后的數(shù)據(jù)集共有Total Volume、Occupancy、Speed、Festivals四個(gè)特征輸入。由圖3可知,交通流量在不同時(shí)間段差異巨大,其最大車流為1 502輛,最小車流為23輛,平均值為488輛。為了便于預(yù)測(cè),需要將數(shù)據(jù)進(jìn)行歸一化處理,將交通流數(shù)據(jù)映射到[0,1]范圍內(nèi),采用MinMaxScaler函數(shù)進(jìn)行歸一化,具體公式是:
圖3 數(shù)據(jù)集特征趨勢(shì)
(14)
其中,x是車流量,min(x)、max(x)分別是交通流的最小值和最大值。
數(shù)據(jù)處理完后,按照8∶2的比例將數(shù)據(jù)分為訓(xùn)練集和測(cè)試集。
該文選取的評(píng)價(jià)指標(biāo)有RMSE、MAE、MAPE、R2。RMSE是均方根誤差,MAE是平均絕對(duì)誤差,MAPE是平均絕對(duì)百分比誤差,R2是決定系數(shù)。計(jì)算公式如下:
(15)
(16)
(17)
(18)
ISSA-LSTM模型中,LSTM由輸入層、一個(gè)隱含層和輸出層組成,隱藏層神經(jīng)元數(shù)目和學(xué)習(xí)率范圍分別設(shè)定為[1,300]和[0.000 1,0.005]。為了比較ISSA-LSTM模型同現(xiàn)有模型的區(qū)別,實(shí)驗(yàn)將BP、GRU、LSTM、PSO-LSTM、SSA-LSTM模型放在相同數(shù)據(jù)集上預(yù)測(cè),其中PSO-LSTM、SSA-LSTM分別為粒子群算法和原始麻雀算法優(yōu)化LSTM。LSTM、GRU的隱藏層神經(jīng)元均為256,學(xué)習(xí)率為Adam默認(rèn)值,迭代次數(shù)為300,BP迭代次數(shù)為1 000,學(xué)習(xí)率為0.01,decay為0.005。這些數(shù)據(jù)是經(jīng)初步調(diào)參得到的值。為了避免模型出現(xiàn)過(guò)擬合現(xiàn)象,加入dropout層,參數(shù)0.2。PSO和SSA、ISSA三種模型的種群數(shù)量和迭代次數(shù)均為50,且除神經(jīng)元和學(xué)習(xí)率外的其他參數(shù)均與LSTM參數(shù)相同。利用1.4節(jié)流程進(jìn)行參數(shù)尋優(yōu),圖4為ISSA、SSA和PSO尋優(yōu)過(guò)程中適應(yīng)度值迭代結(jié)果。
圖4 適應(yīng)度值收斂曲線
從圖4可見(jiàn),SSA和ISSA算法要比PSO算法收斂快,且ISSA算法收斂精度比SSA算法和PSO算法都高,ISSA在第12次迭代時(shí)出現(xiàn)最優(yōu)適應(yīng)度值,對(duì)應(yīng)的最小RMSE是43.012,隱藏層神經(jīng)元個(gè)數(shù)為108,學(xué)習(xí)率為0.001 5。六種模型對(duì)交通流進(jìn)行預(yù)測(cè)得到的結(jié)果如圖5所示。
(a)BP
圖5(a)是BP網(wǎng)絡(luò)的預(yù)測(cè)效果,BP網(wǎng)絡(luò)不能提取數(shù)據(jù)的時(shí)序特征,因此預(yù)測(cè)效果比其他網(wǎng)絡(luò)的擬合效果差,數(shù)據(jù)的擬合出現(xiàn)了明顯的偏差。而從圖5(f)可以看出,ISSA-LSTM組合模型預(yù)測(cè)值與真實(shí)值有較大部分的重合,只有少部分?jǐn)M合效果欠佳。6種模型對(duì)應(yīng)的指標(biāo)評(píng)價(jià)結(jié)果如表2所示。
表2 模型評(píng)價(jià)指標(biāo)
由表2可知,BP網(wǎng)絡(luò)的確在擬合上的效果不佳,其RMSE、MAE、MAPE均顯著高于其他幾種網(wǎng)絡(luò)的相同指標(biāo)。GRU和LSTM網(wǎng)絡(luò)能夠提取數(shù)據(jù)的時(shí)序特征,因此預(yù)測(cè)效果比BP好,但是其參數(shù)仍有進(jìn)一步優(yōu)化的空間。從表中數(shù)據(jù)來(lái)看,提出的ISSA-LSTM模型效果最好,其RMSE為43.012,MAE為28.552,MAPE為7.134%,R2為0.989 02。ISSA-LSTM的RMSE相較于LSTM模型下降了3.263,MAE下降了1.87,MAPE下降了0.949百分點(diǎn),R2上升了0.276百分點(diǎn),相較于其他模型,ISSA-LSTM模型的各項(xiàng)評(píng)價(jià)指標(biāo)效果均為最好,因此,ISSA-LSTM模型在短時(shí)交通流預(yù)測(cè)上有很好的預(yù)測(cè)效果。
為了更加準(zhǔn)確地預(yù)測(cè)短時(shí)交通流,該文提出了使用ISSA優(yōu)化LSTM參數(shù)的交通流預(yù)測(cè)模型。初步證明了經(jīng)過(guò)優(yōu)化后的ISSA算法在參數(shù)尋優(yōu)方面有很好的效果,也為優(yōu)化預(yù)測(cè)模型提供了思路。ISSA算法在第12次就迭代到最小,說(shuō)明算法收斂較快,且實(shí)驗(yàn)結(jié)果表明,ISSA算法優(yōu)化LSTM較SSA算法和PSO算法優(yōu)化LSTM預(yù)測(cè)上效果更好。但實(shí)驗(yàn)還是存在一定局限性,交通流不是單純的時(shí)序數(shù)據(jù),其還會(huì)受到天氣和空間位置等因素的影響,如果將天氣等其他因素加入預(yù)測(cè)會(huì)有更好的效果。