機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

阿里技術發表於2019-01-06

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐阿里妹導讀:本文主要介紹了Wide&Deep、PNN、DeepFM、Wide&Resnet模型結構,並嘗試在1688猜你喜歡的真實資料場景中進行應用。文內有一些實驗結果,也提出了一些遇到的問題,希望能與大家一起分享討論。

一、背景

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

猜你喜歡是推薦領域極其經典的一個場景,在1688首頁無線端猜你喜歡欄目日曝光約23w,其中約72%的使用者會產生點選行為,人均點選約8次。在我們的場景中,這部分是一個相對較大的流量來源。我們演算法要做的就是通過使用者的真實行為資料,預測使用者最可能感興趣的商品進行展示,以提高點選率,從而提高購買量。

不同於搜尋,這種使用者帶有明確目的的行為,猜你喜歡是在使用者沒有明確目的時讓使用者“逛起來”,挖掘使用者的潛在喜好商品,增強使用者體驗。

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

整個猜你喜歡的框架如圖。使用者產生的實時資料放在ABFS上,通過TPP傳入BE,在BE中通過swing、c2i等演算法召回1000個商品(粗排),再把這1000個商品通過TPP傳入RTP中線上打分,最後把分數最高的600個商品按得分展現給使用者(精排)。離線在Porsche平臺上除錯模型,調到最優結果再發布到RTP看線上效果。

ABFS (Ali Basic Feature Server),統一特徵服務平臺:該模組主要負責使用者實時資料的處理以及特徵的統計工作,如基礎行為特徵(點選、收藏、加購等),統計特徵(點選次數、點選率等),並傳遞到TPP供BE系統呼叫;

TPP(The Personalization Platform),阿里個性化平臺:整合RTP、IGraph、BE等常用服務,方便資料的流動呼叫,降低開發成本,幫助業務和演算法快速上線迭代;

BE(Basic Engine),向量化召回。是DII上的一個為推薦場景定製的召回引擎服務,負責從多種型別的索引表中召回商品,並關聯具體的商品資訊進行過濾和粗排。線上召回效率極高,可以在幾毫秒內對全庫商品召回結果;

iGraph平臺:超大規模分散式線上圖儲存和檢索。在我們的流程中主要用來儲存一些使用者特徵,使用者偏好類目和熱門商品召回等。因為這些資訊不需要頻繁更新,存到iGraph上方便存取和呼叫;

RTP(Real Time Prediction),實時打分服務系統:利用Swift增量傳輸模型,使用實時BUILD索引技術來實現特徵和模型的秒級更新,RTP系統在收到TPP推薦系統的前端請求後,進行FG的實時特徵產出,並對請求的item list中每個item計算出一個分值,是CTR、CVR各種機器學習模型預估的專用伺服器;

Porsche線上學習平臺: Porsche是基於Blink的分散式流式計算框架,提供了日誌處理、特徵計算和實時建模的外掛介面。實時更新的模型和特徵通過swift秒級別同步RTP等服務端。從使用者發生互動行為、行為樣本被實時系統接收和解析、加入線上訓練、將更新的模型引數傳送給服務端到最終新的推薦結果被使用者感知,這個過程高度實時化、線上化。

二、模型簡介

1. 搭積木

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

深度學習模型很大程度上來自不同基礎模組的組合,通過不同方式組合不同模組,構建不同的模型。最經典的就是Google的Wide&Deep模型,結合深度模組DNN和線性模組LR,讓模型同時擁有記憶性和泛化性。

在WDL之後,學術界和工業界在此結構上有很多其他的嘗試。下面分析幾個我試過的網路。

2. Wide&Deep

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

這是Google提出的非常經典的網路結構,論文見《Wide & Deep Learning for Recommender Systems》。離散特徵經過Embedding和連續特徵一起輸入到DNN側,Wide側是一些人工交叉(如用笛卡爾積)特徵,主要交叉的是id類特徵,來學習特徵間的共現。主要公式如下:

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

Wide側LR模型的記憶性很強,比如使用者買了一本科幻書,下一次再出現這樣的組合,模型就會記住判斷正確。但若此時來了一本科學書,LR模型不一定能分對,所以需要Deep側DNN模型的補充。

Deep側DNN模型通過Embedding層挖掘特徵間的語義相關性,比如上個例子中,通過Embedding模型可以學到“科學”和“科幻”是相似的,從而也能推出使用者也可能喜歡科學書。這樣,通過DNN和LR模型的結合,Wide&Deep模型有很好的記憶性和泛化性。這也是我們目前猜你喜歡線上在用的模型。

3. PNN

PNN的思想來自於對MLP學習的交叉特徵的補充,論文見《Product-based Neural Networks for User Response Prediction》。作者認為MLP不能很好地學出特徵間的交叉關係,所以提出了一種product layer的思想,也就是基於乘法的運算強行顯式地進行二階特徵交叉,結構如下圖:

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

