陳 雄,王海晨
(長安大學 信息工程學院,陜西 西安 710064)
進入21世紀以來,隨著人們的生活水平不斷提高,私人汽車擁有量持續攀升,伴隨而來的就是交通流急劇增長、交通擁堵問題越來越嚴重。實時精確的交通流量預測能夠幫助出行者選擇合適的出行方案,提高出行效率,有效緩解城市交通的壓力,提高道路資源的利用率,對于交通管控和規劃具有重要的價值[1-2]。
對交通流進行預測,不同時期有不同的方式,早期是使用基于統計分析的預測方法,如差分整合移動平均自回歸模型ARIMA[3]、卡爾曼濾波模型[4]等。這類統計模型對于數據會有比較高的要求,只能預測對精度要求不高的場合,對具有較高隨機性的交通流數據無法很好地擬合,不能處理實時突發性的交通狀況。
交通流數據受多方面因素影響,有著復雜的非線性特征,基于統計分析的預測模型存在局限性,因此出現了一些非線性預測模型,擬合數據的非線性特征。如小波分析預測模型[5]將時間序列分解為不同的信號序列,然后再對這些序列分別預測,將預測結果合成得到最后的預測結果。該模型在預測精度上優于基于統計分析的模型,但是其計算量大,需要配合其他預測模型進行預測,且理論復雜,可用性不高。
伴隨著交通數據量的增長,能夠處理大量數據的機器學習和深度學習的模型在交通流預測方向已經發展起來。與之前的模型相比,機器學習和深度學習不對數據分布進行基本假設,有較強的學習能力和挖掘數據深層特征的能力,預測精度有顯著提升。經典的機器學習模型有支持向量機(SVM)[6]、K近鄰算法(KNN)[7]等,深度學習模型有BP神經網絡[8]、LSTM網絡等。其中LSTM模型由于其循環性結構和長期記憶能力,在處理大數據量的時序問題上有著巨大的優勢,預測精度更高、效果更好。如陳治亞[9]使用LSTM進行多維度的交通流預測,探究各種維度對于模型預測精度的影響;羅向龍[10]提出了基于KNN-LSTM的預測模型,預測準確率相較傳統模型有顯著提高;張陽[11]將改進小波包分析算法和LSTM相結合,提高了在樣本數量較少時模型的可用性和預測精度。但是LSTM模型預測結果的好壞與神經元數量、學習率等超參數有著直接的關系,且其超參數通常受經驗影響,有著較強的主觀性,需要進行大量的調試。因此,如何優化LSTM、確定合適的超參數來進行模型的訓練是一個難題。
針對以上問題,該文提出了一種基于改進麻雀搜索算法與長短時記憶網絡的交通流預測模型。利用SSA優秀的全局搜索能力對LSTM模型的兩個關鍵參數(隱藏層神經元數目和學習率大小)進行優化,并且改進了SSA算法麻雀初始化時位置分布隨機的特點,使其能均勻地分布在各個維度,避免出現局部最優的結果。根據優化后的參數構建ISSA-LSTM組合預測模型,減少了參數選擇過程中人為因素的影響,提高了模型的泛化能力,也在一定程度上提高了LSTM模型的預測精度。模型在Python3.8的keras API環境下進行預測實驗,將預測結果與BP、GRU、LSTM、PSO-LSTM、SSA-LSTM網絡的預測進行對比,從而證明其具備良好的預測精度和預測穩定性。
長短時記憶網絡(long short-term memory)是一種時間循環神經網絡,簡稱LSTM,它是循環神經網絡RNN的變體,在一定程度上解決了傳統RNN在訓練過程中容易出現的梯度爆炸和消失問題。LSTM引入輸入門、遺忘門和輸出門,設置三個門相應的門限來調節長期記憶信息和短期記憶信息的記憶和遺忘程度,還引入了細胞狀態來保存長期記憶信息,從而有效地緩解模型訓練中的梯度爆炸和消失問題,LSTM的結構如圖1所示。

圖1 LSTM結構示意圖
其中,遺忘門的作用是將上一個細胞狀態中傳下來的信息進行有選擇地遺忘,公式為:
ft=σ(Wf·[ht-1,xt]+bf)
(1)
輸入門的作用是將當前時刻有價值的信息更新到細胞狀態中,公式為:
it=σ(Wi·[ht-1,xt]+bi)
(2)
(3)
(4)
輸出門的作用是輸出當前時刻的細胞狀態和當前時刻LSTM網絡的輸出值。具體表達式為:
Ot=σ(Wo·[ht-1,xt]+bo)
(5)
ht=Ot*tanh(Ct)
(6)

