推薦系統(7)—— CTR 預估算法綜述


1、Factorization Machines(FM)

  FM主要目標是:解決大規模稀疏數據下的特征組合問題。根據paper的描述,FM有一下三個優點:

  • 可以在非常稀疏的數據中進行合理的參數估計
  • FM模型的時間復雜度是線性的
  • FM是一個通用模型,它可以用於任何特征為實值的情況

  算法原理:在一般的線性模型中,是各個特征獨立考慮的,沒有考慮到特征與特征之間的相互關系。但實際上,大量的特征之間是有關聯的。一般的線性模型為:

 

Wide & Deep、DeepFM系列算法原理與優缺點對比

 2、Field-aware Factorization Machines(FFM)

  FFM把相同性質的特征歸於同一個field。因此,隱向量不僅與特征相關,也與field相關。這也是FFM中“Field-aware”的由來。

  算法原理:設樣本一共有n nn個特征, f ff 個field,那么FFM的二次項有n f nfnf個隱向量。而在FM模型中,每一維特征的隱向量只有一個。FM可以看作FFM的特例,是把所有特征都歸屬到一個field時的FFM模型。根據FFM的field敏感特性,可以導出其模型方程。

 

 3、Google Wide&Deep(2016年)——記憶能力和泛化能力的綜合權衡

  Google Wide&Deep模型的主要思路正如其名,把單輸入層的Wide部分和經過多層感知機的Deep部分連接起來,一起輸入最終的輸出層。其中Wide部分的主要作用是讓模型具有記憶性(Memorization),單層的Wide部分善於處理大量稀疏的id類特征,便於讓模型直接“記住”用戶的大量歷史信息;Deep部分的主要作用是讓模型具有“泛化性”(Generalization),利用DNN表達能力強的特點,挖掘藏在特征后面的數據模式。最終利用LR輸出層將Wide部分和Deep部分組合起來,形成統一的模型。Wide&Deep對之后模型的影響在於——大量深度學習模型采用了兩部分甚至多部分組合的形式,利用不同網絡結構挖掘不同的信息后進行組合,充分利用和結合了不同網絡結構的特點。

  在此解釋一下Dense Embedding:矩陣乘法。是針對稀疏特征的一種降維方式,它降維的方式可以類比為一個全連接層(沒有激活函數),通過 embedding 層的權重矩陣計算來降低維度。假設:

  • feature_num : 原始特征數
  • embedding_size: embedding之后的特征數
  • [feature_num, embedding_size] 權重矩陣shape
  • [m, feature_num] 輸入矩陣shape,m為樣本數
  • [m, embedding_size] 輸出矩陣shape,m為樣本數 

