1. 程式人生 > 實用技巧 >推薦系統一——深入理解推薦系統召回演算法(2)

推薦系統一——深入理解推薦系統召回演算法(2)

緊接上文:
推薦系統一——深入理解推薦系統召回演算法(1)

四、基於FM模型召回

FM是Steffen Rendle在2010年提出的,FM演算法的核心在於特徵組合,以此來減少人工參與特徵組合工作。對於FM,其優勢可分以下三點:

  1. FM能處理資料高度稀疏場景,SVM則不能;
  2. FM具有線性的計算複雜度,而SVM依賴於support vector。
  3. FM能夠在任意的實數特徵向量中生效。

在這裡插入圖片描述

FM的資料結構如下:
在這裡插入圖片描述

FM特徵資料結構:User相關、Item相關、類別相關的特徵、歷史行為資料特徵等等,最後一列可看作是User對Item評分。FM通過不同特徵的組合,生成新的含義。然而,特徵組合也隨之帶來一些問題:

  1. 特徵之間兩兩組合容易導致維度災難;
  2. 組合後的特徵未必有效,可能存在特徵冗餘現象;
  3. 組合後特徵樣本非常稀疏,如果原始樣本中不存在對應的組合,則無法學習引數,那麼該組合就顯得無效。

雖然有這些缺點,但是也並不影響FM在廣告推薦領域的地位,每個演算法都有風靡一時的過去,抱著敬畏之心的態度去學習是沒問題的。下面,來看看如何基於FM來做召回的。

4.1 具體召回過程

基於FM的召回與完全版本的FM不同,這裡會放棄 U U U I I I特徵組內部的二階互動,即沒有了age、gender、item_id、cate_id這樣的互動,僅是進行到求解隱向量階段。
在這裡插入圖片描述

摘自“推薦系統召回四模型之:全能的FM模型”
這裡是“推薦系統召回四模型之:全能的FM模型”一文中給出的極簡的FM召回模型,即不考慮上下文特徵。

第一步,對於某個使用者,我們可以把屬於這個使用者子集合的特徵,查詢離線訓練好的FM模型中這個使用者對應的特徵embedding向量(FM模型求解出的隱向量,即 v i v_i vi,其長度為 k k k,包含 k k k個描述特徵的因子),然後將這個使用者對應的 n n n個特徵embedding向量累加,形成這個使用者的興趣向量 U U U,這個向量維度和每個特徵的維度是相同的。

類似的,我們也可以把每個物品,其對應的物品子集合的特徵,查詢離線訓練好的FM模型對應的特徵embedding向量,然後將m個物品子集合的特徵embedding向量累加,形成物品向量I,這個向量維度和每個特徵的維度也是是相同的。

摘自“推薦系統召回四模型之:全能的FM模型”

第二步,對於每個使用者以及每個物品,我們可以利用步驟一中的方法,將每個使用者的興趣向量離線算好,存入線上資料庫中比如Redis(使用者ID及其對應的embedding),把物品的向量逐一離線算好,存入Faiss(Facebook開源的embedding高效匹配庫)資料庫中,進行knn索引,然後高效檢索。

第三步,當用戶登陸或者重新整理頁面時,可以根據使用者ID取出其對應的興趣向量embedding,然後和Faiss中儲存的物料embedding做內積計算,按照得分由高到低返回得分Top K的物料作為召回結果。

有關FM召回更加詳細的內容:https://zhuanlan.zhihu.com/p/58160982

4.2 矩陣分解和FM

在這裡插入圖片描述

可以認為FM是加了特徵的矩陣分解(MF),原來使用者和物品側都只有一個id特徵,現在使用者側加了年齡、性別、學歷等特徵,物品側加了品類、店鋪等特徵,然後進一步融入到FM模型後,它將所有的特徵轉化為embedding低維向量表達,然後使用者側的特徵和物品側特徵兩兩矩陣分解,即兩兩特徵embedding的內積,得到特徵組合的權重。

五、基於深度神經網路模型

前文講述瞭如何使用矩陣分解來學習Embedding。 矩陣分解的一些限制包括:

  • 使用附加特徵(即queryID /itemID以外的其他特徵)困難。 因此只能對訓練集中存在的使用者或item進行推薦。
  • 推薦的相關性。 正如前文所描述的那樣,傾向於向所有人推薦熱門item,尤其是在使用點積作為相似性度量時。 難以刻畫特定的使用者興趣。
    深度神經網路(DNN)模型可以解決矩陣分解的這些限制。 DNN可以輕鬆地融入query特徵和item特徵(由於網路輸入層的靈活性),這可以幫助捕獲使用者的特定興趣並提高推薦的相關性。

