GBDT+LR
- 1. AutoRec-2015
- 2. Deep Crossing-2016
- 3. NeuralCF-2016
- 4. PNN-2016
- 5. Wide&Deep-2016
- 6. Deep&Cross-2017
- 7.FM+深度學習
- 7.1 FNN-2016
- 7.2 DeepFM-2017
- 7.3 NFM-2017
《深度學習/推薦系統》讀書筆記
2016年開始,推薦系統和計算廣告全面進入深度學習時代。
(太多的模型,一搞就混了,沒意思。)
圍繞:特征如何更好的交叉,發現新的特征
以下方案基本囊括了特征工程的所有思路,(僅從特征工程的角度出發)模型進一步提升的空間非常小了,這也是這類模型的局限性所在。
1. AutoRec-2015
(澳大利亞國立大學)
核心思想:利用自編碼器重構用戶對物品的評分向量,再利用對物品評分的預估進行推薦排序。
自編碼器:使輸出向量與輸入向量盡可能接近,可以用來做數據壓縮和降維。
數據壓縮和降維說的是,自編碼器的參數數量要遠小于輸入向量的維度
AutoRec-用一個三成神經網絡構建自編碼器,輸出層與輸入層具有相同維度。
若輸入向量為rir^iri,重建函數為h(ri,θ)h(r^i,\theta)h(ri,θ),AutoRec目標函數為
min?θ∑i=1n∣∣ri?h(ri,θ)∣∣2+λ2∣∣θ∣∣2\min_\theta\sum_{i=1}^n||r^i-h(r^i,\theta)||^2+\frac{\lambda}{2}||\theta||^2θmin?i=1∑n?∣∣ri?h(ri,θ)∣∣2+2λ?∣∣θ∣∣2
Item Based AutoRec–物品評分向量–共現矩陣的列向量
User Based AutoRec–用戶評分向量–共現矩陣的行向量
優點:三層自編碼器簡單
缺點:表達能力不足
2. Deep Crossing-2016
(微軟)
Deep Crossing 模型的應用場景-Bing中搜索廣告推薦場景。用戶在搜索引擎中輸入搜索詞后,引擎出了會返回相關的結果,還會返回相關的廣告。這是大多數搜索引擎的盈利模式。準確地預測關稿的點擊率,并以此作為關稿排序指標之一,是非常重要的工作。
某條廣告預測點擊率可能用到的特征:搜索詞,廣告關鍵詞,標題,落地頁(不懂),匹配類型,歷史點擊率,另一個CTR模型預估的點擊率,廣告投放計劃,曝光/點擊樣例(不懂)
Deep Crossing 主要包括4層,用來解決-原始特征稀疏、特征自動交叉、輸出層特征優化三個問題。
- Embedding-全連接聚合稀疏特征(第四章詳細討論Embedding技術)類別特征-onehot 編碼,數值型特征都不需要Embedding.
- Stack層-直接拼接不同類型Embedding特征
- Multiple Residual Units層 – 殘差網絡實現特征各個維度的充分交叉
- Scoring層 – 邏輯回歸預測CTR
3. NeuralCF-2016
(新加坡國立大學)
NeuralCF - 廣義矩陣分解模型-將矩陣分解后的用戶向量和物品向量 通過 互操作層相互作用后 得出用戶對物品的評分。
- 互操作1–原始矩陣分解,使用內積,太簡單,模型擬合能力不足。
- 互操作2–用戶向量和物品向量拼接后輸入全連接網絡
- 互操作3–用戶向量和物品向量(維度對齊)逐元素積
優點:靈活組合不同的 互操作層 特征,按需增加或者減少模型復雜度
局限性:基于協同過濾的思想構造,沒有更多的引入其他類型的特征。所提供的互操作就兩種,更多的方式需要后來者進行更深入的研究。
4. PNN-2016
上海交通大學–加強特征交叉能力–多組特征的之間的交叉(NeuralCF只有用戶向量和物品向量)
PNN創新點–使用了乘積層代替了Deepcross中的stack 層,就是說不同特征的Embedding向量不再是簡單的拼接,而是用Product操作進行兩兩交互。
Product層包括線形操作部分和乘積操作部分。
- 線操作部分–對embedding向量進行線形拼接
- 乘積操作部分包括:內積操作和外積操作(不同的embedding兩兩組合)
a). 內積操作–沒啥特殊
b). 外積操作–將所有特征兩兩外積矩陣疊加,形成疊加外積互操作矩陣:p=fΣfΣTp=f_{\Sigma}f^T_{\Sigma}p=fΣ?fΣT?。
疊加外積互操作矩陣的缺陷–等價于讓所有的emdedding過一個平均池化,再作內積。不在同一個向量空間的特征向量(年齡,地域)相加,會造成信息模糊。
5. Wide&Deep-2016
google–google play推薦團隊–單層Wide和多層Deep組合形成混合模型,綜合利用記憶能力和泛化能力。
記憶能力:模型直接學習并利用歷史數據中物品或者特征的“共現頻率”的能力。
強組合特征:如果點擊過A,就推薦B。協同過濾和邏輯回歸很容易發現這種聯系。例如通過加大A的特征權重,這樣就實現了對這個特征的直接記憶。
泛化能力:模型發掘稀疏甚至稀有特征與最終標簽相關性的能力。
矩陣分解比協同過濾泛化能力強,就是因為矩陣分解引入了隱向量,使得數據稀少的用戶或者物品也能生成隱向量,從而獲得有數據支撐的推薦得分。(非常典型的將全局數據傳遞到稀疏物品上,提高了泛化能力)
Wide&Deep 模型結構: 單層Wide和多層Deep的輸出拼接后直接輸入到輸出層。
(在具體特征工程和輸入層設計中,展現了Google PLay推薦團隊對業務場景的深刻理解)
- 單層Wide特征:已安裝應用(用戶歷史行為)、曝光應用(當前的待推薦應用)
- 多層Deep特征:全量特征–用戶年齡、安裝應用數量、參與會話數量、用戶人口屬性特征、設備類型、已安裝應用、曝光應用
Wide特征交叉操作–交叉積變化(解釋完反而懵了)–多個特征向量的同一維度都為1,輸出向量該維度才為1?
Deep&Wide模型的最主要共現–模型融合的魅力。
6. Deep&Cross-2017
斯坦福+google聯合-在Wide&Deep的基礎上,優化Wide部分,變為Cross網絡。
Cross網絡的目的–增加特征之間的交互力度,多層交叉層。(每一層均保留了輸入向量)
xl+1=x0xlTWl+bl+xlx_{l+1}=x_0x_l^TW_l+b_l+x_lxl+1?=x0?xlT?Wl?+bl?+xl?
7.FM+深度學習
7.1 FNN-2016
倫敦大學
改進點:DeepCross模型中embedding層的權重用FM模型訓練出的權重向量進行初始化
問題緣起:embedding層采用隨機初始化,收斂非常慢。主要原因有二
- 參數占整個網絡的比重非常大
- 輸入向量過于稀疏,只有與非零特征相連的Embedding層權重會被更新
7.2 DeepFM-2017
哈工大+華為公司
改進點:用FM代替Deep&wide中的wide,提高特征交叉能力
FM部分和Deep 部分共享稠密的embedding層。
7.3 NFM-2017
新加坡國立大學
改進點:在Deep&wide模型中的deep 部分增加了特征交叉池化層
特征交叉池化層:所有稠密embedding 兩兩數量積之后求和,輸入到后續的深層網絡中。
改進點的另一種看法:FM中的二階交叉部分采用神經網絡來擬合。