AI在出行场景的应用实践:路线规划、ETA、动态事件挖掘…
簡介:?本文是#春招專欄#系列的第1篇,根據(jù)高德機器學(xué)習(xí)研發(fā)部負(fù)責(zé)人damon在AT技術(shù)講壇所分享的《AI在出行領(lǐng)域的應(yīng)用實踐》的內(nèi)容整理而成。
前言:又到春招季!作為國民級出行服務(wù)平臺,高德業(yè)務(wù)快速發(fā)展,大量校招/社招名額開放,歡迎大家投遞簡歷,詳情見文末。為幫助大家更了解高德技術(shù),我們策劃了#春招專欄#的系列文章,組織各業(yè)務(wù)團隊的高年級同學(xué)以科普+應(yīng)用實踐為主要內(nèi)容為大家做相關(guān)介紹。
AT技術(shù)講壇(Amap Technology Tribune)是高德發(fā)起的一檔技術(shù)交流活動,每期圍繞一個主題,我們會邀請阿里集團內(nèi)外的專家以演講、QA、開放討論的方式,與大家做技術(shù)交流。
damon根據(jù)用戶在出行前,出行中和出行后如何使用導(dǎo)航服務(wù),分別選取了幾個典型的業(yè)務(wù)場景來介紹AI算法在其中的應(yīng)用,最后對未來做了一些展望。
?
以某位同學(xué)周末和朋友相約去“木屋燒烤”店擼串為例,假設(shè)這位同學(xué)選擇駕車前往目的地,我們來看下AI算法是如何在導(dǎo)航過程中起到作用的。
出行前,先做路線規(guī)劃,ETA(預(yù)估到達(dá)時間),不要遲到;出行中,最怕的就是遇到突發(fā)動態(tài)事件而影響到出行時間;出行后(到目的地),餐館是否還在正常營業(yè),也需要通過技術(shù)挖掘,幫助用戶提前規(guī)避白跑一趟的風(fēng)險。
下面分別介紹。
出行前-路線規(guī)劃
路線規(guī)劃,和網(wǎng)頁搜索,商品搜索的推薦算法很相似,為用戶推薦一條符合個人喜好的優(yōu)質(zhì)路線。推薦的路線要符合以下幾個條件:
- 能走:此路能通,按照路線可以到達(dá)終點。
- 好走:路線質(zhì)量在當(dāng)前地點時間下確保優(yōu)質(zhì)。
- 千人千面:不同用戶在保證路線優(yōu)質(zhì)的前提下,個性化調(diào)整更符合用戶偏好。
同時,在不對用戶產(chǎn)生誤導(dǎo)的前提下,提供更多的對比參考給用戶來選擇:
- 優(yōu)質(zhì):相比首路線/主路線,有一定的、用戶可感受到的優(yōu)勢。
- 多樣:相比首路線/主路線,盡可能有自己的特長。
路線規(guī)劃算法的特點
從用戶產(chǎn)生出行需求,到需求得到滿足。在用戶搜索的時候,上傳的Query除了有起終點和導(dǎo)航策略,也會像其他搜索一樣,有隱含的需求,比如個性化和場景化。在導(dǎo)航業(yè)務(wù)里面,個性化可以拆分成熟路和偏好兩個維度,熟路比較容易理解,偏好是指用戶對時間、距離、紅綠燈、收費等不同維度上的偏好。
那么,對應(yīng)的解決方案,我們引入用戶ID,存儲記憶了用戶的起終點對應(yīng)的熟路信息。對用戶的偏好,類似DIN的網(wǎng)絡(luò)結(jié)構(gòu),對用戶歷史導(dǎo)航序列進(jìn)行建模,獲取用戶偏好信息。
在用戶提交搜索需求之后,對導(dǎo)航引擎來說,也分為召回,排序和過濾幾部分。
對于導(dǎo)航的召回,對性能要求比較高,所以目前召回的結(jié)果較少。對排序來說,同樣是多目標(biāo),而且多目標(biāo)之間要進(jìn)行平衡的業(yè)務(wù)。類比到電商推薦領(lǐng)域,不僅希望用戶更多地對商品進(jìn)行點擊瀏覽,還希望用戶在看完商品介紹之后進(jìn)行購買,提高GMV。
對于地圖出行,不僅希望用戶更多的使用導(dǎo)航且按照推薦的路線走,還希望實走時間要盡可能短,用戶反饋盡量好。
而且,和其他領(lǐng)域類似,多個目標(biāo)之間會存在沖突,比如電商CTR和GMV。在導(dǎo)航領(lǐng)域,讓用戶盡可能的走封閉道路,沒有出口,那肯定實走覆蓋率就上升了,但是這樣規(guī)劃的路線會繞遠(yuǎn),時間和距離都變差。
多目標(biāo)的平衡,如何在“帕累托最優(yōu)”的情況下,進(jìn)行多個目標(biāo)之間的取舍、平衡,是大家一直在探索的問題,我們目前采用的是帶約束的最優(yōu)化問題來進(jìn)行建模,就是保證其他指標(biāo)不變差的情況下,把某個指標(biāo)最優(yōu)化。
最后,用戶拿到導(dǎo)航引擎返回的路線結(jié)果,特點是信息少,用戶只能看到整條路線的總時間、總距離和收費等統(tǒng)計信息,對于這條路好不好走,能不能走很難知道。
而且,大部分用戶是在陌生場景下用導(dǎo)航,對導(dǎo)航依賴很重,很難決策走哪條路更好,這就導(dǎo)致排序在首條的方案選擇率很高,達(dá)到90%以上,這個偏置是很嚴(yán)重的,在訓(xùn)練實走覆蓋率的時候,我們設(shè)計了偏置網(wǎng)絡(luò),來吸收用戶這種傾向。
導(dǎo)航還有一個特點,一旦出錯,對用戶傷害特別大,比如遇到小路,用戶的車可能會出現(xiàn)刮蹭;遇到封路,用戶可能就得繞路,付出相當(dāng)?shù)臅r間和金錢成本。這往往會比信息搜索給用戶帶來的影響和傷害更大。所以,我們在過濾階段,對Badcase的過濾也是嚴(yán)格作為約束要求的。
路線規(guī)劃召回算法
路線規(guī)劃算法,經(jīng)典的是教科書上的Dijkstra算法,存在的問題就是性能比較差,線上實際應(yīng)用都做了優(yōu)化,這里就不展開介紹了。
當(dāng)起終點距離超過500公里,性能基本就不可接受了,雖然有啟發(fā)式A star算法,但是A star算法有可能丟最優(yōu)解,并不是完美解決性能問題的方法。
解決性能問題的思路,一個是分布式,一個是Cache,而最短路線搜索并不像網(wǎng)頁搜索,分布式并不能很好的解決性能問題,所以目前工業(yè)界實際使用的算法都是基于Cache的方法。
Cache的方法就是提前把一些起終點對之間的最短路線計算好(Shortcuts),在用戶請求過來的時候,利用好這些Shortcuts,達(dá)到加快求路的目的(簡單舉例子,比如從北京到廣州,如果提前計算好了從北京到濟南,濟南到南京,南京到廣州的最短路徑,那就可以在計算北京到廣州的時候,利用這些提前計算好的最短路線)。
其中最為經(jīng)典的一個算法就是CH算法(Contraction Hierarchies),在預(yù)處理階段,對所有節(jié)點進(jìn)行了重要性排序,逐漸把不重要的點去掉,然后增加Shortcuts;Query查詢階段,從起點和終點分別開始雙向求路,只找重要性高的點,來達(dá)到加速的目的。
既然是Cache,就會面臨一個更新的問題,比如原始路網(wǎng)的路況變化了,或者原始路網(wǎng)某條路封路了,那么提前緩存好的Shortcuts也需要更新。
這個時候CH的算法,由于Shortcuts結(jié)構(gòu)設(shè)計不夠規(guī)律,更新就很慢,無法響應(yīng)實時路況的變化。于是,路線規(guī)劃算法推進(jìn)到了下一代,CBR算法(Cell based Routing),這個算法通過分而治之的思想,在預(yù)處理階段,把全國路網(wǎng)切分成n個子圖,切分的要求是子圖之間連接的邊(邊界邊)盡可能的少。
在每個子圖內(nèi),再繼續(xù)往下切分,進(jìn)而形成金字塔結(jié)構(gòu),預(yù)處理階段就是把邊界邊之間的最短路徑都提前算好,Cache下來求路的時候,就可以利用這些Shortcuts了。
CBR的優(yōu)點是,在預(yù)處理階段,路網(wǎng)的切分是分層的,每一層都足夠小,在更新這一層的Shortcuts的時候,可以把數(shù)據(jù)都放到CPU的L1 Cache里去,所以計算速度特別快。
總結(jié)一下CBR和CH的區(qū)別:
- Query查詢性能,CH更快,CH是0.1ms級別,CBR是1-2ms級別。
- Shortcuts更新性能,CH全國路網(wǎng)更新最快能做到10分鐘,而CBR能做到15秒更新全國,可以滿足實時路況變化和路網(wǎng)實時更新的需求。
- CH的Shortcuts不規(guī)律,導(dǎo)致不同策略之間(躲避擁堵,高速優(yōu)先等)不能很好的復(fù)用Shortscuts的起終點結(jié)構(gòu),所以不同策略需要單獨重建Shortcuts,內(nèi)存占用非常大。
?
這是我們排序的網(wǎng)絡(luò)結(jié)構(gòu),左邊是用戶偏置網(wǎng)絡(luò),把路線排序的順序,以及引導(dǎo)路線之間的相似度信息輸入進(jìn)去,期望盡可能消除掉偏置帶來的影響。中間輸入的用戶歷史統(tǒng)計信息和用戶導(dǎo)航序列信息,用來提取用戶的個性化偏好。優(yōu)化的主要目標(biāo)是實走覆蓋率。
新一代的路線規(guī)劃算法,要求提供隨時間推演的能力。比如8:00從起點出發(fā),后面要走 1 2 3 ..n條路到達(dá)目的地,假設(shè)8:10走到第2條道路,8:20走到第3條道路,那么我們在8:00計算Shortcuts的時候,就不能只用到8:00的路況,需要把后續(xù)進(jìn)入某個道路的時刻考慮進(jìn)來,用那個時刻的路況來計算,這就是TDR求路算法,目前是高德首創(chuàng)的,能真正實現(xiàn)躲避未來的擁堵,并利用未來的暢通來規(guī)劃路徑。
出行前-ETA(預(yù)估到達(dá)時間)
?
上面三幅圖,選取的是北京西單金融街附近的區(qū)域,展示了在三個相鄰時間點上的交通狀況。其中綠色、黃色、紅色代表交通路況不同的狀態(tài)。
假設(shè)現(xiàn)在是18點整,路況預(yù)測的目標(biāo)就是預(yù)估未來時刻的交通狀況,需要依賴每條道路的歷史信息,以及周邊鄰居的道路擁堵信息,對時空兩個維度進(jìn)行建模。
對時間序列的建模,用RNN,LSTM等SEQ2SEQ的序列,也有采用CNN,TCN等。對空間信息的建模,目前主流的方法是用GRAPH.
盡管模型在不斷升級,越來越復(fù)雜,但是對于突發(fā)事件導(dǎo)致的擁堵,根據(jù)歷史統(tǒng)計信息,很難預(yù)測精準(zhǔn),比如去年9月份在上海世博園區(qū)舉行外灘大會,世博園平時很少有人去,歷史路況都是暢通,而在開會期間,車很多導(dǎo)致很堵。
這個時候靠歷史信息是很難預(yù)測準(zhǔn)確,我們需要一個能代表未來的信號,才能預(yù)測,這就是路線規(guī)劃的信息,如果想去世博園的人很多,那么規(guī)劃的量就會很多,我們根據(jù)規(guī)劃的量,就能知道未來有很多人想要去世博園,就會導(dǎo)致世博園擁堵。
?
所以,我們把規(guī)劃的量,通過一個流量往時間域的轉(zhuǎn)換,引入到路況預(yù)測模型,效果取得明顯提升,尤其是在突發(fā)擁堵的時候,高德的這個研究成果被KDD2020收錄,并且已經(jīng)在業(yè)務(wù)場景中得到了應(yīng)用,有興趣的同學(xué)可以詳細(xì)查看我們的論文。
行中-用文本數(shù)據(jù)挖掘動態(tài)交通事件
繼續(xù)向餐館前進(jìn),導(dǎo)航途中,最怕遇到擁堵,封路等事件,所以高德會想盡一切辦法挖掘這些動態(tài)事件,幫助用戶規(guī)避開。現(xiàn)在高德用到了多個維度的數(shù)據(jù)源,其中的行業(yè)和互聯(lián)網(wǎng)情報都是文本數(shù)據(jù),要用到NLP的技術(shù)來挖掘。
介紹一下怎么用AI算法來挖掘動態(tài)事件。
下面一段文本就是典型的來自于網(wǎng)絡(luò)媒體的信息:
?
G0612(西和)高速南繞城路段西山隧道ZK33+844(蘭州方向)應(yīng)急車道停一輛故障大客車暫時封閉,行車道和超車道正常通行,請車輛注意避讓、減速慢行。
這段信息是非結(jié)構(gòu)化的,需要我們做預(yù)處理,要素提取,再進(jìn)行事件的組織,組織成架構(gòu)化的信息,才能自動化的應(yīng)用。
很自然的,針對要素提取,我們用BERT模型建模,但是BERT模型太復(fù)雜,性能比較差,線上實際應(yīng)用帶來很大的挑戰(zhàn)。
?
我們采取了知識蒸餾的方法,訓(xùn)練一個簡單的Student的網(wǎng)絡(luò),來解決性能問題。知識蒸餾最主要的是如何捕捉潛在語義信息。高德在業(yè)界率先提出了用對比學(xué)習(xí)框架進(jìn)行知識蒸餾,同時,在計算樣本之間距離的時候,提出COS-距離代替歐氏距離的方法,能夠讓模型有效的學(xué)習(xí)到潛在語義表達(dá)信息。
?
對于Student表達(dá)的特征向量與Teacher特征向量距離靠近,而要遠(yuǎn)離負(fù)例。使用余弦距離,比如歐式距離,能夠更好適應(yīng)Teacher網(wǎng)絡(luò)和Student網(wǎng)絡(luò),輸出的特征向量長度分布不一致的問題,這個工作成果發(fā)表在了AAAI2021上。
出行后-POI數(shù)據(jù)過期(增強現(xiàn)勢性)的問題
人們在高德地圖上會看到很多地理位置興趣點(Point of Interest,縮寫為POI),例如餐廳、超市、景點、酒店、車站、停車場等。對POI數(shù)據(jù)的評價維度包括現(xiàn)勢性、準(zhǔn)確性、完備性和豐富性。
其中,現(xiàn)勢性就是地圖所提供的地理空間信息反映當(dāng)前最新情況的程度,簡而言之,增強現(xiàn)勢性就是指盡可能快速地發(fā)現(xiàn)已停業(yè)、搬遷、更名、拆遷的過期冗余POI數(shù)據(jù),并將其處理成下線狀態(tài)的過程。這部分可以參考我們之前發(fā)布的文章《高德地理位置興趣點現(xiàn)勢性增強演進(jìn)之路》。
以上僅是AI算法在出行場景應(yīng)用的一些舉例,更多的技術(shù)方案歡迎大家來和我們一起探討。
出行前景-全局調(diào)度
對網(wǎng)頁搜索來說,結(jié)果是信息,可以無限復(fù)制,互不影響;對電商搜索來說,結(jié)果是商品,可以認(rèn)為商品足夠多,不夠再生產(chǎn),所以也可以認(rèn)為互不影響。
不同的是,導(dǎo)航搜索出來的道路資源是有限的,你用的多了,我就用的少。比如,一條路暢通,我們把人導(dǎo)過去,那么這條路就堵死了,所以我們要做全局調(diào)度,提高道路資源的使用率。
我們希望全局調(diào)度系統(tǒng)能和交通信號燈打通,在一個交通仿真的環(huán)境下,用多智能體強化學(xué)習(xí)的方法,學(xué)習(xí)到更大規(guī)模的交通系統(tǒng)上如何統(tǒng)籌協(xié)調(diào)車輛、交通燈,充分利用道路資源,進(jìn)一步緩解擁堵。我們一起來探索!
作者:高德技術(shù)小哥
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載
總結(jié)
以上是生活随笔為你收集整理的AI在出行场景的应用实践:路线规划、ETA、动态事件挖掘…的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ClickHouse 源码阅读 —— S
- 下一篇: 阿里云飞天AI加速器+Serverles