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