前言
2019年阿里團隊發(fā)表在CIKM上的論文“Multi-Interest Network with Dynamic Routing for Recommendation at Tmall”,應用膠囊網(wǎng)絡的動態(tài)路由算法來構(gòu)建一個多興趣網(wǎng)絡MIND,是一個召回階段的模型。
(一)背景
本文是在召回階段的工作,來滿足用戶興趣的物品的有效檢索。建立「用戶興趣模型」和「尋找用戶興趣表示」是非常重要的,但由于「用戶的興趣存在著多樣性」并不是一件容易的事。
現(xiàn)有的一些用戶興趣表示方法:
1.基于協(xié)同過濾的方法通過歷史交互物品或隱藏因子來表示用戶興趣:會遇到稀疏和計算問題。
2.基于深度學習的方法用低維Embedding向量表示用戶興趣:
作者認為這是多興趣表達的一個瓶頸,因為必須壓縮所有與用戶多興趣相關(guān)的信息到一個表示向量,所以關(guān)于用戶多興趣的所有信息是混合在一起的,導致召回階段物品檢測不準確。
3.DIN在Embedding的基礎(chǔ)上加入Attention機智:但采用attention機制對于每個目標物品,都需要重新計算用戶表示,因此無法使用在召回階段。
關(guān)于膠囊網(wǎng)絡:
囊間動態(tài)路由算法,Dynamic Routing膠囊算法的核心就在于此處參數(shù)b的更新方法:更新參數(shù)時,綜合考量了低層特征 與輸出膠囊特征,由于二者都是向量,當二者同向時,即二者相似度較高,當前的低層特征更能反映圖像特征,乘積為正,b權(quán)重增加,表示當前低層膠囊更被高層膠囊所“接納”;相反,當二者反向時,代表當前低層特征與輸出膠囊匹配度并不高,乘積為負,b權(quán)重減小,表示當前低層膠囊被更高層膠囊所“排斥”。通過這樣的權(quán)重更新方式建立起了低層特征與高層特征的關(guān)聯(lián),使模型更能“理解”圖像。
“膠囊”是一組聚合起來輸出整個向量的小神經(jīng)元。采用動態(tài)路由學習膠囊之間的連接權(quán)值,并利用期望最大化算法(EM)對其進行改進,克服了一些不足,獲得了更好的精度。
主要貢獻:
文章關(guān)注的是在召回階段用戶的多興趣的問題,提出了使用動態(tài)路由的多興趣網(wǎng)絡(MIND) 來學習用戶表示。
最主要的「創(chuàng)新點」是:采用膠囊網(wǎng)絡的動態(tài)路由算法來獲得用戶多興趣表示,將用戶的歷史行為聚集成多個集合內(nèi)容,每一組歷史行為進一步用于推斷對應特定興趣的用戶表示向量。這樣,對于一個特定的用戶,MIND輸出了多個表示向量,它們共同代表了用戶的不同興趣。用戶表示向量只計算一次,可用于在匹配階段從十億個尺度的物品中檢索相關(guān)物品。
(二)MIND模型

2.1MIND模型問題定義
任務目標
召回任務的目標是對于每一個用戶從十億規(guī)模的物品池檢索出包含與用戶興趣相關(guān)的上千個物品集。
模型輸入
對于模型,每個樣本的輸入可以表示為一個三元組,其中
代表與用戶
交互過的物品集,即用戶的歷史行為;
表示用戶的屬性,例如性別、年齡等;
表示為目標物品
的一些特征,例如物品id和種類id等。
核心任務
學習一個函數(shù)可以將User-Item實例(原生特征)映射為用戶興趣Embedding表達集合為用戶
的向量表示,
為embedding的維度,
表示向量數(shù)量即興趣的數(shù)量。
若=1,即其他模型(如Youtube DNN)的Embedding表示方式,物品
的Embedding函數(shù)為:
其中
,
表示一個Embedding&Pooling層。
最終結(jié)果
根據(jù)評分函數(shù)檢索得到top N個候選項:
根據(jù)評分函數(shù)檢索:即根據(jù)目標物品與用戶表示向量的內(nèi)積的最大值作為相似度依據(jù),DIN的Attention部分也是以這種方式來衡量兩者的相似度。
2.2Embedding和Pooling層
Embedding層的輸入由三部分組成,用戶屬性、用戶行為
和目標物品標簽
。每一部分都由多個id特征組成,則是一個高維的稀疏數(shù)據(jù),因此需要Embedding技術(shù)將其映射為低維密集向量。
- 對于
的id特征(年齡、性別等)是將其Embedding向量進行拼接,組成用戶屬性Embedding
;
- 目標物品
通常包含其他分類特征id(品牌id、店鋪id等) ,這些特征有利于物品的冷啟動問題,需要將所有的分類特征的Embedding向量進行平均池化,得到一個目標物品向量
;
- 對于用戶行為
由物品的Embedding向量組成「用戶行為Embedding列表」,
2.3多興趣提取層
相對于單一向量進行用戶興趣表示,作者采用多個表示向量來分別表示用戶不同的興趣。通過這個方式,在召回階段,用戶的多興趣可以分別考慮,對于興趣的每一個方面,能夠更精確的進行物品檢索。
為了學習多興趣表示,作者利用膠囊網(wǎng)絡表示學習的動態(tài)路由將用戶的歷史行為分組到多個簇中。來自一個簇的物品應該密切相關(guān),并共同代表用戶興趣的一個特定方面。
動態(tài)路由
“膠囊”是一種用一個向量表示的新型神經(jīng)元,而不是普通神經(jīng)網(wǎng)絡中使用的一個標量。基于向量的膠囊期望能夠表示一個實體的不同屬性,其中膠囊的方向表示一個屬性,膠囊的長度用于表示該屬性存在的概率。
動態(tài)路由是膠囊網(wǎng)絡中的迭代學習算法,用于學習低水平膠囊和高水平膠囊之間的路由對數(shù) (logit),來得到高水平膠囊的表示。
我們假設(shè)膠囊網(wǎng)絡有兩層,即低水平膠囊和高水平膠囊
,
表示膠囊的個數(shù)
表示每個膠囊內(nèi)的神經(jīng)元個數(shù)(向量長度)。路由對數(shù)
通過以下計算得到并進行更新:
其中
表示待學習的雙線性映射矩陣(在膠囊網(wǎng)絡的原文中稱為轉(zhuǎn)換矩陣)。
通過計算路由對數(shù),將高階膠囊的候選向量計算為所有低階膠囊的加權(quán)和:

