論文:
論文題目:《Controllable Multi-Interest Framework for Recommendation》
論文地址:https://arxiv.org/pdf/2005.09347.pdf
推薦系統(tǒng)中關(guān)于用戶長短期興趣建模一直是一個熱點問題,而用戶的多興趣召回更是一個更加通用的對用戶興趣建模的方法乾胶,我們在之前的mind論文中已經(jīng)介紹過了如何用膠囊網(wǎng)絡(luò)來建模用戶的多個興趣點厨内,今天我們來介紹一下阿里跟清華合作的另一篇關(guān)于多興趣召回的文章敛苇。
一 蹬挤、背景
在介紹這個論文之前苍姜,我想來給讀者們講講為什么用戶的興趣需要進(jìn)行細(xì)粒度的劃分秋忙,這也是我在工作中真實碰到的情況。
用戶在一次session或者說一段時間內(nèi)瀏覽了一系列物品境肾,這時候會出現(xiàn)兩種情況:
1.這個序列中的所有item都是同一類商品/同一個品質(zhì)的相似商品,這時候我們就認(rèn)為這個序列是“收斂”的胆屿,也就是這個序列中的物品趨于同質(zhì)化奥喻,這時候用戶的興趣就是單點的,這時候?qū)@個序列建模就比較簡單了非迹,不管是rnn還是直接用transformer都可以直接建模出用戶在這時候的興趣點环鲤。
2.這個序列中出現(xiàn)了不同品類的商品,比如說衣服和褲子和口紅同時出現(xiàn)憎兽,這時候我們可以認(rèn)為這個序列是“發(fā)散”的冷离,這時候如果用rnn之類的序列建模方法就沒那么work了,你可以相信一下纯命,如果把一些雜亂無章的單詞隨便湊到一個句子中西剥,在用transformer去建模,那么建模出來的vec表達(dá)的意思是什么呢亿汞?這時候模型就沒可解釋性瞭空,可能你這時候又會說了,深度學(xué)習(xí)模型只需要關(guān)心work不work,不需要關(guān)心具體的解釋性了咆畏,對于這個觀點我不置可否南捂。。
回到正題旧找,如果我們碰到了一個雜亂無章的序列溺健,我們斗膽猜測,用戶在這時候的興趣是多點的钮蛛,這時候如果強(qiáng)行把用戶的興趣全部雜糅到一個向量中鞭缭,這時候又會出現(xiàn)幾個問題:
1.融合的向量需要完整的表達(dá)出用戶的興趣就需要把維度設(shè)置的很大,這樣訓(xùn)練比較困難
2.融合會讓信息損失
3.融合的興趣向量的空間可解釋性比較差魏颓,我們不知道這個融合的興趣向量為什么可以檢索出top-n個item岭辣,也不知道這個融合的向量在哪個空間維度下。
當(dāng)然琼开,上面的幾個問題是我在實踐過程中自己碰到的易结,尤其是第二點,信息損失會帶來很大的影響柜候,主要是無論融合的結(jié)構(gòu)無論如何設(shè)計都會讓一部分信息丟失搞动。
看一個論文中舉的例子吧:
我們可以看到用戶的點擊序列是發(fā)散的,也就是用戶瀏覽的物品都是不相似的渣刷,這時候如果我們用多興趣召回的方法鹦肿,就可以自動的把用戶的多點興趣建模出來,然后分別去檢索出每個興趣點的物品辅柴。
基于以上的背景介紹和分析箩溃,我們直接就來開始介紹這篇論文吧。
二 碌嘀、Comirec模型
模型的總體結(jié)構(gòu)如下:
這篇文章主要采用了兩種方法來建模用戶的多興趣涣旨,分別是動態(tài)路由算法還有self-attention算法。
我們先來看看一些概念吧:
2.1?Dynamic Routing
動態(tài)路由算法我們在mind那篇文章里面已經(jīng)講過了股冗,今天進(jìn)不打算詳細(xì)介紹來霹陡,主要講一下大體的公式。
其中W是映射矩陣止状,ei是序列中item i的embedding向量
其中:
而這里是每次動態(tài)改變的烹棉,初始化為全0。
最后我們得到用戶的興趣向量:
直接看算法的流程更好:
這個跟我們之前介紹mind的方法基本一樣,除了對bij的初始化不一樣,mind是用正態(tài)分布去初始化的稿湿。
這里K跟mind也不一樣,mind中是動態(tài)的伏社,而這里是超參數(shù)抠刺。
2.2?Self-Attentive Method
這個就更簡單,selft-attention嘛洛口,只要熟悉transformer的都知道矫付,但是這里又不是trm中的self-attention方法凯沪,相比還更為簡單:
其中H是n??d第焰,n是序列的長度,也就是序列中的embedding的堆疊妨马。
這里挺举,為了弄出K個興趣向量,把上式改成:
Vu就建模到了K個興趣向量了烘跺。
比起上面的動態(tài)路由算法更為簡單了湘纵。
3.3?Model Training
這部分沒啥好說的咯,還是一樣的負(fù)采樣+交叉熵/極大似然:
serving就跟傳統(tǒng)的knn一樣就行滤淳,faiss直接存儲item 向量梧喷,然后動態(tài)生成K個user的興趣向量去檢索,有點多路召回+粗排的意思脖咐。
2.3 Aggregation Module
論文為了表現(xiàn)推薦的精準(zhǔn)性和多樣性的平衡铺敌,引入了一個方法,我直接貼公式了屁擅,因為這部分我不是很贊同:
具體的過程如下:
其中N是每個興趣向量去檢索的item個數(shù)偿凭,M表示這K*N個物品,一共檢索出K*N個item派歌,這時候我們從這K*N個item中去選出top-N個物品弯囊,為了保持精確性和多樣性的平衡,我們使用:使用一個值函數(shù)Q(u,S)通過可控因子來「平衡推薦的準(zhǔn)確性和多樣性」胶果。
其中g(shù)(i,j)是一個多樣性或差異性的函數(shù):
其中CATE(i)表示物品 i的類別匾嘱,?是一個指示函數(shù)。
如果想要最大的準(zhǔn)確率早抠,那么可以令?霎烙,如果想要最大的多樣性,可以令?
贝或。文章提出了一個「貪心推理算法」來近似最大化值函數(shù)?:
其實這部分的內(nèi)容我是不贊同的吼过,因為這相當(dāng)于把多路召回+排序的任務(wù)給干了,一般情況下咪奖,整個推薦系統(tǒng)都有很多路召回盗忱,每路召回都各司其職就好了,也就是說每一路召回盡量不同質(zhì)化羊赵,只需要在自己這條路上進(jìn)行精益求精的工作趟佃,也就是說讓模型的精確性提升就好了扇谣,而多樣性指標(biāo)讓排序去解決就好了。
再者闲昭,假如召回把排序的事情做好了罐寨,那么即使召回把多樣性搞的特別好,但是我覺得效果也不會很好序矩,因為其他路召回也可以補(bǔ)充這些多樣性鸯绿,而且排序模型也會進(jìn)行重新排序跟混排的,所以這個部分我覺得有點多此一舉了簸淀。瓶蝴。
三、實驗
這篇文章就介紹到這里了租幕,其實有一些關(guān)于膠囊網(wǎng)絡(luò)為什么可以將用戶興趣切分的這么細(xì)致舷手,我還是有點沒理解清晰的,我理解的是一個動態(tài)k-means的過程劲绪,但是又說不出來這個感覺男窟,等我后面在看看這個,歡迎私信交流這個問題贾富。