在電子商務或外送平台中,推薦系統的核心挑戰在於如何精準捕捉使用者的「當下意圖」。對於 Uber Eats 而言,使用者在打開 App 的那一刻,其需求可能與昨天的晚餐完全不同。為了提升餐廳發現的品質,Uber 對其推薦架構進行了重大升級,將重點從傳統的批次處理轉向即時訊號處理,並引入了 Listwise Ranking 的排序邏輯。
從批次到即時的特徵工程演進
早期的推薦系統通常依賴批次處理(Batch Processing),也就是每隔一段時間(例如 24 小時)才更新一次使用者的特徵數據。但這種做法存在嚴重的時滯問題:如果使用者現在突然想吃日料,但系統還在根據他昨天的炸雞紀錄推薦,就會導致推薦結果與當下意圖脫節。
Uber 將其特徵管線(Feature Pipeline)改為即時訊號處理層。這意味著系統能即時捕捉使用者的點擊、搜尋以及最新的訂單歷史。透過將特徵更新的延遲從 24 小時縮短至秒級,系統能夠在同一次瀏覽會話(Session)中,迅速根據使用者的操作調整推薦內容。
從 Pointwise 到 Listwise 的排序邏輯轉變
在推薦系統的排序階段,最常見的作法是 Pointwise Ranking,即對每個候選餐廳獨立打分,然後由高到低排序。然而,這種方式忽略了選項之間的相對關係。
Uber 引入了 Listwise Ranking(列表排序法)。這種方法的關鍵在於,它不再單獨評估一家餐廳,而是在單次推論(Inference)中將多個候選餐廳放在一起評估。模型會學習如何優化這一組選項的相對順序,而非僅僅給出獨立分數。這不僅提高了計算效率,更重要的是,它讓模型能根據當前上下文(Context)直接比較不同餐廳的優劣,使排序結果更符合真實的人類選擇邏輯。
解決訓練與在線服務的數據偏差
在機器學習實務中,最令人頭痛的問題之一是訓練與服務的不一致(Training-Serving Skew)。如果模型在訓練時使用的特徵邏輯,與實際在線服務(Online Serving)時的邏輯不同,會導致模型在生產環境中的表現大幅下滑。
為了克服這個問題,Uber 採取了兩項策略。首先,他們建立了一套統一的特徵提取層,確保離線訓練與在線推論使用完全相同的邏輯。其次,他們透過回放(Replay)歷史使用者會話來生成訓練數據,模擬真實的生產環境,從而降低模型在部署後的行為偏差。
技術架構的工程實踐
為了在面對海量流量時仍能維持低延遲,Uber 將特徵預處理與模型推論(Model Inference)進行了分離。這種解耦設計讓服務層可以專注於排序計算,而將複雜的特徵計算與聚合交由上游服務處理,確保了系統的高擴展性。
此外,Uber 將原本依賴人工定義的統計特徵,演進為基於 Transformer 的序列建模(Sequence Modeling)。這使得系統能更深層地理解使用者行為的先後順序,而非僅僅是簡單的加總統計。
總結
Uber Eats 的這次升級展示了現代推薦系統的三個關鍵趨勢:第一,將特徵更新從批次轉向即時,以捕捉瞬時意圖;第二,將排序邏輯從獨立打分轉向列表比較,提升排序品質;第三,透過統一特徵管線消除訓練與服務之間的偏差。對於工程師而言,這提醒我們在設計大規模推薦系統時,數據的新鮮度與模型對相對順序的理解,往往比單純增加模型複雜度更有效。
來源:infoq.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。