其中

最后,應用一個非線性的“壓縮”函數(shù)來獲得一個高階膠囊的向量【膠囊網(wǎng)絡向量的模表示由膠囊所代表的實體存在的概率】

路由過程重復進行3次達到收斂。當路由結(jié)束,高階膠囊值
B2I動態(tài)路由
作者認為原始路由無法直接應用于處理用戶行為數(shù)據(jù),于是提出了行為到興趣(B2I)動態(tài)路由自適應地將用戶行為聚合到用戶的興趣表示中去。三個創(chuàng)新點:
- 共享雙向映射矩陣:一方面,用戶行為是可變長度的,從幾十個到幾百個不等,因此使用適應的雙線性映射矩陣是可推廣的。另一方面,希望興趣膠囊在同一個向量空間中,但不同的雙線性映射矩陣將興趣膠囊映射到不同的向量空間中。
其中是歷史物品
的embedding,
是興趣膠囊
的向量,雙向映射關(guān)系矩陣
是在每一對行為膠囊低階和興趣膠囊高階之間共享。
- 隨機初始化路由對數(shù)。由于利用共享雙向映射矩陣
,初始化路由對數(shù)為0將導致相同的初始的興趣膠囊,為了避免不同興趣膠囊在所有時刻都保持相同的情景,我們對矩陣通過高斯分布進行隨機采樣來初始化路由對數(shù)。類似于K-Means聚類算法。
- 動態(tài)興趣數(shù)量。不同用戶可能擁有的興趣膠囊數(shù)量不同,引入一種啟發(fā)式規(guī)則動態(tài)調(diào)整不同用戶的K值。
采用多個向量來表達 User 不同的興趣,將 User 的歷史行為分組到多個 Interest Capsules 的過程。實現(xiàn)邏輯如下:

輸入:
- User行為序列特征Embedding,
- 迭代次數(shù)
- 興趣膠囊個數(shù)
輸出:
- 興趣膠囊Embedding,
定義:
(1) 動態(tài)興趣個數(shù)
(2)低階行為向量Embedding表達:代表User的行為向量(同
)
(3)高階興趣向量Embedding表達:代表User的興趣向量(同
)
(4)行為向量與興趣向量
之間的路由logit:
(5)雙線性映射矩陣:
步驟:
(1) 計算興趣Embedding個數(shù)
(2)初始化(使用正態(tài)分布初始化)
(3)遍歷迭代次數(shù)
(3.1)對所有的行為路由
,計算
(3.2)對所有的興趣路由
,計算
和
(3.3)迭代更新
其中
是一個共享矩陣
2.4標簽意識的注意力層
通過多興趣提取層,多個興趣膠囊從用戶行為embedding建立。在訓練期間,我們設(shè)計一個標簽意識注意力層:讓標簽(目標)物品選擇使用過的興趣膠囊。特別的,對于每一個標簽物品,計算興趣膠囊和標簽物品embedding之間的相似性,并且計算興趣膠囊的權(quán)重和作為目標物品的用戶表示向量,通過相應的兼容性確定一個興趣膠囊的權(quán)重。

2.5訓練與服務
訓練
得到用戶向量和標簽物品embedding
后,計算用戶
和標簽物品
交互的概率:
