几种基于神经网络的CTR预估模型
最近研究了幾篇這兩年在頂會上發表的使用神經網絡模型進行CTR預估的策略(也可以看做是目前工業界正在使用的主流方法),正好在這里總結一下。
所謂CTR預估,就是點擊轉化率的預估即click through rate,一般用在推薦廣告系統中。簡單來說,就是當用戶瀏覽網頁或者使用APP的時候,在用戶瀏覽的context中插入一些廣告(比方說一些APP的安裝鏈接、一些商品的銷售信息),如果用戶在瀏覽的過程中點擊了這些廣告,就算作是一次成功的轉化。因為考慮到了用戶的因素,因此針對不同的人不同的愛好,系統會推薦不同的廣告。如果是離線系統,一般采用AUC進行系統性能的評估;如果是在線系統,一般采用A&B Test 的方式進行系統性能的評估。
在推薦系統中,輸入樣本特征包括了數值特征(比方說瀏覽時間、身高等等)和類別特征(比方說user-id和item-id等等),為了使這些特征的形式保持一致,方便模型的訓練,一般有兩種可選方式:1 全部轉化為數值特征;2 全部轉化為類別特征,當然這就對應于兩種解決方案即“海量類別特征+簡單模型” 和“少量數值特征+復雜模型”(李沐)。 這里的簡單模型一般指的是LR,復雜模型一般指的是DNN。
如果全部轉化為類別特征,對于原始的類別特征來說往往采用one-hot的編碼方案,對于原始的數值特征來說則需要進行離散化的處理(一般采用的是等頻離散化策略,即每一個離散區間內的樣本數大致相當)。至于數值特征離散化的意義則如下所示:
1 對異常數據有很強的魯棒性。比如一個特征是年齡>30是1,否則0。如果特征沒有離散化,一個異常數據“年齡300歲”會給模型造成很大的干擾;
2 離散化后可以加強特征交叉;
3 對LR來看,能夠提升模型學習能力 。單變量離散化為N個后,每個變量有單獨的權重,相當于為模型引入了非線性;
4 較少對數值的敏感性,加強模型的魯棒性。 比如如果對用戶年齡離散化,20-30作為一個區間,不會因為一個用戶年齡長了一歲就變成一個完全不同的人。當然處于區間相鄰處的樣本會剛好相反,所以怎么劃分區間是門學問。
這種方案最大的缺點就是會導致輸入特征的稀疏性,即很多位都是0,同時還會出現有些在預測集中出現的特征組合從來沒有在訓練集中遇到過,這樣就會使模型對于這部分樣本的預測準確性大大地下降。一般業界認為這種“海量類別特征+簡單模型”的方式提取到的都是低階的特征交互信息,因為LR可以看成是單層的神經網絡。
如果全部采用數值特征,一般來說對于原始的類別特征就是使用embedding策略將其映射到一個低維的實數向量空間中去,這個向量可以隨機初始化也可以使用FM算法進行pre-training初始化。接下來通過多層神經網絡結構和非線性變換,一般業界認為這種“少數數值特征+復雜模型”的方式提取到的都是高階的特征交互信息。
基于上面的基礎知識,下面我來介紹幾篇比較不錯的論文。
首先要介紹的就是2016年Google發表的論文《Wide & Deep Learning for Recommender Systems》,他在論文就形象的把推薦系統和它最拿手的“search ranking system”進行了類比,即推薦系統中的user和context信息可以被看做是search ranking system中的query,推薦系統的輸出則可以被看做是search ranking system輸出的ranked list of items。整個模型架構如下所示:
從圖中就可以看出該模型之所以叫做Wide & Deep 模型是因為由Deep模塊和Wide模塊組成,所謂Wide模塊其實就是上面提到的“海量類別特征+LR”,Deep模塊就是“少量數值特征+DNN”(論文用實驗證明對于神經元總量相同、總層數相同的DNN網絡,100-200-300,300-200-100,150-300-150,200-200-200這四種方式中200-200-200效果是最好的)。最后整體的預測函數形式是p=sigmoid(ywide+ydeep+b)p=sigmoid(y_{wide}+y_{deep}+b)p=sigmoid(ywide?+ydeep?+b)。最后使用交叉熵作為損失函數進行聯合訓練,即同時訓練Deep模塊和Wide模塊。同時該論文著重說明了一下Joint training 和 ensemble model的本質區別:“In an ensemble, individual models are trained separately without knowing each other, and their predictions are combined only at inference time but not at training time. In contrast, joint training optimizes all parameters simultaneously by taking both the wide and deep part as well as the weights of their sum into account at training time.”
第二篇要介紹的是2017年華為諾亞方舟實驗室的在IJCAI會議發表的論文《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》,這個論文提出的模型和上述Google那篇其實是很相似的,只不過把Wide模塊的LR換成了FM(注意:該模型所提到的FM專指只利用一階和二階交互信息的線性FM即yFM=w0+∑i=1nwixi+∑i=1n∑j=i+1nviTvj.xixjy_{FM}=w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^n\sum_{j=i+1}^nv_i^Tv_j.x_ix_jyFM?=w0?+∑i=1n?wi?xi?+∑i=1n?∑j=i+1n?viT?vj?.xi?xj?)而已,同時DNN和FM共享embedding部分,結構如下所示:
同樣FM用來學習低階交互特征,DNN用來學習高階交互特征。
第三篇要介紹的是2017年在SIGIR會議上發表的論文《Neural Factorization Machines for Sparse Predictive Analytics》,提出的模型名稱為NFM。整個模型的預測公式為:yNFM(x)=w0+∑i=1Nwixi+f(x)y_{NFM}(x)=w_0+\sum_{i=1}^Nw_ix_i+f(x)yNFM?(x)=w0?+∑i=1N?wi?xi?+f(x),而f(x)代表的模型結構如下所示:
圖中的Hidden Layers就是簡單的全連接網絡結構,可以看出圖中有一個被稱之為“Bi-Interaction Pooling”的操作,這也是這篇文章最大的創新點,這個操作的定義為:fBI(x)=∑i=1n∑j=i+1nxivi?xjvjf_{BI}(x)=\sum_{i=1}^n\sum_{j=i+1}^n x_iv_i \bigodot x_jv_jfBI?(x)=∑i=1n?∑j=i+1n?xi?vi??xj?vj?。 其中?\bigodot?操作定義為兩個向量的對位相乘操作,很簡單這個fBI(x)f_{BI}(x)fBI?(x)就是直接獲得了所有向量的二階交互特征(為了方便fBIf_{BI}fBI?的計算,一般按照12(∑inxivi)2?∑in(xivi)2\frac{1}{2} (\sum_i^nx_iv_i)^2-\sum_i^n(x_iv_i)^221?(∑in?xi?vi?)2?∑in?(xi?vi?)2)。在經過多層的神經網絡之后對輸出神經元向量乘上h得到一個數值概率,即f(x)=hT.DNN(fBI(x))f(x)=h^T.DNN(f_{BI}(x))f(x)=hT.DNN(fBI?(x))。那么顯而易見yNFM(x)=w0+∑i=1Nwixi+hT.DNN(fBI(x))y_{NFM}(x)=w_0+\sum_{i=1}^Nw_ix_i+h^T.DNN(f_{BI}(x))yNFM?(x)=w0?+∑i=1N?wi?xi?+hT.DNN(fBI?(x))。其實不難看出,當“Bi-Interaction Pooling”操作后的神經網絡只有一層而且h向量為全1向量的時候,這個fBI(x)f_{BI}(x)fBI?(x)就相當于簡單的FM模型。下面這段話是作者提出這個“Bi-Interaction Pooling”操作的主要原因:“In this work, we present a new paradigm of neural networks for sparse data prediction. Instead of concatenating feature embedding vectors, we propose a new Bi-Interaction operation that models the second-order feature interactions. This results in a much more informative representation in the low level, greatly helping the subsequent non-linear layers to learn higher-order interactions.”
第四篇要介紹的是2017年IJCAI上發表的論文《Attentional Factorization Machines:Learning the Weight of Feature Interactions via Attention Networks》。從題目上可以看出這篇論文提出的模型是attention機制和FM的一種組合方式,因為很顯然不是所有的二階特征交互的重要性都是一樣的,如何通過機器自動的從中學習到這些重要性是這篇論文解決的最重要的問題,首先展示一下模型的架構圖:
他把引入attention機制的FM寫成了如下形式:yAFM=w0+∑i=1nwixi+pT∑i=1n∑j=i+1nαij(vi?vj)xixjy_{AFM}=w_0+\sum_{i=1}^nw_ix_i+p^T\sum_{i=1}^n\sum_{j=i+1}^n\alpha_{ij}(v_i \bigodot v_j)x_ix_jyAFM?=w0?+∑i=1n?wi?xi?+pT∑i=1n?∑j=i+1n?αij?(vi??vj?)xi?xj?。下面就來著重的介紹一下這些α\alphaα系數是如何生成的,其中關于特征i和j之間的相關度獨立公式如下:
tij=hTRelu(W(vi?vj)xixj+b)t_{ij}=h^TRelu(W(v_i \bigodot v_j)x_ix_j+b)tij?=hTRelu(W(vi??vj?)xi?xj?+b),對每一對交互特征按照相同的方式計算相關度并進行歸一化處理,那么αij=exp(tij)∑(i,j)∈Rxexp(tij)\alpha_{ij}=\frac{exp(t_{ij})}{\sum_{(i,j)\in R_x}exp(t_{ij})}αij?=∑(i,j)∈Rx??exp(tij?)exp(tij?)?。其中hhh WWW和bbb都是模型參數。
第五篇要介紹的是2016年微軟在SIGKDD會議上發表的論文《Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features》。這篇論文針對的也是CTR預估問題,從名字上不難看出這是一種深度神經網絡模型,整個網絡架構其實很簡單如下所示:
在輸入層統一的把所有的特征轉化為dense特征,對于那些類別特征使用embedding技術進行轉化。值得一提的是,在這篇paper中提到了一種技巧,可以在保證準確率的前提下降低類別特征one-hot的維度:采用統計方式,只對出現次數在一定排名之前的類別進行有效編碼,其余剩下的稀少類別歸為剩下的一種類別中去。其實該文章最大的創新點就是把residual layers即深度殘差網絡引入了推薦系統中去,residual layer如下:
第六篇要介紹的是2016年發表的論文《Field-aware Factorization Machines for CTR Prediction》。從題目上看這篇paper也是一種對FM模型的創新,傳統的FM在計算二階特征交互的時候,每一維特征都對應一個固定的latent向量,但是作者說這樣是不合理的。應該是每一維特征對應多個latent向量,每一個latent向量用來區分和該維特征交互的特征種類(聽上去有點繞口)。舉例來說比方對于一個擁有三個特征屬性的樣本(A,B,C),如果進行二維特征交互操作,對于這種field-aware的方式來說,當A和B交互的時候以及當A和C交互的時候分別對應兩個latent向量VA?>BV_{A->B}VA?>B?和VA?>CV_{A->C}VA?>C?。如果采用這樣的方式,那么使用多個latent向量的維度k就可以比只使用一個向量的維度k要少。
總的來說CTR預估目前工業界主流的方式還是神經網絡那一套理論,這幾篇論文都是幾篇比較基礎的論文,希望記錄下來,以后會進一步跟進這個方向。
總結
以上是生活随笔為你收集整理的几种基于神经网络的CTR预估模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 商务办公邮箱有哪些?怎么提升商务邮件沟通
- 下一篇: springMVC的三种视图解析器Vie