推薦系統(tǒng)遇上深度學習(七十四)-[天貓]MIND:多興趣向量召回

本文介紹的論文是:《Multi-Interest Network with Dynamic Routing for Recommendation at Tmall》

關(guān)于召回階段的算法,以youtube DNN為代表的向量化召回方式是目前的主流算法之一,但是目前的大多數(shù)算法僅僅將用戶的興趣表示成單個的Embedding,這是不足以表征用戶多種多樣的興趣的,同時容易造成頭部效應。因此本文提出了MIND,同時生成多個表征用戶興趣的Embedding,來提升召回階段的效果,一起來學習一下。

1、背景

在天貓的推薦過程中,推薦系統(tǒng)也被拆分為召回和排序階段。

本文重點關(guān)注召回階段的算法。召回階段的目標是得到數(shù)千個跟用戶興趣緊密相關(guān)的商品候選集。在天貓場景下,用戶每天都要與成百上千的商品發(fā)生交互,用戶的興趣表現(xiàn)得多種多樣。如下圖所示,不同的用戶之間興趣不相同,同時同一個用戶也會表現(xiàn)出多樣的興趣:

因此,對于用戶興趣的建模顯得至關(guān)重要。目前召回階段主流的算法是協(xié)同過濾和向量化召回。協(xié)同過濾面臨稀疏性的問題。而向量化召回方法如youtube dnn,將用戶的興趣表示成一個固定長度的向量。

但在天貓場景下,對于用戶多樣化的興趣,一個Embedding往往是不夠的,除非這個Embedding的長度足夠大,具有足夠的表征能力。除此之外,只有一個Embedding會造成一定的頭部效應,召回的結(jié)果往往是比較熱門領(lǐng)域的商品(頭部問題),對于較為小眾領(lǐng)域的商品,召回能力不足。

解決上述問題的方法也很簡單,搞多個用戶Embedding就好了嘛,而本文要介紹的MIND,正是通過生成多個表征用戶興趣的Embedding,來提升召回階段的效果,一起來學習一下。(昨天聽了俊林老師的講座,這個方向也是他比較看好的)

2、MIND

2.1 問題概述

召回階段的目標是對于每個用戶u∈U的請求,從億級的商品池I中,選擇成百上千的符合用戶興趣的商品候選集。每條樣本可以表示成三元組(Iu,Pu,Fi),其中Iu是用戶u歷史交互過的商品集合,Pu是用戶畫像信息,比如年齡和性別,F(xiàn)i是目標商品的特征,如商品ID、商品品類ID。

那么MIND的核心任務是將用戶相關(guān)的特征轉(zhuǎn)換成一系列的用戶興趣向量:

而目標商品向量Fi也被轉(zhuǎn)換為一個Embedding:

當?shù)玫接脩艉蜕唐返南蛄勘硎局?,通過如下的score公式計算得到topN的商品候選集:

整個MIND的框架如下:

接下來,詳細介紹MIND中的各部分。

2.2 Embedding Layer

如上圖,MIND的輸入中包含三部分,用戶的畫像信息Pu、用戶歷史行為Iu和目標商品Fi。每個部分都包含部分的類別特征,類別特征會轉(zhuǎn)換為對應的embedding。對用戶畫像信息部分來說,不同的embedding最終拼接在一起。而對于用戶歷史行為Iu中的商品和目標商品Fi來說,商品ID、品牌ID、店鋪ID等轉(zhuǎn)換為embedding后會經(jīng)過avg-pooling layer來得到商品的embedding表示。

2.3 Multi-Interest Extractor Layer