5.1 Softmax DNN 模型

一般而言,DNN模型是利用softmax作為最後一層的輸出,它會將問題視為多分類問題,其中:

  • 輸入是使用者query。
  • 輸出是一個概率向量,其大小等於語料庫中item的數量,代表與每個item進行互動的概率; 例如,點選或觀看視訊的可能性。

輸入層

DNN的輸入可以包括:

  • 稠密(dense)特徵(如,點選頻率、觀看時長等)
  • 稀疏(sparse)特徵(如,觀看視訊型別、地區等)

與矩陣分解方法不同,可以新增年齡或地區等附加特徵。 我們用x表示輸入向量。
在這裡插入圖片描述

模型結構

模型結構決定了模型的複雜性和表達性。 通過新增隱藏層和非線性啟用函式(例如ReLU),模型可以捕獲資料中更復雜的關係。 但是,增加引數的數量通常也會使模型更難訓練且服務成本更高。 我們將用 Ψ ( x ) ∈ R d \Psi(x)\in R^d Ψ(x)Rd表示最後一個隱藏層的輸出。

在這裡插入圖片描述

輸出層: 預測的概率分佈

該模型通過softmax層將最後一層的輸出對映到概率分佈 p ^ = h ( ψ ( x ) V T ) \hat{p}=h(\psi(x)V^T) p^=h(ψ(x)VT),其中:

  • h : R n → R n h:R^n\rightarrow R^n h:RnRn是softmax函式, h ( y ) i = e y i ∑ j e y i h(y)_i=\frac{e^{y_i}}{\sum_{j} e^{y_i}} h(y)i=jeyieyi
  • V ∈ R n × d V\in R^{n\times d} VRn×d是softmax層的權重矩陣。

softmax層將分數向量 y ∈ R n y\in R^n yRn(有時稱為logits)對映到概率分佈。
在這裡插入圖片描述

損失函式

最後,定義用以比較以下兩項的損失函式:

  • p ^ = e y i ∑ j e y i \hat{p}=\frac{e^{y_i}}{\sum_{j} e^{y_i}} p^=jeyieyi,softmax層的輸出(概率分佈)
  • p p p,groud-truth,代表使用者與之互動的item(例如,使用者點選或觀看的視訊)。 這可以表示為歸一化的muti-hot分佈(概率向量)。
    例如,可以使用交叉熵損失來比較兩個概率分佈。
    在這裡插入圖片描述
    Softmax Embedding

i t e m j item_j itemj的概率由 p j ^ = e x p ( < ψ ( x ) , V j > ) Z \hat{p_j}=\frac{exp(<\psi(x),V_j>)}{Z} pj^=Zexp(<ψ(x),Vj>) 給出,其中 Z Z Z是不依賴於 j j j的歸一化常數。
換句話說, l o g ( p j ^ ) = < ψ ( x ) , V j > − l o g ( Z ) log(\hat{p_j})=<\psi(x),V_j>-log(Z) log(pj^)=<ψ(x),Vj>log(Z),因此, i t e m j item_j itemj的對數概率是(最大為加法常數)兩個 d d d維向量的點積,可以將其解釋為query和item Embedding:

  • ψ ( x ) ∈ R D \psi(x) \in R^D ψ(x)RD是最後一個隱藏層的輸出。 我們稱其為query 的Embedding。
  • V j ∈ R D V_j \in R^D VjRD是將最後一個隱藏層連線到輸出 j j j的權重向量。 我們稱其為item的Embedding。

在這裡插入圖片描述

5.2 DNN和矩陣分解

在softmax模型和矩陣分解模型中,系統對於每個item學習一個Embedding向量 V V V。 我們在矩陣分解中所謂的item Embedding 矩陣KaTeX parse error: Undefined control sequence: \items at position 10: V\in R^{n\̲i̲t̲e̲m̲s̲ ̲d}是softmax層的權重矩陣。但是,使用者query Embedding是不同的。 將不再對每個query學習一個對應的query Embedding向量,而是學習從query 特徵 x x x到Embedding的對映 ψ ( x ) ∈ R D \psi(x)\in R^D ψ(x)RD。 因此,可以將此DNN模型視為矩陣分解的泛化,其中將query側替換為非線性函式 ψ ( ⋅ ) \psi(\cdot) ψ()

