推荐搜索炼丹笔记:SIM 用户行为序列点击率预估模型
Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction
阿里對(duì)行為序列的研究可以說(shuō)已經(jīng)獨(dú)領(lǐng)風(fēng)騷了,前有DIN,后有MIMN,現(xiàn)在又出了這篇SIM。只能說(shuō)行為序列確實(shí)對(duì)點(diǎn)擊率預(yù)估很重要,阿里已經(jīng)證明,豐富的用戶行為數(shù)據(jù)對(duì)工業(yè)場(chǎng)景下推薦系統(tǒng)的點(diǎn)擊率預(yù)估具有很大的價(jià)值。MINN已經(jīng)把序列長(zhǎng)度增加到了1000,然而當(dāng)長(zhǎng)度超過(guò)1000,MIMN很難準(zhǔn)確捕捉用戶興趣了。淘寶23%的用戶在過(guò)去5個(gè)月點(diǎn)擊都超過(guò)1000個(gè)item,所以這篇論文想對(duì)任意長(zhǎng)度的行為序列進(jìn)行建模。
下圖就是SIM,是個(gè)two-stage的策略,每個(gè)stage伴隨著一個(gè)重要的unit,General Search Unit(GSU)和Exact Search Unit(ESU)。
- first-stage: 這一步用GSU在線性時(shí)間內(nèi),把原始的長(zhǎng)序列提取出top-K的子序列,K遠(yuǎn)遠(yuǎn)小于原始序列長(zhǎng)度。
- second-stage: 這一步用ESU把first-stage提取的top-K子序列作為輸入,用一個(gè)類似DIN,DIEN的復(fù)雜結(jié)構(gòu)精確的提取興趣。
用戶大量的歷史行為,對(duì)當(dāng)前點(diǎn)擊率預(yù)估真正有用的也就一部分行為,所以無(wú)需把原始行為序列全都塞到模型中去,這樣資源消耗和性能瓶頸是無(wú)法承受的,所以干脆做個(gè)篩選,GSU就是這個(gè)功能。論文給出GSU兩種實(shí)現(xiàn)方式Hard-search和Soft-search。假設(shè)我們現(xiàn)在拿到的原始用戶行為序列B = [b1, b2, ..., bT],GSU會(huì)計(jì)算每個(gè)行為bi的相關(guān)性ri,最后取相關(guān)性最高的K個(gè)行為作為新的序列。GSU兩種實(shí)現(xiàn)方式本質(zhì)就是ri計(jì)算方式不同,如下所示:
hard-search: 該方法沒(méi)有任何參數(shù),就是找到和目標(biāo)item相同類目的歷史序列的子序列。
soft-search: Wa和Wb是權(quán)重,ei和ea分別是序列第i個(gè)item和目標(biāo)item的embedding,然后計(jì)算點(diǎn)積作為分?jǐn)?shù)。論文提到可以用ALSH尋找top K的item,可以有個(gè)次線性的時(shí)間復(fù)雜度。
看到這里可能會(huì)有個(gè)疑問(wèn),ei和ea是怎么來(lái)的呢?見(jiàn)下圖:
需要注意的是,b1~bT必須長(zhǎng)期興趣序列,因?yàn)镚SU雖然是要從原始序列抽取K個(gè)興趣,但是是為長(zhǎng)期興趣服務(wù)的,所以必須保證分布一致。圖中的Sum pooling計(jì)算如下式:
然后Ur和目標(biāo)向量concat在一起,接mlp預(yù)估點(diǎn)擊率即可。
通過(guò)GSU,我們已經(jīng)獲取了一個(gè)K長(zhǎng)度的序列了,Exact Search Unit以該序列 B* 作為輸入,訓(xùn)練一個(gè)基于attention的模型。考慮到B*序列每個(gè)item的權(quán)重是不同的,本能上都會(huì)覺(jué)得越靠近預(yù)估的item權(quán)重越大,論文里是把距離預(yù)估的item的時(shí)間差進(jìn)行embeding為Et(長(zhǎng)度為K,embsize為D的序列,類似bert中的位置編碼),B* 序列的也是一個(gè)長(zhǎng)度為K的embeding序列E*。zb = concat((E*, Et), axis = 1),是一個(gè)長(zhǎng)度為K,embsize為2*D的序列,作為用戶最終的興趣序列,然后用多頭attention:
i表示第i個(gè)head,最后concat所有的head,輸入到mlp中做ctr預(yù)估。如果我們用的是soft-search,loss就有兩個(gè)了,LossGSU和LossESU,這兩個(gè)loss權(quán)重都是1,如果用hard-search,只用LossESU即可。
畢竟再好的模型,不能上線都是白做,特別是在線服務(wù)都必須是毫秒級(jí)別,論文提到實(shí)施預(yù)估系統(tǒng)延遲需要低于30ms,以阿里的體量,流量巔峰時(shí)每秒要處理百萬(wàn)用戶,論文給出了實(shí)實(shí)在在的上線方案,如下圖:
論文提到hard-search和soft-search選取的top-k序列,驚人的相似,所以考慮到性能資源,就采用hard-search的方式上線。既然用hard-search,就要找與目標(biāo)item相同category的序列,所以論文提出了user behavior tree(UBT),就是兩層索引,第一層key為userid,第二層key為類目,最后value為行為序列。UBT用分布式系統(tǒng)實(shí)現(xiàn),占22TB空間(有資源就是任性)。
實(shí)驗(yàn)
最后來(lái)看一下SIM的實(shí)驗(yàn)效果,首先看一下在阿里兩個(gè)數(shù)據(jù)集的表現(xiàn):
著重看下下圖:
我們可以看到在短期行為的預(yù)估準(zhǔn)確度DIEN和SIM是幾乎一樣的,但是長(zhǎng)期行為上,SIM的優(yōu)勢(shì)就體現(xiàn)了。
更多干貨,請(qǐng)關(guān)注微信公眾號(hào):煉丹筆記傳送門:這個(gè)點(diǎn)擊率模型,值得用戶托付終身
總結(jié)
以上是生活随笔為你收集整理的推荐搜索炼丹笔记:SIM 用户行为序列点击率预估模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 推荐系统炼丹笔记:推荐系统Bias/De
- 下一篇: 推荐搜索炼丹笔记:MiNet阿里跨域点击