CTR預估模型演變及學習筆記

【說在前面】本人博客新手一枚,象牙塔的老白,職業場的小白。如下內容僅爲我的看法,歡迎批評指正,不喜勿噴![握手][握手]html

【再囉嗦一下】若是你對智能推薦感興趣,歡迎先瀏覽個人另外一篇隨筆:智能推薦算法演變及學習筆記python

【最後再說一下】本文只對智能推薦算法中的CTR預估模型演變進行具體介紹!面試

1、傳統CTR預估模型演變

1. LR

即邏輯迴歸。LR模型先求得各特徵的加權和,再添加sigmoid函數。算法

  • 使用各特徵的加權和,是爲了考慮不一樣特徵的重要程度
  • 使用sigmoid函數,是爲了將值映射到 [0, 1] 區間

LR模型的優勢在於:數據庫

  • 易於並行化、模型簡單、訓練開銷小
  • 可解釋性強、可拓展性強

LR模型的缺點在於:網絡

  • 只使用單一特徵,沒法利用高維信息,表達能力有限
  • 特徵工程須要耗費大量的精力

2. POLY2

POLY2對全部特徵進行「暴力」組合(即兩兩交叉),並對全部的特徵組合賦予了權重。架構

必定程度上解決了LR缺少特徵組合的問題,可是「暴力行爲」帶來了一些問題:機器學習

  • 特徵維度爆炸,特徵數據過於稀疏,特徵權重不易收斂

3. FM

相比於POLY2,FM爲每一個特徵學習了一個隱權重向量 w。在特徵交叉時,使用兩個特徵隱向量w的內積做爲交叉特徵的權重。ide

將原先n^2級別的權重數量下降到n*k(k爲隱向量w的維度,n>>k),極大下降了訓練開銷。函數

4. FFM

在FM模型基礎上,FFM模型引入了Field-aware。在特徵交叉時,使用特徵在對方特徵域上的隱向量內積做爲交叉特徵的權重。

FFM模型的權重數量共n*k*f個,計算複雜度上升到k*n^2,遠遠大於FM模型的k*n。

5. GBDT/xgboost/lightgbm

直接使用機器學習算法中的集成學習方法。

6. GBDT+LR/FM/FFM

利用GBDT自動進行特徵篩選和組合,進而生成新的離散特徵向量,再把該特徵向量看成LR模型的輸入。

7. MLR

在LR的基礎上採用分而治之的思路,先對樣本進行分片,再在樣本分片中應用LR進行CTR預估。

 

以上1-7部分能夠總結爲傳統的CTR預估模型演變,這裏分享一下大佬的關係圖譜:

2、引入深度學習的CTR預估模型演變

1. Deep Crossing

經過加入embedding層將稀疏特徵轉化爲低維稠密特徵,用stacking層鏈接分段的特徵向量,再經過多層神經網絡完成特徵組合/轉換。

跟經典DNN有所不一樣的是,Deep crossing採用的multilayer perceptron是由殘差網絡組成的。

2. FNN

相比於Deep Crossing,FNN使用FM的隱層向量做爲user和item的Embedding,從而避免了徹底從隨機狀態訓練Embedding。

3. Wide & Deep

把單輸入層的Wide部分和通過多層感知機的Deep部分鏈接起來,一塊兒輸入最終的輸出層。

  • wide部分:高維特徵+特徵組合的LR
  • deep部分:deep learning

4. DeepFM

DeepFM對Wide & Deep的改進之處在於,用FM替換掉了原來的Wide部分,增強了淺層網絡部分特徵組合的能力。

5. Deep & Cross (DCN)

使用Cross網絡替代了原來的Wide部分。Cross網絡使用多層cross layer對輸入向量進行特徵交叉,增長特徵之間的交互。

6. NFM

相對於DeepFM和DCN對於Wide&Deep Wide部分的改進,NFM能夠看做是對Deep部分的改進。

NFM用一個帶Bi-interaction Pooling層的DNN替換了FM的特徵交叉部分。

 