從結構圖可以看出,product layer可以分成z和p兩部分。線性部分z直接從Embedding結果得到,非線性部分也就是乘積部分,這裡的乘積有兩種選擇,內積或者外積。

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

但這種結構的受限之處在於,它要求輸入特徵Embedding到相等的維度,因為維度相同才能做乘積運算。

4.DeepFM

DeepFM由華為諾亞方舟實驗室和哈工大共同提出,論文見《DeepFM:A Factorization-Machine based Neural Network for CTR Prediction》。它的結構很像Wide&Deep與PNN的結合,它是把Wide&Deep中Wide側的LR換成了乘積結構FM,通過FM和DNN分別提取低階和高階特徵。而且這兩部分共享Embedding輸入。結構如下圖:

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

FM部分是一個因子分解機。關於因子分解機可以參閱Steffen Rendle 在ICDM, 2010發表的文章《Factorization Machines》。因為引入了隱變數的原因,對於幾乎不出現或者很少出現的隱變數,FM也可以很好的學習。FM的公式如下:

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

而且在FM的文章中,作者還給出了求解交叉項的化簡公式:

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

跟PNN一樣,因為FM強制特徵間二階交叉,所以需要把特徵Embedding到相等長度的維度,且DeepFM結構兩邊的輸入是共享的,不需要像Wide&Deep一樣人工給LR模型構造交叉特徵,節省了人力。但在集團實際應用中,不同特徵的維度相差很大,比如性別只有3維(男、女、未知),而id類特徵多達上億維,不可能都Embedding到相同的長度。這裡可以參考淘寶搜尋團隊的做法,通過Group product的方式分組Embedding:雙11實戰之大規模深度學習模型。他們在雙十一中也取得了不錯的效果。

5.Wide&Resnet

這個結構是我自己在工作中的嘗試。想法來源於對Wide&Deep模型的改進,把原來Wide&Deep結構中DNN部分改成了一個類似Resnet那樣skip connection的結構,也就是訊號分成兩路,一路還是經過兩個relu層,另一路直接接到第二層relu,形成類似殘差網路的結構。這樣做的好處是,可以把不同層級的特徵進行組合,豐富特徵的資訊量。兩個模型的對比圖如下:

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

此外,我還發現單純從DNN改到Resnet的結構並沒有多少作用,但是在Resnet中加入batch normalization,即BN層後,網路的表達能力得到了很大的提高。可以從離線CTR實驗的準確率中得以提現。離線效果見第四部分。

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

三、訓練資料

訓練資料來自目標日前七天內使用者在1688首頁猜你喜歡模組行為資料,曝光點選label為1,曝光未點選則label為0。
1688猜你喜歡使用的資料特徵體系如下:

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

圖中滑窗期指目標前1/3/5/7/15/30天的行為視窗。

1688平臺與淘寶等傳統的B2C平臺不同,1688是一個B2B的平臺,意味著我們的買家和賣家都是B類使用者。B類使用者與C類使用者在特徵上有明顯的不同,比如:

  • B類使用者特徵會有是否是淘寶賣家;

  • 相比於C類,B類使用者沒有年齡、性別、社會狀態(是否有孩子、車子、房子)等人口統計學特徵;

  • 對於1688的商品也沒有品牌特徵,因為我們主打的是非品牌類的批發市場。

四、實驗結果

在Porsche平臺上做離線實驗,可以看到帶BN層的Wide&Resnet的模型比baseline的Wide&Deep模型在訓練集和測試集上的AUC基本都要高1個多百分點。經過三次增量,即每批資料從上一次訓練的模型基礎上進一步迭代訓練,AUC能提高5%~6%。

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

從loss曲線中更能明顯看出,加了BN後的模型,loss基本在0.3之下,穩定在一個較小水平;而原來Wide&Deep模型的loss波動範圍較大。所以BN對模型的穩定性起到了很明顯的效果。

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

五、調參經驗

分享一些其他的調參經驗:

機器如何「猜你喜歡」?深度學習模型在1688的應用實踐

六、總結

本文在Wide&Deep模型上進行改進,提出Wide&Resnet結構,並通過Batch Normalization的方式大幅提升網路效果,是一次有意義的探索。

感謝霍博和CBU的演算法小夥伴們一個多月的支援!以及特別感謝哈西師兄,易山師兄的指導!

參考資料:

[1] Cheng, Heng-Tze, et al. "Wide & deep learning for recommender systems." Proceedings of the 1st Workshop on Deep Learning for Recommender Systems. ACM, 2016.
[2] Qu, Yanru, et al. "Product-based neural networks for user response prediction." Data Mining (ICDM), 2016 IEEE 16th International Conference on. IEEE, 2016.
[3] Guo, Huifeng, et al. "Deepfm: a factorization-machine based neural network for ctr prediction." arXiv preprint arXiv:1703.04247 (2017).
[4] Rendle, Steffen. "Factorization machines." Data Mining (ICDM), 2010 IEEE 10th International Conference on. IEEE, 2010.

相關文章