MIND算法全稱爲:Multi-Interest Network with Dynamic Routing for Recommendation at Tmall,由阿里的算法團隊開發。
1. 概括
工業界的推薦系統通常包括召回階段和排序階段。召回階段我們根據用戶的興趣從海量的商品中去檢索出用戶(User)感興趣的候選商品( Item),滿足推薦相關性和多樣性需求。目前的深度學習模型的套路是將User和Item在同一向量空間中進行Embedding表示,使用User的Embedding表示User的興趣。然而實際情況是User的興趣是多種多樣的,使用一個Embedding不足以全面的表示User的興趣信息。
該文的創新點在於:
1. 通過Mulit-Interest Extractor Layer 獲取User的多個興趣向量表達。提出了具有動態路由特點的多興趣網絡,利用Dynamic Routing以自適應地聚合User歷史行爲到User興趣表達向量中;
2. 通過Label-Aware Attention 標籤感知注意力機制,指導學習User的多興趣表達Embedding;
2. MIND模型結構
MIND模型的整體結構如下:
圖1 MIND網絡結構圖
輸入層:
User畫像特徵;
User行爲特徵,即產生行爲(歷史點擊或購買等)的Item列表和Item屬性列表;
正標籤,即User真實發生行爲(下一次點擊或購買等)的 Item ID;
Embedding層:
將ID信息映射成稠密向量,即Embedding;
Pooling層:
將行爲序列的Item和Item屬性的Embedding表達進行mean, sum或max等池化操作;
Multi-interest Extractor 層:(本文重點)
輸入:User行爲序列的Embedding Features,即 Pooling層 結果;
輸出:Interest Capsules,用戶的多興趣Embedding表達;
H layers:
多個興趣Embedding分別經過兩個全連接層,得到User最終的多個興趣Embedding表達;
Training服務:
輸入層:
H layers 結果作爲 Label-aware Attention層的Keys和Values(此時Keys=Values);
正標籤,即User真實發生行爲(下一次點擊或購買等)的 Item ID,作爲Query;
Label-aware Attention層:
對輸入的Keys和Query做內積、Softmax等操作作爲Keys的權重值w;
使用w與Values做內積,然後對應元素求和,得到一個Embedding,作爲User對當前正標籤Item的興趣分佈;
Sampled Softmax Loss層:
抽取多個負標籤,與正標籤組成 Sampled 組;
使用 tf.nn.sampled_softmax_loss 函數得到正標籤的概率;
Serving服務:
輸入層:
H layers 結果作爲 User 最終的多個興趣Embedding表達;
全集 Item 的Embedding表達;
TopN Recall:
針對User的多興趣Embedding,根據faiss或annoy在全集 Item 池中檢索,獲得User興趣Embedding所感興趣的候選Item集合;
3. MIND模型理論部分
3.1 MIND模型的問題定義
每個User-Item的實例可以使用三元組 表示,其中 表示User發生行爲的Item集合, 表示User的畫像特徵(例如:性別,年齡等), 表示目標Item的畫像特徵(例如Id, 類型Id, 品牌Id等)。
MIND模型的主要任務:
(1)學習一個函數可以將User-Item實例映射爲User的興趣Embedding表達集合:
其中: 表示Embedding的向量長度, 表示User的興趣Embedding個數。
(2)學習Item的Embedding表達:
(3)線上Serving服務檢索,獲得N個User感興趣的候選Item池:
3.2 Embedding和Pooling層
MIND模型的輸入是:User特徵 ,User行爲序列特徵 ,和label Item 。
User Embedding:User Id(例如:年齡,性別等)經過Embedding 後通過Concat 操作後作爲用戶側特徵輸入;
Item Embedding:Item Id(例如:Item Id,類型Id,品牌Id等)經過Embedding 後統一經過Pooling 層得到Item側特徵輸入;
User行爲序列特徵Embedding:多個Item Embedding&Pooling 後,得到用戶行爲序列輸入 。
3.3 Multi-Interest Extractor Layer
該層主要是採用多個向量來表達 User 不同的興趣,將 User 的歷史行爲分組到多個 Interest Capsules 的過程。實現邏輯如下:
輸入:
User行爲序列特徵Embedding, ;
迭代次數 ;
興趣膠囊個數 ;
輸出:
興趣膠囊Embedding,
定義:
(1)動態興趣個數 ;
(2)低階行爲向量Embedding表達: 代表User的行爲向量(同 );
(3)高階興趣向量Embedding表達: 代表User的興趣向量(同 );
(4)行爲向量 與興趣向量 之間的 路由logit:
(5)雙線性映射矩陣:
步驟:
(1)計算興趣Embedding個數 ;
(2)初始化 (使用正態分佈初始化);
(3)遍歷迭代次數 :
(3.1)對所有的行爲路由 ,計算 ;
(3.2)對所有的興趣路由 ,計算 ,和 ;
(3.3)迭代更新 ;
3.4 Label-aware Attention Layer
通過多興趣提取器層,對用戶行爲序列embedding 我們得到多個個興趣Capsule 表達用戶多樣的興趣分佈,不同的興趣Capsule表示用戶興趣的不同偏好。爲了評估多個興趣Capsule對目標Item 相關度及貢獻度,我們設計標籤意識的Attention 機制來衡量目標Item 選擇使用哪個興趣Capsule,具體表述見 Training服務。表達式:
其中: 是指數。
3.5 Training & Serving
訓練的目標是:使用User的Embedding ,正標籤 Item Embedding ,和隨機抽樣負標籤 Items Embedding ,使用如下公式進行計算:
損失函數:
ok,MIND的理論部分介紹到此結束,歡迎討論交流。
參考:
1. Multi-Interest Network with Dynamic Routing forRecommendation at Tmall
2. Dynamic Routing Between Capsules
3. Attention Is All You Need