自主研發、不斷總結經驗,美團搜索推薦機器學習平臺

內容來源:2018 年 5 月 26 日,美團點評技術專家楊一帆在“餓了麼技術沙龍·第25彈【搜索推薦】”進行《Why WAI: 美團點評搜索推薦機器學習平臺》演講分享。IT 大咖說(微信id:itdakashuo)作爲獨家視頻合作方,經主辦方和講者審閱授權發佈。

閱讀字數:3308 | 9分鐘閱讀

摘要

本次分享主要介紹如何從機器學習實踐過程中不斷總結經驗,搭建集數據處理、特徵工程、模型訓練、打分預測、實時監控、在線學習等步驟爲一體的機器學習平臺WAI,以及該平臺如何賦能業務不斷優化搜索推薦用戶體驗。

獲取嘉賓演講視頻及PPT,掃一掃下方二維碼即可。

What

什麼是機器學習

機器學習本質上是計算機模擬人類學習行爲從數據中提取發現知識結構獲取新的知識和技能,並通過迭代的方式改善自身性能。機器學習有幾個比較典型的類別,面臨一個問題的時候可以根據該問題特性、樣本屬性或樣本量等來決定其歸屬於哪類機器學習範疇以及對應模型。

美團點評的機器學習應用大部分還是圍繞業務來開展,包括搜索推薦、金融、外賣、打車、廣告等。

機器學習通用流程

機器學習整個流程包含幾個部分。數據準備部分涉及到數據收集清洗,質量探測和特徵工程;模型訓練部分包括選擇合適的模式和計算資源,模型上線之後進行定期更新;模型評估部分主要查看各個特徵的重要度和離線指標,有條件的話還要做線上的近線評估;線上部署後自行選擇打分方式,並支持平滑的模型切換以及AB實驗;效果監控方面最好能做到實時監控,給出打分解釋,也方便進行在線學習。這一整套流程僅有簡單的5步,但內部有很多細節需要處理。

什麼是WAI

WAI全稱爲workbench of AI,它是點評搜索團隊自主研發的系統,可以一站式的託管機器學習流程,能夠通過可視化拖拽配置,支持開發自定義組件,對標業界先進平臺,比如阿里PAI。目前(截止到演講時間)WAI平臺上實驗數近一百五,運行記錄破五千,託管了包括點擊率預估、文本處理、圖片識別等各種訓練目標的任務,公司內部推廣進行中。

Why

流派對比

機器學習系統可以分爲平臺派和工具派。

平臺派典型的代表有PAI和WAI,它們的定位是用來託管完整的機器學習流程,賦能所有業務接入AI的能力,特點在於交互性強,通過簡單拖拽就能完成配置,流程清晰所見即所得。採用一站式託管,覆蓋從離線訓練到線上部署和監控的完整流程。

工具派定位是預先定義開發機器學習庫,輸入參數直接就能使用,重點關注如何優化模型訓練性能,比如如何進行超大規模特徵模型訓練。

這兩個流派能很好的結合起來,比如平臺可以將工具視作底層提交的任務類型。

機器學習痛點

以下是我們在平時的機器學習實踐中總結的一些痛點。

  • 業務應用門檻高,普通的業務很難搭建起整套系統。
  • 訓練流程維護困難。一般大家都是通過腳本來維護訓練流程,相互之間無法借鑑,如果相關人員離職部分工作可能會丟失。另外流程的各步驟割裂,數據獲取成本高,且執行過程無法控制,試錯成本也很高。
  • 計算資源對接不便。比如我們公司有多個計算集羣,每個集羣的對接方式都不相同。也無法靈活切換計算資源,每個團隊資源的分配額度相對固定。
  • 複用借鑑能力弱。業務特徵無法共享,數據處理和特徵生成邏輯無法相互借鑑。
  • 業務差異導致重複建設。

針對這些痛點我們也提出瞭解決方案,包括一站式託管完整流程,將整個流程可視化,做到靈活控制,屏蔽底層集羣對接和資源調配細節,集中管理特徵和模型,統一特徵服務和模型打分邏輯。

How

系統架構

上圖是我們平臺的系統架構,從底層往上分別是計算層、框架層、數據算法層、服務層、應用層。計算層關注於數據平臺多種計算能力集成,以及屏蔽使用細節降低對接成本。框架層封裝了多種框架包,實現了按需對接。數據算法層支持完整的pipeline流程,封裝了特徵處理體系和一些模型優化手段。服務層擁有統一的特徵服務,並且封裝好了打分邏輯,有完善的監控機制。

