滴滴ETA論文解讀:WDR模型

引言

paper:Learning to Estimate the Travel Timeapp

讀後感:總體中規中矩,將WD模型和LSTM相結合,解決實際的業務問題。ide

備註:ETA 是 Estimate Travel Time 的縮寫,即,到達時間預估。這個問題描述是,在某一個時刻,估計從 A 點到 B 點須要的時間。對於滴滴,關注的是司機開車把乘客從起點送到終點須要的時間。顯然,ETA 就是一個時空相關的迴歸問題。函數

Learning to Estimate the Travel Time

規則

用規則模型計算 ETA 是此前地圖行業通用作法之一。即分別計算各段路的行駛時間,所有加起來再根據紅綠燈時間作一個偏移修正。用數學來描述,預估時間能夠表達爲:
image.png學習

其中,$t_i、c_j$分別表示第i個路段、第j個紅綠燈的耗時時長。考慮到路段的通行狀態每時每刻都在動態變化,利用最新的歷史數據(好比,剛剛過去的 5 分鐘)來估計路段的實時通行時間,而把歷史平均通行時間做爲默認值來填充信息缺失的路段。紅綠燈耗時時長計算亦然。優化

優勢:計算量小,易於實現
缺點:依賴人工經驗,可擴展性差,難以利用多種多樣的特徵this

常規模型

滴滴將 MAPE(mean absolute percentage error)選擇爲目標函數,對應於 MAPE 的優化問題爲:
image.pngspa

爲了防止過擬合,還加上了正則項:
image.png3d

在具體到模型層面,滴滴前後採用了兩種業界比較主流的方法:Tree Based model 和 Factorization Machine。blog

Tree Based model數學

其中,樹模型的最終輸出是多棵樹的集成結果,能夠寫成以下形式,其中,T表示樹的顆數:
image.png
每一棵樹都會根據輸入特徵進行判斷,決定輸入數據所屬的葉子節點,而後將葉子節點對應的分數做爲單棵樹的輸出:$f_t(x)=w_{t}u(x)$。其中,$w_{t}$表明了第 t 棵樹所有葉節點構成的分數向量;$u(x)$是一個映射函數(經過一系列條件判斷),決定了$x$應該歸屬的葉子節點序號。

針對於第t顆樹,對應的正則項能夠表達爲以下形式,其中L爲葉子節點的數目,第二項經過 L2 範數來對葉子節點的輸出 score 進行控制, $γ$是超參數:
image.png

具體到GBDT模型,最終優化目標形式化表述爲:
image.png
因爲mape是不可微分函數,雖然目標函數是凸函數,可是目標函數是非平滑的。咱們可使用huber loss近似mape函數,或者,採用次梯度方法(subgradient method)求解該優化問題。

Factorization Machine

FM的具備預測準確性高、特徵工程靈活兩個優勢,普遍應用於推薦系統和在線廣告系統領域。FM模型的核心思路是將特徵交互的權重矩陣進行分解,表達爲向量內積的形式,以此來減小參數數量。二階 FM 表示爲:
image.png

其中d是特徵維度,一般在千萬級別甚至更高;而參數向量v的維度 m 相對很小,一般在幾十的量級便能達到較好的預測精度。

若是對FM增長正則項,能夠形式化表示爲以下形式,其中$||V||_F$表示 V 向量構成的矩陣的 Frobenius 範數:
image.png
這個問題能夠經過梯度方法進行求解。此外,還嘗試了online learning:使用自適應次梯度方法(AdaGrad)更新V,使用FTRL更新w。

Wide-Deep-Recurrent Learning

常規模型的缺陷:大部分迴歸模型的輸入向量必須是固定長度的,而一段行程對應的路段(如下稱爲 link)數變更範圍很大,所以在實際使用時,捨去了 link 級的特徵,取而代之使用總體統計值。這樣,就丟失了細節方面的刻畫。

新方案的核心思路是 global model + recurrent model。針對global model,滴滴使用wide-deep模型替換掉了以前的樹模型、FM模型;recurrent model 則專一於對 link 序列等局部細節的學習。

recurrent model

WD模型咱們按下不表,重點說下recurrent model部分。Recurrent model 的選擇則比較豐富,不只僅限於 RNN(包括變種 GRU、LSTM、SRU 等),還能夠是一維卷積 CNN,或者是純粹的 Attention model。以最流行的 LSTM 爲例,它經過引入 additive memory 和 gate 來緩解簡單 RNN 的梯度消失問題:
image.png
image.png

LSTM的內部結構以下所示:
image.png

WDR結構

image.png

在WDR模型中,Wide 和 Deep 模塊對行程的總體信息進行建模,而 Recurrent 模塊對行程的軌跡進行細緻的建模,能夠捕捉到每條 link、每一個路口的信息。在最終彙總時:

  • Wide 模塊經過仿射變換把二階交叉變換結果變到合適維度(256維);
  • Deep 模塊首先將離散特徵embed到20維,以後和連續特徵作concat,通過三層全鏈接,直接把頂層 hidden state 做爲輸出(256維);
  • Recurrent 模塊將 LSTM 的最後一個 hidden state 做爲輸出(256維)。

三個模塊的輸出向量被拼接起來,進入最終的 Regressor 進行預測,獲得 ETA 值。所有參數都基於 MAPE loss 作梯度降低來訓練。因爲整個模型由三部分構成,難以找到一個合適的全局learning rate,論文中採用了Adam優化模型,learning rate設置爲0.001。其餘超參初始化參考論文: Adam: A Method for Stochastic Optimization

特徵

在特徵層面,能夠看到,這一模型總共有三類特徵:

  • Dense feature:行程級別的實數特徵,好比起終點球面距離、起終點 GPS 座標等。
  • Sparse feature:行程級別的離散特徵,好比時間片編號、星期幾、天氣類型等。
  • Sequential feature:link 級別的特徵,實數特徵直接輸入模型,而離散特徵先作 embedding 再輸入模型。注意,這裏再也不是每一個行程一個特徵向量,而是行程中每條 link 都有一個特徵向量。好比,link 的長度、車道數、功能等級、實時通行速度等。

效果對比

image.png文章最後對比了幾種模型的效果,WDR優化效果明顯。特別注意WDR和WD-MLP,會發現使用LSTM對局部特徵建模是有不錯的正向收益的;另外有意思的一點,WD-MLP總體效果不及FM。(在WD-MLP中使用一個多層感知機替換掉 recurrent模塊. The MLP is applied to each link and the output vectors are then averaged through all links along the route. We use the same output size of the recurrent module for this MLP.)

相關文章
相關標籤/搜索