您當前的位置:首頁 > 繪畫

ctr模型彙總

作者:由 羽刻 發表于 繪畫時間:2018-01-01

多項式模型

ctr模型彙總

引數個數n^2,xi, xj都不為0的樣本才能用來訓練wij,導致樣本稀疏訓練困難

FM

所有的二次項引數wij可以組成一個對稱陣 W,這個矩陣分解為 W=VTV,V的第 j 列便是第 j 維特徵的隱向量。

ctr模型彙總

vi是第i維特徵的隱向量,長度k<

FM(以及CO-FM,FFM)沒有考慮二次以上交叉的特徵,同時本質上是一個線性模型,沒辦法捕捉高階非線性的特徵效果。

FFM

同一個categorical特徵經過One-Hot編碼生成的數值特徵都可以放到同一個field,包括使用者性別、職業、品類偏好等。在FFM中,每一維特徵 xi,針對其它特徵的每一種field fj,都會學習一個隱向量 vi, fj。因此,隱向量不僅與特徵相關,也與field相關

假設樣本的 n 個特徵屬於 f 個field,那麼FFM的二次項有 nf個隱向量。而在FM模型中,每一維特徵的隱向量只有一個。FM可以看作FFM的特例,是把所有特徵都歸屬到一個field時的FFM模型。

ctr模型彙總

二次項引數個數nfk

FNN (Factorisation Machine supported Neural Network)

《Deep Learning over Multi-field Categorical Data》

ctr的特徵是離散,高維且稀疏的,需要embedding後才能用nn學習。該模型主要的特色是Embedding層用FM初始化,即每個特徵對應一個偏置項wi和一個k維向量vi。然後引數向量再隨著訓練不斷學習調整

假設每個field的類別特徵都只有一個1值,其餘為0值,即可進行one-hot編碼,然後做embedding,Dense RealLayer裡每個Field對應的引數就是該Field那個不為0的變數對應的FM裡的偏置項wi和k維隱向量vi。簡單說模型第一層到第二層之間其實是普通的全連線層,而為0的輸入變數對Dense RealLayer裡的隱單元值不做貢獻。

ctr模型彙總

原文隱層啟用函式是tanh

文章還提到embedding層的每個單元捕捉了對應特定field的特徵,所以具有區域性相關性,這種相關性正是深度學習擅長捕捉的。同時FM和FNN有一個差別,FM是相乘求結果,而FNN是(權重)相加求結果,但如果特徵是ambiguous(個人理解意思是特徵不是很直接的,高階的),兩者實際不會偏差太多

模型採用RBM預訓練,由於輸入層非常稀疏,每次需更新的權重少,所以計算量大大減少

SNN (Sampling-based Neural Network)

ctr模型彙總

和FNN的不同就是最底層的結構和預訓練方式。其最底層是全連線的,用RBM和DAE預訓練。預訓練的時候,因為特徵數量太多,為了減少計算量,每個field裡值為0的特徵抽取m個,沒有抽中的特徵在該次權重更新就會被完全忽略。(右圖中對應m=1的情況)

文章的實驗結果:FNN 比 SNN-DAE和SNN-RBM好,兩種SNN結果總是差不多,但都比LR FM好。

文章還指出一點,磚石型網路結構比常數型結構好,常數型又比增加型,減少型結構好

CCPM (Convolutional Click Prediction Model)

《A Convolutional Click Prediction Model》

FM只能學習特徵的二階組合,但CNN能學習更高階的組合,可學習的階數和卷積的視野相關。

本文的模型結構如下,後續文章重點講的就是卷積的特殊設計(該文公式繁多,用詞有點晦澀,不知會否理解有誤)。

ctr模型彙總

Embedding層:e1, e2…en是某特定使用者被展示的一系列廣告。如果在預測廣告是否會點選時不考慮歷史展示廣告的點選情況,則n=1。同時embedding矩陣的具體值是隨著模型訓練學出來的。Embedding矩陣為S,向量維度為d。

卷積層:卷積引數W有d*w個,即對於矩陣S,上圖每一列對應一個引數不共享的一維卷積,其視野為w,卷積共有d個,每個輸出向量維度為(n+w-1),輸出矩陣維度d*(n+w-1)。因為對於ctr預估而言,矩陣S每一列都對應特定的描述維度,所以需要分別處理,得到的輸出矩陣的每一列就都是描述廣告特定方面的特徵。(原文意思是這樣,但個人理解如果卷積不是一維的,應該能學習跨維度的特徵交叉效應)

