深度CTR預估模型在應用寶推薦系統中的探索

導語 | 點擊率(click-through rate, CTR)預估是互聯網平臺的核心任務之一。近年來,CTR預估技術從傳統的邏輯迴歸,到深度學習DeepFM, Wide&Deep, DIN, DCN等算法落地,經歷了突飛猛進的發展。本文旨在以深度CTR預估模型爲基礎,探索在應用寶推薦場景下的算法優化。文章作者:趙程,騰訊算法研發工程師。

一、業務背景

點擊率(click-through rate, CTR)預估的本質是對用戶/商品建模,進而計算用戶的點擊概率。模型的衍變經歷了從經典機器學習LR、FM再到深度學習DNN、Wide&Deep、雙塔、DIN等的百花齊放。本文將針對應用寶的推薦場景,展開CTR模型探索優化。

應用寶推薦業務主要包括首頁推薦、遊戲推薦等,與常見信息流推薦(新聞/視頻)不同,本場景下的數據分佈具有明顯的差異:

  • App曝光頻次差異巨大:頭部app曝光佔比很高,長尾app曝光嚴重不足;
  • 用戶行爲極其稀疏:用戶月下載中位數、平均數較少。

面對着以上問題,當前的推薦模型主要面臨着以下挑戰:

  • 在訓練樣本稀缺的情況下,如何保證低頻特徵(e.g., 長尾appid)的充分學習;
  • 鑑於用戶行爲極其稀疏,如果更精準地捕捉用戶的興趣偏好。

本文主要針對以上挑戰,在當下深度CTR預估模型的基礎上展開模型優化探索,通過引入更長週期用戶行爲和app描述文本信息,並進一步挖掘用戶行爲興趣,有效促進了推薦效果提升。

二、基本框架

應用寶的整體推薦流程如下圖所示,從底層數據流抽取特徵,經過召回、排序以及重排,最終應用到實際業務場景中。本文主要針對排序模型優化。

排序模型我們以業內廣泛使用的Wide&Deep模型作爲baseline,其中,Wide側具有記憶能力,能夠記住高頻特徵組合,達到準確推薦的目的;Deep側爲了彌補交互矩陣稀疏的不足,將特徵映射到低維向量表示,經過多層神經網絡,使模型具有泛化能力。

三、多行爲融合訓練

在我們的場景中擁有很多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依然沒有充足的學習樣本,那麼應該如何優化呢?

四、引入更長週期用戶行爲

一種自然的想法便是引入更長週期的用戶行爲記錄。近年來,以DeepWalk, Graphsage爲代表的圖模型能夠較好地捕捉用戶的長週期行爲特點。

我們根據用戶過去30天內的下載行爲進行構圖,考慮到用戶在同一天中的下載序列無明顯的先後關係,構建了基於共線下載的無向圖,接着訓練隨機遊走模型生成預訓練的deepwalk appid embedding,作爲先驗信息指導排序模型優化。

在共享appid embedding的基礎上,我們嘗試了多種訓練策略。

  • 固定初始化:直接將預訓練的deepwalk appid embedding賦值給共享appid embedding;
  • 初始化微調:在1的基礎上進行參數微調;
  • 特徵蒸餾:引入輔助loss,度量學習得到的embedding與預訓練embedding的相似度(向量點積)。

從效果來看,只有初始化微調的方式會帶來一定的效果提升,說明經過deepwalk訓練的embedding和wide&deep訓練的embedding在向量分佈上是有差異的。

但目前爲止auc的提升還很微弱,即使我們引入了30天甚至更久的用戶行爲數據,對於一些低頻app依然無法充分學習,那是否還有外部信息可以利用呢?

五、引入APP描述文本信息

Deepwalk的訓練本質是從用戶行爲信息中發掘app間的相似關聯,若直接從app自身的屬性信息(e.g., 標題、描述文本)出發,是否也能發現相似的規律?

近年來,以BERT爲代表的預訓練語言模型在文本表示方面取得了巨大的成功,我們將每個app的標題和描述文本作爲輸入訓練tag分類模型,得到一個高維(768維)的向量表示,嘗試指導Wide&Deep中的appid embedding學習。

由於Wide&Deep模型規模的限制以及前期的經驗,我們的embedding size往往很小(30維/60維),更高的維度會導致效果下降,所以需要探索一種有效的降維方式。

這裏我們主要嘗試了外部pca降維和內部通過全連層自動學習的降維方式,實驗表明,在網絡中進行端到端自動學習的降維方式更有效果。

六、預訓練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的初始化不同會對模型結果產生影響,那麼它們分佈的具體聚簇是否與模型效果有着嚴格的相關性,還需要更多的探索求證。

七、基於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效果提升明顯。

八、結語

綜上,本文針對應用寶推薦場景下的兩大挑戰(app曝光差異大、用戶行爲少),從兩方面對現有的深度CTR模型進行了改進:

第一,引入了基於Deepwalk的長週期用戶行爲挖掘和基於BERT的app文本描述信息增強。

第二,利用attention機制挖掘用戶的歷史行爲序列,並融合外部embedding,實現用戶興趣發掘。

本文轉載自公衆號雲加社區(ID:QcloudCommunity)。

原文鏈接

深度CTR預估模型在應用寶推薦系統中的探索

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