推薦系統模型演化
LR-->GBDT+LR
FM-->FFM-->GBDT+FM|FFM
FTRL-->GBDT+FTRL
Wide&DeepModel (Deep learning era)
將從以下3方面進行模型分析:
1.why(模型設計背后的原理)
2.how(具體怎么設計,如何應用)
3.discussion(模型討論)
Wide&Deep
- why
Memorization 和 Generalization
假如你設計了一個外賣推薦系統gugu,用戶睡覺醒來需要點個外賣,推薦系統推薦給用戶了一個烤肉飯,用戶如果購買了就標記為1,否則為0(說明不是一個好的推薦)。點擊率預估就是衡量推薦系統的一個線下指標。
wide(memorization)
那如何對用戶合適的商品呢,我們需要記住用戶的愛好。所以,你設計了幾個相關的特征,用一個簡單的線性模型學習這些特征的權重組合,模型會預測對特定產品的點擊概率, gugu2.0上線了。一段時間后,用戶吃膩了,需要換個口味,但是模型只記住了特定的模式。對一些訓練集中未出現的組合特征,由於模型沒有見過,記憶中沒有關於這個特征的信息,導致模型單一,用戶就會不滿意。
deep(generalization)
為了推薦一些新的食物而且和用戶之前點的食物相關,但是要口味不一樣。模型需要能都捕捉到食物之間的內在聯系,普通的離散特征無法滿足這一要求,embedding引入了低維稠密向量表示離散特征的方法,相似的食物在embedding的一些維度上可能是一樣的。比如口水雞和椒麻雞,經過embedding用4個維度[雞肉,辣,麻,甜]表示
[0.52,0.23,0.312,0.002] [0.52,0.23,0.45,0.002]
使用embedding后的稠密向量,可以充分挖掘不同食物的相似性,可以做出新的合理的推薦,使用前饋神經網絡進行學習,對於沒有見過的特征,由於深度學習的泛化能力,模型也可以做出不錯的預測。但是你發現模型會過度泛化,當用戶的行為比較稀疏時,gugu會推薦一些相關性較小的食物。
wide+deep
為什么不同時進行memorization和generalization呢?Wide&Deep聯合線性模型和深度模型,利用兩個模型的優點進行聯合訓練。
- how
input
wide: 包括sparse類型的特征以及cross類型的特征等。原始輸入特征和手動交叉特征
deep: 稠密特征,包括real value類型的特征以及embedding后特征
training
wide: \(y=wx+b\)
deep: \(a^{(l+1)}=f(w^{(l)}a^{(l)}+b^{(l)})\)
joint: \(P(Y=1 | \mathbf{x})=\sigma\left(\mathbf{w}_{w i d e}^{T}[\mathbf{x}, \phi(\mathbf{x})]+\mathbf{w}_{d e e p}^{T} a_{f}^{\left(l_{f}\right)}+b\right)\)
Wide部分用FTRL+L1來訓練;Deep部分用AdaGrad來訓練。 使用BP算法采用joint train的方式訓練。
- discussion
1.利用wide和deep組合,wide手動交叉特征,deep對離散進行embedding
2.對wide部分進行改進,自動化交叉特征,DeepFM,DCN
3.embedding在線訓練得到,可否離線預訓練
4.deep部分進行改進,AFM
離散值低階vector-wise交互;連續值高階bit-wise交互
vector-wise和bit-wise文末有解釋
DeepFM
連續值離散化,低階vector-wise組合,高階bit-wise組合
DCN
- why
FM可以自動組合特征,但也僅限於二階叉乘。告別人工組合特征,並且自動學習高階的特征組合呢
\(x1x2x3\)
- how
擬合殘差
為什么work?
- discussion
-
顯示的高階特征組合,特征組合階數隨着網絡深度增加而增加
-
復雜度線性增長,相比DNN更快
-
利用最后的高階組合特征,實際高層特征組合已經包含了低層的組合,考慮單層的組合引入最后的計算
-
特征交互還是bit-wise,對模型記憶能力提升是否有幫助
-
是否真的學到了高階特征交互?輸出是輸入的標量乘積
連續值離散化,高階bit-wise組合
xDeepFm
- why
傳統特征工程缺點:
1.好的特征需要專家知識
2.大數據量下無法無法手動交叉特征
3.手動交叉特征的無法泛化
FM對所有特征組合,引入噪聲;FNN、PNN聚焦於高階特征,忽略了低階特征;
DNN學習高階特征交互,但是學習到特征交互是隱含的,bit-wise級的,那么DNN是否真的有效在高階特征處理上?CIN被設計在vector-wise級進行學習高階特征
embedding: 不同樣本的長度不同,但embedding維度是一樣的
隱式高階特征:bit-wise
顯示高階特征交互: DCN,輸出受限於和x0的交互、bit-wise
CIN(Compressed Interaction Network(CIN))
DCN沒有有效的學習到高階特征交互,輸出是x0的標量乘積
但是標量並不意味着線性!!!
- how
bit-wise到vector-wise
顯示交互
復雜度非指數級增長
取前一層的\(H_{k-1}\)的個vector,與輸入層的
個vector,進行兩兩Hadamard乘積運算,得到\(H_{k-1}*m\)個 vector,然后加權求和
第
層的不同vector區別在於,對這\(H_{k-1}*m\)個 vector 求和的權重矩陣不同。 \(H_k\)即對應有多少個不同的權重矩陣\(W^k\)
1.為什么做Hadamard積
保持維度不變,做到vector-wise級交互
2.vector-wise交互
網絡的每一層計算是以embedding向量的方式進行哈達瑪積,保持embedding的結構
3.每一層的輸出由當前輸入和隱狀態共同決定,類RNN
4.類CNN(裝飾)
sum pooling 有效性:\(p_{i}^{k}=\sum_{j=1}^{D} \mathrm{X}_{i, j}^{k}\)
當只有一層,sum pooling就是兩兩向量的內積之和,降為FM
組合
線性單元、DNN、CIN;記憶、泛化、記憶+泛化
1.CIN如何顯示的執行特征交互
2.必須組合顯示和隱式表達嗎
3.xDeepFm參數設置影響
- discussion
1.特征交叉利用稠密向量進行,是否存在一個網絡進行離散高階向量級特征交互
2.交互深度改進,殘差,全局信息觀
連續值離散化,高階bit-wise組合,CIN高階vector-wise組合
bit-wise VS vector-wise
假設隱向量的維度為3維,如果兩個特征(對應的向量分別為(a1,b1,c1)和(a2,b2,c2)的話)在進行交互時,交互的形式類似於f(w1 * a1 * a2,w2 * b1 * b2 ,w3 * c1 * c2)的話,此時我們認為特征交互是發生在元素級(bit-wise)上。如果特征交互形式類似於 f(w * (a1 * a2 ,b1 * b2,c1 * c2))的話,那么我們認為特征交互是發生在特征向量級(vector-wise)。
\(x1=(a1,b1,c1),x2=(a2,b2,c2)\)
bitwise: \(f(w1*a1*a2,w2*a2*b2,w3*a3*b3)\)
vector-wise: \(f(w(a1*a2,a2*b2,a3*b3))\)
explicitly VS implicitly
顯式的特征交互和隱式的特征交互。以兩個特征為例xi和xj,在經過一系列變換后,我們可以表示成 wij * (xi * xj)的形式,就可以認為是顯式特征交互,否則的話,是隱式的特征交互。
reference:
https://zhuanlan.zhihu.com/p/55234968
Cheng H T, Koc L, Harmsen J, et al. Wide & deep learning for recommender systems[C]//Proceedings of the 1st workshop on deep learning for recommender systems. ACM, 2016: 7-10.
Guo H, Tang R, Ye Y, et al. DeepFM: a factorization-machine based neural network for CTR prediction[J]. arXiv preprint arXiv:1703.04247, 2017.
Wang R, Fu B, Fu G, et al. Deep & cross network for ad click predictions[C]//Proceedings of the ADKDD'17. ACM, 2017: 12.
Lian J, Zhou X, Zhang F, et al. xdeepfm: Combining explicit and implicit feature interactions for recommender systems[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. ACM, 2018: 1754-1763.