深度學習在CTR預估中的應用

歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~

本文由鵝廠優文發表於雲+社區專欄
作者:辛俊波 | 騰訊 應用研究員

一、前言

深度學習憑藉其強大的表達能力和靈活的網絡結構在NLP、圖像、語音等衆多領域取得了重大突破。在廣告領域,預測用戶點擊率(Click Through Rate,簡稱CTR)領域近年也有大量關於深度學習方面的研究,僅這兩年就出現了不少於二十多種方法。本文就近幾年CTR預估領域中學術界的經典方法進行探究, 並比較各自之間模型設計的初衷和各自優缺點。通過十種不同CTR深度模型的比較,不同的模型本質上都可以由基礎的底層組件組成。

本文中出現的變量定義:

​ • n: 特徵個數,所有特徵one-hot後 連接起來的整體規模大小

​ • f: 特徵field個數,表示特徵類別有多少個

​ • k: embedding層維度,在FM中是隱向量維度

​ • H1: 深度網絡中第一個隱層節點個數,第二層H2,以此類推。

二、深度學習模型

1. Factorization-machine(FM)

​ FM模型可以看成是線性部分的LR,還有非線性的特徵組合xixj交叉而成,表示如下:

img

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

img圖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層變成低維稠密的輸入工作來展開。

img圖2 DNN模型結構

DNN待學習參數: nH1+H1H2+H2H3+H3o(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就是基於這種思想提出來的。

img圖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部分: fkH1+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所示。

img圖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所示。

img圖5 PNN(左圖:IPNN;右圖:OPNN)

Product layer的輸出爲

img

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部分參數共fk個。需要學習的參數爲:

​ (1)FM部分: 1+ n + n*k

​ (2)product部分: (fk + f(f-1)/2)*H1

​ (3)MLP部分:H1H2+H21

Ø Outer Product-based Neural Network

​ OPNN用矩陣乘法來表示特徵的交叉, g(fi, fj)=fifit。f個field兩兩求矩陣乘法,交叉項p共f(f-1)/2kk個參數。線性部分z部分參數共fk個。需要學習的參數爲:

​ (1)FM部分: 1+ n + n*k

​ (2)product部分: (fk + f(f-1)/2kk)*H1

​ (3)MLP部分:H1H2+H21

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模型。

img圖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部分: fkH1 + H1H2 + H21

6. Factorization-Machine based Neural Network (deepFM)

google提出的wide&deep框架固然強大,但由於wide部分是個LR模型,仍然需要人工特徵工程。但wide&deep給整個學術界和工業界提供了一種框架思想。基於這種思想,華爲諾亞方舟團隊結合FM相比LR的特徵交叉的功能,將wide&deep部分的LR部分替換成FM來避免人工特徵工程,於是有了deepFM,網絡結構如圖6所示。

img圖7 DeepFM模型結構

比起wide&deep的LR部分,deeFM採用FM作爲wide部分的輸出,FM部分如圖8所示。

img

img圖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部分: fkH1 + 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所示。

img圖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部分: kH1 + H1H2+…+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部分結構。

img圖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不是直接學習,而是通過如下公式表示

img

img

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

img

總結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部分參數: kt+t2

(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的結構。

img圖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起來。

img

(2)Deep layer netwok

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

img

爲簡化理解,假設每一層網絡的參數有m個,一共有Ld層,輸入層由於和上一層連接,有dm個參數(d爲x0向量維度),後續的Ld-1層,每層需要m(m+1)個參數,所以一共需要學習的參數有 dm+m(m+1)*(Ld-1)。最後的輸出也是個m維向量Hl2

(3)Cross layer network

​ Embedding and stacking layer輸入後的另一路就是DCN的重點工作了。假設網絡有L1層,每一層和前一層的關係可以用如下關係表示

img

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

img

經過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部分參數:2dLc(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所示

img圖12 DIN模型結構

DIN把用戶特徵、用戶歷史行爲特徵進行embedding操作,視爲對用戶興趣的表示,之後通過attention network,對每個興趣表示賦予不同的權值。

• Vu:表示用戶最終向量

• Vi:表示用戶興趣向量(shop_id, good_id..)

• Va:表示廣告表示向量

• Wi: 對於候選廣告,attention機制中該興趣的權重

img

可以看到,對於用戶的每個興趣向量Vi,都會通過學習該興趣的權重Vi, 來作爲最終的用戶表示。

三、寫在最後

前面介紹了10中深度學習模型的網絡結構,總結起來可以用如下的所表示

img

各種CTR深度模型看似結構各異,其實大多數可以用如下的通用範式來表達,

Ø input->embedding

把大規模的稀疏特徵ID用embedding操作映射爲低維稠密的embedding向量

Ø embedding層向量

concat, sum, average pooling等操作,大部分CTR模型在該層做改造

Ø embedding->output

通用的DNN全連接框架,輸入規模從n維降爲k*f維度甚至更低。

img圖3 通用深度學習模型結構

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

img圖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

問答
如何把深度學習應用在雲中?
相關閱讀
IPv6原理、應用與實踐
Python 工匠:編寫條件分支代碼的技巧
AI從入門到放棄:CNN的導火索,用MLP做圖像分類識別?
【每日課程推薦】機器學習實戰!快速入門在線廣告業務及CTR相應知識

此文已由作者授權騰訊雲+社區發佈,更多原文請點擊

搜索關注公衆號「雲加社區」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!

海量技術實踐經驗,盡在雲加社區

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章