Pooling層:flexible p-max pooling。

ctr模型彙總

L是模型總卷積層數,n是輸入序列長度,pi就是第i層的pooling引數。這樣最後一層卷積層都是輸出3個最大的元素,長度固定方便後面接全連線層。同時這個指數型的引數,一開始改變比較小,幾乎都是n,後面就減少得比較快。這樣可以防止在模型淺層的時候就損失太多資訊,眾所周知深度模型在前面幾層最好不要做得太簡單,容易損失很多資訊。文章還提到p-max pooling輸出的幾個最大的元素是保序的,可輸入時的順序一致,這點對於保留序列資訊是重要的。

啟用層:tanh

最後,

ctr模型彙總

Fij是指低i層的第j個feature map。感覺是不同輸入通道的卷積引數也不共享,對應輸出是所有輸入通道卷積的輸出的求和。

PNN (Product-based Neural Networks)

《Product-based Neural Networks for User Response Prediction》

FM是(隱向量)相乘求結果,而例如FNN等模型是(權重)相加求結果,這篇文章指出相乘對於捕捉不同field的特徵的相互關係更有效,這也是該文章模型的指導思想。另外對於CCPM,卷積只能捕捉相鄰特徵的相關性,對於遠距離的特徵相關性恐怕難以學習,其實這也是卷積用於nlp的一個經常被詬病的地方。

ctr模型彙總

論文使用了relu啟用函式

Product Layer中分為z項和p項,z項等於Embedding層的f向量,p項即交叉項,IPNN和OPNN的交叉方式不一樣。Product Layer後面接了若干全連線層和sigmoid。

IPNN(Inner Product-based Neural Network):

p項,即交叉項使用了內積g(fi, fj) = 。兩兩求內積共計N*N個(N為特徵的field個數),計算量太大,所以權重矩陣做矩陣分解近似:

ctr模型彙總

ctr模型彙總

OPNN (Outer Product-based Neural Network):

和IPNN唯一不同的是構造交叉項的方式:

ctr模型彙總

所以對於交叉項p,每個元素pij是一個N*N的矩陣,這種矩陣又有N*N個,顯然計算量太大,故又做了疊加的近似處理,把N*N個矩陣求和,最後輸出一個N*N矩陣:

ctr模型彙總

這樣子整個交叉項P就只有N*N項

本質上,如果沒有交叉項p,PNN就退化到FNN;若交叉項p使用內積,而沒有後面的幾個全連線隱層,則PNN就又退化到FM

ctr模型彙總

W&D

《Wide & Deep Learning for Recommender Systems》

文章提出兩個概念,即Memory和Generalisation

Memory:交叉特徵的線性模型的優點。能用少量的引數記住一些硬規則,只要發生過的情況都能顯式地學出來。但是沒發生過的情況學不出來,更高階的組合特徵的作用也學不出來。

Generalisation:深度模型的優點。透過表達性學習,能學習出沒發生過的item query搭配的情況。但容易過度泛化,特別是行為資料稀疏的時候,容易推薦出很多不相關的商品。畢竟dense embedding會對所有商品都做出非零預測。它只適合捕捉一些實際有用的高階特徵,對於低階特徵如果顯式學習的話,需要的引數量比淺層模型多得多,不現實。

W&D嘗試把淺層和深層模型有機結合起來,以解決上述問題。Wide部分是人工的交叉特徵接LR,Deep部分是輸入層接embedding層再接幾個全連線層。

ctr模型彙總

ctr模型彙總

φ(x)是交叉特徵。Wdeep是最後啟用層的權重。上式的意思是預測值是wide模型的結果加上deep模型的結果的sigmoid變換。

模型更具體的引數和結構如下

ctr模型彙總

DeepFM

《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》

對比Wide & Deep,DeepFM的wide部分和deep部分共享輸入層(和隨後的embedding層),不需要人工特徵,也不需要利用FM初始化,實現了端到端的模型。

對比PNN和FNN只顯性捕捉了高階特徵,DeepFM(和W&D)顯性地捕捉了高階和低階特徵,所以提高了模型效能。同時DeepFM沒有使用FM模型做初始化,embedding層是隨著模型訓練而學習得到,這樣DeepFM的效能不會受制於用來初始化的FM模型的能力

ctr模型彙總