7. Deep Interest Network (DIN)

在模型的embedding layer和concatenate layer之間加入了attention unit,使模型可以根據候選商品的不一樣,調整不一樣特徵的權重。

以上1-7部分能夠總結爲引入深度學習的CTR預估模型演變,這裏分享一下大佬的關係圖譜:

3、深度學習推薦模型的上線問題

對於深度學習推薦模型的離線訓練天然不是問題,通常能夠採用比較成熟的離線並行訓練環境。

對於深度學習推薦模型的上線問題,其線上時效性相當重要。

1. 「特徵實時性」

這裏分享一下大佬畫的智能推薦系統主流技術架構圖,博主認知有限,就不展開介紹了。

2. 「模型實時性」

與「特徵實時性」相比,推薦系統模型的實時性每每是從更全局的角度考慮問題,博主認知有限,就不展開介紹了。

 

3. 「服務實時性」:雙塔模型

不少公司採用「複雜網絡離線訓練,生成embedding存入內存數據庫,線上實現LR或淺層NN等輕量級模型擬合優化目標」的上線方式。

以百度的雙塔模型舉例說明:

(1)分別用複雜網絡對「用戶特徵」和「廣告特徵」進行embedding,這就造成了兩個獨立的「塔」,所以稱爲雙塔模型。

(2)在完成雙塔模型的訓練後,能夠把最終的用戶embedding和廣告embedding存入內存數據庫。

(3)線上推理時,只須要實現最後一層的邏輯,從內存數據庫中取出用戶/廣告的embedding,經過簡單計算便可獲得預估結果。

最後感嘆一句,深度學習CTR模型的發展實在是太迅速了,不少新模型就不繼續介紹了,要保持學習啊!

 

【更新】介紹比較新的一些深度學習推薦模型改進方向:

  • 引入用戶行爲序列建模(例如TDM/TransRec等)
    • 將用戶歷史行爲看作一個無序集合,對全部embedding取sum、max和各類attention等
    • 將用戶歷史行爲看作一個時間序列,採用RNN/LSTN/GRU等建模
    • 抽取/聚類出用戶的多峯興趣,方法有Capsule等(阿里MIND提出)
    • 根據業務場景的特殊需求,採用其餘方法
  • 引入NLP領域知識建模(例如Transformer/BERT等)
  • 多目標優化/多任務學習(例如阿里ESMM/Google MMoE等)
  • 多模態信息融合
  • 長期/短時間興趣分離(例如SDM等)
  • 結合深度強化學習(例如YouTube推薦/今日頭條廣告推薦DEAR等)
  • 圖神經網絡的預訓練(即引入遷移學習的思路)
  • ......

 

本文參考了大佬的知乎專欄:https://zhuanlan.zhihu.com/p/51117616

若是你對智能推薦感興趣,歡迎先瀏覽個人另外一篇隨筆:智能推薦算法演變及學習筆記

若是您對數據挖掘感興趣,歡迎瀏覽個人另外一篇博客:數據挖掘比賽/項目全流程介紹

若是您對人工智能算法感興趣,歡迎瀏覽個人另外一篇博客:人工智能新手入門學習路線和學習資源合集(含AI綜述/python/機器學習/深度學習/tensorflow)

若是你是計算機專業的應屆畢業生,歡迎瀏覽個人另一篇博客:若是你是一個計算機領域的應屆生,你如何準備求職面試?

若是你是計算機專業的本科生,歡迎瀏覽個人另一篇博客:若是你是一個計算機領域的本科生,你能夠選擇學習什麼?

若是你是計算機專業的研究生,歡迎瀏覽個人另一篇博客:若是你是一個計算機領域的研究生,你能夠選擇學習什麼?

若是你對金融科技感興趣,歡迎瀏覽個人另外一篇博客:若是你想了解金融科技,不妨先了解金融科技有哪些可能?

以後博主將持續分享各大算法的學習思路和學習筆記:hello world: 個人博客寫做思路

相關文章
相關標籤/搜索