天天看點

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

作者:十方,公衆号:煉丹筆記

Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction

阿裡對行為序列的研究可以說已經獨領風騷了,前有DIN,後有MIMN,現在又出了這篇SIM。隻能說行為序列确實對點選率預估很重要,阿裡已經證明,豐富的使用者行為資料對工業場景下推薦系統的點選率預估具有很大的價值。MINN已經把序列長度增加到了1000,然而當長度超過1000,MIMN很難準确捕捉使用者興趣了。淘寶23%的使用者在過去5個月點選都超過1000個item,是以這篇論文想對任意長度的行為序列進行模組化。

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

下圖就是SIM,是個two-stage的政策,每個stage伴随着一個重要的unit,General Search Unit(GSU)和Exact Search Unit(ESU)。

  • first-stage: 這一步用GSU線上性時間内,把原始的長序列提取出top-K的子序列,K遠遠小于原始序列長度。
  • second-stage: 這一步用ESU把first-stage提取的top-K子序列作為輸入,用一個類似DIN,DIEN的複雜結構精确的提取興趣。
推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型
推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

使用者大量的曆史行為,對目前點選率預估真正有用的也就一部分行為,是以無需把原始行為序列全都塞到模型中去,這樣資源消耗和性能瓶頸是無法承受的,是以幹脆做個篩選,GSU就是這個功能。論文給出GSU兩種實作方式Hard-search和Soft-search。假設我們現在拿到的原始使用者行為序列B = [b1, b2, ..., bT],GSU會計算每個行為bi的相關性ri,最後取相關性最高的K個行為作為新的序列。GSU兩種實作方式本質就是ri計算方式不同,如下所示:

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

hard-search: 該方法沒有任何參數,就是找到和目标item相同類目的曆史序列的子序列。

soft-search: Wa和Wb是權重,ei和ea分别是序列第i個item和目标item的embedding,然後計算點積作為分數。論文提到可以用ALSH尋找top K的item,可以有個次線性的時間複雜度。

看到這裡可能會有個疑問,ei和ea是怎麼來的呢?見下圖:

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

需要注意的是,b1~bT必須長期興趣序列,因為GSU雖然是要從原始序列抽取K個興趣,但是是為長期興趣服務的,是以必須保證分布一緻。圖中的Sum pooling計算如下式:

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

然後Ur和目标向量concat在一起,接mlp預估點選率即可。

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

通過GSU,我們已經擷取了一個K長度的序列了,Exact Search Unit以該序列 B* 作為輸入,訓練一個基于attention的模型。考慮到B*序列每個item的權重是不同的,本能上都會覺得越靠近預估的item權重越大,論文裡是把距離預估的item的時間差進行embeding為Et(長度為K,embsize為D的序列,類似bert中的位置編碼),B* 序列的也是一個長度為K的embeding序列E*。zb = concat((E*, Et), axis = 1),是一個長度為K,embsize為2*D的序列,作為使用者最終的興趣序列,然後用多頭attention:

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

i表示第i個head,最後concat所有的head,輸入到mlp中做ctr預估。如果我們用的是soft-search,loss就有兩個了,LossGSU和LossESU,這兩個loss權重都是1,如果用hard-search,隻用LossESU即可。

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型
推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

畢竟再好的模型,不能上線都是白做,特别是線上服務都必須是毫秒級别,論文提到實施預估系統延遲需要低于30ms,以阿裡的體量,流量巅峰時每秒要處理百萬使用者,論文給出了實實在在的上線方案,如下圖:

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

論文提到hard-search和soft-search選取的top-k序列,驚人的相似,是以考慮到性能資源,就采用hard-search的方式上線。既然用hard-search,就要找與目标item相同category的序列,是以論文提出了user behavior tree(UBT),就是兩層索引,第一層key為userid,第二層key為類目,最後value為行為序列。UBT用分布式系統實作,占22TB空間(有資源就是任性)。

實驗

最後來看一下SIM的實驗效果,首先看一下在阿裡兩個資料集的表現:

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

着重看下下圖:

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

我們可以看到在短期行為的預估準确度DIEN和SIM是幾乎一樣的,但是長期行為上,SIM的優勢就展現了。

推薦搜尋煉丹筆記:SIM 使用者行為序列點選率預估模型

更多幹貨,請關注微信公衆号:煉丹筆記

傳送門:這個點選率模型,值得使用者托付終身