深度學習在CTR預估中的應用
歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~
本文由鵝廠優文發表於雲+社群專欄
- 一、前言
- 二、深度學習模型
- 1. Factorization-machine(FM)
- FM = LR+ embedding
- 2. Deep Neural Network(DNN)
- 3. Factorisation-machine supported Neural Networks (FNN)
- 4. Product-based Neural Network(PNN)
- 5. Wide & Deep Learning(Wide&Deep)
- 6. Factorization-Machine based Neural Network (deepFM)
- 7. Neural Factorization Machines (NFM)
- 8. Attention Neural Factorization Machines (AFM)
- 9. Deep&CrossNetwork(DCN)
- 10. Deep Interest Network (DIN)
- 三、寫在最後
- 四、參考文獻
作者:辛俊波 | 騰訊 應用研究員
一、前言
深度學習憑藉其強大的表達能力和靈活的網路結構在NLP、影象、語音等眾多領域取得了重大突破。在廣告領域,預測使用者點選率(Click Through Rate,簡稱CTR)領域近年也有大量關於深度學習方面的研究,僅這兩年就出現了不少於二十多種方法。本文就近幾年CTR預估領域中學術界的經典方法進行探究, 並比較各自之間模型設計的初衷和各自優缺點。通過十種不同CTR深度模型的比較,不同的模型本質上都可以由基礎的底層元件組成。
本文中出現的變數定義:
• n: 特徵個數,所有特徵one-hot後 連線起來的整體規模大小
• f: 特徵field個數,表示特徵類別有多少個
• k: embedding層維度,在FM中是隱向量維度
• H1: 深度網路中第一個隱層節點個數,第二層H2,以此類推。
二、深度學習模型
1. Factorization-machine(FM)
FM模型可以看成是線性部分的LR,還有非線性的特徵組合xixj交叉而成,表示如下:

其中vi是第i維特徵的隱向量,長度k<<n,包含k個描述特徵的因子。引數個數為k*n。所有包含xi的非零組合特徵都可以用來訓練vi,緩解資料稀疏問題。圖1是從神經網路的角度表示FM, 可以看成底層為特徵維度為n的離散輸入,經過embedding層後,對embedding層線性部分(LR)和非線性部分(特徵交叉部分)累加後輸出。

圖1 FM模型結構
FM = LR+ embedding
待學習的引數如下:
(1)LR部分: 1+n
(2)embedding 部分:n*k
FM下文中將作為各種網路模型的基礎元件
2. Deep Neural Network(DNN)
圖2是經典的DNN網路, 結構上看就是傳統的多層感知機(MultiLayer Perceptron,簡稱MLP)。在MLP網路中,輸入是原始的特徵n維特徵空間,假設第一層隱層節點數為H1,第二層為H2,以此類推。在第一層網路中,需要學習的引數就是n*H1。對於大多數CTR模型來說,特徵體系都極其龐大而且稀疏,典型的特徵數量級n從百萬級到千萬級到億級甚至更高,這麼大規模的n作為網路輸入在ctr預估的工業界場景中是不可接受的。下面要講到的大多數深度學習CTR網路結構,都圍繞著如何將DNN的高維離散輸入,通過embedding層變成低維稠密的輸入工作來展開。

圖2 DNN模型結構
DNN待學習引數: n H1+H1 H2+H2 H3+H3 o(o為輸出層大小,在ctr預估中為1)
DNN(後文稱MLP)也將作為下文各種模型的基礎元件之一
3. Factorisation-machine supported Neural Networks (FNN)
在上述的DNN中,網路的原始輸入是全部原始特徵,維度為n,通常都是百萬級以上。然而特徵維度n雖然空間巨大,但如果歸屬到每個特徵所屬的field(維度為f),通常f維度會小很多。如果有辦法將每個特徵用其所屬的field來表示,原始輸入將大大減少不少。Factorisation-machine supported Neural Networks,簡稱FNN就是基於這種思想提出來的。