Wide部分:上圖FM Layer,前面“+”號指輸入層(Sparse Features)整體權重求和,“*”號表示Dense Embeddings兩兩求內積。分別對應了普通FM模型的線性和二次項部分

ctr模型彙總

Deep部分就是常見的結構,Embedding層接若干全連線層

模型整體輸出為:

ctr模型彙總

模型使用的啟用函式是ReLU,文章實驗證明,DeepFM比LR, FM, FNN, PNN, W&D效果都好

Deep & Cross

《Deep & Cross Network for Ad Click Predictions》

對比D&L,Deep&Cross主要是不用手工做特徵,還有能自動構造更高階的交叉特徵,其階數等於Cross層的層數,同時使用的額外引數量不多。

ctr模型彙總

Embedding層:每個field的特徵有對應的embedding引數矩陣

ctr模型彙總

然後全部Concat

ctr模型彙總

Cross Network:交叉特徵的階數取決於層數。可證明一定階數以下的每種交叉特徵都有各自不同的權重引數,並能逼近同階數的多項式。

ctr模型彙總

輸出層:

ctr模型彙總

NFM (Neural Factorization Machines)

《Neural Factorization Machines for Sparse Predictive Analytics》

本文應該是利用深度學習框架去表達和深化FM的第一篇文章,思路也很敏銳。NFM利用了Bilinear Interaction pooling操作,對embedding層實現交叉操作,在淺層就捕捉了二次交叉特徵,方便後面的MLP學習有用的高階特徵,而常規的concat或者average操作,在淺層捕捉了太少的交叉特徵資訊,把高階交叉特徵的學習壓力全放在後續的MLP上,訓練難度較大。

NFM模型:

ctr模型彙總

f(x)是一個深度網路,具體如下

ctr模型彙總

Embedding層:很常規的做法,每個特徵對應一個各自的全連線層

Bi-Interaction層:

ctr模型彙總

上式那個操作表示向量逐項相乘,返回維度相同的向量。本質是兩兩embedding向量逐項相乘再整體相加,以捕捉二階交叉特徵。

後續是常規的MLP。

若後續沒有全連線層,且Bi-Interaction層後續的權重矩陣引數均為1,則NFM回退為FM,同時這時如果在Bi-Interaction層用dropout,則又可以視為FM的一種正則化方法,即相當於FM後面n*(n-1)項交叉項以一定機率抽樣去除一部分。如果Bi-Interaction變成concat操作則NFM回退為W&D(不過W&D的wide部分特徵是手工交叉做的)。

AFM (Attentional Factorization Machine)

《Attentional Factorization Machines:Learning theWeight of Feature Interactions via Attention Networks》

近年來感覺attention真是鋪天蓋地,文字分類,翻譯,文字匹配,QA,影象等等問題都有它的身影,然後果不其然有人把attention機制用在了ctr問題。

AFM本質就是NFM在Bi-Interaction層求和之前,加入attention機制然後再用attention score權重求和。而文章所使用的attention也是最常規的那種,用一個小型MLP去構造。

模型具體如下

ctr模型彙總

操作表示向量逐項相乘,返回維度相同的向量

ctr模型彙總

Attention機制落在Pair-wise Interaction層:

ctr模型彙總

ctr模型彙總

Attention具體形式如下,用到的是Pair-wise Interaction層自身的向量

ctr模型彙總

寫在最後:

不同於影象資料,連續稠密且具有良好的區域性相關性,CTR預估的輸入資料,一般高維,稀疏,同時離散變數居多,且特徵分屬於不同的field。所以第一,需要一個embedding層把輸入向量轉換成低緯稠密連續的變數向量,目前embedding層要麼用其他模型(ex:FM,RBM)去預訓練,要麼直接隨著模型訓練來學習。對比nlp,這也是高維稀疏離散的資料,其相關問題有相對常規且好用的embedding方法:w2v。

第二,感覺大家的思路都是在如何結合淺層和深層特徵上,同時發揮傳統模型和深度網路的優點。這樣,由於W&D模型的設計思路影響巨大,感覺其成了一個標準的base line。同時這些整體的創新大多都是組合式的,就是可以視為一些元素的有機整合,比如

FNN=FM+MLP, PNN=FM|Product, CCPM=CNN用於ctr

W&D=LR|MLP, DeepFM=FM|MLP, Deep&cross=cross|MLP, NFM=Bi-Interaction(類似FM)+MLP, AFM=Bi-Interaction+Attention+MLP

標簽: FM  特徵  模型  向量  交叉