你已经是一个成熟的地图了,该学会帮我...
文 |?小戲
當我們打開百度地圖,選定到達目的地,導航軟件里的小姐姐馬上就用不緊不慢的語調告訴我們“準備出發,全程12公里,預計需要30分鐘……”
但一看手表上顯示的不風馳電掣鐵定遲到的時間,肯定不允許我們和導航軟件里的小姐姐一樣沉著冷靜,可當我們一路狂奔跑過幾個路口,大喘著氣停下來看看導航,發覺顯示的預計到達時間并沒有因為我們跑的大汗淋漓而有一點點改變,依然是那個從現在的地方出發不緊不慢走過去的時間。
這時候我們也許會想,為什么我們的導航不能更智能一點,根據我當下的情況和之前的速度重新計算到達時間呢?
今天介紹的這篇工作,恰恰是百度地圖團隊基于這個問題,首次對在途路線時長預估問題進行了研究。百度地圖團隊通過把在途路線時長預估建模成小樣本學習問題,充分利用全程中少量的我們已經行駛過的那段路程的駕駛行為,使用自監督的元學習算法實現了在駕駛途中動態的、個性化的“多次”時長預估,提升了在途時長預估任務的準確率。
目前,這篇論文——《 SSML: Self-Supervised Meta-Learner for En Route Travel Time Estimation at Baidu Maps 》已被數據挖掘頂級會議KDD 2021收錄。
現實問題
在介紹這篇論文之前,我們首先來明確一下面對的問題,路線時長預估是當下地圖類軟件的基礎功能,我們使用地圖軟件自然不僅僅是需要一條展示在手機上的路線規劃,更需要盡可能準確的估計出從出發地到目的地的在途時長。
而目前,現有的路線時長預估都是所謂的“一次性”時長預估,也就是說,現有的路線時長預估都是在用戶出發前,根據一些諸如出發時間,選擇的路線等等信息估算用戶的到達時間。但是這就產生出了一個問題,也就是現有的路線時長預估沒法根據用戶自己實際在途的駕駛習慣、駕駛狀況等信息改變對路線時長的估計。哪怕我前半程一路火花帶閃電,導航軟件上的時長估計也是你快任你快。
拿一個簡單的例子來說,在同樣的一個路段,秋名山車神夕師傅與新手上路的小瑤共同出發,我們觀察到在前一段路程中夕師傅展現了極高的車技只遠遠留給小瑤一個尾燈,那么我們也有理由相信在后面的路程中夕師傅的速度也會比小瑤快,因此我們期望一個足夠智能的導航軟件給夕師傅的預計到達時間會比給小瑤的更快。
那么我們該如何利用已知的信息,來推測用戶個性化的駕駛習慣,從而實現更好與更加智能的預測呢?這里我們可以發現,在用戶的駕駛過程中,導航軟件并不是一勞永逸的給出一個路線就萬事大吉,而是每隔一段時間都會根據當前狀態重新計算并更新路線時長,這種在駕駛過程中進行的時長預估被稱為在途路線時長預估(En-Route Travel Time Estimation)。
▲百度地圖路線時長預估對比在途路線時長預估目前針對在途時長預估這個任務場景,其對在途時長所做的更新,都是與從起點出發得到的路線時長預估一樣進行一次性的預估,顯而易見這種預估方式放棄了之前一段用戶已經駕駛過的路程中的有用信息,因而將會很難以適應用戶的駕駛習慣并推斷用戶的未來駕駛行為。
解決方案
讓我們正式進入論文的工作,論文基于在途路線時長預估這一路線時長預估在用戶駕駛過程中的細分場景任務,提出了一個基于自監督學習的元學習器(SSML),為了充分利用已行駛路線的少量用戶駕駛行為,論文把在途路線時長預估建模成了小樣本學習問題。
具體而言,論文把已行駛路線中觀察到的用戶行為作為訓練樣本,同時把剩余路線中未發生的行為作為測試樣本。從而提出了一個新的基于模型的元學習器(Model-Based Meta-Learner),并把每一次的在途時長預估場景被看作是元學習設定中的一個學習任務(Learning Task)。
如何理解這一元學習問題呢?我們知道一條路線通常由幾十到幾百的首尾相連的路段組成。在用戶的導航駕駛過程中,導航系統會收到多次請求去重新計算剩余的通行時間。
如上圖所示,論文將一次請求(即一個時長預測場景)當作一個學習任務。對于每一個學習任務,把收集到的過去多次請求后到目前為止所觀測到的已經過多個路段的用戶行為(即上圖中的藍色格子)作為支持樣本(Support Examples),把從當前時間預估的未經過所有路段的用戶行為(即上圖中的紅色格子)作為查詢樣本(Query Examples)。
基于模型的元學習器從收集到的大量的不同用戶的在途時長預估場景中去學習快速適應用戶駕駛偏好的能力,并在新的在途時長預估場景中去評估其有效性。
但是此時,又會面對一個新的問題,即如何對每一個樣本進行表示?這里論文使用了百度地圖團隊發表在 KDD 2020 的前序工作 ConSTGAT 完成對樣本的表示,這篇論文賣萌屋之前做過詳細的解讀,感興趣的朋友可以點這里(工業解密:百度地圖背后的路線時長預估模型!)。
簡而言之,論文首先使用 ConSTGAT 中提出3D時空圖網絡(3DGAT)完成對時空路況的建模,然后與其他輸入的樣本特征進行拼接,再使用多層感知機來獲得樣本的表示。這些支持樣本和查詢樣本的表示 和 將作為基于自監督學習的元學習器的輸入。
得到了樣本的表示之后,論文將自監督學習與元學習器相結合,進行數據增強,進一步提升模型的預測效果。如下圖所示,論文同時進行監督學習和自監督學習去訓練元學習器。
其中,監督學習方法直接學習元知識,為了快速適應用戶的駕駛偏好,論文使用了注意力機制去捕捉支持樣本和查詢樣本之間的聯系,旨在根據已經過的路段的行為推斷剩余路段的行為。
而自監督學習方法則使用數據增強的方式進一步提升元學習器的效果。論文通過人工構造大量學習任務,使用被隨機遮蓋對應通行時長的部分支持樣本作為這些人工學習任務的“查詢樣本”,而剩下的支持樣本作為人工學習任務的“支持樣本”,使用和監督學習同樣的基于注意力機制的模型結構去預測人工的“查詢樣本”的時長,從而達到進一步優化元學習器的效果
添加了 SSML 模塊的導航系統架構如下,可以看到 SSML 模塊把不考慮用戶已經過路線駕駛行為的ConSTGAT模塊以及靜態數據,動態數據和獲取到的觀測行為作為輸入,產出預測時長返回給用戶。
實驗分析
論文從百度地圖收集了三個城市(太原,惠州和合肥)從 19 年 09 月 01 日到 19 年 09 月 28 日的路線數據。其中,前面3周數據用于模型訓練,最后1周數據用于評估。
論文將將 SSML 和 4 個基線方法進行對比。其中:
(1)ConSTGAT:論文前序工作,即不考慮用戶在已經過路線的駕駛行為而得到的在途時長;
(2)FT:即微調(Fine-tuning),在 ConSTGAT 的基礎上根據每個任務的支持樣本微調模型參數;
(3)R- ML:基于LSTM的元學習模型;
(4)A-ML:基于注意力機制的元學習模型,相比起SSML少了自監督學習。
實驗評估指標采用目前通行時長預估領域最為常用的標準:均方根誤差(RMSE)和平均誤差(MAE)。
▲表1:SSML和基線方法在三個城市不同的請求時間的RMSE▲表2:SSML和基線方法在三個城市不同的請求時間的MAE從表1和表2中可以看出:
基于元學習的方法 R-ML,A-ML 和 SSML 比非元學習的方法 ConSTGAT 和 FT 的表現要更出色;
由于 SSML 使用了自監督學習增強數據,因此,相比沒有使用自監督學習的 A-ML 取得更好的效果。
最后,論文基于一個案例,展現了注意力機制矩陣以及支持樣本和查詢樣本的特征。根據下圖可以清楚的看到,如果注意力機制矩陣中的元素的顏色越深,也就是 SSML 模型認為相應的支持樣本和查詢樣本越相關,那么這個支持樣本和查詢樣本的特征也會越相似。換言之,SSML 能夠使得每個查詢樣本從和它最相似的支持樣本中抽取信息。
總結
這篇工作非常好的分析與利用了在途路線時長預估任務本身的特點,從而頗為完美的將其建模為一個小樣本學習的問題,通過使用基于自監督學習的元學習方法,充分的利用了用戶自身在已經過路線的駕駛行為,從而使得模型能在新的在途路線時長預估場景快速適應用戶的駕駛偏好,讓路線時長預估變得更加個性化與智能化。完全可以想象,在不遠的將來,導航與人工智能深度融合,或許出行真會變成一種私人定制吧!
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
總結
以上是生活随笔為你收集整理的你已经是一个成熟的地图了,该学会帮我...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 速览EMNLP 2020上录取的知识图谱
- 下一篇: 别让数据坑了你!用置信学习找出错误标注(