https://tech.meituan.com/searchads_dnn.htmlhtml
在計算廣告場景中,須要平衡和優化三個參與方——用戶、廣告主、平臺的關鍵指標,而預估點擊率CTR(Click-through Rate)和轉化率CVR(Conversion Rate)是其中很是重要的一環,準確地預估CTR和CVR對於提升流量變現效率,提高廣告主ROI(Return on Investment),保證用戶體驗等都有重要的指導做用。git
傳統的CTR/CVR預估,典型的機器學習方法包括人工特徵工程 + LR(Logistic Regression)[1]、GBDT(Gradient Boosting Decision Tree)[2] + LR、FM(Factorization Machine)[3]和FFM(Field-aware Factorization Machine)[4]等模型。相比於傳統機器學習方法,深度學習模型近幾年在多領域多任務(圖像識別、物體檢測、翻譯系統等)的突出表現,印證了神經網絡的強大表達能力,以及端到端模型有效的特徵構造能力。同時各類開源深度學習框架層出不窮,美團集團數據平臺中心也迅速地搭建了GPU計算平臺,提供GPU集羣,支持TensorFlow、MXNet、Caffe等框架,提供數據預處理、模型訓練、離線預測、模型部署等功能,爲集團各部門的策略算法迭代提供了強有力的支持。github
美團海量的用戶與商家數據,廣告複雜的場景下衆多的影響因素,爲深度學習方法的應用落地提供了豐富的場景。本文將結合廣告特殊的業務場景,介紹美團搜索廣告場景下深度學習的應用和探索。主要包括如下兩大部分:算法
美團搜索廣告業務囊括了關鍵詞搜索、頻道篩選等業務,覆蓋了美食、休娛、酒店、麗人、結婚、親子等200多種應用場景,用戶需求具備多樣性。同時O2O模式下存在地理位置、時間等獨特的限制。
結合上述場景,咱們抽取了如下幾大類特徵:shell
結合美團多品類的業務特色及O2O模式獨特的需求,着重介紹幾個業務場景以及如何刻畫:數組
搜索廣告CTR/CVR預估經歷了從傳統機器學習模型到深度學習模型的過渡。下面先簡單介紹下傳統機器學習模型(GBDT、LR、FM & FFM)及應用,而後再詳細介紹在深度學習模型的迭代。緩存
GBDT又叫MART(Multiple Additive Regression Tree),是一種迭代的決策樹算法。它由多棵決策樹組成,全部樹的結論累加起來做爲最終答案。它能自動發現多種有區分性的特徵以及特徵組合,並省去了複雜的特徵預處理邏輯。Facebook實現GBDT + LR[5]的方案,並取得了必定的成果。網絡
LR能夠視做單層單節點的「DNN」, 是一種寬而不深的結構,全部的特徵直接做用在最後的輸出結果上。模型優勢是簡單、可控性好,可是效果的好壞直接取決於特徵工程的程度,須要很是精細的連續型、離散型、時間型等特徵處理及特徵組合。一般經過正則化等方式控制過擬合。session
FM能夠看作帶特徵交叉的LR,以下圖所示:多線程
從神經網絡的角度考慮,能夠看作下圖的簡單網絡搭建方式:
模型覆蓋了LR的寬模型結構,同時也引入了交叉特徵,增長模型的非線性,提高模型容量,能捕捉更多的信息,對於廣告CTR預估等複雜場景有更好的捕捉。
在使用DNN模型以前,搜索廣告CTR預估使用了FFM模型,FFM模型中引入field概念,把nn個特徵歸屬到ff個field裏,獲得nfnf個隱向量的二次項,擬合公式以下:
上式中,fjfj 表示第jj 個特徵所屬的field。設定隱向量長度爲kk,那麼相比於FM的nknk個二次項參數,FFM有nkfnkf個二次項參數,學習和表達能力也更強。
例如,在搜索廣告場景中,假設將特徵劃分到8個Field,分別是用戶、廣告、Query、上下文、用戶-廣告、上下文-廣告、用戶-上下文及其餘,相對於FM能更好地捕捉每一個Field的信息以及交叉信息,每一個特徵構建的隱向量長度8*kk, 整個模型參數空間爲8 kk nn + nn + 1。
Yu-Chin Juan實現了一個C++版的FFM模型工具包,可是該工具包只能在單機訓練,難以支持大規模的訓練數據及特徵集合;而且它省略了常數項和一次項,只包含了特徵交叉項,對於某些特徵的優化需求難以知足,所以咱們開發了基於PS-Lite的分佈式FFM訓練工具(支持億級別樣本,千萬級別特徵,分鐘級完成訓練,目前已經在公司內部廣泛使用),主要添加了如下新的特性:
從GBDT模型切到FFM模型,積累的效果以下所示,主要的提高來源於對大規模離散特徵的刻畫及使用更充分的訓練數據:
從上面的介紹你們能夠看到,美團場景具備多樣性和很高的複雜度,而實驗代表從線性的LR到具有非線性交叉的FM,到具有Field信息交叉的FFM,模型複雜度(模型容量)的提高,帶來的都是結果的提高。而LR和FM/FFM能夠視做簡單的淺層神經網絡模型,基於下面一些考慮,咱們在搜索廣告的場景下把CTR模型切換到深度學習神經網絡模型:
咱們主要嘗試瞭如下網絡結構和超參調優的實驗。
首先嚐試的是Google提出的經典模型Wide & Deep Model[6],模型包含Wide和Deep兩個部分,其中Wide部分能夠很好地學習樣本中的高頻部分,在LR中使用到的特徵能夠直接在這個部分使用,但對於沒有見過的ID類特徵,模型學習能力較差,同時合理的人工特徵工程對於這個部分的表達有幫助。Deep部分能夠補充學習樣本中的長尾部分,同時提升模型的泛化能力。Wide和Deep部分在這個端到端的模型裏會聯合訓練。
在完成場景與特徵部分介紹的特徵工程後,咱們基於Wide & Deep模型進行結構調整,搭建瞭如下網絡:
在搜索廣告的場景中,上圖的Part_1包含離散型特徵及部分連續型特徵離散化後的結果 (例如用戶ID、廣告ID、商圈ID、品類ID、GEO、各類統計類特徵離散化結果等等)。離散化方式主要採用等頻劃分或MDLP[7]。每一個域構建本身的embedding向量 (缺失特徵和按照必定閾值過濾後的低頻特徵在這裏統一視做Rare特徵),獲得特徵的Representation,而後經過Pooling層作採樣,並拼接在一塊兒進行信息融合。
右側的Part_2部分主要包含咱們場景下的統計類特徵及部分其餘途徑建模表示後輸入的特徵 (例如圖片特徵、文本特徵等),和Part_1的最後一層拼接在一塊兒作信息融合。
Part_3爲多個全鏈接層,每一個Layer後面鏈接激活函數,例如ReLu, Tanh等。
右上的Part_4部分主要包含廣告曝光位次 (Position Bias) 及部分離散特徵,主要爲了提升模型的記憶性,具備更強的刻畫能力。Wide和Deep部分結合,獲得最終的模型:
深度學習模型在圖像語音等數據上有顯著做用的緣由之一是,咱們在這類數據上不太方便產出能很好刻畫場景的特徵,人工特徵+傳統機器學習模型並不能學習出來全面合理的數據分佈表示,而深度學習end-to-end的方式,直接結合Label去學習如何從原始數據抽取合適的表達(representation)。可是在美團等電商的業務場景下,輸入的數據形態很是豐富,有不少業務數據有明確的物理含義,所以一部分人工特徵工程也是必要的,提早對信息作一個合理的抽取表示,再經過神經網絡學習進行更好的信息融合和表達。
在美團搜索廣告的場景下,用戶的實時行爲有很是強的指代性,可是以原始形態直接送入神經網絡,會損失掉不少信息,所以咱們對它進行了不一樣方式描述和表示,再送入神經網絡之中進行信息融合和學習。另外一類頗有做用的信息是圖像信息,這部分信息的一種處理方式是,能夠經過end-to-end的方式,用卷積神經網絡和DNN進行拼接作信息融合,可是可能會有網絡的複雜度太高,以及訓練的收斂速度等問題,也能夠選擇用CNN預先抽取特徵,再進行信息融合。
下面以這兩類數據特徵爲例,介紹在Wide & Deep模型中的使用方式。
從FFM模型切到Wide & Deep模型,積累到目前的效果以下所示,主要的提高來源於模型的非線性表達及對更多特徵的更充分刻畫。
華爲諾亞方舟團隊結合FM相比LR的特徵交叉的功能,將Wide & Deep部分的LR部分替換成FM來避免人工特徵工程,因而有了DeepFM[8],網絡結構以下圖所示。
比起Wide & Deep的LR部分,DeepFM採用FM做爲Wide部分的輸出,在訓練過程當中共享了對不一樣Field特徵的embedding信息。
咱們在部分業務上嘗試了DeepFM模型,並進行了超參的從新調優,取得了必定的效果。其餘業務也在嘗試中。具體效果以下:
廣告預估場景中存在多個訓練任務,好比CTR、CVR、交易額等。既考慮到多個任務之間的聯繫,又考慮到任務之間的差異,咱們利用Multi-Task Learning的思想,同時預估點擊率、下單率,模型結構以下圖所示:
近期,阿里發表論文「Entire Space Multi-Task Model」[9],提出目前CVR預估主要存在Sample Selection Bias(SSB)和Data Sparsity(DS)兩個問題,並提出在全局空間建模(以pCTCVR和pCTR來優化CVR)和特徵Transform的方法來解決。具體的Loss Function是:
網絡結構是:
除了以上對網絡結構的嘗試,咱們也進行了多組超參的調優。神經網絡最經常使用的超參設置有:隱層層數及節點數、學習率、正則化、Dropout Ratio、優化器、激活函數、Batch Normalization、Batch Size等。不一樣的參數對神經網絡的影響不一樣,神經網絡常見的一些問題也能夠經過超參的設置來解決:
影響神經網絡的超參數很是多,神經網絡調參也是一件很是重要的事情。工業界比較實用的調參方法包括:
咱們在實際調參過程當中,使用的是第3種方式,在根據經驗參數初始化超參數以後,按照隱層大小->學習率->Batch Size->Drop out/L1/L2的順序進行參數調優。
在搜索廣告數據集上,不一樣超參的實驗結果以下:
搜索廣告排序模型經歷了從GBDT --> FFM --> DNN的迭代,同時構建了更加完善的特徵體系,線下AUC累積提高13%+,線上CTR累積提高15%+。
TensorFlow程序若是單機運行中出現性能問題,通常會有如下幾種問題:
在模型的試驗階段,爲了快速試驗,數據預處理邏輯與模型訓練部分都耦合在一塊兒,而數據預處理包含大量IO類型操做,因此很適合用HadoopMR或者Spark處理。具體流程以下:
將libfm格式的數據轉爲易於TensorFlow操做的SparseTensor方式:
將原始數據轉換爲TensorFlow Record。
TensorFlow讀取數據的方式主要有2種,通常選擇錯誤會形成性能問題,兩種方式爲:
在這個Case中,由於須要提高吞吐,而不只僅是在試驗階段。因此須要用RecordReader方式處理數據。
此時,性能已經基本達到咱們的預期了。例如總體數據量是2億,按照之前的性能計算1000條/秒,大概須要運行55個小時。而如今大概須要運行87分鐘,再加上預處理(15分鐘)與預拉取數據(10分鐘)的時間,在不增長任何計算資源的狀況下大概須要2個小時之內。而若是是並行處理,則能夠在分鐘級完成訓練。
線上流量是模型效果的試金石。離線訓練好的模型只有參與到線上真實流量預估,才能發揮其價值。在演化的過程當中,咱們開發了一套穩定可靠的線上預估體系,提升了模型迭代的效率。
咱們開發了一個高可用的同步組件:用戶只須要提供線下訓練好的模型的HDFS路徑,該組件會自動同步到線上服務機器上。該組件基於HTTPFS實現,它是美團離線計算組提供的HDFS的HTTP方式訪問接口。同步過程以下:
同步過程當中,若是發生錯誤或者超時,都會觸發報警並重試。依賴這一組件,咱們實現了在2min內可靠的將模型文件同步到線上。
當前咱們線上有兩套並行的預估計算服務。
TF Serving是TensorFlow官方提供的一套用於在線實時預估的框架。它的突出優勢是:和TensorFlow無縫連接,具備很好的擴展性。使用TF serving能夠快速支持RNN、LSTM、GAN等多種網絡結構,而不須要額外開發代碼。這很是有利於咱們模型快速實驗和迭代。
使用這種方式,線上服務須要將特徵發送給TF Serving,這不可避免引入了網絡IO,給帶寬和預估時延帶來壓力。咱們嘗試瞭如下優化,效果顯著。
TF Serving服務端的性能差強人意。在典型的五層網絡(512*256*256*256*128)下,單個廣告的預估時延約4800μs,具體見下圖:
因爲廣告線上服務須要極高的性能,對於主流深度學習模型,咱們也定製開發了具體計算實現。這種方式能夠針對性的優化,並避免TF Serving沒必要要的特徵轉換和線程同步,從而提升服務性能。
例如全鏈接DNN模型中使用Relu做爲激活函數時,咱們可使用滾動數組、剪枝、寄存器和CPU Cache等優化技巧,具體以下:
// 滾動數組 int nextLayerIndex = currentLayerIndex ^ 1 ; System.arraycopy(bias, bOff, data[nextLayerIndex], 0, nextLayerSize); for (int i = 0; i < currentLayerSize; i ++) { float value = data[currentLayerIndex][i]; // 剪枝 if (value > 0.0) { // 寄存器 int index = wOff + i * nextLayerSize; // CPU 緩存友好 for (int j = 0; j < nextLayerSize; j++) { data[nextLayerIndex][j] += value * weights[index + j]; } } } for (int i = 0; i < nextLayerSize; k++) { data[nextArrayIndex][i] = ReLu(data[nextArrayIndex][i]); } arrayIndex = nextArrayIndex;
優化後的單個廣告預估時延約650μs,見下圖:
綜上,當前線上預估採起「兩條腿走路」的策略。利用TF Serving快速實驗新的模型結構,以保證迭代效率;一旦模型成熟切換主流量,咱們會開發定製實現,以保證線上性能。
藉助於咱們的分層實驗平臺,咱們能夠方便的分配流量,完成模型的小流量實驗上線。該分層實驗平臺同時提供了分鐘粒度的小流量實時效果數據,便於模型評估和效果監控。
通過一段時間的摸索與實踐,搜索廣告業務在深度學習模型排序上有了必定的成果與積累。接下來,咱們將繼續在特徵、模型、工程角度迭代優化。特徵上,更深度挖掘用戶意圖,刻畫上下文場景,並結合DNN模型強大的表達能力充分發揮特徵的做用。模型上,探索新的網絡結構,並結合CNN、RNN、Attention機制等發揮深度學習模型的優點。持續跟進業界動態,並結合實際場景,應用到業務中。工程上,跟進TensorFlow的新特性,並對目前實際應用中遇到的問題針對性優化,以達到性能與效果的提高。咱們在持續探索中。
[1] Chapelle, O., Manavoglu, E., & Rosales, R. (2015). Simple and scalable response prediction for display advertising. ACM Transactions on Intelligent Systems and Technology (TIST), 5(4), 61.
[2] Friedman, J. H. (2001). Greedy function approximation: a gradient boosting machine. Annals of statistics, 1189-1232.
[3] Rendle, S. (2010, December). Factorization machines. In Data Mining (ICDM), 2010 IEEE 10th International Conference on (pp. 995-1000). IEEE.
[4] Juan, Y., Zhuang, Y., Chin, W. S., & Lin, C. J. (2016, September). Field-aware factorization machines for CTR prediction. In Proceedings of the 10th ACM Conference on Recommender Systems (pp. 43-50). ACM.
[5] He, X., Pan, J., Jin, O., Xu, T., Liu, B., Xu, T., ... & Candela, J. Q. (2014, August). Practical lessons from predicting clicks on ads at facebook. In Proceedings of the Eighth International Workshop on Data Mining for Online Advertising (pp. 1-9). ACM.
[6] Cheng, H. T., Koc, L., Harmsen, J., Shaked, T., Chandra, T., Aradhye, H., ... & Anil, R. (2016, September). Wide & deep learning for recommender systems. In Proceedings of the 1st Workshop on Deep Learning for Recommender Systems (pp. 7-10). ACM.
[7] Dougherty, J., Kohavi, R., & Sahami, M. (1995). Supervised and unsupervised discretization of continuous features. In Machine Learning Proceedings 1995 (pp. 194-202).
[8] Guo, H., Tang, R., Ye, Y., Li, Z., & He, X. (2017). Deepfm: A factorization-machine based neural network for CTR prediction. arXiv preprint arXiv:1703.04247.
[9] Ma, X., Zhao, L., Huang, G., Wang, Z., Hu, Z., Zhu, X., & Gai, K. (2018). Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate. arXiv preprint arXiv:1804.07931.
[10] Bergstra, J., & Bengio, Y. (2012). Random search for hyper-parameter optimization. Journal of Machine Learning Research, 13(Feb), 281-305.
薛歡,2016年3月加入美團,主要從事搜索廣告排序模型相關的工做。姚強,2016年4月加入美團,主要從事搜索廣告召回、機制與排序等相關算法研究應用工做。玉林,2015年5月加入美團,主要從事搜索廣告排序相關的工程優化工做。王新,2017年4月加入美團,主要從事GPU集羣管理與深度學習工程優化的工做。