圖3 FNN模型結構
FNN假設每個field有且只有一個值為1,其他均為0。x為原始輸入的特徵,它是大規模離散稀疏的。它可以分成n個field,每一個field中,只有一個值為1,其餘都為0(即one hot)。field i的輸入可以表示成 x[start_i: end_i], W0i
為field i的embedding矩陣。Zi 為embedding後的向量,是一個k維的向量,它由一次項wi ,二次項vi=(vi1,vi2,…vik) 組成,其中k是FM中二次項的向量的維度。而後面的l1,l2則為神經網路的全連線層的表示。
除此之外,FNN還具有以下幾個特點:
Ø FM引數需要預訓練
FM部分的embedding需要預先進行訓練,所以FNN不是一個end-to-end模型。在其他論文中,有試過不用FM初始化embedding, 而用隨機初始化的方法,要麼收斂速度很慢,要麼無法收斂。有興趣的同學可以實驗驗證下。
Ø 無法擬合低階特徵
FM得到的embedding向量直接concat連線之後作為MLP的輸入去學習高階特徵表達,最終的DNN輸出作為ctr預估值。因此,FNN對低階資訊的表達比較有限。
Ø 每個field只有一個非零值的強假設
FNN假設每個fileld只有一個值為非零值,如果是稠密原始輸入,則FNN失去意義。對於一個fileld有幾個非零值的情況,例如使用者標籤可能有多個,一般可以做average/sum/max等處理。
FNN = LR + DEEP = LR + embedding + MLP
(1)LR部分: 1+n
(2)embedding部分: n*k
(3)MLP部分: f k H1+H1*H2+H2
可以看到,對比DNN,在進入MLP部分之前,網路的輸入由n降到了f*k(f為field個數,幾十到幾百之間,k為隱向量維度,一般0~100)
4. Product-based Neural Network(PNN)
FNN的embedding層直接concat連線後輸出到MLP中去學習高階特徵。PNN,全稱為Product-based Neural Network,認為在embedding輸入到MLP之後學習的交叉特徵表達並不充分,提出了一種product layer的思想,既基於乘法的運算來體現體徵交叉的DNN網路結構,如圖4所示。

圖3 PNN模型結構
對比FNN網路,PNN的區別在於中間多了一層Product Layer層。Product Layer層由兩部分組成,左邊z為embedding層的線性部分,右邊為embedding層的特徵交叉部分。除了Product layer不同,PNN和FNN的MLP結構是一樣的。這種product思想來源於,在ctr預估中,認為特徵之間的關係更多是一種and“且”的關係,而非add"加”的關係。例如,性別為男且喜歡遊戲的人群,比起性別男和喜歡遊戲的人群,前者的組合比後者更能體現特徵交叉的意義。根據product的方式不同,可以分為inner product(IPNN)和outer product(OPNN),如圖5所示。

圖5 PNN(左圖:IPNN;右圖:OPNN)
Product layer的輸出為

PNN = FM + product + MLP
Ø Inner Product-based Neural Network
IPNN的叉項使用了內積g(fi, fj) = <fi, fj>。f個filed,兩兩求內積共計交叉項p部分的引數共f (f-1)/2(f為特徵的field個數,原始論文裡用的N)個,線性部分z部分引數共f k個。需要學習的引數為:
(1)FM部分: 1+ n + n*k
(2)product部分: (f k + f (f-1)/2)*H1
(3)MLP部分:H1 H2+H2 1
Ø Outer Product-based Neural Network
OPNN用矩陣乘法來表示特徵的交叉, g(fi, fj)=fifit。f個field兩兩求矩陣乘法,交叉項p共f (f-1)/2 k k個引數。線性部分z部分引數共f k個。需要學習的引數為:
(1)FM部分: 1+ n + n*k
(2)product部分: (f k + f (f-1)/2 k k)*H1
(3)MLP部分:H1 H2+H2 1
5. Wide & Deep Learning(Wide&Deep)
前面介紹的兩種變體DNN結構FNN和PNN,都在embedding層對輸入做處理後輸入MLP,讓神經網路充分學習特徵的高階表達,deep部分是有了,對高階的特徵學習表達較強,但wide部分的表達是缺失的, 模型對於低階特徵的表達卻比較有限。google在2016年提出了大名鼎鼎的wide&Deep的結構正是解決了這樣的問題。Wide&deep結合了wide模型的優點和deep模型的優點,網路結構如圖6所示,wide部分是LR模型,Deep部分是DNN模型。

圖6 Wide&Deep 模型結構
在這個經典的wide&deep模型中,google提出了兩個概念,generalization(泛化性)和memory(記憶性)
Ø Memory(記憶性)
wide部分長處在於學習樣本中的高頻部分,優點是模型的記憶性好,對於樣本中出現過的高頻低階特徵能夠用少量引數學習;缺點是模型的泛化能力差,例如對於沒有見過的ID類特徵,模型學習能力較差。
Ø Generalization(泛化性)
deep部分長處在於學習樣本中的長尾部分,優點是泛化能力強,對於少量出現過的樣本甚至沒有出現過的樣本都能做出預測(非零的embedding向量);缺點是模型對於低階特徵的學習需要用較多參才能等同wide部分效果,而且泛化能力強某種程度上也可能導致過擬合出現bad case.
除此之外,wide&deep模型還有如下特點
Ø 人工特徵工程
LR部分的特徵,仍然需要人工設計才能保證一個不錯的效果。因為LR部分是直接作為最終預測的一部分,如果作為wide部分的LR特徵工程做的不夠完善,將影響整個wide&deep的模型精度
Ø 聯合訓練
模型是end-to-end結構,wide部分和deep部分是聯合訓練的
Ø embedding層deep部分單獨佔有
LR部分直接作為最後輸出,因此embedding層是deep部分獨有的。
wide&deep = LR + embedding + MLP
(1)LR部分: 1+n
(2)embedding部分:n*k
(3)MLP部分: f k H1 + H1 H2 + H2 1
6. Factorization-Machine based Neural Network (deepFM)
google提出的wide&deep框架固然強大,但由於wide部分是個LR模型,仍然需要人工特徵工程。但wide&deep給整個學術界和工業界提供了一種框架思想。基於這種思想,華為諾亞方舟團隊結合FM相比LR的特徵交叉的功能,將wide&deep部分的LR部分替換成FM來避免人工特徵工程,於是有了deepFM,網路結構如圖6所示。

圖7 DeepFM模型結構
比起wide&deep的LR部分,deeFM採用FM作為wide部分的輸出,FM部分如圖8所示。


圖8 deepFM模型中的FM部分結構
除此之外,deepFM還有如下特點:
Ø 低階特徵表達
wide部分取代WDL的LR,比FNN和PNN相比能捕捉低階特徵資訊
Ø embedding層共享
wide&deep部分的embedding層得需要針對deep部分單獨設計;而在deepFM中,FM和DEEP部分共享embedding層,FM訓練得到的引數既作為wide部分的輸出,也作為DNN部分的輸入。
Ø end-end訓練
embedding和網路權重聯合訓練,無需預訓練和單獨訓練
deepFM = FM + embedding + DNN
(1)FM部分: 1+n
(2)embedding部分:n*k
(3)DNN部分: f k H1 + H1*H2+H1
通過embedding層後,FM部分直接輸出沒有引數需要學習,進入DNN部分的引數維度從原始n維降到f*k維。
7. Neural Factorization Machines (NFM)
前面的deepFM在embedding層後把FM部分直接concat起來(f*k維,f個field,每個filed是k維向量)作為DNN的輸入。Neural Factorization Machines,簡稱NFM,提出了一種更加簡單粗暴的方法,在embedding層後,做了一個叫做BI-interaction的操作,讓各個field做element-wise後sum起來去做特徵交叉,MLP的輸入規模直接壓縮到k維,和特徵的原始維度n和特徵field維度f沒有任何關係。網路結構如圖9所示。

圖9 NFM模型結構
這裡論文只畫出了其中的deep部分, wide部分在這裡省略沒有畫出來。Bi-interaction聽名字很高大上,其實操作很簡單:就是讓f個field兩兩element-wise相乘後,得到f*(f-1)/2個向量,然後直接sum起來,最後得到一個k維的向量。所以該層沒有任何引數需要學習。
NFM = FM + embedding + MLP
需要學習的引數有:
(1)FM部分: 1+n
(2)embedding部分:n*k
(3)MLP部分: k H1 + H1 H2+…+Hl*1
NFM在embedding做了bi-interaction操作來做特徵的交叉處理,優點是網路引數從n直接壓縮到k(比FNN和deepFM的f*k還少),降低了網路複雜度,能夠加速網路的訓練得到模型;但同時這種方法也可能帶來較大的資訊損失。
8. Attention Neural Factorization Machines (AFM)
前面提到的各種網路結構中的FM在做特徵交叉時,讓不同特徵的向量直接做交叉,基於的假設是各個特徵交叉對ctr結果預估的貢獻度是一樣的。這種假設其實是不合理的, 不同特徵在做交叉時,對ctr預估結果的貢獻度是不一樣的。Attention Neural Factorization Machines,簡稱NFM模型,利用了近年來在影象、NLP、語音等領域大獲成功的attention機制,在前面講到的NFM基礎上,引入了attention機制來解決這個問題。AFM的網路結構如圖10所示。和NFM一樣,這裡也省略了wide部分,只畫出了deep部分結構。

圖10 AFM模型結構
AFM的embedding層後和NFM一樣,先讓f個field的特徵做了element-wise product後,得到f*(f-1)/2個交叉項。和NFM直接把這些交叉項sum起來不同,AFM引入了一個Attention Net,認為這些交叉特徵項每個對結果的貢獻是不同的,例如xi和xj的權重重要度,用aij來表示。從這個角度來看,其實AFM其實就是個加權累加的過程。Attention Net部分的權重aij不是直接學習,而是通過如下公式表示


這裡t表示attention net中的隱層維度,k和前面一樣,為embedding層的維度。所以這裡需要學習的引數有3個,W, b, h,引數個數共t k+2 t個。得到aij權重後,對各個特徵兩兩點積加權累加後,得到一個k維的向量,引入一個簡單的引數向量pT,維度為k進行學習,和wide部分一起得到最終的AFM輸出。

總結AFM的網路結構來說,有如下特點:
Ø Attention Network
AFM的亮點所在,通過一個attention net生成一個關於特徵交叉項的權重,然後將FM原來的二次項直接累加,變成加權累加。本質上是一個 加權平均 ,學習xjxj的交叉特徵重要性
Ø Deep Network
沒有deep,卒。
Attention net學習得到的交叉項直接學些個pt引數就輸出了,少了DNN部分的表達,對高階特徵部分的進一步學習可能存在瓶頸。另外,FFM其實也引入了field的概念去學習filed和featrue之間的權重。沒有了deep 部分的AFM,和優化的FFM上限應該比較接近。
AFM = FM + embedding + attention + MLP(一層)
需要學習的引數有:
(1)FM部分引數:1+n
(2)Embedding部分引數: n*k
(3)Attention Network部分引數: k t+t 2
(4)MLP部分引數:k*1
9. Deep&CrossNetwork(DCN)
在ctr預估中,特徵交叉是很重要的一步,但目前的網路結構,最多都只學到二級交叉。LR模型採用原始人工交叉特徵,FM自動學習xi和xj的二階交叉特徵,而PNN用product方式做二階交叉,NFM和AFM也都採用了Bi-interaction的方式學習特徵的二階交叉。對於更高階的特徵交叉,只有讓deep去學習了。為解決這個問題,google在2017年提出了Deep&Cross Network,簡稱DCN的模型,可以任意組合特徵,而且不增加網路引數。圖11為DCN的結構。

圖10 DCN模型結構
整個網路分4部分組成:
(1)Embedding and stacking layer
之所以不把embedding和stacking分開來看,是因為很多時候,embedding和stacking過程是分不開的。前面講到的各種 XX-based FM 網路結構,利用FM學到的v向量可以很好的作為embedding。而在很多實際的業務結構,可能已經有了提取到的embedding特徵資訊,例如影象的特徵embedding,text的特徵embedding,item的embedding等,還有其他連續值資訊,例如年齡,收入水平等,這些embedding向量stack在一起後,一起作為後續網路結構的輸入。當然,這部分也可以用前面講到的FM來做embedding。為了和原始論文保持一致,這裡我們假設X0向量維度為d(上文的網路結構中為k),這一層的做法就是簡答的把各種embedding向量concat起來。

(2)Deep layer netwok
在embedding and stacking layer之後,網路分成了兩路,一路是傳統的DNN結構。表示如下

為簡化理解,假設每一層網路的引數有m個,一共有Ld層,輸入層由於和上一層連線,有d m個引數(d為x0向量維度),後續的Ld-1層,每層需要m (m+1)個引數,所以一共需要學習的引數有 d m+m (m+1)*(Ld-1)。最後的輸出也是個m維向量Hl2
(3)Cross layer network
Embedding and stacking layer輸入後的另一路就是DCN的重點工作了。假設網路有L1層,每一層和前一層的關係可以用如下關係表示

可以看到f是待擬合的函式,xl即為上一層的網路輸入。需要學習的引數為wl和bl,因為xl維度為d, 當前層網路輸入xl+1也為d維,待學習的引數wl和bl也都是d維度向量。因此,每一層都有2*d的引數(w和b)需要學習,網路結構如下。

