【說在前面】本人博客新手一枚,象牙塔的老白,職業場的小白。如下內容僅爲我的看法,歡迎批評指正,不喜勿噴![握手][握手]html
【再囉嗦一下】若是你對智能推薦感興趣,歡迎先瀏覽個人另外一篇隨筆:智能推薦算法演變及學習筆記python
【最後再說一下】本文只對智能推薦算法中的CTR預估模型演變進行具體介紹!面試
即邏輯迴歸。LR模型先求得各特徵的加權和,再添加sigmoid函數。算法
LR模型的優勢在於:數據庫
LR模型的缺點在於:網絡
POLY2對全部特徵進行「暴力」組合(即兩兩交叉),並對全部的特徵組合賦予了權重。架構
必定程度上解決了LR缺少特徵組合的問題,可是「暴力行爲」帶來了一些問題:機器學習
相比於POLY2,FM爲每一個特徵學習了一個隱權重向量 w。在特徵交叉時,使用兩個特徵隱向量w的內積做爲交叉特徵的權重。ide
將原先n^2級別的權重數量下降到n*k(k爲隱向量w的維度,n>>k),極大下降了訓練開銷。函數
在FM模型基礎上,FFM模型引入了Field-aware。在特徵交叉時,使用特徵在對方特徵域上的隱向量內積做爲交叉特徵的權重。
FFM模型的權重數量共n*k*f個,計算複雜度上升到k*n^2,遠遠大於FM模型的k*n。
直接使用機器學習算法中的集成學習方法。
利用GBDT自動進行特徵篩選和組合,進而生成新的離散特徵向量,再把該特徵向量看成LR模型的輸入。
在LR的基礎上採用分而治之的思路,先對樣本進行分片,再在樣本分片中應用LR進行CTR預估。
以上1-7部分能夠總結爲傳統的CTR預估模型演變,這裏分享一下大佬的關係圖譜:
經過加入embedding層將稀疏特徵轉化爲低維稠密特徵,用stacking層鏈接分段的特徵向量,再經過多層神經網絡完成特徵組合/轉換。
跟經典DNN有所不一樣的是,Deep crossing採用的multilayer perceptron是由殘差網絡組成的。
相比於Deep Crossing,FNN使用FM的隱層向量做爲user和item的Embedding,從而避免了徹底從隨機狀態訓練Embedding。
把單輸入層的Wide部分和通過多層感知機的Deep部分鏈接起來,一塊兒輸入最終的輸出層。
DeepFM對Wide & Deep的改進之處在於,用FM替換掉了原來的Wide部分,增強了淺層網絡部分特徵組合的能力。
使用Cross網絡替代了原來的Wide部分。Cross網絡使用多層cross layer對輸入向量進行特徵交叉,增長特徵之間的交互。
相對於DeepFM和DCN對於Wide&Deep Wide部分的改進,NFM能夠看做是對Deep部分的改進。
NFM用一個帶Bi-interaction Pooling層的DNN替換了FM的特徵交叉部分。
在模型的embedding layer和concatenate layer之間加入了attention unit,使模型可以根據候選商品的不一樣,調整不一樣特徵的權重。
以上1-7部分能夠總結爲引入深度學習的CTR預估模型演變,這裏分享一下大佬的關係圖譜:
對於深度學習推薦模型的離線訓練天然不是問題,通常能夠採用比較成熟的離線並行訓練環境。
對於深度學習推薦模型的上線問題,其線上時效性相當重要。
這裏分享一下大佬畫的智能推薦系統主流技術架構圖,博主認知有限,就不展開介紹了。
與「特徵實時性」相比,推薦系統模型的實時性每每是從更全局的角度考慮問題,博主認知有限,就不展開介紹了。
不少公司採用「複雜網絡離線訓練,生成embedding存入內存數據庫,線上實現LR或淺層NN等輕量級模型擬合優化目標」的上線方式。
以百度的雙塔模型舉例說明:
(1)分別用複雜網絡對「用戶特徵」和「廣告特徵」進行embedding,這就造成了兩個獨立的「塔」,所以稱爲雙塔模型。
(2)在完成雙塔模型的訓練後,能夠把最終的用戶embedding和廣告embedding存入內存數據庫。
(3)線上推理時,只須要實現最後一層的邏輯,從內存數據庫中取出用戶/廣告的embedding,經過簡單計算便可獲得預估結果。
最後感嘆一句,深度學習CTR模型的發展實在是太迅速了,不少新模型就不繼續介紹了,要保持學習啊!
【更新】介紹比較新的一些深度學習推薦模型改進方向:
本文參考了大佬的知乎專欄:https://zhuanlan.zhihu.com/p/51117616
若是你對智能推薦感興趣,歡迎先瀏覽個人另外一篇隨筆:智能推薦算法演變及學習筆記
若是您對數據挖掘感興趣,歡迎瀏覽個人另外一篇博客:數據挖掘比賽/項目全流程介紹
若是您對人工智能算法感興趣,歡迎瀏覽個人另外一篇博客:人工智能新手入門學習路線和學習資源合集(含AI綜述/python/機器學習/深度學習/tensorflow)
若是你是計算機專業的應屆畢業生,歡迎瀏覽個人另一篇博客:若是你是一個計算機領域的應屆生,你如何準備求職面試?
若是你是計算機專業的本科生,歡迎瀏覽個人另一篇博客:若是你是一個計算機領域的本科生,你能夠選擇學習什麼?
若是你是計算機專業的研究生,歡迎瀏覽個人另一篇博客:若是你是一個計算機領域的研究生,你能夠選擇學習什麼?
若是你對金融科技感興趣,歡迎瀏覽個人另外一篇博客:若是你想了解金融科技,不妨先了解金融科技有哪些可能?
以後博主將持續分享各大算法的學習思路和學習筆記:hello world: 個人博客寫做思路