1、業務背景網絡
點擊率(click-through rate, CTR)預估的本質是對用戶/商品建模,進而計算用戶的點擊機率。模型的衍變經歷了從經典機器學習LR、FM再到深度學習DNN、Wide&Deep、雙塔、DIN等的百花齊放。本文將針對應用寶的推薦場景,展開CTR模型探索優化。
應用寶推薦業務主要包括首頁推薦、遊戲推薦等,與常見信息流推薦(新聞/視頻)不一樣,本場景下的數據分佈具備明顯的差別:
app
面對着以上問題,當前的推薦模型主要面臨着如下挑戰:
ide
本文主要針對以上挑戰,在當下深度CTR預估模型的基礎上展開模型優化探索,經過引入更長週期用戶行爲和app描述文本信息,並進一步挖掘用戶行爲興趣,有效促進了推薦效果提高。spa
2、基本框架pwa
應用寶的總體推薦流程以下圖所示,從底層數據流抽取特徵,通過召回、排序以及重排,最終應用到實際業務場景中。本文主要針對排序模型優化。
排序模型咱們以業內普遍使用的Wide&Deep模型做爲baseline,其中,Wide側具備記憶能力,可以記住高頻特徵組合,達到準確推薦的目的;Deep側爲了彌補交互矩陣稀疏的不足,將特徵映射到低維向量表示,通過多層神經網絡,使模型具備泛化能力。
3、多行爲融合訓練設計
在咱們的場景中擁有不少appid 相關的行爲特徵,例如用戶歷史點擊、下載、安裝等,基本的Wide&Deep框架會將每一個行爲特徵映射到單獨的embedding,並單獨更新。
因爲每一類特徵的用戶行爲記錄十分稀疏,這種操做會形成低頻特徵embedding的訓練不充分。
針對於此,咱們設計了基於appid embedding共享的多行爲融合訓練機制,體如今模型中爲Deep側的appid embedding聚合共享。
因爲appid類的特徵較多,在實際選取時,咱們主要利用了用戶的實時行爲特徵和短時間行爲特徵,避免了由安裝/卸載記錄帶來的數據噪音。
Wide&Deep中embedding參數約佔總量的95%,經過特徵共享,參數量從2800w下降到了2000w,在模型保存和訓練速度方面均有必定的優化。
效果方面,咱們主要考慮離線auc和copc(pcvr/cvr,反映模型打分誤差),通過特徵共享的模型效果在auc上基本持平,而在copc指標上獲得了明顯的優化,必定程度上緩解了模型的打分誤差。
因爲咱們的特徵中用戶行爲只涵蓋了15天內近30個app的記錄,對於低頻app依然沒有充足的學習樣本,那麼應該如何優化呢?
4、引入更長週期用戶行爲
一種天然的想法即是引入更長週期的用戶行爲記錄。近年來,以DeepWalk, Graphsage爲表明的圖模型可以較好地捕捉用戶的長週期行爲特色。
咱們根據用戶過去30天內的下載行爲進行構圖,考慮到用戶在同一天中的下載序列無明顯的前後關係,構建了基於共線下載的無向圖,接着訓練隨機遊走模型生成預訓練的deepwalk appid embedding,做爲先驗信息指導排序模型優化。
在共享appid embedding的基礎上,咱們嘗試了多種訓練策略。
從效果來看,只有初始化微調的方式會帶來必定的效果提高,說明通過deepwalk訓練的embedding和wide&deep訓練的embedding在向量分佈上是有差別的。
但目前爲止auc的提高還很微弱,即便咱們引入了30天甚至更久的用戶行爲數據,對於一些低頻app依然沒法充分學習,那是否還有外部信息能夠利用呢?
5、引入APP描述文本信息
Deepwalk的訓練本質是從用戶行爲信息中發掘app間的類似關聯,若直接從app自身的屬性信息(e.g., 標題、描述文本)出發,是否也能發現類似的規律?
近年來,以BERT爲表明的預訓練語言模型在文本表示方面取得了巨大的成功,咱們將每一個app的標題和描述文本做爲輸入訓練tag分類模型,獲得一個高維(768維)的向量表示,嘗試指導Wide&Deep中的appid embedding學習。
因爲Wide&Deep模型規模的限制以及前期的經驗,咱們的embedding size每每很小(30維/60維),更高的維度會致使效果降低,因此須要探索一種有效的降維方式。
這裏咱們主要嘗試了外部pca降維和內部經過全連層自動學習的降維方式,實驗代表,在網絡中進行端到端自動學習的降維方式更有效果。
6、預訓練embedding融合
爲了更直觀地展示embedding分佈,咱們對deepwalk和bert預訓練的embs分別進行了tsne可視化。
下圖中不一樣的顏色代表不一樣的一級類目,兩者均呈現了明顯的類目空間彙集性,同類目的app天然地彙集到了一塊兒。
同時二者的embedding分佈也具備空間差別性,好比,bert可視化圖中的左下角部分是視頻類app,而deepwalk是出行類app。
鑑於兩者的差別性,咱們的作法是將其分別作投影變換,投影到同一貫量空間中,這裏投影變換的參數隨網絡一塊兒學習。融合embedding的方式則爲拼接或相加。
模型的總體框架圖以下:
從實驗效果來看,向量投影拼接的方式具備更好的表現:
爲了進一步展現加入deepwalk/bert外部預訓練embedding的效果,咱們接着進行了tsne可視化,其中左邊爲wide&deep appid embedding的可視化表示,右邊是融合embedding的可視化表示,能夠發現app的分佈從雜亂無序學到了呈現明顯的聚簇,具備了必定的可解釋性。
經過這個實驗,咱們已經知道app embs的初始化不一樣會對模型結果產生影響,那麼它們分佈的具體聚簇是否與模型效果有着嚴格的相關性,還須要更多的探索求證。
7、基於attention的用戶行爲挖掘
用戶的歷史行爲對當前app推薦具備直觀的影響,以下圖中,一樣的歷史點擊序列,對不一樣app的影響大小不一樣。
下圖是用戶近72h內同類目app點擊次數(match特徵)與cvr的關係,咱們能夠發現,用戶歷史點擊的同類目app次數越多,當前app的cvr也就越高。
圖中從123級類目由粗至細定位了用戶的興趣。但同類目的限制每每比較嚴苛,有時相關的app可能不在同一類目下(e.g., 和平精英、騰訊地圖),並且用戶的興趣也更加普遍。
因而咱們使用基於attention的方式對用戶行爲進行挖掘,但願能夠從必定程度上緩解同類目限制所帶來的泛化性弱的問題。
但因爲用戶行爲序列極短
,
通常的attention操做是否適用呢?
首先咱們進行了一組基礎attention的實驗,額外引入app embedding做爲query,對用戶行爲序列進行attenion 操做,具體公式和圖示以下:
從效果來看,隨機初始化query embedding的attention操做甚至會使效果變差,並且模型的訓練過程每每第二個epoch開始就出現了過擬合。
受上一步工做的影響,咱們認爲app embs query和key的初始化也對模型有着極大的
影響。
下圖中展現了在i2i召回中,app類似度和cvr的關係。橫座標表示當前app和用戶歷史app的cos類似度的log值,藍線表示cvr。
咱們發現app召回中,cvr隨着類似度的增長而增長,用戶老是傾向於喜歡與他歷史行爲app類似的app。
體如今deepwalk/bert的融合embedding中,因爲類似app具備明顯的彙集性,它們的點乘得分也高。
在attention中,咱們添加了以dw+bert融合向量爲初始化embedding的點乘打分方式,最終效果auc效果提高明顯。
8、結語
綜上,本文針對應用寶推薦場景下的兩大挑戰(app曝光差別大、用戶行爲少),從兩方面對現有的深度CTR模型進行了改進:
第一,引入了基於Deepwalk的長週期用戶行爲挖掘和基於BERT的app文本描述信息加強。
第二,利用attention機制挖掘用戶的歷史行爲序列,並融合外部embedding,實現用戶興趣發掘。