經過Lc層的cross layer network後,在該layer最後一層Lc層的輸出為Lc2的d維向量
(4)Combination Output Layer
經過crossnetwork的輸出XL1(d維)和deep network之後的向量輸入(m維)直接做concat,變為一個d+m的向量,最後套一個LR模型,需要學習引數為1+d+m。
總結起來,DCN引入的crossnetwork理論上可以表達任意高階組合,同時每一層保留低階組合,引數的向量化也控制了模型的複雜度。
DCN = embedding + cross + deep + LR
待學習引數有:
(1)embedding部分引數: 根據情況而定
(2)cross部分引數:2 d Lc(Lc為cross網路層數)
(3)deep部分引數:d (m+1)+m (m+1)*(Ld-1)(Ld為深度網路層數,m為每層網路引數)
(4)LR 部分引數:1+d+m
10. Deep Interest Network (DIN)
最後介紹阿里在2017年提出的Deep Interest Network,簡稱DIN模型。與上面的FNN,PNN等引入低階代數正規化不同,DIN的核心是基於資料的內在特點,引入了更高階的學習正規化。使用者的興趣是多種多樣的,從數學的角度來看,使用者的興趣在興趣空間是一個多峰分佈。在預測ctr時,使用者embedding表示的興趣維度,很多是和當前item是否點選無關的,只和使用者興趣中的區域性資訊有關。因此,受attention機制啟發,DIN在embedding層後做了一個action unit的操作,對使用者的興趣分佈進行學習後再輸入到DNN中去,網路結構如圖12所示

圖12 DIN模型結構
DIN把使用者特徵、使用者歷史行為特徵進行embedding操作,視為對使用者興趣的表示,之後通過attention network,對每個興趣表示賦予不同的權值。
• Vu:表示使用者最終向量
• Vi:表示使用者興趣向量(shop_id, good_id..)
• Va:表示廣告表示向量
• Wi: 對於候選廣告,attention機制中該興趣的權重

可以看到,對於使用者的每個興趣向量Vi,都會通過學習該興趣的權重Vi, 來作為最終的使用者表示。
三、寫在最後
前面介紹了10中深度學習模型的網路結構,總結起來可以用如下的所表示

各種CTR深度模型看似結構各異,其實大多數可以用如下的通用正規化來表達,
Ø input->embedding
把大規模的稀疏特徵ID用embedding操作對映為低維稠密的embedding向量
Ø embedding層向量
concat, sum, average pooling等操作,大部分CTR模型在該層做改造
Ø embedding->output
通用的DNN全連線框架,輸入規模從n維降為k*f維度甚至更低。

圖3 通用深度學習模型結構
其中,embedding vector這層的融合是深度學習模型改造最多的地方,該層是進入深度學習模型的輸入層,embedding融合的質量將影響DNN模型學習的好壞。個人總結大體有以下4種操作,當然後續可能會有越來越多其他的變形結構。

圖14 embedding層融合方式
另外,DNN部分,業界也有很多或state-of-art或很tricky的方法,都可以在裡面進行嘗試,例如dropout,在NFM的Bi-interaction中可以嘗試以一定概率dropout掉交叉特徵增前模型的泛化能力等。
寫在最後
ctr預估領域不像影象、語音等領域具有連續、稠密的資料以及空間、時間等的良好區域性相關性,ctr預估中的大多數輸入都是離散而且高維的,特徵也分散在少量不同的field上。要解決這樣的一個深度學習模型,面臨的第一個問題是怎麼把輸入向量用一個embedding層降維策劃那個稠密連續的向量,如本文介紹的用FM去做預訓練,或者和模型一起聯合訓練,或者其他資料來源提取的embedding特徵向量去做concat。其次,在寬和深的大戰中,在google在提出了wide&deep的模型框架後,這套體系基本已成為業內的基本框架。無論wide部分或者deep怎麼改造,其實本質上還是一些常見元件的結合,或者改造wide,或者改造deep,或者在wide和deep的結合過程中進行改造。
ctr預估領域方法變化層出不窮,但萬變不離其宗,各種模型本質上還是基礎元件的組合,如何結合自己的業務、資料、應用場景去挑選合適的模型應用,可能才是真正的難點所在。
四、參考文獻
[1]Factorization Machines
[2]Wide & Deep Learning for Recommender Systems
[3]Deep Learning over Multi-Field Categorical Data: A Case Study on User Response Prediction
[4]Product-based Neural Networks for User Response Prediction
[5]DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
[6]Neural Factorization Machines for Sparse Predictive Analytics
[7] Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks
[8]Deep & Cross Network for Ad Click Predictions
[9]Deep Interest Network for Click-Through Rate Prediction
問答 ofollow,noindex">如何把深度學習應用在雲中? 相關閱讀 IPv6原理、應用與實踐 Python 工匠:編寫條件分支程式碼的技巧 AI從入門到放棄:CNN的導火索,用MLP做影象分類識別? 【每日課程推薦】機器學習實戰!快速入門線上廣告業務及CTR相應知識
此文已由作者授權騰訊雲+社群釋出,更多原文請點選
搜尋關注公眾號「雲加社群」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!
海量技術實踐經驗,盡在雲加社群!