4、DeepFM

  對於一個基於CTR預估的推薦系統,最重要的是學習到用戶點擊行為背后隱含的特征組合。在不同的推薦場景中,低階組合特征或者高階組合特征可能都會對最終的CTR產生影響。
  人工方式的特征工程,通常有兩個問題:一個是特征爆炸。以通常使用的Poly-2模型為例,該模型采用直接對2階特征組合建模來學習它們的權重,這種方式構造的特征數量跟特征個數乘積相關,例如:加入某類特征有1萬個可能的取值(如APP),另一類特征也有1萬個可能的取值(如用戶),那么理論上這兩個特征組合就會產生1億個可能的特征項,引起特征爆炸的問題;如果要考慮更高階的特征,如3階特征,則會引入更高的特征維度,比如第三個特征也有1萬個(如用戶最近一次下載記錄),則三個特征的組合可能產生10000億個可能的特征項,這樣高階特征基本上無法有效學習。另一個問題是大量重要的特征組合都隱藏在數據中,無法被專家識別和設計 (關於這個的一個有名的例子是啤酒和尿片的故事)。依賴人工方式進行特征設計,存在大量有效的特征組合無法被專家識別的問題。實現特征的自動組合的挖掘,就成為推薦系統技術的一個熱點研究方向,深度學習作為一種先進的非線性模型技術在特征組合挖掘方面具有很大的優勢。
  針對上述兩個問題,廣度模型和深度模型提供了不同的解決思路。

  (1)其中廣度模型包括FM/FFM等大規模低秩(Low-Rank)模型,FM/FFM通過對特征的低秩展開,為每個特征構建隱式向量,並通過隱式向量的點乘結果來建模兩個特征的組合關系實現對二階特征組合的自動學習。作為另外一種模型,Poly-2模型則直接對2階特征組合建模來學習它們的權重。FM/FFM相比於Poly-2模型,優勢為以下兩點。第一,FM/FFM模型所需要的參數個數遠少於Poly-2模型:FM/FFM模型為每個特征構建一個隱式向量,所需要的參數個數為O(km),其中k為隱式向量維度,m為特征個數;Poly-2模型為每個2階特征組合設定一個參數來表示這個2階特征組合的權重,所需要的參數個數為O(m^2)。第二,相比於Poly-2模型,FM/FFM模型能更有效地學習參數:當一個2階特征組合沒有出現在訓練集時,Poly-2模型則無法學習該特征組合的權重;但是FM/FFM卻依然可以學習,因為該特征組合的權重是由這2個特征的隱式向量點乘得到的,而這2個特征的隱式向量可以由別的特征組合學習得到。總體來說,FM/FFM是一種非常有效地對二階特征組合進行自動學習的模型
  (2)深度學習是通過神經網絡結構和非線性激活函數,自動學習特征之間復雜的組合關系。目前在APP推薦領域中比較流行的深度模型有FNN/PNN/Wide&Deep;FNN模型是用FM模型來對Embedding層進行初始化的全連接神經網絡。PNN模型則是在Embedding層和全連接層之間引入了內積/外積層,來學習特征之間的交互關系。Wide&Deep模型由谷歌提出,將LR和DNN聯合訓練,在Google Play取得了線上效果的提升。
  但目前的廣度模型和深度模型都有各自的局限。廣度模型(LR/FM/FFM)一般只能學習1階和2階特征組合;而深度模型(FNN/PNN)一般學習的是高階特征組合。在之前的舉例中可以看到無論是低階特征組合還是高階特征組合,對推薦效果都是非常重要的。Wide&Deep模型依然需要人工特征工程來為Wide模型選取輸入特征。
  DeepFM模型結合了廣度和深度模型的有點,聯合訓練FM模型和DNN模型,來同時學習低階特征組合和高階特征組合。此外,DeepFM模型的Deep component和FM component從Embedding層共享數據輸入,這樣做的好處是Embedding層的隱式向量在(殘差反向傳播)訓練時可以同時接受到Deep component和FM component的信息,從而使Embedding層的信息表達更加准確而最終提升推薦效果。DeepFM相對於現有的廣度模型、深度模型以及Wide&Deep; DeepFM模型的優勢在於:

  • DeepFM模型同時對低階特征組合和高階特征組合建模,從而能夠學習到各階特征之間的組合關系
  • DeepFM模型是一個端到端的模型,不需要任何的人工特征工程

  深度部分是一個前饋神經網絡,可以學習高階的特征組合。需要注意的是原始的輸入的數據是很多個字段的高維稀疏數據。因此引入一個embedding layer將輸入向量壓縮到低維稠密向量。embedding layer的結構如下圖所示:

embedding layer有兩個有趣的特性:

  1. 輸入數據的每個字段的特征經過embedding之后,都為k kk維(lantent vector的維度),所以embedding后的特征維度是 字 段 數 × k
  2. 在FM里得到的隱變量V現在作為了嵌入層網絡的權重,FM模型作為整個模型的一部分與其他深度學習模型一起參與整體的學習, 實現端到端的訓練。

