推薦系統中召回策略

推薦系統通常分爲兩個階段,即召回階段和排序階段。召回階段主要是從全量的商品庫中獲得用戶可能感興趣的一小部分候選集,排序階段則是將召回階段獲得的候選集進行精準排序,推薦給用戶。網絡

推薦系統中幾種經常使用的召回策略。主要有協同過濾、向量化召回和阿里最近在Aicon中提到的深度樹匹配模型。架構

一、協同過濾

協同過濾主要能夠分爲基於用戶的協同過濾、 基於物品的協同過濾基於模型的協同過濾(如矩陣分解)app

1.1 基於用戶的協同過濾(userCF)

基本思想:當召回用戶A的候選集時,能夠先找到和他有類似興趣的其餘用戶,而後把那些用戶喜歡的、而用戶A未交互的物品做爲候選集。函數

1.2 基於物品的協同過濾(itemCF)

基本思想:給用戶推薦那些和他們以前喜歡的物品類似的物品。性能

主要分爲兩步:學習

(1) 計算物品之間的類似度。
(2) 根據物品的類似度和用戶的歷史行爲給用戶生成召回候選集。
spa

1.3 UserCF和ItemCF的比較
.net

1.4 協同過濾總結

  協同過濾方法經過在用戶歷史行爲裏面找類似的商品和用戶,保證了基礎的相關性。與此同時,由於只找類似的商品或類似用戶的商品,因此係統屏蔽了大規模的計算,使整個召回的過程可以高效地完成。視頻

  弊端:在召回的時候,並不能真正的面向全量商品庫來作檢索,如itemCF方法,系統只能在用戶歷史行爲看過的商品裏面找到侯選的類似商品來作召回,使得整個推薦結果的多樣性和發現性比較差。這樣作的結果就是,用戶常常抱怨:爲何總給我推薦相同的東西!blog

 

二、向量化召回

 

向量化召回,主要經過模型來學習用戶和物品的興趣向量,並經過內積來計算用戶和物品之間的類似性,從而獲得最終的候選集。其中,比較經典的模型即是Youtube召回模型。

 2.1 Youtube召回模型

論文解讀:https://www.jianshu.com/p/8fa4dcbd5588

Youtube召回模型的架構以下:

640?wx_fmt=png

 

從模型結構能夠看出,在離線訓練階段,將其視爲一個分類問題。咱們使用隱式反饋來進行學習,用戶完整觀看過一個視頻,便視做一個正例。若是將視頻庫中的每個視頻看成一個類別,那麼在時刻t,對於用戶U和上下文C,用戶會觀看視頻i的機率爲:

640?wx_fmt=png

其中,u是用戶的embedding,這個embedding,是網絡最後一個Relu激活函數的輸出,vi是視頻i的embedding。那麼問題來了,輸入時,每個視頻也有一個對應的

embedding,這個embedding是否是計算softmax的embedding呢?我的認爲是兩組不一樣的embedding,輸入層的embedding分別是用戶空間和視頻空間的向量,最終的

 

 

輸出層,兩者經過一系列全聯接層的線性變化,轉換到了同一空間,因此對於用戶和視頻來講,輸出層的embedding是同一空間,能夠認爲是興趣空間,這樣兩者的內積可

 

 

以表明類似性。

使用多分類問題的一個弊端是,咱們有百萬級別的classes,模型是很是難以訓練的,所以在實際中,Youtube並使用負樣本採樣(negative sampling)的方法,將class的數量減少。對於在線服務來講,有嚴格的性能要求,必須在幾十毫秒內返回結果。所以,youtube沒有從新跑一遍模型,而是經過保存用戶興趣embedding和視頻興趣embedding,經過最近鄰搜索的方法獲得top N的結果。該近似方法中的表明是局部敏感Hash方法。

 

2.2 局部敏感哈希(Locality-Sensitive Hashing, LSH)

 

LSH的基本思想:咱們首先對原始數據空間中的向量進行hash映射,獲得一個hash table,咱們但願,原始數據空間中的兩個相鄰向量經過相同的hash變換後,被映射到同一個桶的機率很大,而不相鄰的向量被映射到同一個桶的機率很小。所以,在召回階段,咱們即可以將全部的物品興趣向量映射到不一樣的桶內,而後將用戶興趣向量映射到桶內,此時,只須要將用戶向量跟該桶內的物品向量求內積便可。這樣計算量被大大減少。

 

關鍵的問題是,如何肯定hash-function?在LSH中,合適的hash-function須要知足下面兩個條件:
1)若是d(x,y) ≤ d1, 則h(x) = h(y)的機率至少爲p1;
2)若是d(x,y) ≥ d2, 則h(x) = h(y)的機率至多爲p2;
其中d(x,y)表示x和y之間的距離, h(x)和h(y)分別表示對x和y進行hash變換。

 

知足以上兩個條件的hash function稱爲(d1,d2,p1,p2)-sensitive。而經過一個或多個(d1,d2,p1,p2)-sensitive的hash function對原始數據集合進行hashing生成一個或多個hash table的過程稱爲Locality-sensitive Hashing。

 

2.3 向量化召回評價

 

向量化召回是目前推薦召回核心發展的一代技術,可是它對模型結構作了很大的限制,必需要求模型圍繞着用戶和向量的embedding展開,同時在頂層進行內積運算獲得類似性。在深度學習領域其實模型結構層出不窮,百花齊放,可是這樣一個特定的結構實際上對模型能力形成了很大的限制。

 

 

 

三、深度樹匹配

參考:https://blog.csdn.net/leadai/article/details/89391366

相關文章
相關標籤/搜索