流程實現

這張圖展示的是離線層和近線層在模型訓練的各個步驟中具體負責的內容。首先是數據管理,離線層會通過數據預處理生成一系列的數據集合,包括存放特徵的特徵池、用於訓練的樣本集、待預測的數據集。近線層一方面拿到離線特徵池進到特徵服務,另一邊直接對實時流進行處理生成實時特徵和實時樣本。

模型訓練步驟中離線層就是傳統的訓練過程,近線層會用實時樣本和特徵服務進行模型的在線學習和動態更新。

模型評估階段離線層離線評估完後會直接進入模型倉庫,方便複用。線上的模型評估一方面會使用模型倉庫中的模型在真正上線生效之前進行預上線,另一邊會對線上實時生效的模型進行實時評估。

部署打分方面,離線層支持直接進行批量預測。線上層通過模型加載從特徵服務獲取特徵進行實時預測。

效果監控方面有各種監控告警,還支持結果解釋。

下面會詳細介紹下每一個步驟的具體情況。

數據管理

我們目前已支持幾種常見的數據收集方式,包括SQL讀取、文件上傳、目錄指定等。採樣過濾方面支持隨機採樣、加權採樣、分層採樣。分佈探索和缺失填充是常用的統計分析方式。

特徵工程方面有一套特徵的處理算子,實現了特徵解析、組合、變換功能,它是基於已有特徵簡單配置上線新的特徵,對於未支持的複雜操作我們也提供了自定義的算子開發接口。

統一特徵服務這塊一方面支持統一特徵讀取接口,方便各方調用。另一方面還支持統一入庫方式,實現特徵共享。一致性保障上主要基於這幾點。首先特徵在獲取過程中落地日誌,離線訓練的時候可以直接取日誌,保證了離線獲取到的特徵一定是在當時線上排序的時候模型所用到的特徵。其次不同業務使用統一特徵,保證數據一致。另外還支持實時特徵和實時統計特徵。

模型訓練

模型訓練上支持常規的分類、聚類、迴歸、深度模型,其中深度模型包括DNN、Deep&Wide、CNN、LSTM+CRF等。爲方便使用我們還提供了任務的拷貝修改,以及執行記錄的完整保存。

配置完成後接下來就是任務運行,爲了儘可能的讓任務結果符合預期,平臺在任務運行的時候會採取各種措施。包括屏蔽任務提交細節,清晰可見的展示任務進展,自動解析拓撲結構,最大化併發執行,還有友好的推送提示。

對於模型的執行控制我們做了如下優化:

1、支持小數據量試運行,方便快速糾錯。

2、每步運行結果都可查看。

3、支持單步執行、斷點重跑等複雜操作。

模型評估

離線評估的常見指標ROC/PR/AUC/GAUC/MAP/NDCG都會以圖表的形式展現,包括特徵的重要度。近線評估支持模型預上線和多模型並行打分,通過打分和用戶的實際反饋可以預估出上線之後AUC和MAP大致的表現。

模型部署

模型的部署有幾種不同方式。一種是定製加載,它自身封裝了打分邏輯,只要是通過本平臺訓練的模型,通過這種方式都可以實現並行打分,降低整體預測性能。另外就是離線部署和服務化部署。模型更新方面可以直接配置定時替換,或近線評估達到某一閾值再進行替換,還可以在替換的時候指定流量比例進行AB測試。

效果監控

模型上線之後的打分解釋我們做了兩部分工作。一部分是常規的樹模型,可以直觀的展現得分曲線圖和殘差曲線圖,能夠獲取到特徵重要度和特徵貢獻度。另一部分是深度模型,我們會先針對某一個樣本的特徵值做隨機擾動生成一批樣本,然後根據這些樣本局部擬合出一個線性模型,用線性模型每個特徵的權重來解釋當前深度模型的打分結果。

實時監控是通過定長滑動窗口對實時日誌流不斷滾動並進行計算得到線上的實時指標,之所以採用定長窗口是爲了保證樣本集大小固定。由此獲得的指標包括Query維度和樣本維度。

規劃展望

最後談一下我們對未來的規劃和展望,也是從幾個層面出發。

首先是計算層,我們正在和公司數據平臺共同建設實現計算資源量的智能調度,自動選擇合適的計算資源。框架層方面會集成更多的工具派的機器學習系統,實現一鍵切換不同框架的功能。數據算法層則是向深度模型結構的可視化,還有自動機器學習的方向發展。服務層也正在考慮模型打分服務化。

以上爲今天的分享內容,謝謝大家!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章