接下來是最為關(guān)鍵的 Multi-Interest Extractor Layer,這里借鑒的是Hiton提出的膠囊網(wǎng)絡(luò)。有關(guān)膠囊網(wǎng)絡(luò),下面的圖可以幫助你快速理解(圖片來源于知乎:https://zhuanlan.zhihu.com/p/68897114):

可以看到,膠囊網(wǎng)絡(luò)和傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)較為類似。傳統(tǒng)神經(jīng)網(wǎng)絡(luò)輸入一堆標量,首先對這堆標量進行加權(quán)求和,然后通過非線性的激活函數(shù)得到一個標量輸出。而對膠囊網(wǎng)絡(luò)來說,這里輸入的是一堆向量,首先對這組向量進行仿射變換,然后進行加權(quán)求和,隨后通過非線性的"squash"方程進行變換,得到另一組向量的輸出。

而MIND中的Multi-Interest Extractor Layer,與膠囊網(wǎng)絡(luò)主要有兩個地方不同:

1)在膠囊網(wǎng)絡(luò)中,每一個輸入向量和輸出向量之間都有一個單獨的仿射矩陣,但是MIND中,仿射矩陣只有一個,所有向量之間共享同一個仿射矩陣。主要原因是用戶的行為數(shù)量長度不同,使用共享的仿射矩陣不僅可以減少參數(shù),同時還能對應另一處的改變,即不同用戶輸出向量的個數(shù)K是基于他歷史行為長度自適應計算的:

上面基于用戶歷史行為長度自適應計算輸出向量個數(shù)K'的策略,對于那些交互行為較少的用戶來說,可以減少這批用戶的存儲資源。

2)為了適應第一個改變,膠囊網(wǎng)絡(luò)中權(quán)重的初始化由全部設(shè)置為0變?yōu)榛谡植嫉某跏蓟?/p>

下圖是整個Multi-Interest Extractor Layer的過程:

通過Multi-Interest Extractor Layer,得到了多個用戶向量表示。接下來,每個向量與用戶畫像embedding進行拼接,經(jīng)過兩層全連接層(激活函數(shù)為Relu)得到多個用戶興趣向量表示。每個興趣向量表征用戶某一方面的興趣。

2.4 Label-aware Attention Layer

在上一步得到用戶興趣向量之后,由于不同用戶的興趣向量個數(shù)不同,通過Label-aware Attention Layer對這些向量進行加權(quán)(只應用于訓練階段),類似DIN中的做法:

而計算公式為:

上圖中的Q相當于目標商品的embedding,K和V都是用戶的興趣向量。值得注意的一點是,在softmax的時候,對得到的attention score,通過指數(shù)函數(shù)進行了一定的縮放。當p接近0時(這里應該是假設(shè)了向量的內(nèi)積大于1吧),對softmax是一種平滑作用,使得各attention score大小相近,當p>1且不斷增加時,對softmax起到的是一種sharpen作用,attention score最大那個興趣向量,在sofamax之后對應的權(quán)重越來越大,此時更類似于一種hard attention,即直接選擇attention score最大的那個向量。實驗表明hard attention收斂速度更快。

2.5 Training & Serving

在訓練階段,使用經(jīng)過Label-aware Attention Layer得到的用戶向量和目標商品embedding,計算用戶u和商品i交互的概率(這里和youtube DNN相似,后文中說也進行了采樣):

而目標函數(shù)(而非損失函數(shù))為:

而在線上應用階段,只需要計算用戶的多個興趣向量,然后每個興趣向量通過最近鄰方法(如局部敏感哈希LSH)來得到最相似的候選商品集合。同時,當用戶產(chǎn)生了一個新的交互行為,MIND也是可以實時響應得到用戶新的興趣向量的。

3、實驗結(jié)果

接下來看下實驗結(jié)果。

對于離線實驗,文中使用MIND和BASE模型(如youtube DNN)等進行了對比,結(jié)果如下:

而在線上實驗時,為了進行對比,不同的召回模型都使用同樣的排序模型作為下游,并比較了一周內(nèi)不同實驗組的CTR:

可以看到,無論是線上還是線下實驗,MIND都取得了不錯的效果。

4、總結(jié)

目前召回階段,有幾個值得不錯的方向,比如MIND中的用戶興趣多Embedding拆分和基于Graph的召回,大伙不妨可以嘗試一下。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容