麻雀搜索算法(sparrow search algorithm,SSA)是受到麻雀在覓食過程中不同分工所做出的不同行為的啟發而提出的群智能優化算法,其全局的搜索能力強、搜索精度高、穩定性好,在一定程度上優于現有算法[12-14]。
在覓食的過程中,麻雀有兩種不同的分工:發現者和加入者。發現者的覓食范圍大,容易發現食物,在算法中體現為適應度的函數值小。發現者在找到食物后,將食物所在的地方提供給其他發現者和加入者,而食物通常是有限的,距離食物地點較遠的麻雀來不及獲取食物,只能自己再從其他地方去找。在這個覓食的過程中,如果某只加入者先找到食物,它就自動成為發現者,而發現者的數量是固定的,因此就會有一只發現者變成加入者,保持尋找食物的麻雀占麻雀總體比例的平衡。同時,種群中還有一定比例麻雀會進行偵察預警,當發現危險時,它們會迅速轉向其他安全區域進行覓食,負責偵察預警的麻雀和他們本身分工并不沖突,即預警麻雀可能是發現者,也可能是加入者。
SSA算法發現者位置迭代公式如下:
(7)

加入者位置迭代公式如下:
(8)

進行偵察預警的麻雀在種群中的初始位置是隨機產生的,其位置迭代公式如下:
(9)
式中,Xbest是當前的全局最優位置,β和K(K∈[-1,1])是步長控制參數,且都是隨機數,β服從方差為1、均值為0的正態分布。fi、fg和fw分別是當前麻雀個體、當前全局最佳和最差的適應度值。ε是一個為了防止分母出現零(fi=fw)而加入的極小常數。當fi>fg時,表示該麻雀的適應度值不是最優適應度值,即麻雀在種群的外圍位置,這個時候麻雀為了安全會向全局最優位置Xbest的方向移動;fi=fg時,表明麻雀處于中心位置,此時該麻雀的最優解就是靠近周圍的麻雀,減輕自己被捕食的風險。
SSA算法在對函數進行優化時,其種群的位置初始化通常是完全隨機的,麻雀在各維度空間的分布是不均勻的,這會導致算法的收斂性變慢,且容易得到局部最優解。而混沌序列在一定范圍內具有隨機性、規律性以及便利性的特點,其能夠使麻雀在初始化時分布更加均勻、提高全局搜索能力、維持種群的多樣性。
現有的混沌映射主要有Logistic映射、Tent[15]映射等。不同的混沌映射對于提高函數的優化能力有很大區別,Logistic映射本身分布不均勻,有較高概率分布在[0,0.1]和[0.9,1]區間,這會影響其尋找最優解的速度和難度。而Tent映射能將參數更均勻分布在各個維度,遍歷均勻性更好,因此,該文將利用Tent映射初始化種群的位置,其表達式為:
(10)
當u=0.5時,Tent映射得到的序列分布最均勻,此時的公式為:
(11)
使用公式(11)對麻雀的初始位置進行初始化,具體為:
yn+1=xn+1(ub-lb)+lb
(12)
其中,ub、lb分別是參數在各維度的上下限,xn+1是在[0,1]區間均勻分布的混沌序列。
實踐證明,LSTM的預測精度與隱藏神經元和學習率有很大關系。隱藏層神經元數目一般是憑經驗加以調試,而學習率在keras的Adam優化器中默認為0.001,都無法確定是否選擇了最優超參數。
考慮到隱藏神經元和學習率對最終預測精度的影響,為了使預測達到最好的效果,該文通過ISSA算法來確定使LSTM網絡預測精度最佳的隱藏神經元和學習率。ISSA-LSTM預測流程如圖2所示。

圖2 ISSA-LSTM預測流程
首先,確定ISSA-LSTM模型的初始參數:ISSA算法的麻雀數量、迭代次數和預警麻雀的安全值的大小;LSTM的隱藏層神經元數目和學習率大小的取值范圍。根據LSTM這兩個參數的取值范圍,利用Tent映射對麻雀位置進行初始化。
其次,將麻雀位置對應的參數作為LSTM模型的參數的輸入,將建立的LSTM模型在訓練集上進行訓練。將訓練好的模型在測試集進行測試,得到每次測試的均方根誤差RMSE。由于神經網絡每次訓練的效果有一定的偏差,本實驗取3次訓練RMSE的最佳值作為適應度值返回給ISSA算法。
然后,根據麻雀適應度值的大小確定其分工,前20%的麻雀為發現者,剩下的為加入者。按照20%預警麻雀的比例,隨機確定此次迭代的預警值大小和負責預警的麻雀位置,記錄最佳和最差的適應度值和對應的麻雀位置。
通過公式(7)、(8)分別對發現者和加入者的位置進行更新,然后再根據公式(9)更新預警麻雀的位置。
將更新后的位置所對應的數據作為LSTM模型的參數輸入,重復之前過程,得到新的適應度值,然后更新麻雀分工。對比之前記錄的最佳和最差適應度值,更新最佳和最差適應度值及其對應位置。
重復上述步驟,直到達到最大迭代次數,輸出本次算法迭代得到的最佳適應度值及其對應的位置參數信息,將此參數設置為LSTM的超參數,構建ISSA-LSTM模型,對交通流數據進行預測,得到模型的最終預測結果。
實驗數據是從英國高速公路交通流數據集網站下載的M25公路4916A檢測點的數據,該數據集每隔15分鐘采集一條數據,從2021年1月1日到2021年1月31日共2 976條數據,有Local Date、Local Time、Total Carriageway Flow、Speed Value等11個特征。Local Date和Local Time是單條數據所采集的時間,Total Carriageway Flow是15分鐘內經過該檢測點的車流量總量,Speed Value是15分鐘內經過該監測點的車流的平均速度。該數據集還有關于車長的屬性,根據公式(13)計算道路占有率。
(13)
設定一個Festivals屬性,查詢2021年1月1日至2021年1月31日英國的節假日及周六日,將相應的屬性值設為1,其余默認為0。經過處理后的數據集部分數據如表1所示。

