翁小雄,任 杰,覃鎮(zhèn)林,羅瑞發(fā)
(1.華南理工大學(xué) 土木與交通學(xué)院,廣東 廣州 510640;2.深圳市金溢科技股份有限公司,廣東 深圳 518000)
最近幾年,隨著智慧交通的不斷發(fā)展,越來越多可被用于預(yù)測個體出行的數(shù)據(jù)被采集。個體出行預(yù)測對城市發(fā)展具有十分重要的意義。從宏觀層面來看,政府可以根據(jù)出行預(yù)測設(shè)計更好的交通規(guī)劃和調(diào)度策略,以緩解交通擁堵并處理人群聚集問題;從微觀層面來看,通過對個體的出行預(yù)測,乘車共享平臺可以更好地估計其客戶的出行需求并調(diào)度資源相應(yīng)地滿足這些要求。
目前對個體出行預(yù)測的研究主要是對個體出行進行單步預(yù)測,即基于個體歷史出行數(shù)據(jù)對接下來的一次出行進行預(yù)測,如基于馬爾可夫模型進行優(yōu)化的MMC模型[1],n-MMC模型[2],隱馬爾可夫模型[3]等,基于機器學(xué)習(xí)的貝葉斯模型[4],隨機森林模型[5],BP神經(jīng)網(wǎng)絡(luò)模型[6]等,而這些傳統(tǒng)模型難以提取到個體出行中較為復(fù)雜周期性規(guī)律,在特征提取方面具有較大的局限性,難以用于多步預(yù)測研究。此外,很多交通場景需要基于個體未來一段時間的出行進行規(guī)劃和調(diào)度,而單步預(yù)測難以滿足這些場景的需要,如公交調(diào)度、交通規(guī)劃等;最后,這些研究大多使用個體出行的GPS數(shù)據(jù)[7-8]進行預(yù)測,而由于GPS等非交通系統(tǒng)采集到的數(shù)據(jù)質(zhì)量和情況不同,這些個體出行數(shù)據(jù)多是低采樣的,且通常將所有個體的出行特征融合在一起,數(shù)據(jù)通常具有較強的稀疏性和異構(gòu)性,因此這類研究的預(yù)測精度一般不高。
針對當(dāng)前個體出行研究的局限性, 設(shè)計了3種基于序列到序列(sequence to sequence, Seq2Seq)并結(jié)合注意力學(xué)習(xí)機制的深度學(xué)習(xí)模型,對個體出行進行多步預(yù)測。個體的多步預(yù)測即使用個體過去一段時間的歷史出行數(shù)據(jù),對其未來一段時間的多次出行進行預(yù)測,如圖1。
圖1 多步預(yù)測
首先采用詞嵌入的方法對數(shù)據(jù)進行特征映射,通過嵌入層提取出行特征,由于提取到的出行特征可以隨著模型的訓(xùn)練不斷更新和優(yōu)化,因此相較于傳統(tǒng)模型更能提取出包含復(fù)雜的周期性出行規(guī)律的語義信息;然后采用門控循環(huán)單元(GRU)來實現(xiàn)Seq2Seq深度學(xué)習(xí)模型,并引入注意力機制來增強模型對周期性規(guī)律的捕捉能力,以提高準確率,以此完成對個體出行的單步預(yù)測。進一步地,為了盡可能地減少多步誤差,提高模型預(yù)測精度,筆者設(shè)計了3種多步預(yù)測模型:①整體輸出式多步預(yù)測模型;②步進輸出式多步預(yù)測模型;③多模型組合式多步預(yù)測模型來完成對個體出行的多步預(yù)測。筆者針對地鐵系統(tǒng)的個體出行場景,使用AFC數(shù)據(jù)對地鐵乘客進行多步預(yù)測研究,從而填補了單步預(yù)測難以滿足預(yù)測需求的場景。使用地鐵羊城通數(shù)據(jù)對提出的模型進行驗證,其主要網(wǎng)絡(luò)結(jié)構(gòu)如圖2。
圖2 模型架構(gòu)
對個體的多步預(yù)測即使用個體過去一段時間的歷史出行數(shù)據(jù),對其未來一段時間內(nèi)的出行進行預(yù)測。為了定義個體出行多步預(yù)測的任務(wù),筆者首先引入兩個定義。
1)出行元組(trip tuple)。通過一個元組來描述一次出行:
Q=(o,d,t,w)
(1)
式中:o,d,t,w分別為一次出行的出行起點、出行終點、出行時間和出行日期(星期幾)。由于出站時間主要由較為復(fù)雜的地鐵系統(tǒng)來決定,受到較多非出行因素的干擾,如地鐵客流等,因此筆者沒有考慮出站時間。
2)出行序列(trip sequence)。單個個體的出行序列為可以用一個有向序列來表示。根據(jù)出行元組的定義,可以進一步定義出行序列為:
Sm=(Q1,Q2,…,Qm)
(2)
基于以上兩個定義,對個體出行的多步預(yù)測問題進行數(shù)學(xué)描述。對于給定的出行序列Sm和已知最后一次的出行信息(om,dm),對個體出行進行多步預(yù)測的任務(wù)可以轉(zhuǎn)化成對映射F建模以實現(xiàn)輸入這些信息到輸出最后k次出行的目的站點的預(yù)測,其數(shù)學(xué)定義為:
dm+1,dm+2, …, …,dm+k=F(Sm-1;om,dm)
(3)
由于用于表示出行的4個屬性具有離散的特性,難以直接作為神經(jīng)網(wǎng)絡(luò)模型的輸入,因此筆者引入詞嵌入(word embedding)的方法對出行屬性進行處理[9]。詞嵌入方法可以把一個維數(shù)為所有詞的高維空間嵌入到一個低維連續(xù)空間中,每個單詞或詞組被映射為一個向量,目前該方法在NLP領(lǐng)域已廣泛使用。
通過搭建嵌入層(embedding)實現(xiàn)個體出行數(shù)據(jù)的向量轉(zhuǎn)換,把個體出行屬性轉(zhuǎn)換為包含更多出行特征信息的低維稠密向量,使得模型更容易學(xué)到個體出行規(guī)律,該嵌入層的輸入為用于表示出行的4種屬性數(shù)據(jù),輸出為各屬性的映射向量。
循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network, RNN)是一種具有循環(huán)性和內(nèi)部存儲單元的神經(jīng)網(wǎng)絡(luò),因此常被用于處理序列數(shù)據(jù),其中長短期記憶網(wǎng)絡(luò)(long short-term memory, LSTM)[10]和門控循環(huán)單元(gated recurrent neural network, GRU)是廣泛使用的兩種循環(huán)神經(jīng)網(wǎng)絡(luò)。LSTM包含一個單元狀態(tài)和3個控制門以保持和更新單元狀態(tài)。GRU是LSTM的一種變體,它將忘記門和輸入門合并成一個單一的更新門,因此GRU只包含重置門和更新門兩個門。同時還混合了細胞狀態(tài)和隱藏狀態(tài),加諸其他一些改動,使得最終的模型比標準的 LSTM 模型要簡單,是當(dāng)下非常流行的變體。GRU模型如圖3。
圖3 GRU原理
zt=σ(Wz[ht-1,xt])
(4)
rt=σ(Wr[ht-1,xt])
(5)
(6)
(7)
基于Seq2Seq模型對個體出行進行多步預(yù)測,Seq2Seq模型由解碼器和編碼器兩部分構(gòu)成,而編碼器和解碼器通常通過RNN結(jié)構(gòu)實現(xiàn)。首先將輸入序列輸入到編碼器,編碼器對輸入序列進行編碼,其最后一個隱狀態(tài)即為上下文向量。然后解碼器將上下文向量進行解碼,生成目標序列。
筆者將經(jīng)過特征提取和特征融合的個體歷史出行特征數(shù)據(jù)作為輸入序列,經(jīng)過Seq2Seq模型得到下次出行中各個站點的出現(xiàn)概率,選擇概率最大的站點作為下一次的出行預(yù)測,然后將該次預(yù)測結(jié)果重新嵌入、編碼和解碼,并對該過程進行迭代,以此來生成個體的多步出行預(yù)測結(jié)果。
由于Seq2Seq模型具有無法包含輸入序列的所有信息,從而限制了解碼器的解碼能力,因此筆者引入了注意力機制。引入注意力機制是為了計算查詢向量與候選向量之間的相似度,得到候選向量的權(quán)重系數(shù),以生成上下文向量。該過程可以認為是計算歷史出行與當(dāng)前出行的相關(guān)程度,越相關(guān)的出行越可能為該模型準確預(yù)測下次出行提供有效信息。注意力機制被參數(shù)化為可以與整個神經(jīng)網(wǎng)絡(luò)一起訓(xùn)練的前饋神經(jīng)網(wǎng)絡(luò)。注意力機制的計算公式為:
ct=∑αisi
(8)
αi=softmax[f(ht,si)]
(9)
f(ht,s)=tanh(ht,Ws)
(10)
式中:s為歷史特征;Ws為tanh的可學(xué)習(xí)參數(shù);f為score函數(shù);ct為當(dāng)前狀態(tài)下的上下文向量;αi為中間問題。
在設(shè)計多步預(yù)測方法之前,首先介紹帶注意力機制的Seq2Seq單步預(yù)測模型,該模型首先根據(jù)個體出行數(shù)據(jù)對出行特征進行提取和融合,通過編碼器將歷史出行數(shù)據(jù)進行編碼,得到編碼器的輸出向量和隱狀態(tài)向量;然后通過解碼器對最近一次的出行數(shù)據(jù)進行嵌入并編碼,將解碼器輸出的隱狀態(tài)向量作為查詢向量,通過注意力機制計算查詢向量與編碼器輸出的隱狀態(tài)向量的注意力權(quán)重,以此來計算上下文向量;上下文向量可以表示當(dāng)前向量與歷史向量的相關(guān)出行信息,通過上下文向量即可預(yù)測個體下一次出行的站點,計算過程如表1。
表1 帶注意力機制的Seq2Seq預(yù)測模型
多步預(yù)測場景與單步預(yù)測場景有很大不同,主要在于如何設(shè)計多步預(yù)測的建模策略。在多步預(yù)測過程中,第t+k步的預(yù)測準確性直接影響了第t+k+1及之后時間窗的預(yù)測準確性,因此多步預(yù)測任務(wù)不可避免地會產(chǎn)生多步誤差,我們需要針對多步預(yù)測場景設(shè)計不同的建模策略以減少多步誤差帶來的影響。也就是說,對于單步預(yù)測,基于上述模型即可直接進行預(yù)測,而多步預(yù)測則需要考慮如何使多步預(yù)測誤差最小。因此,筆者針對地鐵系統(tǒng)AFC數(shù)據(jù)的個體出行多步預(yù)測的場景,設(shè)計了3種多步預(yù)測模型。
1)整體輸出式多步預(yù)測模型。該方法即在單步預(yù)測的基礎(chǔ)上,重復(fù)編碼解碼過程,直至預(yù)測出所有時間步的出行,直接輸出對個體未來一段時間出行行為的預(yù)測,從而實現(xiàn)個體出行的多步預(yù)測。
2)步進輸出式多步預(yù)測模型。該方法在單步預(yù)測的基礎(chǔ)上,將未來一次出行的預(yù)測結(jié)果與歷史出行數(shù)據(jù)拼接起來,滑動時間窗對模型的輸入進行更新,從而實現(xiàn)對個體出行行為進行持續(xù)的步進式輸出,最終實現(xiàn)個體出行的多步預(yù)測。
3)多模型組合的多步預(yù)測模型。該方法即訓(xùn)練出多個單步預(yù)測模型,使其能夠?qū)ξ磥聿煌瑫r間步的出行進行預(yù)測,然后將多個模型的輸出結(jié)果拼接起來獲得個體出行的多步預(yù)測結(jié)果。
由于地鐵系統(tǒng)刷卡數(shù)據(jù)記錄了每次出行的進站和出站及出行屬性,與出行直接相關(guān),因此筆者選擇了廣州地鐵羊城通的刷卡數(shù)據(jù)作為案例進行分析。該數(shù)據(jù)集的時間跨度為2017年3月1日—2017年5月31日,該地鐵系統(tǒng)包含9條地鐵線路和157個地鐵站。
基于深度學(xué)習(xí)的多步預(yù)測算法需要足夠的歷史出行記錄,因此僅關(guān)注在研究的時間段內(nèi)至少出行90次(即3個月內(nèi)至少平均每天出行一次)的乘客。在清理完原始數(shù)據(jù)之后,隨機選擇20 000名乘客,并使用他們的交易記錄構(gòu)建數(shù)據(jù)集。筆者使用進站站點o,出站站點d,進站時間t和星期幾w作為出行屬性來構(gòu)造每次出行的出行元組。其中,o,t和w是可以通過進站記錄獲得,因此為進站屬性,d為出站屬性。其中o∈[0,90],d∈[0,90],w∈[0,6]表示為分類變量。每個乘客的前80%序列樣本都用作訓(xùn)練集,其余20%是測試集。
使用寬度為n的滑動窗口從每個個體的整個行程序列中生成行程序列樣本作為模型輸入。令Tr表示研究時間范圍內(nèi)個體r的整個行程序列。出行序列樣本Ssample則可表示為:
Ssample=[Qp,Qp+1,…,Qp+n-1] (1≤p≤N-n+1)
(11)
因此,具有N次出行記錄的個體可以提供N-n+1 個出行序列樣本。為了使模型覆蓋到數(shù)據(jù)集中的絕大多數(shù)乘客,將寬度n設(shè)置為70,覆蓋了95.2%的個體。我們從整個數(shù)據(jù)集中獲得了1 386 872個樣本序列。
2.2.1 評價指標
平均相對誤差[11](MRE)是平均絕對誤差與真值的比值,常用百分數(shù)來表示,可以用來反映預(yù)測值與真值的偏離程度,是交通預(yù)測中常用的評價指標之一,因此筆者采用MRE來評估各模型的預(yù)測性能。在MRE的計算中,使用編輯距離(levenshtein distance)來測量預(yù)測位置序列與目標位置序列之間的誤差。編輯距離在自然語言處理中有著廣泛的應(yīng)用,是指由一個轉(zhuǎn)換成另一個所需的最少編輯操作次數(shù)。MRE的公式定義為:
(12)
式中:v為序列數(shù);E(Mu,Ru)為第u個預(yù)測序列與其對應(yīng)的目標序列的編輯距離;L(Mu,Ru)為第u個預(yù)測序列與其對應(yīng)的目標序列的長度。分母將誤差歸一化,使MRE值處于[0,1]之間。
此外,準確率[11]已廣泛應(yīng)用于評估分類任務(wù)的模型性能,準確率Acc的公式如下,其中為Pu序列中正確預(yù)測位置的個數(shù)。
(13)
2.2.2 對比實驗設(shè)置及實驗參數(shù)設(shè)置
構(gòu)建了基于帶注意力機制的Seq2Seq模型的3種深度學(xué)習(xí)實驗?zāi)P瓦M行多步預(yù)測,其中包括整體輸出式多步預(yù)測模型、步進輸出式多步預(yù)測模型、多模型組合的多步預(yù)測模型, 并構(gòu)建了兩種傳統(tǒng)模型作為基準模型。所有實驗均在windows服務(wù)器上進行,該服務(wù)器配置為Intel?Xeon?CPU E5-2696 v4 2.20GHz,GPU的配置為NVIDIA GeForce RTX 2080 Ti。
另外,為了驗證模型的預(yù)測效果,將基于帶注意力機制的Seq2Seq模型的3種多步預(yù)測模型與以下基準模型進行比較。
1)MC:馬爾可夫模型是一種傳統(tǒng)的統(tǒng)計學(xué)方法,是一種根據(jù)上一時刻狀態(tài)對下一時刻狀態(tài)進行預(yù)測的方法。
2)SVC:支持向量分類器是支持向量機模型的一種變體方法,其本質(zhì)是對距離進行度量,經(jīng)常用于時間序列預(yù)測。
3)Seq2Seq模型:序列到序列模型是近年來NLP領(lǐng)域的一種常見模型,主要用于序列的預(yù)測問題。
多步預(yù)測模型的參數(shù)設(shè)置如表2。
表2 實驗參數(shù)
首先設(shè)定輸入步長為35,輸出步長為5,選擇馬爾可夫模型、支持向量分類器模型和沒有注意力機制的Seq2Seq模型作為對照實驗,觀察不同多步預(yù)測模型的預(yù)測效果,實驗結(jié)果如表3。
表3 實驗結(jié)果對比
通過表3可以得出以下結(jié)論:①在基于AFC數(shù)據(jù)的地鐵系統(tǒng)個體出行多步預(yù)測的場景下,Seq2Seq深度學(xué)習(xí)模型能夠獲得相比于傳統(tǒng)的機器學(xué)習(xí)模型更高的預(yù)測準確率和更低的預(yù)測誤差,這是由于深度學(xué)習(xí)模型能夠從個體出行的歷史序列中提取到更多復(fù)雜的出行信息,從而提高模型的學(xué)習(xí)能力;②引入注意力機制的多步預(yù)測模型可以獲得相比于沒有注意力機制的Seq2Seq模型更高的預(yù)測準確率和更低的預(yù)測誤差,這是由于注意力機制可以提高解碼器的解碼能力,加快模型的迭代,能夠為預(yù)測提供更多的有效信息;③針對研究場景,設(shè)計的3種多步預(yù)測模型中,多模型組合式多步預(yù)測模型相比于步進輸出式多步預(yù)測模型和整體輸出式多步預(yù)測模型可以獲得更高的準確率和更低的誤差,這是由于在個體出行的場景下,分別基于個體的歷史出行序列對未來某次的出行進行模型訓(xùn)練,然后將預(yù)測結(jié)果結(jié)合起來,更能提取到個體歷史出行對該次出行產(chǎn)生影響的特征,從而獲得更高的預(yù)測精度;而步進輸出式多步預(yù)測模型預(yù)測精度最低,是由于該模型直接將單步預(yù)測結(jié)果與歷史出行數(shù)據(jù)結(jié)合起來,然后滑動時間窗作為下一次單步預(yù)測的輸入,沒有在模型訓(xùn)練階段引入多步預(yù)測機制,無法減少多步誤差對模型的干擾;整體輸出式多步預(yù)測模型預(yù)測精度居中,是由于該模型雖然在訓(xùn)練過程中引入了多步預(yù)測的機制,將單步預(yù)測結(jié)果進行重新編碼并嵌入,模型可以在一定程度上學(xué)習(xí)多步預(yù)測的規(guī)律,但該模型并不能針對未來特定步長的規(guī)律進行學(xué)習(xí),對未來固定步長出行預(yù)測規(guī)律的提取存在一定局限性。
為了進一步探究預(yù)測步長給實驗結(jié)果帶來的影響,針對多模型組合式多步預(yù)測模型,在固定輸入步長的基礎(chǔ)上,改變輸出步長設(shè)置了5個對比試驗。實驗將輸入步長設(shè)置為35,輸出步長分別設(shè)置為1、2、3、4、5進行探究。實驗結(jié)果如表4,其中ΔAcc為準確率變化量,ΔMRE為MRE變化量,R1、R2分別為準確量變化率、MRE變化率。
表4 改變輸出步長的結(jié)果對比
通過表4可以看出:①在固定輸入步長的情況下,隨著預(yù)測步長的增長,預(yù)測準確率降低,MRE升高,這是由于在輸入步長一定的情況下,提取到的有效特征不能維持無限長的多步預(yù)測;②準確率的變化量隨著輸出步長的增加不斷均趨向于0,可以看出當(dāng)模型的輸入步長一定時,模型不會隨著預(yù)測步長的增加而導(dǎo)致性能大幅降低,魯棒性較強。
隨著智能交通的發(fā)展,交通出行不斷向著個性化、智能化的方向發(fā)展,個體出行的多步預(yù)測研究對于交通出行的發(fā)展具有重要意義。
使用廣州地鐵羊城通的刷卡數(shù)據(jù),通過建立包含注意力機制的序列到序列模型對個體出行的多步預(yù)測進行了研究和實驗。首先對個體出行特征進行了提取和融合,然后基于包含注意力機制的序列到序列模型設(shè)計了3種多步預(yù)測模型,并與傳統(tǒng)出行預(yù)測模型進行對比,進一步地,通過改變預(yù)測步長,探究了不同預(yù)測步長對實驗結(jié)果帶來的影響。得出以下結(jié)論:
1)注意力機制可以提高解碼器的解碼能力,加快模型的迭代,能夠為預(yù)測提供更多的有效信息,因此包含注意力機制的序列到序列模型能夠比傳統(tǒng)模型(如馬爾可夫模型、支持向量分類器模型)更適用于多步預(yù)測的場景。
2)包含注意力機制序列到序列模型更適合對長序列的處理,能夠從長序列中提取到更多的有效信息,從而獲得更好的預(yù)測結(jié)果。
3)在基于AFC數(shù)據(jù)的地鐵系統(tǒng)個體出行多步預(yù)測的場景下,多模型組合的多步預(yù)測方法更能提取到個體歷史出行對該次出行產(chǎn)生影響的特征,能夠獲得更好的預(yù)測結(jié)果;當(dāng)模型的輸入步長一定時,模型不會隨著預(yù)測步長的增加而導(dǎo)致性能大幅降低,具有較強的魯棒性。
綜上,筆者證實了包含注意力機制的序列到序列模型在個體出行多步預(yù)測中的實用性和優(yōu)越性,并進一步對多步預(yù)測模型進行了設(shè)計和探究,最后說明了輸出步長對多步預(yù)測結(jié)果的影響。