深度推薦系統-學習筆記【傳統模型+深度學習典型模型】
王喆-深度推薦系統
(Amazon外鏈待修復)
傳統推薦模型
衡量相關性:
-
向量相關性: 歸一化 cos 相似度
-
person 相關性係數:
- 衡量的是線性相關性,儘管r=0,只能證明沒有線性相關性,其他的並不知道,如果是獨立的話,那麼就無任何關係
-
引入物品平均分來降低物品評分bias對結果的影響 P17
CF (協同過濾)
UserCF
公式: \(R_{u,p}=\frac{\sum_{s\in U}{(W_{u,s}\times R_{s,p})}}{\sum_{s \in U} {W_{u,s}}}\) , \(W^{U*U}\) 是 user 相似度矩陣
- 假設:相同的使用者具有相同的興趣愛好
- 缺點:技術角度
- 網際網路使用者數 遠大於 物品數量,為了維護相似度矩陣需要很大的儲存開銷,\(O(n^2) 增加\)
- 互動稀疏,對於低頻交易場景,正反饋難以獲得的場景(貴重物品,酒店預定等)或者對於很大的商品集合,找到具有相同購買物品的使用者不容易
ItemCF
公式:\(R_{u,p}=\sum_{h\in H}({W_{h,p}\times R_{u,h})}\), 其中 \(H\) 是使用者已經購買的list, \(W^{N*N}\) 物品相似度矩陣
- 缺點:
-
推薦結果的頭部效應明顯(熱門商品和其他的物品都有很高的相似度),處理稀疏向量的能力弱。 共現矩陣是 one-hot 形式
A 1 0 0
B 0 1 1
C 1 1 1
C是熱門商品,導致和A、B的相似性很高,而 AB 完全不相似
-
UserCF 和 ItemCF 的應用場景
- UserCF 主要是對使用者的相似性進行建模,有更強的社交性,發現熱點,跟蹤熱點。發現相似人的興趣,達到擴充套件自身興趣的目的。例如:新聞推薦,相比於發現使用者對不同新聞的興趣偏好,新聞的及時性和熱點性是更重要的屬性。
- ItemCF 更適合於興趣變化較為穩定的場景。例如:購物,電影推薦。這種應用使用者在一定的時間段都是希望找到更加相同的物品。
MF (矩陣分解)
為了解決 CF 這種 使用 one-hot 向量造成的 頭部效應,稀疏向量處理能力弱,泛化能力弱
提出使用 稠密向量 來表徵 User 和 Item
公式: \(M\times N=(M\times K )* (K\times N), K\) hidden dim
- K 越大,包含的資訊越多,隱向量表示能力越強,但是泛化性越差,計算複雜度高
- 需要找到 推薦效果 和 工程的平衡點
矩陣分解的方法
-
特徵值分解,只能用於方陣 \(A=VDV^{-1}\)
-
奇異值分解 SVD \(M=U\Sigma V^T, U^{m*m}, V^{n*n}, \Sigma^{m*n}\)對角陣,從對角陣選取主元作為k個隱含特徵,就變成了 mk, kn 了
- 適用於稠密矩陣
- 推薦場景一般都是稀疏的,那麼缺失值只能補0
- 傳統的SVD複雜度 \(O(mn^2)\),複雜度過高不合適
-
梯度下降
- 最小化 \(min \sum{(r_{u,i}-p_u^Tq_i)}^2+\lambda (||q_i||^2+||p_u||^2)\) MSE+L2正則
-
消除使用者和物品的打分偏差
使用者對物品的打分可能有些固有bias,比如喜歡打高分
物品本身固有的bias,例如品質高的就容易分高
這個預測公式加入了3項偏置 μ,bu,bi , 作用如下:
- μ : 訓練集中所有記錄的評分的全域性平均數。 在不同網站中, 因為網站定位和銷售物品不同, 網站的整體評分分佈也會顯示差異。 比如有的網站中使用者就喜歡打高分, 有的網站中使用者就喜歡打低分。 而全域性平均數可以表示網站本身對使用者評分的影響。
- bu : 使用者偏差係數, 可以使用使用者 u 給出的所有評分的均值, 也可以當做訓練引數。 這一項表示了使用者的評分習慣中和物品沒有關係的那種因素。 比如有些使用者比較苛刻, 對什麼東西要求很高, 那麼他評分就會偏低, 而有些使用者比較寬容, 對什麼東西都覺得不錯, 那麼評分就偏高
- bi : 物品偏差係數, 可以使用物品 i 收到的所有評分的均值, 也可以當做訓練引數。 這一項表示了物品接受的評分中和使用者沒有關係的因素。 比如有些物品本身質量就很高, 因此獲得的評分相對比較高, 有的物品本身質量很差, 因此獲得的評分相對較低。
優缺點:
-
泛化能力強:
基於隱向量的 item, user 表示都是基於全域性的表示,有更強的泛化能力,一定程度解決了資料稀疏問題
UserCF: 評價人的相似是通過有相同的物品列表,如果沒有就沒法計算
ItemCF: 評價物品的相似是通過一個人買過不同的物品,那麼這些物品之前有相似關係,如果兩個商品沒有被一個人購買,那麼就無法評價
-
空間複雜度低,(m+n)k 級別,不是 mm, n*n 了
-
更好的擴充套件性和靈活性,學習到的都是 Embedding, 方便特徵組合
邏輯迴歸 (LR)
一般的線性迴歸模型:
\(w_0\)可以看成 b,方便程式設計可以把 b 放入到 \(W\)中一起優化,x只要對應位置置1,就是相當於 \(xw+b\)了
重點:對多種特徵建模為一個特徵向量
sigmoid: \(f(x)=\frac{e^x}{1+e^x}=\frac{1}{1+e^{-x}}\)
logist regression: \(f(x)=\frac{1}{1+e^{-(x^Tw+b)}}\)
優點:
- 數學含義,邏輯迴歸是廣義線性模型在貝努利分佈假設下的表達,貝努力分佈就是擲硬幣 0,1
- 可解釋性強:各個特徵的加權和,符合直覺。此外sigmoid輸出正好是[0,1]符合 CTR 物理意義
- 工程實現方便
- 易於並行化,梯度並行
- 模型簡單,開銷小
缺點:
- 模型簡單,表達能力不強(就是個加權就和),無法進行特徵交叉,篩選等操作,不可避免損失資訊
- 僅使用單一特徵,而不是用交叉特徵:辛普森悖論(在分組時,佔優的因素,在總評裡面效果不好,甚至相反:電影推薦例子,分組實驗(性別+視訊id),不分組(視訊id))P34
- 發展出 因子分解機 等複雜的高維模型,但是可解釋性逐漸下降了
POLY2模型-特徵交叉的開始
對所有特徵進行兩兩交叉,並且設定權重(暴力組合)
特徵交叉的方法:(人為定義)
- 內積
- 哈達瑪積
- 笛卡爾積
缺點:
- 需要計算大量的權重分數 \(O(n^2)\)
- 對於很多場景使用 one-hot 方式進行編碼,所以對於one-hot 向量進行特徵交叉,依然是十分稀疏的,訓練難以收斂
FM - 隱向量特徵交叉
這個 V 就相當於是對 原來 POLY 做了一個特徵分解,k類似的理解成 主元 個數,每個 向量 \(v_i\) 就是一個特徵向量
GNN裡面構建邊的特徵也是 \(O(N^2)\), NGNN就是用這個降低了複雜度,給每個node的出入學習兩個向量,然後就可以構造邊特徵了
優點:
-
對於稀疏的資料,也會學習一個 embedding,其實可以看做為每個特徵id學習了一個embedding,方便得到一個分數,原來的方式對於空資料完全無法計算交叉特徵分數
在高度稀疏的條件下能夠更好地挖掘資料特徵間的相關性,尤其是對於在訓練樣本中沒出現的交叉資料
-
FM在計算目標函式和在隨機梯度下降做優化學習時都可以線上性時間內完成。
缺點:
- 特徵互動只有2階,更多階不好做
- FNN 提高特徵階數
- 對於原始依然是稀疏操作,但也有好處就是記憶性好,之後有很多改進,在權重得分以及特徵表達
- NFM 特徵表示方面(不在是01,用Embedding)以及特徵交叉方面改進(一個固定長度向量表示,不是一個數)
- AFM 在權重分方面
程式碼實現和複雜度降低推倒: https://mp.weixin.qq.com/s?__biz=Mzg5NTYyMDgyNg==&mid=2247489278&idx=1&sn=f3652394955d719bf02a91ca3b179ed2&source=41#wechat_redirect
複雜度優化: \(O(k*N^2)\) → \(O(kN)\)
轉化公式如下所示,其實就是利用了2xy = (x+y)^2 – x^2 – y^2的思路。
FFM 模型
核心:引入特徵域概念,對於每個特徵在不同域都有一個表示,可以類比於多視角,即:進行特徵組合的時候,根據對方的組合域要挑選自身在對方域表達較好的向量。(有點千人千面的感覺)
E.G. 一個人可以有一個特徵,那麼也可以把人這個特徵拆分在不同的域中,例如:身高,長相,腿長等等。假如要組合(人,美妝博主),那麼使用(長相特徵+美妝特徵)就要好於(人+美妝特徵),或者組合(人,游泳成績),那麼使用(腿長/身高,游泳成績)就好於(人+游泳成績)。就是相當於把一個embedding 細化了,更獲得獲得互動。
使用方法:在做特徵交叉時,每個特徵選與對方域對應的隱向量做內積運算,得到交叉特徵的權重。
FFM 的改進 WWW21: https://mp.weixin.qq.com/s/6x2VKkAlRBEm5xFVCYInEg
缺點:
- 時間複雜度較高,\(O(k*n^2)\)
- FM,FMM僅僅是二階特徵互動,如果強行提高的話,那麼複雜度指數上升以及組合爆炸,太過暴力,缺少高階特徵互動,(GBDT)
常見面試題:
-
FFM相比FM的優缺點
- FFM 引入特徵域,模型互動效果更好,效果更好
- 引數量大,容易過擬合,需要 early stopping
- FM: 引數量 \(O(nk)\) 計算量 \(O(nk)\)
- FMM: 引數量 \(O(k*n*f)\) 計算量 \(O(k*n^2)\)
- 在實際工程應用中,需要在模型效果和工程投入之間進行權衡
-
FFM能解決少量記錄資料擬合大量引數的問題嗎?即稀疏性?
可以的,FM 就可以解決,隱向量是通過全域性學習的,不是單個樣本的共現性
-
FFM有m個特徵域,那每個位置只需要m-1個隱向量嗎
是的,自己和自己field交叉無意義,因為one-hot編碼,另外一個交叉一定是0,只需要學習 m-1 個其他field就可以。如果是2field,那麼就退化成了 FM
-
FFM和FM適用的場景?
-
特徵不止存線上性關係,需要交叉:FM和FFM都是線上性擬合的基礎上考慮了特徵的交叉項,但有些場景特徵x和目標y之間只是單純無邪的線性擬合關係,此時FM和FFM的效果和線性模型差不多。
-
大型稀疏資料集效果好。因為都是利用了共享引數(Embedding)的方法解決了用少量記錄資料擬合大量引數的問題。
-
在類別特徵比較多的時候比較適合用FM、FFM,而數值特徵(如[0.31,0.74,0.25…1.63])佔多的情況下,FM、FFM並不比SVM等經典演算法好處多少。(怪不得打微信大資料競賽時用DeepFM模型時,要對一些統計特徵進行資料分箱操作)
-
邏輯迴歸一般要資料分箱:
1.把離散特徵的類別進行分箱二次分類(比如,中國的所有城市,通過分箱劃分為縣區市地區等),可以讓模型快讀迭代
2.對於連續特徵和異常值,有很強的魯棒性,比如年齡>30是1,否則是0,如果沒有離散化,一個異常年齡資料為"年齡300歲"會給模型造成很大的困擾,分箱會降低資料的噪聲影響。分箱後的資料有很強的穩定性,比如年齡20-30作為一個箱子。不會因為30歲變成31歲,模型變化就很大。
3.邏輯迴歸屬於廣義線性模型,表達能力有限,將連續資料分箱後,進行啞變數或獨熱編碼的處理,每個特徵中的每一類別就有了權重,這樣相當於為模型引入的非線性,能夠提升模型的擬合能力。
4.將所有變數變換到相似的尺度上,稀疏向量內積運算快
注:連續值的分箱不一定是要分成離散資料,而是一種資料平滑的處理,可以幾個資料分在一起,然後取其平均值或中位數,降低資料的噪聲
-
-
特徵互動排序模型:
GBDT+LR 特徵工程模組化的開端
核心: 使用 GBDT 產生新的組合離散特徵,然後使用 LR 進行 CRT, pipline形式(不存在梯度跨模組傳遞)
【待補充學習】:
決策樹,隨機森林,GBDT,xgBoost,lightGBM
總結:
- GBDT 的特徵交叉能力提高,交叉的階數是樹深度-1,上圖就是二階特徵交叉
- GBDT 的特徵交叉能力高,是FM系列不具備的,但是並不代表 交叉能力 強,推薦效果就好,GBDT這種交叉方式丟失了大量特徵的數值資訊。
- 最重要的貢獻是:推動了推薦領域特徵工程模組化,自動化
LS-PLM - 大規模分段線性模型(Alibaba)
核心: 使用分治思想,資料分片(聚類),對於不同的聚類樣本應用不同的 邏輯迴歸。
\(\pi\) 是個softmax 函式,也就是聚類結果是個軟分類,然後乘以對應的 LR 分數。還有點像MoE哈哈哈
劃分資料(結構化先驗):
不同的人群具有聚類特性,同一類人群具有類似的廣告點選偏好
M 是超參,論文給出 \(M=12\)
優點:
-
End-to-End 的非線性學習能力,可以先通過聚類挖掘資料中的隱藏模式,可以統一使用一個大的模型,建模不同的業務場景
-
此外,模型引入 L1 正則化,使得模型權重稀疏,方便部署推理(只用非零值就可以計算了)
l1為甚可以稀疏: https://www.zhihu.com/question/37096933
稀疏的意思就是:當權重 x=0 的時候,loss 可以取得最小值。為了讓0的時候取到極值,那麼至少導數為0,或者導數異號,我們需要加入一個函式調整其原點處導數為0,而 \(|x|\)在原點處的導數不存在,有正負兩個方向,只要 \(\lambda |x|\) 中的 \(\lambda\) 調整的好(大於原函式在原點的導數值的絕對值,就可以做到異號),那麼就很容易讓原點處的導數變為0。相反:l2 正則 ,\(|x^2|\) 在原點的導數已經是0,如何調整也不行了,除非原函式就是0,這樣就矛盾了。
傳統模型彙總
深度學習推薦系統
AutoRec - 單隱層神經網路推薦模型(缺失值如何預測呢?)
屬於第一個引入神經網路,來改進 CF 模型。
idea: 直接通過模型建模,共線矩陣(包括對缺失值的預測), 推薦的最終目的就是求解 \(R_{u,p}\) 的得分是多少
AutoRec有兩種:
-
User AutoEncoder
對於user向量,直接輸入 AutoEncoder ,然後還原user,每個使用者處理一遍就得到了所有物品的打分
-
Item AutoEncoder
對於 item 向量,直接輸入 AutoEncoder ,然後還原 item, 每個物品處理一遍就得到了所有使用者與這個item的得分
優點:
- 相比User CF, Item CF 還是具有優勢,泛化能力有提高
- 一次infer就能得到一個物品對所有使用者的score,或者一個使用者對所有item的score
缺點:
- User AutoRec ,可能十分稀疏,模型難以收斂,影響效能
Deep Crossing
idea: 提出一個深度學習可以結合的推薦系統架構,解決了一下問題:
- 如何稀疏特徵對映到稠密特徵
- 如何進行特徵互動
- 如何在輸出層與優化目標達成一致
Embedding 層:對映稀疏特徵到稠密特徵,數值型一般不對映(Feature#2),FC層來實現
Stacking 層:特徵拼接層
Multiple Residula Units層:多個mlp進行特徵交叉
Scoreing 層:LR 優化目標
優點:
- 沒有任何人工設計的特徵互動模組
- 稀疏向量變成稠密向量,引入embedding想法,加快模型收斂
缺點:
- 對特徵互動較為初級,沒有更加複雜的互動,或者引入多種互動操作
- EMbedding 設計較為簡單,後續發展出來各種 Embedding 方法
NeuralCF - CF與深度學習的結合
優點:
- 把點積操作變成一個 深度網路 來擬合,不過有過擬合的風險,目前好像還是點乘用的多
- 使用不同的 特徵交叉操作,然後進行拼接增加特徵互動能力
缺點:
- 基於協同過濾,因此只有user item 特徵,缺少其他特徵的引入
- 互操作沒有進一步說明,只用了元素乘法
PNN - 加強特徵互動
idea:
PNN網路結構在傳統的DNN中增加了Product層,從而實現了特徵的交叉,在具體的實現過程中,提出了兩種Product的計算,分別為Inner Product和Outer Product。在具體的資料中,兩種Product的表現並不一致,需要根據具體的資料選擇合適的Product計算方法,相比較傳統的DNN,從實驗結果來看,效果上PNN得到了較大提升。
送入互動層之前,對 \(I_z,I_p\)都進行了\(W\)變換,成了統一維度
工程上的一個問題:
由於外積操作,直接得到一個矩陣,複雜度太高,優化過程中使用了類似 pooling 的疊加想法,這會引入特徵的不一致性,不同的特徵跨域pooling會有一些問題
https://blog.csdn.net/google19890102/article/details/122251702
優點:
- PNN 指出, 特徵Embedding 之間的特徵交叉是多樣的,不應該全部直接扔到 MLP 裡面,全部讓機器去學習
缺點:
- 對於 PNN 的外積操作,為了簡化運算複雜度,對所有特徵不加區分的進行了交叉,這會損失一些有用的資訊,之後的模型在更有效的特徵交叉方面進行探索
Wide&Deep - 記憶能力和泛化能力的綜合
大型廣義線性模型,組合了 DNN 特徵 和 直接的係數特徵
Wide部分:更像是直接向模型注入,知識,規則(記憶能力),不希望模型去學習甚至沒學到還破壞這種先驗知識。即“記憶” 歷史資料中曾共同出現過的特徵對
Deep部分:提取資料之間的隱含相關性,互動等,增加模型的泛化能力
優點:
- 抓住業務特點,融合了傳統模型的記憶能力和深度模型的泛化能力!!
- 結構並不複雜,易於實現
- 但提供了一種網路結構的設計思路,採用兩部分甚至多部分組合的形式,利用不同網路結構挖掘出不同的資訊再進行組合,可以充分利用不同網路結構的特點,一定程度上為網路結構在特徵交叉方向上的優化奠定了結構基礎。
缺點:
- wide 部分特徵過於稀疏,且是手動,需要改進
- deep 改進特徵互動不單單 concat mlp
記憶性:原始輸入對結果會有一個非常直接的改變關係(強控制),LR 就是這樣,因為模型簡單,和輸入耦合性強,但同時泛化效能不足
工程優化點:
- 需要十分仔細做 wide 部分的特徵選擇(特徵工程部分)
- 對於 wide 部分 和 deep 不分可以選擇不同的優化器進行優化,wide部分很稀疏使用 LR 專用優化器(Ftrl+L1正則), deep 不分就AdaGrad,Adam,SGD 這些就好
Cross Product Transformation: 交叉積變換,笛卡爾積,一個位置就代表一個AND條件,不是用multi-hot 模擬。 只有一個位置表示AND才可以達到非線性組合+原始線性組合,送入LR提升特徵交叉的效果
Deep&Cross (DCN) - Wide&Deep的進化
idea:改進 wide 部分,將Wide部分替換為由特殊網路結構實現的Cross,自動構造有限高階的交叉特徵,並學習對應權重,告別了繁瑣的人工叉乘
但是並不是用係數特徵來做自動高階特徵交叉,而是轉換為稠密向量,其實已經損失了wide的基本思想,cross部分只是沒有 啟用 函式的線性堆疊, 文中說為了降低複雜度
核心: wide部分公式,每次運算一次就會得到更高階
- \(+x_i\) ,每次求和都可以擴充套件一個維度
- \(X_0\) 每次引入一個階數
- 擬合的殘差,移項一下
FNN- 用FM的隱向量完成Embedding層的初始化
idea: Embedding + MLP
這裡的field 只是說,在這個 Field 內只有一個1,方便描述的。和FFM的Field 不是一個概念。
優點:
- 引入DNN對特徵進行更高階組合,減少特徵工程,能在一定程度上增強FM的學習能力,這種嘗試為後續深度推薦模型的發展提供了新的思路。
- 使用 FM 特徵初始化,加快網路學習,不然Embedding 引數量大,不好學習(過於稀疏,是全連線層)
缺點:
- 兩階段訓練模式,在應用過程中不方便,且模型能力受限於FM表徵能力的上限。
- FNN專注於高階組合特徵,但是卻沒有對低階特徵進行建模。
DeepFM - FM 代替 wide 部分,並且共享embedding
idea: deep&wide 模型的 wide 部分手工設計2階交叉,不夠靈活
- FM可以自動進行二階交叉(保留了稀疏特徵,記憶性好),這裡僅僅是共享了embedding,這樣就可以end2end
- deep&cross 是改進高階交叉,(用了稠密特徵,記憶性一般吧)
模型最後的得分就是,兩部分相加 \(sigmoid(Score_{wide}+Score_{deep})\)
NFM - FM的神經網路嘗試
idea: 對二階特徵交叉部分進行改變,利用NN多階的交叉能力(Sum Pooling 操作)
也可以看作是 deep&wide 對於 deep部分的改進,使用pooling和元素積 代替了 concat操作
缺點:
對所有特徵不加區分的進行 sum pooling,損失了資料中的一些有價值資訊,不是每一種組合都應該被同樣對待
FM 結合深度學習的優缺點:
優點:
利用深度學習對於特徵的交叉能力,設計各種交叉方法
- MLP 堆疊
- PNN,NFM 設計交叉方式
- wide&deep
缺點:
在特徵工程上面的各種交叉方式提升有限,一直處於 deep&wide結構
因此需要再模型結構方面有更多創新
- 注意力機制
- 使用者歷史行為序列建模
- 強化學習
引入注意力機制的推薦模型
AFM - 引入注意力機制的FM
idea: 改進 NFM Sum Pooling 不加區分的缺點
使用一個注意力網路學習組合特徵的重要性分數(和FM學習隱向量打分起到一樣的作用)
DIN - 引入注意力機制
idea:
- Diversity:多樣性是指使用者的興趣是廣泛的,一個使用者會對多個物品,多個領域感興趣
- Local activation:部分對應是指只有部分歷史資料與目前推薦的物品相關(如推薦零食物品就與使用者以前買過什麼裝備無關)
模型方法:
-
注意力權重計算只在相同的 field 進行計算,e.g 歷史物品id之和廣告物品id計算,店鋪同理
-
對使用者側的特徵進行了變換,沒有在item在進行,也符合邏輯,item要面向不同的使用者
-
新的啟用函式:
- Dice
怎麼想到這個形式呢,首先 p(s) 必須是(0,1)值域,所以很容易想到 sigmoid ,然後剩下的工作就是移動 sigmoid 的越變點位,使之不是在0處越變,作者採用了 標準化 的方法來決定,優點BN 的味道,但是不如BN複雜,直接計算不需要梯度更新這個值
-
對於長尾item分佈問題:
-
Mini-batch Aware Regularization
-
對於特徵出現頻率高的懲罰要小,對於特徵出現頻率低的懲罰要大
對於 One-hot, 只要統計列中1的次數就行,次數多的少懲罰,次數少的多懲罰,一個1也沒有不計算
-
-
評價指標:
背景:用AUC當評價指標,線下AUC的提升未必會帶來線上AUC的提升,原因有兩點:
- AUC反映整體樣本的排序能力,對樣本不區分使用者的計算整體樣本的AUC
- AUC的計算過程不僅包含了同一個使用者對不同item的預測,也包含了不同使用者對不同item的預測,但是線上排序時只針對同一個使用者的不同item進行預測
所以由於每個使用者的item排序是個性化的,不同使用者的排序結果不好比較,可能導致全域性AUC並不能反映真實情況,
優點:
- 在模型結構結構上面的一次創新(加權的想法並不是),使用網路來得到權重
缺點:
- 利用了歷史資料但是缺乏行為的時序特徵
問題解答:
- DIN為什麼更適用於電商場景?是否適用於短視訊或者資訊流?
人們在電商會買各種物件(包括很多不那麼感興趣但生活必需品),所以會出現這個興趣“多峰”的分佈視訊推薦也確實發現興趣多峰的現象,但關鍵問題是視訊和資訊流大家的興趣都相對穩定,所以沒有電商那麼需要attention機制。
DIEN - 加入行為序列的推薦模型
idea: 使用者的購買行為是變化的,而且在短期內具有一定的連續性,因此在CTR中應該把使用者興趣遷移考慮進去(隨時間)
模型:
- behavior layer 就是EMbedding層
- Interest Layer 主要是根據歷史事件建模使用者興趣,GRU更多的是建模行為之間的依賴關係
-
為了加強興趣感知,歷史行為序列裡面就包括確定的興趣,後一個買就是前一個興趣的結果
-
因此採用了 輔助監督 loss,對每一個時間步使用後一個商品進行正監督(分類loss)
輔助loss的引入有多個好處:1、正如作者強調的,輔助loss可以幫助GRU的隱狀態更好地表示使用者興趣。2、RNN在長序列建模場景下梯度傳播可能並不能很好的影響到序列開始部分,如果在序列的每個部分都引入一個輔助的監督訊號,則可一定程度降低優化難度。3、輔助loss可以給embedding層的學習帶來更多語義資訊,學習到item對應的更好的embedding。
輔助loss也能考慮使用 triplet 把,負取樣範圍以及策略
-
- Interest Evolving Layer 在歷史行為和需要推薦的商品之間建立興趣關聯,著重找到和推薦物品相關的興趣
缺點:
- 使用者歷史行為序列的長度,以及間隔時間沒有更多的探索,
- 加入GRU系列的序列模型會大大提升模型複雜度,需要大量的工程優化
- 超長使用者行為建模:https://zhuanlan.zhihu.com/p/336949535
- 考慮了使用者行為的時間間隔座位 Embedding concat上去,或者類似於BERT Position Embedding 的想法
- 序列劃分為 session,分而治之。短時seesion,長時seesion,然後建模
強化學習與推薦系統結合
-
強化學習的概念與推薦系統的對應
- 狀態:對應於訓練集
- 智慧體:推薦系統所有部件
- 環境:user,item
- 動作:輸出的排序列表
- 反饋:記錄的日誌
-
線上學習過程
-
模型微小更新
更新步驟:
- 先生成一個隨機新的網路
- 使用新的網路生成一個List
- 然後把新舊list 合併,push給使用者
- 根據使用者反饋,決定使用新模型還是舊模型
-
啟發:
- 使用 “重量級”靜態模型 還是 “輕量級”動態模型
- 對於推薦架構一種新的視角
深度學習模型彙總
之後的推薦系統發展:
- 阿里巴巴多模態推薦
- 多目標推薦系統
- YouTube 的基於 Session 的推薦系統
- Airbnb 的 Embedding 技術構建推薦系統
評價指標
推薦系統取樣評估指標及線上線下一致性問題: https://zhuanlan.zhihu.com/p/262877350
線下AUC提升為什麼不能帶來線上效果提升?:http://freecoder.me/2019-03-03/30845.html#more