1. 程式人生 > >CTR預估模型演變及學習筆記

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

【說在前面】本人部落格新手一枚,象牙塔的老白,職業場的小白。以下內容僅為個人見解,歡迎批評指正,不喜勿噴![握手][握手]

【再囉嗦一下】如果你對智慧推薦感興趣,歡迎先瀏覽我的另一篇隨筆:智慧推薦演算法演變及學習筆記

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

一、傳統CTR預估模型演變

1. LR

即邏輯迴歸。LR模型先求得各特徵的加權和,再新增sigmoid函式。

  • 使用各特徵的加權和,是為了考慮不同特徵的重要程度
  • 使用sigmoid函式,是為了將值對映到 [0, 1] 區間

LR模型的優點在於:

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

LR模型的缺點在於:

  • 只使用單一特徵,無法利用高維資訊,表達能力有限
  • 特徵工程需要耗費大量的精力

2. POLY2

POLY2對所有特徵進行“暴力”組合(即兩兩交叉),並對所有的特徵組合賦予了權重。

一定程度上解決了LR缺乏特徵組合的問題,但是“暴力行為”帶來了一些問題:

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

3. FM

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

將原先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預估模型演變,這裡分享一下大佬的關係圖譜:

二、引入深度學習的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預估模型演變,這裡分享一下大佬的關係圖譜:

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

對於深度學習推薦模型的離線訓練自然不是問題,一般可以採用比較成熟的離線並行訓練環境。

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

1. “特徵實時性”

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

2. “模型實時性”

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

 

3. “服務實時性”:雙塔模型

很多公司採用“複雜網路離線訓練,生成embedding存入記憶體資料庫,線上實現LR或淺層NN等輕量級模型擬合優化目標”的上線方式。

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

(1)分別用複雜網路對“使用者特徵”和“廣告特徵”進行embedding,這就形成了兩個獨立的“塔”,因此稱為雙塔模型。

(2)在完成雙塔模型的訓練後,可以把最終的使用者embedding和廣告embedding存入記憶體資料庫。

(3)線上推理時,只需要實現最後一層的邏輯,從記憶體資料庫中取出使用者/廣告的embedding,通過簡單計算即可得到預估結果。

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

 

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

如果你對智慧推薦感興趣,歡迎先瀏覽我的另一篇隨筆:智慧推薦演算法演變及學習筆記

如果您對資料探勘感興趣,歡迎瀏覽我的另一篇部落格:資料探勘比賽/專案全流程介紹

如果您對人工智慧演算法感興趣,歡迎瀏覽我的另一篇部落格:人工智慧新手入門學習路線和學習資源合集(含AI綜述/python/機器學習/深度學習/tensorflow)

如果你是計算機專業的應屆畢業生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的應屆生,你如何準備求職面試?

如果你是計算機專業的本科生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的本科生,你可以選擇學習什麼?

如果你是計算機專業的研究生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的研究生,你可以選擇學習什麼?

如果你對金融科技感興趣,歡迎瀏覽我的另一篇部落格:如果你想了解金融科技,不妨先了解金融科技有哪些可能?

之後博主將持續分享各大演算法的學習思路和學習筆記:hello world: 我的部落格寫作