表1 4916A監測點數據集部分數據
該數據集的交通流量、占有率、速度趨勢如圖3所示。經處理后的數據集共有Total Volume、Occupancy、Speed、Festivals四個特征輸入。由圖3可知,交通流量在不同時間段差異巨大,其最大車流為1 502輛,最小車流為23輛,平均值為488輛。為了便于預測,需要將數據進行歸一化處理,將交通流數據映射到[0,1]范圍內,采用MinMaxScaler函數進行歸一化,具體公式是:

圖3 數據集特征趨勢
(14)
其中,x是車流量,min(x)、max(x)分別是交通流的最小值和最大值。
數據處理完后,按照8∶2的比例將數據分為訓練集和測試集。
該文選取的評價指標有RMSE、MAE、MAPE、R2。RMSE是均方根誤差,MAE是平均絕對誤差,MAPE是平均絕對百分比誤差,R2是決定系數。計算公式如下:
(15)

(16)
(17)
(18)

ISSA-LSTM模型中,LSTM由輸入層、一個隱含層和輸出層組成,隱藏層神經元數目和學習率范圍分別設定為[1,300]和[0.000 1,0.005]。為了比較ISSA-LSTM模型同現有模型的區別,實驗將BP、GRU、LSTM、PSO-LSTM、SSA-LSTM模型放在相同數據集上預測,其中PSO-LSTM、SSA-LSTM分別為粒子群算法和原始麻雀算法優化LSTM。LSTM、GRU的隱藏層神經元均為256,學習率為Adam默認值,迭代次數為300,BP迭代次數為1 000,學習率為0.01,decay為0.005。這些數據是經初步調參得到的值。為了避免模型出現過擬合現象,加入dropout層,參數0.2。PSO和SSA、ISSA三種模型的種群數量和迭代次數均為50,且除神經元和學習率外的其他參數均與LSTM參數相同。利用1.4節流程進行參數尋優,圖4為ISSA、SSA和PSO尋優過程中適應度值迭代結果。

圖4 適應度值收斂曲線
從圖4可見,SSA和ISSA算法要比PSO算法收斂快,且ISSA算法收斂精度比SSA算法和PSO算法都高,ISSA在第12次迭代時出現最優適應度值,對應的最小RMSE是43.012,隱藏層神經元個數為108,學習率為0.001 5。六種模型對交通流進行預測得到的結果如圖5所示。

(a)BP
圖5(a)是BP網絡的預測效果,BP網絡不能提取數據的時序特征,因此預測效果比其他網絡的擬合效果差,數據的擬合出現了明顯的偏差。而從圖5(f)可以看出,ISSA-LSTM組合模型預測值與真實值有較大部分的重合,只有少部分擬合效果欠佳。6種模型對應的指標評價結果如表2所示。

表2 模型評價指標
由表2可知,BP網絡的確在擬合上的效果不佳,其RMSE、MAE、MAPE均顯著高于其他幾種網絡的相同指標。GRU和LSTM網絡能夠提取數據的時序特征,因此預測效果比BP好,但是其參數仍有進一步優化的空間。從表中數據來看,提出的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百分點,R2上升了0.276百分點,相較于其他模型,ISSA-LSTM模型的各項評價指標效果均為最好,因此,ISSA-LSTM模型在短時交通流預測上有很好的預測效果。
為了更加準確地預測短時交通流,該文提出了使用ISSA優化LSTM參數的交通流預測模型。初步證明了經過優化后的ISSA算法在參數尋優方面有很好的效果,也為優化預測模型提供了思路。ISSA算法在第12次就迭代到最小,說明算法收斂較快,且實驗結果表明,ISSA算法優化LSTM較SSA算法和PSO算法優化LSTM預測上效果更好。但實驗還是存在一定局限性,交通流不是單純的時序數據,其還會受到天氣和空間位置等因素的影響,如果將天氣等其他因素加入預測會有更好的效果。