5、PPNet  參數個性化CTR模型

  在語音識別領域中,2014年和2016年提出的LHUC算法(learning hidden unit contributions)核心思想是做說話人自適應(speaker adaptation),其中一個關鍵突破是在DNN網絡中,為每個說話人學習一個特定的隱式單位貢獻(hidden unit contributions),來提升不同說話人的語音識別效果。借鑒LHUC的思想,快手推薦團隊在精排模型上展開了嘗試。經過多次迭代優化,推薦團隊設計出一種gating機制,可以增加DNN網絡參數個性化並能夠讓模型快速收斂。快手把這種模型叫做PPNet(Parameter Personalized Net)。據快手介紹,PPNet於2019年全量上線后,顯著的提升了模型的CTR目標預估能力。

 

  PPNet的左側是目前常見的DNN網絡結構,右側是PPNet特有的模塊,包括Gate NN和只給Gate NN作為輸入的id特征。其中uid,pid,aid分別表示user id,photo id,author id。左側的所有特征的embedding會同這3個id特征的embedding拼接到一起作為所有Gate NN的輸入。

  需要注意的是,左側所有特征的embedding並不接受Gate NN的反傳梯度,這樣操作的目的是減少Gate NN對現有特征embedding收斂產生的影響。

  Gate NN的數量同左側神經網絡的層數一致,其輸出同每一層神經網絡的輸入做element-wise product來做用戶的個性化偏置。

  Gate NN是一個2層神經網絡,其中第二層網絡的激活函數是2 * sigmoid,目的是約束其輸出的每一項在[0, 2]范圍內,並且默認值為1。當Gate NN輸出是默認值時,PPNet同左側部分網絡是等價的。

  通過Gate NN為神經網絡層輸入增加個性化偏置項,可以顯著提升模型的目標預估能力。PPNet通過Gate NN來支持DNN網絡參數的個性化能力,來提升目標的預估能力,理論上來講,可以用到所有基於DNN模型的預估場景,如個性化推薦,廣告,基於DNN的強化學習場景等。

6、Wide & Deep 與 deepFM 區別

  1. 兩者的DNN部分模型結構相同;
  2. wide&deep需要做特征工程,二階特征交叉需要靠特征工程來實現,通過wide部分發揮作用;
  3. DeepFM完全不需要做特征工程,直接輸入原始特征即可,二階特征交叉靠FM來實現,並且FM和DNN共享相同的embedding;

7、在CTR預估以及推薦系統等場合模型對比

  1. LR: LR最大的缺點就是無法組合特征,依賴於人工的特征組合,這也直接使得它表達能力受限,基本上只能處理線性可分或近似線性可分的問題。
  2. FM: FM通過隱向量latent vector做內積來表示組合特征,從理論上解決了低階和高階組合特征提取的問題。但是實際應用中受限於計算復雜度,一般也就只考慮到2階交叉特征。后面又進行了改進,提出了FFM,增加了Field的概念。
  3. CNN: CNN模型的缺點是:偏向於學習相鄰特征的組合特征。
  4. RNN: RNN模型的缺點是:比較適用於有序列(時序)關系的數據。
  5. FNN: 先使用預先訓練好的FM,得到隱向量,然后作為DNN的輸入來訓練模型。缺點在於:受限於FM預訓練的效果,Embedding的參數受FM的影響,不一定准確;預訓練階段增加了計算復雜度,訓練效率低; FNN只能學習到高階的組合特征。模型中沒有對低階特征建模。
  6. PNN: PNN為了捕獲高階組合特征,在embedding layer和first hidden layer之間增加了一個product layer。但是內積的計算復雜度依舊非常高,原因是:product layer的輸出是要和第一個隱藏層進行全連接的;product layer的輸出需要與第一個隱藏層全連接,導致計算復雜度居高不下;和FNN一樣,只能學習到高階的特征組合。沒有對於1階和2階特征進行建模。
  7. Wide&Deep:同時學習低階和高階組合特征,它混合了一個線性模型(Wide part)和Deep模型(Deep part)。這兩部分模型需要不同的輸入,而Wide part部分的輸入,依舊依賴人工特征工程。

  但是,這些模型普遍都存在一個問題:偏向於提取低階或者高階的組合特征。不能同時提取這兩種類型的特征。 需要專業的領域知識來做特征工程。無論是FNN還是PNN,他們都有一個繞不過去的缺點:對於低階的組合特征,學習到的比較少。

  8、DeepFM:在Wide&Deep的基礎上進行改進,不需要預訓練FM得到隱向量,不需要人工特征工程,能同時學習低階和高階的組合特征;FM模塊和Deep模塊共享Feature Embedding部分,可以更快的訓練,以及更精確的訓練學習。

 

 

參考文獻:https://blog.csdn.net/john_xyz/article/details/78933253

https://blog.csdn.net/ISMedal/article/details/100578354

https://zhuanlan.zhihu.com/p/66928413


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM