工业解密:百度地图背后的路线时长预估模型!
星標/置頂小屋,帶你解鎖
最萌最前沿的NLP、搜索與推薦技術
編 | YY
無論你是苦逼學生(公交地鐵狗)、職場萌新(打車狗)還是有錢大佬(有車一族),只要站在了北上廣深的土地上,就不可避免的每天要跟堵車和出行時間battle。
比如……
騎車5分鐘,公交半小時(說的就是后廠村
公交半小時,開車一小時(好想去蹭公交專線QAQ
開車一小時,打車到天亮(沒車的人別去西二旗瞎逛
大城市的出行時間可以說比薛定貓的鱷都要魔幻……
但是!總有黑心老板要求你務必幾點之前到公司,否則嘿嘿嘿,晚一分鐘罰10塊錢的那種。
當然了,還有比罰錢更殘酷的事情,因此,2020年的地圖類軟件不僅要計算出兩點之間的路線,還要盡可能精準的估計出當下的路線時長,減少出行的不確定性。路線時長預估也成為了當下不僅剛需,且非常有挑戰性的算法命題。
難點
工業界的路線時長預估的挑戰主要來源于以下兩方面:
路況預估的復雜性:雖然未來路況和歷史路況強相關,但實際情況中,路況往往受突發事件影響。此外,不少現有的方法使用時空圖網絡(spatial temporal graph neural networks, STGNNs)分別對時間和空間建模,卻忽視了其中的關聯性,導致了信息有所損失。
路線的上下文信息:路段有多種組合方式,路線中某個路段在不同的上下游下的通行時長會有差異。比如說,同等距離下,車輛轉彎花費的時間通常比直行長。一些現有的方法使用端到端的方式,預估路線的通行時長??墒沁@些方法通常都是用序列化的方式建模,性能效率較難滿足線上超高并發cc要求。
工業前沿
今天跟大家分享一下百度在數據挖掘頂級會議 KDD2020 上發表的一篇路線時長預估的工作——《ConSTGAT: Contextual Spatial-Temporal Graph Attention Network for Travel Time Estimation at Baidu Maps》。
論文提出了一種叫做ConSTGAT的模型,實驗表明可以有效提升路線時長預測的準確性,并顯著減小了預測任務所需的計算量。作為工業級的解決方案,ConSTGAT已經部署到百度的通行時長預估服務中,每天成功響應數百億次ETA請求。
▲圖1 百度地圖路線時長預估示例總得來說,針對時空歷史路況信息,ConSTGAT設計了新的 三維時空圖注意力網絡 (3D Graph Attention Network, 3DGAT),它能夠在建模的同時兼顧時間與空間的歷史路況的關聯性;在處理路線上下文信息的方面,則使用了卷積結構提取路線上所有路段的局部上下文信息,并使用多任務學習同時學習路線和路段的通行時長。
ConSTGAT框架
ConSTGAT模型的輸入包括三個部分:路線(route),背景信息(background),和歷史路況(historical traffic conditions)。其中,路線由多個路段組成,可以用路段的序列表示;背景信息指代出發時間等信息;歷史路況則是路網中相關的路段的歷史路況信息。
網絡由三個核心模塊組成,包括:
上下文信息模塊 (Contextual Information):以路段序列作為輸入,用于提取路段在路線中的上下文信息;
路況預測模塊 (Traffic Prediction):以上下文信息,背景信息,和歷史路況信息作為輸入,使用三維時空圖注意力網絡建模對歷史路況建模,預估未來的路況;
預估整合模塊 (Integration):使用多目標同時學習路段時長與路線時長。
其中,路況預測模塊用于路況預測,而上下文信息模塊和預估整合模塊用于路線上下文建模。
路況預測 (Traffic Prediction)
現有的許多工作利用時空圖網絡來解決路況預測問題。時空圖網絡可以看作圖網絡的一種特例,直接建模歷史路況的時空信息。然而,現有的時空圖網絡通常將時間信息和空間信息分開獨立看待,如先通過普通圖網絡建模空間信息,再通過序列結構建模時間信息,導致時空之間關聯性有所損失。新的時空圖網絡3DGAT,可以同時建模時間和空間的聯合關系。
▲圖3 3DGAT和傳統時空圖網絡比較(紅圈為目標路段,黑圈為鄰居路段。每一列表示某個歷史時刻目標路段和鄰居路段的路況)
假設有目標路段和它的鄰居路段-,這些路段在不同時刻的歷史路況、路段自身的特征信息、路段的歷史時間信息可以分別用三個矩陣表示,其中矩陣的每一行對應一個路段的信息,最終這三個矩陣合并成一個矩陣,并重塑成一個三階的時空張量。
▲圖4 3DGAT對歷史路況的時空建模過程(為出發時刻,為歷史時刻數)
和經典的注意力機制類似,ConSTGAT將時空張量中的向量同時作為注意力機制中的keys?和values?,將上下文信息和背景信息作為query?。特別地,文中提出了一種新的注意力機制3D-attention,捕捉query和keys/values之間的關系。公式如下:
上下文信息 (Contextual Information)
上下文信息模塊和預估整合模塊負責利用路線的上下文信息,結構如圖5所示。
▲圖5 上下文信息建模上下文信息模塊:通過使用卷積層抽取路段(link)在路線中的局部的上下文信息。某個路段和它的上游路段、下游路段看作一個整體,也就是一條子路(sub-path) 編碼。通過這樣的方式,路段之間的夾角以及主路和輔路之間的關聯等上下文關系可以被利用,作為其他模塊的輸入。
整合預測模塊:使用多任務學習同時預估路段通行時長(link travel time)與路線通行時長(route travel time)。預估的路段通行時長相加為預估的路線通行時長。其中,使用Huber Loss作為路段的損失函數;使用相對誤差作為路線的損失函數。
相比傳統的端到端的方法,ConSTGAT將實時運算的任務轉成預運算任務+檢索任務,極大地減輕了總體運算量,因此更容易規?;?/strong>。由于ConSTGAT沒有使用序列化的網絡結構,可以提前并行地計算并用表存儲每個路段的通行時長。當有路線時長預估請求到達時,只需在表中檢索對應路段的時長并加和即可。因此,這個方案可以輕松地部署在大規模真實的導航服務中。
實驗
實驗設定
ConSTGAT使用了通過百度地圖收集的三個城市(太原,合肥和惠州)從19年07月21日到19年08月31日的路線數據。其中,前面4周數據用于模型訓練,最后1周數據用于評估。評估指標采用了目前通行時長預估領域最為常用的標準:平均絕對值相對誤差(MAPE),平均誤差(MAE)和均方根誤差(RMSE)。
整體表現
ConSTGAT與五個基線方法進行了比較:AVG是均值歷史路段速度;DeepTravel是一個端到端的路線通行時間預測方法;STANN, DCRNN和 GAT+Attention都基于時空圖網絡,但它們都將時間和空間分開考慮。如下表所示,ConSTGAT在三個數據集的MAPE,MAE和RMSE都低于其他通行時長預估方法,表現最佳。
▲表1 ConSTGAT和基線方法的比較模型分析
為了觀察3DGAT機制是否能有效捕捉路況的時空關聯行,文中分析和對比了不同場景下的注意力機制權重的熱度圖和歷史通行流量數和通行時間的關系。圖6中,顏色越深表示注意力機制權重越大,歷史記錄越多,或是通行速度越慢。
▲圖6a 3DGAT注意力機制權重的熱度圖▲圖6b 歷史通行流量數▲圖6c 歷史通行時間中位數圖6 3DGAT在不同場景的案例分析可以看出,3DGAT注意力機制捕捉到了一些規律,如:
下游的路段相比起其他鄰居路段更重要;
歷史通行記錄越多的鄰居路段越重要;
通行速度越慢的鄰居路段越重要。
總結
這篇工作可以說兼具前沿力與工業風,論文提出的ConSTGAT模型同時在準確率和計算速度方面較現有模型獲得了顯著提升。其最大的創新點在于建立了時間建模與空間建模的關聯性,并且有效地利用了路線的上下文信息。至于這個炫酷模型的線上表現如何,感興趣的小伙伴打開百度地圖試試叭!
文末福利
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
有頂會審稿人、大廠研究員、知乎大V和妹紙
等你來撩哦~
總結
以上是生活随笔為你收集整理的工业解密:百度地图背后的路线时长预估模型!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吐槽贴:用ELECTRA、ALBERT之
- 下一篇: Pytorch与Tensorflow,哪