本論文題為《Real-time Attention based Look-alike Model for Recommender System》,作者 Yudan Liu, Kaikai Ge, Xu Zhang, Leyu Lin,已被 KDD 19 接收,原文見附錄。
Look-alike 是廣告領域經典的推薦演算法,擁有定向能力強、用戶擴展精準等優點。本文在微信看一看的推薦場景下對傳統 look-alike 進行了改造,使之更適合高時效性的資訊推薦系統。
微信看一看面向全體微信用戶,每天有數百萬新聞、視頻和公眾號文章藉由個性化推薦系統完成分發。在微信看一看,我們將各類深度學習演算法廣泛應用到了推薦系統的各個環節中。新聞資訊、運營專題和小眾文章由於缺少歷史行為或者傾向長尾,往往曝光效率不高,對此我們提出 RALM 模型嘗試解決這個問題。
現階段,Deep Learning已經在推薦領域中廣泛應用,深度模型如 Youtube DNN/WND/DeepFM 等在傳統的個性化召回/CTR排序都取得了不錯的效果,但仍有一些覆蓋效果不佳的場景。對於傳統的推薦模型來說,item 的歷史行為特徵對於 pCTR 的影響很大,這也造成模型推薦結果總體趨熱(當然大多數場景下熱文是大家都愛看的)。因此而來的副作用就是內容體系的馬太效應沒有得到充分緩解,一些優質的長尾內容,比如運營新聞專題、冷門類目精品等受到打壓,無法得到高效的投放。
要解決這個問題,我們不妨思考傳統推薦模型的建模思路,大致如下:
由上可以看到,從1到2有一個信息損失的過程。特別是對於item的歷史行為信息,並沒有很完整的表示方式。傳統模型里一個 point-wise 的樣本用 itemid、統計信息(歷史點擊率/點擊次數/標籤點擊率等等)表徵 item 行為,但無論是 itemid 還是點擊率/點擊次數,都是傾向於頭部歷史行為豐富 item 的特徵,這也是為什麼前文說的馬太效應未被緩解。
綜上所述,我們需要的是一個能精準建模 item 歷史行為的模型。Look-alike 是廣告領域流行的一類方法,其核心思想是針對某個 item,先根據歷史行為圈定一部分種子用戶,然後通過模型尋找與種子用戶相似的人群,為他們推薦該 item。
由於 look-alike 充分利用了 item 的所有行為信息,因此在定向挖掘長尾內容受眾上具有獨特的優勢。然而相較於廣告系統,我們的資訊推薦有如下差異:
傳統的廣告 look-alike 包括 similarity based models (LSH/user embedding) 和 regression based models (LR/xgboost/MLP),在廣告系統中都得到過驗證,但不太適用於資訊推薦。這些模型往往都是針對每個 item 訓練一個模型(或者每個 itemid 訓練一個 embedding) ,當 item 候選集增加時,模型都需要首先積累樣本,然後重訓或增量更新,這對於高時效性高頻率更新的資訊推薦系統來說是難以接受的。
總結下來,我們最後需要的模型應具備如下特點:
基於以上,我們提出了 RALM(Realtime Attention-based Look-alike Model) 模型,它通過 user representation learning 表達用戶的興趣狀態,通過 Look-alike learning 學習種子用戶群體信息以及目標用戶與種子用戶群的相似性,從而實現實時且高效的受眾用戶擴展和內容觸達。
RALM 模型能實現實時擴散的核心在於,我們使用種子用戶的特徵來代替 item 的歷史行為特徵,從而將常規 user-item 的模型轉換成了 user-users 模型,這意味著任何在系統中有過行為的 item ,都能被表示為 I = Eseeds= f({E(u1), E(u2), ..., E(un)}),其中 un ∈ U,U 為系統用戶全集;Eseeds 是 item 種子用戶集合的表示。
RALM 的訓練包含兩部分:User Representation learning 和 Look-alike learning。User Representation learning 的任務是學習E(un);Look-alike learning 的任務則是基於 E(un) 學習 Eseeds。
User Representation learning 的任務是學慣用戶的高階表示,目的是對繁雜的多域低階特徵做抽象,儘可能全面地表達用戶在系統中的狀態,便於後續模型的利用。這裡可以是個多任務學習,或者輸出不同向量空間的多個 embeddings。
我們改進了 Youtube DNN 模型,針對點擊樣本訓練了一版模型,取最後一層隱層作為用戶行為 embedding,供後續使用。模型細節計劃在CF優化專題里詳細說明,在此不再贅述。
從 User Representation learning 得到 user embedding 後,我們將其作為 user 特徵,學習種子用戶到目標用戶的關係,即上文提到的 user-users model。
模型結構比較簡單,是一個雙塔結構。左邊稱為「seeds tower」,以種子用戶的 embeddings 作為輸入,經過一層空間轉換(全連接+pRELU),然後分別經過一個 self-attention 單元和一個 productive attention 單元,pooling 後輸出向量;模型右邊結構稱為「target tower」,目標用戶 embedding 輸入後經過空間轉換(與seeds tower共享參數),直接與左邊向量計算 cosine 相似度。
為了計算種子用戶群體和目標用戶的相似度,我們需要首先把多個用戶向量 pooling 成一條。Average 是常用的 pooling 方式,但取均值的結果是趨向群體的中心,也就是大眾化的興趣,丟失了群體中的離群點和個性化興趣。而一個群體中,必然只有一部分用戶是和目標用戶興趣相仿的。基於這些假設,我們加入了 local attention unit,激活種子用戶群的局部興趣點,並且學習到一個和目標用戶緊密關聯的用戶群表達方式,公式如下:
這是一個乘法注意力,Wl ∈ Rhxh 表示轉換矩陣,Es 表示種子用戶,Eu 表示目標用戶,Elocal 為種子用戶的 local info。
當 item 有 n 個種子用戶時,計算 attention 需要 n * h * h 次乘法計算,當 n 很大時,計算耗時也會水漲船高,不利於在線預測。為了減少計算次數,我們在這引入聚類。我們用 K-means 把種子用戶聚成 k 個類簇,然後令種子用戶向量按最近類簇中心聚合成 k 個向量,最後再計算 attention。這樣一來,計算次數就從 n * h * h 減少至 k * h * h,k 只是一個很小的常數。在我們的實踐中,k 取 20 是性能與效果的最佳折中點。注意,由於 attention 前的空間轉換矩陣是可學習的,所以輸入向量也是會變的,因此最好每隔一定 batch 數迭代更新 K-means 的 k 個聚類中心,減少聚類帶來的信息損失。
除了個性化信息,用戶群體還有共性的、與自身組成相關的全局信息。因此我們引入 global attention unit 來捕獲這部分群體信息。
Wg ∈ Rsxn 表示全連接矩陣,Eglobal 為種子用戶的 global info。本質上這是一個 self-attention,與群體分布更相似的興趣將會被提取出來。最終我們令 Elocal , Eglobal 分別與 Eu 求 cosine,加權求和即得到目標用戶與種子用戶的相似度分數。
RALM 是個多分類任務(目標用戶屬於哪一個種子用戶群),我們用 negative sampling 的方式采多正多反(點擊item的種子用戶做正例,隨機采負例),使用多組交叉熵作為模型 loss 函數。
RALM 模型框架現在已經部署在微信看一看,整體流程如下:
離線訓練包括 User Representation learning 和 Look-alike learning,最終輸出 look-alike 模型參數和 Eu。模型參數可載入到內存,全量用戶的 Eu 可存到 kv cache。
在線非同步處理主要是針對需要快速更新的數據進行准實時的更新和計算,節約線上請求耗時。包括兩部分:拉取用戶點擊日誌,更新線上候選集 item 的種子用戶,預計算 Elocal(因為這部分與目標用戶無關);計算 K-means 類簇中心。以上兩部分通過詞典系統推送到線上內存。
線上服務首先拉取當前請求 user 的 Eu,然後遍歷候選集 item,分別得到各 item 的種子用戶 embedding,計算 local/global attention(已預計算),加權得到最終的相似度。相似度分數可以作為後續模型的特徵分,也可以通過卡閾值的方式控制曝光。
在 RALM 中,我們用 user 特徵來表示 item,取代 item 的語義、id、統計類特徵,一方面可以得到 item 完整的歷史行為表達,另一方面對缺乏豐富統計特徵的 item 更加友好。
對於用戶,我們用高階連續特徵作為用戶特徵,而沒有使用用戶的其他離散特徵。是因為如果用低階特徵來表達用戶群體,那麼我們只能採取統計的方式來構造特徵,這會丟失群體大部分信息。而經過表示學習的高階特徵其實已經包含了用戶各類低階特徵的交叉,能更加全面地表達用戶的信息。並且高階特徵有泛化性,避免表達陷入歷史數據的記憶。
Look-alike learning 的模型很簡單,而輸入的用戶特徵又只有一種連續特徵,因此很容易受到 User Representation 模型的影響,產生過擬合。我們採取的方式是共享兩邊全連接層的參數,並且加入 dropout,讓模型結構更簡單,一定程度上能走得更遠。
另外,引入 stacking 的思路,將不同學習目標的其他用戶表示 embeddings(如泛興趣、關係鏈) concat 作為輸入特徵,共同訓練是我們下一步目標,在 stacking model 中,這也是一個防止模型被帶偏、讓學習更充分的方法。
雖然 RALM 計算相似度並不需要太多種子用戶,但在 item 初次投放時(種子用戶為0),我們仍需多 item 做初始曝光以獲得最初的種子用戶。線上我們使用語義特徵與用戶畫像做了簡單的 MLP 預估點擊率作為曝光策略,當積累足夠量(100以上)種子用戶後即可進入 RALM 的正常預測流程。
RALM 實現了可實時擴展用戶的 look-alike 演算法,它通過 User Representation learning 和 Look-alike learning 捕捉種子用戶群的 local/global 信息,並學慣用戶群與目標用戶的相似度表示,更好地發掘長尾內容的受眾用戶。通過離線評估和線上 A/B test,RALM 在曝光、CTR、多樣性等指標上均取得了更好的效果。註:論文中只用了少量特徵學習 representation,效果會打折扣。
附錄是 RALM 論文,歡迎大家交流和賜教。
[1].Real-time Attention Based Look-alike Model for Recommender System. https://arxiv.org/abs/1906.05022