item特徵使用

可以將相同的想法應用於item側嗎? 也就是說,除了對每個item學習一個對應的Embedding之外,模型可以學習將item特徵對映到Embedding的非線性函式嗎? 當然可以。可以使用由兩個神經網路組成的雙塔模型:
在這裡插入圖片描述
如上圖所示,DSSM模型最早被提出是用來提升搜尋場景下文件和query匹配的問題,模型接受兩個輸入到兩個神經網路中,通過模型編碼到同一個語義向量空間。對於推薦排序場景:

  • 一種神經網路將qeury特徵 x q u e r y x_{query} xquery對映到qeury Embedding ψ ( x q u e r y ) ∈ R D \psi(x_{query})\in R^D ψ(xquery)RD
  • 一個神經網路將item特徵 x i t e m x_{item} xitem對映到item Embedding ϕ ( x i t e m ) ∈ R D \phi(x_{item})\in R^D ϕ(xitem)RD
    模型的輸出可以定義為 < ψ ( x q u e r y ) ϕ ( x i t e m ) > <\psi(x_{query})\phi(x_{item})> <ψ(xquery)ϕ(xitem)>的點積。 請注意,這再是softmax模型。 新模型對每對 ( ψ ( x q u e r y ) , ϕ ( x i t e m ) ) (\psi(x_{query}),\phi(x_{item})) (ψ(xquery),ϕ(xitem))預測一個值,而不是每個query的概率向量。

5.3 softmax訓練

前文解釋瞭如何將softmax層合併到推薦系統的深度神經網路中。 下面介紹如何利用訓練資料對模型引數進行求解。

訓練資料

訓練資料由query特徵 [公式] 和與使用者進行互動的item向量組成(表示為概率分佈 [公式] )。在下圖中,標記為藍色。 模型的變數是不同層中的權重。 在下圖中,標記為橙色。 通常使用隨機梯度下降相關方法來訓練模型。
在這裡插入圖片描述

六、更多召回模型

Youtube DNN召回:YouTube在2016年發表的論文《Deep Neural Networks for YouTube Recommendations》為背景進行YouTube的深度神經網路推薦模型的介紹。YouTube的dnn matching召回,將使用者和context特徵輸入DNN,用隱含層最後一層作為向量表示,用Softmax每個item對應的引數作為item的向量表示,通過內積最大索引得到top k

論文地址:Deep Neural Networks for YouTube Recommendations

DSSM語義召回:DSSM模型是微軟2013年發表的一個關於query/ doc的相似度計算模型,後來發展成為一種所謂”雙塔“的框架廣泛應用於廣告、推薦等領域的召回和排序問題中。

論文地址:Learning Deep Structured Semantic Models for Web Search using Clickthrough Data

RNN序列召回:基於使用者session中的點選序列進行建模召回有很多種方式,其中使用RNN深度網路結構來刻畫是其中比較有代表性的一種。相應的網路結構其實很簡單,如下圖所示。使用使用者session中的點選序列作為模型輸入,輸出則為使用者下次點選的item相應的得分。

論文地址:Session-based recommendations with recurrent neural networks

TDM深度樹匹配召回:TDM模型是阿里巴巴於2018年提出的新一代深度召回模型,試圖通過結合樹結構搜尋與深度學習模型來解決召回的高效能需求與使用複雜模型進行全域性搜尋與之間的平衡。它將召回問題轉化為層級化分類問題,藉助樹的層級檢索可以將時間複雜度降到對數級。即認為使用者對某節點的興趣是大於等於其葉子節點的,所以只需在每層選出topk,且在下一層僅計算上一層選出來的節點相應子節點的興趣,對於規模為M的語料庫,只需要遍歷 2 * k * logM個分支就可以在完全二叉樹中找到topk的推薦結果。

論文地址:Learning Tree-based Deep Model for Recommender Systems

參考文獻

https://zhuanlan.zhihu.com/p/34497989
https://developers.google.cn/machine-learning/recommendation
https://zhuanlan.zhihu.com/p/58160982
https://zhuanlan.zhihu.com/p/87578318