深度学习在CTR预估中的应用 | CTR深度模型大盘点
作者丨辛俊波
單位丨騰訊
研究方向丨CTR預(yù)估,推薦系統(tǒng)
前言
深度學(xué)習(xí)憑借其強(qiáng)大的表達(dá)能力和靈活的網(wǎng)絡(luò)結(jié)構(gòu)在 NLP、圖像、語(yǔ)音等眾多領(lǐng)域取得了重大突破。在廣告領(lǐng)域,預(yù)測(cè)用戶(hù)點(diǎn)擊率(Click Through Rate,簡(jiǎn)稱(chēng) CTR)領(lǐng)域近年也有大量關(guān)于深度學(xué)習(xí)方面的研究,僅這兩年就出現(xiàn)了不少于二十多種方法。
本文就近幾年 CTR 預(yù)估領(lǐng)域中學(xué)術(shù)界的經(jīng)典方法進(jìn)行探究,并比較各自之間模型設(shè)計(jì)的初衷和各自?xún)?yōu)缺點(diǎn)。通過(guò)十種不同 CTR 深度模型的比較,不同的模型本質(zhì)上都可以由基礎(chǔ)的底層組件組成。?
本文中出現(xiàn)的變量定義:?
n: 特征個(gè)數(shù),所有特征 one-hot 后連接起來(lái)的整體規(guī)模大小
f: 特征 field 個(gè)數(shù),表示特征類(lèi)別有多少個(gè)?
k: embedding 層維度,在 FM 中是隱向量維度?
H1: 深度網(wǎng)絡(luò)中第一個(gè)隱層節(jié)點(diǎn)個(gè)數(shù),第二層 H2,以此類(lèi)推
深度學(xué)習(xí)模型
1. Factorization-machine (FM)?
FM 模型可以看成是線性部分的 LR,還有非線性的特征組合 xixj 交叉而成,表示如下:
其中 vi 是第 i 維特征的隱向量,長(zhǎng)度 k<<n,包含 k 個(gè)描述特征的因子。參數(shù)個(gè)數(shù)為 k*n。所有包含 xi 的非零組合特征都可以用來(lái)訓(xùn)練 vi,緩解數(shù)據(jù)稀疏問(wèn)題。
▲?圖1:FM模型結(jié)構(gòu)
圖 1 是從神經(jīng)網(wǎng)絡(luò)的角度表示 FM, 可以看成底層為特征維度為 n 的離散輸入,經(jīng)過(guò) embedding 層后,對(duì) embedding 層線性部分(LR)和非線性部分(特征交叉部分)累加后輸出。
FM 等價(jià)于 FM + embedding,待學(xué)習(xí)的參數(shù)如下:?
LR 部分:1+n
embedding 部分:n*k
FM 下文中將作為各種網(wǎng)絡(luò)模型的基礎(chǔ)組件。
2. Deep Neural Network (DNN)?
▲?圖2:DNN模型結(jié)構(gòu)
圖 2 是經(jīng)典的 DNN 網(wǎng)絡(luò), 結(jié)構(gòu)上看就是傳統(tǒng)的多層感知機(jī)(MultiLayer Perceptron,簡(jiǎn)稱(chēng) MLP)。
在 MLP 網(wǎng)絡(luò)中,輸入是原始的特征 n 維特征空間,假設(shè)第一層隱層節(jié)點(diǎn)數(shù)為 H1,第二層為 H2,以此類(lèi)推。在第一層網(wǎng)絡(luò)中,需要學(xué)習(xí)的參數(shù)就是 n*H1。
對(duì)于大多數(shù) CTR 模型來(lái)說(shuō),特征體系都極其龐大而且稀疏,典型的特征數(shù)量級(jí) n 從百萬(wàn)級(jí)到千萬(wàn)級(jí)到億級(jí)甚至更高,這么大規(guī)模的 n 作為網(wǎng)絡(luò)輸入在 CTR 預(yù)估的工業(yè)界場(chǎng)景中是不可接受的。
下面要講到的大多數(shù)深度學(xué)習(xí) CTR 網(wǎng)絡(luò)結(jié)構(gòu),都圍繞著如何將 DNN 的高維離散輸入,通過(guò) embedding 層變成低維稠密的輸入工作來(lái)展開(kāi)。
DNN 待學(xué)習(xí)參數(shù):?
n*H1+H1*H2+H2*H3+H3*o
o 為輸出層大小,在 CTR 預(yù)估中為 1。
DNN(后文稱(chēng) MLP)也將作為下文各種模型的基礎(chǔ)組件之一。
3. Factorization-machine supported Neural Networks (FNN)?
在上述的 DNN 中,網(wǎng)絡(luò)的原始輸入是全部原始特征,維度為 n,通常都是百萬(wàn)級(jí)以上。然而特征維度 n 雖然空間巨大,但如果歸屬到每個(gè)特征所屬的 field(維度為 f),通常 f 維度會(huì)小很多。
如果有辦法將每個(gè)特征用其所屬的 field 來(lái)表示,原始輸入將大大減少不少。Factorisation-machine Supported Neural Networks,簡(jiǎn)稱(chēng) FNN 就是基于這種思想提出來(lái)的。
▲?圖3:FNN模型結(jié)構(gòu)
FNN 假設(shè)每個(gè) field 有且只有一個(gè)值為 1,其他均為 0。x 為原始輸入的特征,它是大規(guī)模離散稀疏的。它可以分成 n 個(gè) field,每一個(gè) field 中,只有一個(gè)值為 1,其余都為 0(即 one hot)。?
field i 的輸入可以表示成 x[start_i: end_i],Wi 為field i 的 embedding 矩陣。z為 embedding 后的向量,是一個(gè) k 維的向量,它由一次項(xiàng) wi ,二次項(xiàng) vi=(vi1,vi2,…vik) 組成,其中 k 是 FM 中二次項(xiàng)的向量的維度。而后面的 l1,l2 則為神經(jīng)網(wǎng)絡(luò)的全連接層的表示。?
除此之外,FNN 還具有以下幾個(gè)特點(diǎn):?
FM 參數(shù)需要預(yù)訓(xùn)練?
FM 部分的 embedding 需要預(yù)先進(jìn)行訓(xùn)練,所以 FNN 不是一個(gè) end-to-end 模型。在其他論文中,有試過(guò)不用 FM 初始化 embedding,而用隨機(jī)初始化的方法,要么收斂速度很慢,要么無(wú)法收斂。有興趣的同學(xué)可以實(shí)驗(yàn)驗(yàn)證下。?
無(wú)法擬合低階特征?
FM 得到的 embedding 向量直接 concat 連接之后作為 MLP 的輸入去學(xué)習(xí)高階特征表達(dá),最終的 DNN 輸出作為 CTR 預(yù)估值。因此,FNN 對(duì)低階信息的表達(dá)比較有限。?
每個(gè) field 只有一個(gè)非零值的強(qiáng)假設(shè)?
FNN 假設(shè)每個(gè) fileld 只有一個(gè)值為非零值,如果是稠密原始輸入,則 FNN 失去意義。對(duì)于一個(gè) fileld 有幾個(gè)非零值的情況,例如用戶(hù)標(biāo)簽可能有多個(gè),一般可以做 average/sum/max 等處理。?
本質(zhì)上講,FNN = LR+DEEP = LR + embedding + MLP,參數(shù)如下:
LR 部分: 1+n
embedding 部分: n*k
MLP 部分: f*k*H1+H1*H2+H2?
可以看到,對(duì)比 DNN,在進(jìn)入 MLP 部分之前,網(wǎng)絡(luò)的輸入由 n 降到了 f*k(f 為 field 個(gè)數(shù),幾十到幾百之間,k 為隱向量維度,一般 0~100)。
4. Product-based Neural Network (PNN)?
FNN 的 embedding 層直接 concat 連接后輸出到 MLP 中去學(xué)習(xí)高階特征。
PNN,全稱(chēng)為 Product-based Neural Network,認(rèn)為在 embedding 輸入到 MLP 之后學(xué)習(xí)的交叉特征表達(dá)并不充分,提出了一種 product layer 的思想,既基于乘法的運(yùn)算來(lái)體現(xiàn)體征交叉的 DNN 網(wǎng)絡(luò)結(jié)構(gòu),如圖 4 所示。
▲?圖4:PNN模型結(jié)構(gòu)
對(duì)比 FNN 網(wǎng)絡(luò),PNN 的區(qū)別在于中間多了一層 Product Layer 層。Product Layer 層由兩部分組成,左邊 z 為 embedding 層的線性部分,右邊為 embedding 層的特征交叉部分。
除了 Product Layer 不同,PNN 和 FNN 的 MLP 結(jié)構(gòu)是一樣的。這種 product 思想來(lái)源于,在 CTR 預(yù)估中,認(rèn)為特征之間的關(guān)系更多是一種 and“且”的關(guān)系,而非 add"加”的關(guān)系。例如,性別為男且喜歡游戲的人群,比起性別男和喜歡游戲的人群,前者的組合比后者更能體現(xiàn)特征交叉的意義。
根據(jù) product 的方式不同,可以分為 inner product (IPNN) 和 outer product (OPNN),如圖 5 所示。
▲?圖5:PNN (左圖 IPNN,右圖 OPNN)
Product Layer 的輸出為:
Inner Product-based Neural Network?
IPNN 的叉項(xiàng)使用了內(nèi)積 g(fi, fj) = <fi, fj>。f 個(gè) filed,兩兩求內(nèi)積共計(jì)交叉項(xiàng) p 部分的參數(shù)共 f*(f-1)/2(f 為特征的 field 個(gè)數(shù),原始論文里用的 N)個(gè),線性部分 z 部分參數(shù)共 f*k 個(gè)。需要學(xué)習(xí)的參數(shù)為:?
FM 部分:1+ n + n*k?
product部分:(f*k + f*(f-1)/2)*H1?
MLP 部分:H1*H2+H2*1?
Outer Product-based Neural Network?
OPNN 用矩陣乘法來(lái)表示特征的交叉,g(fi, fj)=fifit。f 個(gè) field 兩兩求矩陣乘法,交叉項(xiàng) p 共 f*(f-1)/2*k*k 個(gè)參數(shù)。線性部分 z 部分參數(shù)共 f*k 個(gè)。需要學(xué)習(xí)的參數(shù)為:
FM 部分: 1+ n + n*k
product 部分:(f*k + f*(f-1)/2*k*k)*H1
MLP 部分:H1*H2+H2*1
5. Wide & Deep Learning (Wide & Deep)?
前面介紹的兩種變體 DNN 結(jié)構(gòu) FNN 和 PNN,都在 embedding 層對(duì)輸入做處理后輸入 MLP,讓神經(jīng)網(wǎng)絡(luò)充分學(xué)習(xí)特征的高階表達(dá),deep 部分是有了,對(duì)高階的特征學(xué)習(xí)表達(dá)較強(qiáng),但 wide 部分的表達(dá)是缺失的,模型對(duì)于低階特征的表達(dá)卻比較有限。
Google 在 2016 年提出了大名鼎鼎的 Wide & Deep 結(jié)構(gòu)正是解決了這樣的問(wèn)題。Wide & Deep 結(jié)合了 Wide 模型的優(yōu)點(diǎn)和 Deep 模型的優(yōu)點(diǎn),網(wǎng)絡(luò)結(jié)構(gòu)如圖 6 所示,Wide 部分是 LR 模型,Deep 部分是 DNN 模型。
▲?圖6:Wide & Deep 模型結(jié)構(gòu)
在這個(gè)經(jīng)典的 Wide & Deep?模型中,Google 提出了兩個(gè)概念,Generalization(泛化性)和 Memory(記憶性)。?
Memory(記憶性)?
Wide 部分長(zhǎng)處在于學(xué)習(xí)樣本中的高頻部分,優(yōu)點(diǎn)是模型的記憶性好,對(duì)于樣本中出現(xiàn)過(guò)的高頻低階特征能夠用少量參數(shù)學(xué)習(xí);缺點(diǎn)是模型的泛化能力差,例如對(duì)于沒(méi)有見(jiàn)過(guò)的 ID 類(lèi)特征,模型學(xué)習(xí)能力較差。?
Generalization(泛化性)?
Deep 部分長(zhǎng)處在于學(xué)習(xí)樣本中的長(zhǎng)尾部分,優(yōu)點(diǎn)是泛化能力強(qiáng),對(duì)于少量出現(xiàn)過(guò)的樣本甚至沒(méi)有出現(xiàn)過(guò)的樣本都能做出預(yù)測(cè)(非零的 embedding 向量);缺點(diǎn)是模型對(duì)于低階特征的學(xué)習(xí)需要用較多參才能等同 Wide 部分效果,而且泛化能力強(qiáng)某種程度上也可能導(dǎo)致過(guò)擬合出現(xiàn) bad case。
除此之外,Wide & Deep 模型還有如下特點(diǎn):
人工特征工程?
LR 部分的特征,仍然需要人工設(shè)計(jì)才能保證一個(gè)不錯(cuò)的效果。因?yàn)?LR 部分是直接作為最終預(yù)測(cè)的一部分,如果作為 Wide 部分的 LR 特征工程做的不夠完善,將影響整個(gè) Wide & Deep 的模型精度。
聯(lián)合訓(xùn)練?
模型是 end-to-end 結(jié)構(gòu),Wide 部分和 Deep 部分是聯(lián)合訓(xùn)練的。
Embedding 層 Deep 部分單獨(dú)占有?
LR 部分直接作為最后輸出,因此 embedding 層是 Deep 部分獨(dú)有的。
Wide & Deep 等價(jià)于 LR + embedding + MLP,需要學(xué)習(xí)的網(wǎng)絡(luò)參數(shù)有:?
LR: 1+n?
embedding 部分:n*k?
MLP 部分:f*k*H1 + H1*H2 + H2*1?
6. Factorization-Machine based Neural Network (DeepFM)?
Google 提出的 Wide & Deep 框架固然強(qiáng)大,但由于 Wide 部分是個(gè) LR 模型,仍然需要人工特征工程。
Wide & Deep?給整個(gè)學(xué)術(shù)界和工業(yè)界提供了一種框架思想。基于這種思想,華為諾亞方舟團(tuán)隊(duì)結(jié)合 FM 相比 LR 的特征交叉的功能,將 Wide & Deep?部分的 LR 部分替換成 FM 來(lái)避免人工特征工程,于是有了 DeepFM,網(wǎng)絡(luò)結(jié)構(gòu)如圖 7 所示。
▲?圖7:DeepFM 模型結(jié)構(gòu)
比起 Wide & Deep 的 LR 部分,DeepFM 采用 FM 作為 Wide 部分的輸出,FM 部分如圖 8 所示。
▲?圖8:DeepFM 模型中的 FM 部分結(jié)構(gòu)
除此之外,DeepFM 還有如下特點(diǎn):?
低階特征表達(dá)?
Wide 部分取代 WDL 的 LR,比 FNN 和 PNN 更能捕捉低階特征信息。
Embedding 層共享?
Wide & Deep 部分的 embedding 層得需要針對(duì) Deep 部分單獨(dú)設(shè)計(jì);而在 DeepFM 中,FM 和 Deep 部分共享 embedding 層,FM 訓(xùn)練得到的參數(shù)既作為 Wide 部分的輸出,也作為 DNN 部分的輸入。?
end-end訓(xùn)練?
embedding 和網(wǎng)絡(luò)權(quán)重聯(lián)合訓(xùn)練,無(wú)需預(yù)訓(xùn)練和單獨(dú)訓(xùn)練。
DeepFM 等價(jià)于 FM + embedding + DNN:
FM 部分:1+n
embedding 部分:n*k
DNN 部分:f*k*H1 + H1*H2+H1?
通過(guò) embedding 層后,FM 部分直接輸出沒(méi)有參數(shù)需要學(xué)習(xí),進(jìn)入 DNN 部分的參數(shù)維度從原始 n 維降到 f*k 維。?
7. Neural Factorization Machines (NFM)?
前面的 DeepFM 在 embedding 層后把 FM 部分直接 concat 起來(lái)(f*k 維,f 個(gè) field,每個(gè) filed 是 k 維向量)作為 DNN 的輸入。
Neural Factorization Machines,簡(jiǎn)稱(chēng) NFM,提出了一種更加簡(jiǎn)單粗暴的方法,在 embedding 層后,做了一個(gè)叫做 BI-interaction 的操作,讓各個(gè) field 做 element-wise 后 sum 起來(lái)去做特征交叉,MLP 的輸入規(guī)模直接壓縮到 k 維,和特征的原始維度 n 和特征 field 維度 f 沒(méi)有任何關(guān)系。
網(wǎng)絡(luò)結(jié)構(gòu)如圖 9 所示:
▲?圖9:NFM 模型結(jié)構(gòu)
這里論文只畫(huà)出了其中的 Deep 部分,Wide 部分在這里省略沒(méi)有畫(huà)出來(lái)。
Bi-interaction 聽(tīng)名字很高大上,其實(shí)操作很簡(jiǎn)單:就是讓 f 個(gè) field 兩兩 element-wise 相乘后,得到 f*(f-1)/2 個(gè)向量,然后直接 sum 起來(lái),最后得到一個(gè) k 維的向量。所以該層沒(méi)有任何參數(shù)需要學(xué)習(xí)。?
NFM 等價(jià)于 FM + embedding + MLP,需要學(xué)習(xí)的參數(shù)有:?
FM部分:1+n
embedding部分:n*k
MLP部分:k*H1 + H1*H2+…+Hl*1?
NFM 在 embedding 做了 bi-interaction 操作來(lái)做特征的交叉處理,優(yōu)點(diǎn)是網(wǎng)絡(luò)參數(shù)從 n 直接壓縮到 k(比 FNN 和 DeepFM 的 f*k 還少),降低了網(wǎng)絡(luò)復(fù)雜度,能夠加速網(wǎng)絡(luò)的訓(xùn)練得到模型;但同時(shí)這種方法也可能帶來(lái)較大的信息損失。?
8. Attention Neural Factorization Machines (AFM)?
前面提到的各種網(wǎng)絡(luò)結(jié)構(gòu)中的 FM 在做特征交叉時(shí),讓不同特征的向量直接做交叉,基于的假設(shè)是各個(gè)特征交叉對(duì) CTR 結(jié)果預(yù)估的貢獻(xiàn)度是一樣的。這種假設(shè)其實(shí)是不合理的,不同特征在做交叉時(shí),對(duì) CTR 預(yù)估結(jié)果的貢獻(xiàn)度是不一樣的。
Attention Neural Factorization Machines,簡(jiǎn)稱(chēng) NFM 模型,利用了近年來(lái)在圖像、NLP、語(yǔ)音等領(lǐng)域大獲成功的 attention 機(jī)制,在前面講到的 NFM 基礎(chǔ)上,引入了 attention 機(jī)制來(lái)解決這個(gè)問(wèn)題。
AFM 的網(wǎng)絡(luò)結(jié)構(gòu)如圖 10 所示。和 NFM 一樣,這里也省略了 Wide 部分,只畫(huà)出了 Deep 部分結(jié)構(gòu)。
▲?圖10:AFM 模型結(jié)構(gòu)
AFM 的 embedding 層后和 NFM 一樣,先讓 f 個(gè) field 的特征做了 element-wise product 后,得到 f*(f-1)/2 個(gè)交叉項(xiàng)。
和 NFM 直接把這些交叉項(xiàng) sum 起來(lái)不同,AFM 引入了一個(gè) Attention Net,認(rèn)為這些交叉特征項(xiàng)每個(gè)對(duì)結(jié)果的貢獻(xiàn)是不同的,例如 xi 和 xj 的權(quán)重重要度,用 aij 來(lái)表示。
從這個(gè)角度來(lái)看,其實(shí) AFM 就是個(gè)加權(quán)累加的過(guò)程。Attention Net 部分的權(quán)重 aij 不是直接學(xué)習(xí),而是通過(guò)如下公式表示:
這里 t 表示 attention net 中的隱層維度,k 和前面一樣,為 embedding 層的維度。所以這里需要學(xué)習(xí)的參數(shù)有 3 個(gè),W, b, h,參數(shù)個(gè)數(shù)共 t*k+2*t 個(gè)。
得到 aij 權(quán)重后,對(duì)各個(gè)特征兩兩點(diǎn)積加權(quán)累加后,得到一個(gè) k 維的向量,引入一個(gè)簡(jiǎn)單的參數(shù)向量 pT,維度為 k 進(jìn)行學(xué)習(xí),和 Wide 部分一起得到最終的 AFM 輸出。
總結(jié) AFM 的網(wǎng)絡(luò)結(jié)構(gòu)來(lái)說(shuō),有如下特點(diǎn):?
Attention Network?
AFM 的亮點(diǎn)所在,通過(guò)一個(gè) Attention Net 生成一個(gè)關(guān)于特征交叉項(xiàng)的權(quán)重,然后將 FM 原來(lái)的二次項(xiàng)直接累加,變成加權(quán)累加。本質(zhì)上是一個(gè)加權(quán)平均,學(xué)習(xí) xjxj 的交叉特征重要性。?
Deep Network?
沒(méi)有 Deep,卒。?
Attention Net 學(xué)習(xí)得到的交叉項(xiàng)直接學(xué)些個(gè) pt 參數(shù)就輸出了,少了 DNN 部分的表達(dá),對(duì)高階特征部分的進(jìn)一步學(xué)習(xí)可能存在瓶頸。另外,FFM 其實(shí)也引入了 field 的概念去學(xué)習(xí) filed 和 featrue 之間的權(quán)重。
沒(méi)有了 Deep 部分的 AFM,和優(yōu)化的 FFM 上限應(yīng)該比較接近。?
AFM 等價(jià)于 FM + embedding + attention + MLP(一層),需要學(xué)習(xí)的參數(shù)有:?
FM部分參數(shù):1+n
Embedding部分參數(shù):n*k?
Attention Network部分參數(shù):k*t + t*2
MLP部分參數(shù):k*1
9. Deep&Cross Network (DCN)?
在 CTR 預(yù)估中,特征交叉是很重要的一步,但目前的網(wǎng)絡(luò)結(jié)構(gòu),最多都只學(xué)到二級(jí)交叉。
LR 模型采用原始人工交叉特征,FM 自動(dòng)學(xué)習(xí) xi 和 xj 的二階交叉特征,而 PNN 用 product 方式做二階交叉,NFM 和 AFM 也都采用了 Bi-interaction 的方式學(xué)習(xí)特征的二階交叉。對(duì)于更高階的特征交叉,只有讓 Deep 去學(xué)習(xí)了。
為解決這個(gè)問(wèn)題,Google 在 2017 年提出了 Deep & Cross Network,簡(jiǎn)稱(chēng) DCN 的模型,可以任意組合特征,而且不增加網(wǎng)絡(luò)參數(shù)。圖 11 為 DCN 的結(jié)構(gòu)。
▲?圖11:DCN 模型結(jié)構(gòu)
整個(gè)網(wǎng)絡(luò)由 4 部分組成:?
Embedding and Stacking Layer?
之所以不把 embedding 和 stacking 分開(kāi)來(lái)看,是因?yàn)楹芏鄷r(shí)候,embedding 和 stacking 過(guò)程是分不開(kāi)的。
前面講到的各種 XX-based FM 網(wǎng)絡(luò)結(jié)構(gòu),利用 FM 學(xué)到的 v 向量可以很好地作為 embedding。
而在很多實(shí)際的業(yè)務(wù)結(jié)構(gòu),可能已經(jīng)有了提取到的 embedding 特征信息,例如圖像的特征 embedding,text 的特征 embedding,item 的 embedding 等,還有其他連續(xù)值信息,例如年齡,收入水平等,這些 embedding 向量 stack 在一起后,一起作為后續(xù)網(wǎng)絡(luò)結(jié)構(gòu)的輸入。
當(dāng)然,這部分也可以用前面講到的 FM 來(lái)做 embedding。為了和原始論文保持一致,這里我們假設(shè) X0 向量維度為 d(上文的網(wǎng)絡(luò)結(jié)構(gòu)中為 k),這一層的做法就是簡(jiǎn)單地把各種 embedding 向量 concat 起來(lái)。
Deep Layer Network
在 Embedding and Stacking Layer 之后,網(wǎng)絡(luò)分成了兩路,一路是傳統(tǒng)的 DNN 結(jié)構(gòu)。表示如下:
為簡(jiǎn)化理解,假設(shè)每一層網(wǎng)絡(luò)的參數(shù)有 m 個(gè),一共有 Ld 層,輸入層由于和上一層連接,有 d*m 個(gè)參數(shù)(d 為 x0 向量維度),后續(xù)的 Ld-1 層,每層需要 m*(m+1) 個(gè)參數(shù),所以一共需要學(xué)習(xí)的參數(shù)有 d*m+m*(m+1)*(Ld-1)。最后的輸出也是個(gè) m 維向量 Hl2。
Cross Layer Network?
Embedding and Stacking Layer 輸入后的另一路就是 DCN 的重點(diǎn)工作了。假設(shè)網(wǎng)絡(luò)有 L1 層,每一層和前一層的關(guān)系可以用如下關(guān)系表示:
可以看到 f 是待擬合的函數(shù),xl 即為上一層的網(wǎng)絡(luò)輸入。需要學(xué)習(xí)的參數(shù)為 wl 和 bl,因?yàn)?xl 維度為 d, 當(dāng)前層網(wǎng)絡(luò)輸入 xl+1 也為 d 維,待學(xué)習(xí)的參數(shù) wl 和 bl 也都是 d 維度向量。
因此,每一層都有 2*d 的參數(shù)(w 和 b)需要學(xué)習(xí),網(wǎng)絡(luò)結(jié)構(gòu)如下:
經(jīng)過(guò) Lc 層的 Cross Layer?Network 后,在該 layer 最后一層 Lc 層的輸出為 Lc2 的 d 維向量。
Combination Output Layer?
經(jīng)過(guò) Cross Network 的輸出 XL1(d 維)和 Deep Network 之后的向量輸入(m 維)直接做 concat,變?yōu)橐粋€(gè) d+m 的向量,最后套一個(gè) LR 模型,需要學(xué)習(xí)參數(shù)為 1+d+m。?
總結(jié)起來(lái),DCN 引入的 Cross Network 理論上可以表達(dá)任意高階組合,同時(shí)每一層保留低階組合,參數(shù)的向量化也控制了模型的復(fù)雜度。?
DCN 等價(jià)于 embedding + cross + deep + LR:
embedding 部分參數(shù):根據(jù)情況而定
cross 部分參數(shù):2*d*Lc(Lc 為 cross 網(wǎng)路層數(shù))
deep 部分參數(shù):d*(m+1)+m*(m+1)*(Ld-1),Ld 為深度網(wǎng)絡(luò)層數(shù),m 為每層網(wǎng)絡(luò)參數(shù)
LR 部分參數(shù):1+d+m
10. Deep Interest Network (DIN)?
最后介紹阿里在 2017 年提出的 Deep Interest Network,簡(jiǎn)稱(chēng) DIN 模型。與上面的 FNN,PNN 等引入低階代數(shù)范式不同,DIN 的核心是基于數(shù)據(jù)的內(nèi)在特點(diǎn),引入了更高階的學(xué)習(xí)范式。
用戶(hù)的興趣是多種多樣的,從數(shù)學(xué)的角度來(lái)看,用戶(hù)的興趣在興趣空間是一個(gè)多峰分布。在預(yù)測(cè) CTR 時(shí),用戶(hù) embedding 表示的興趣維度,很多是和當(dāng)前 item 是否點(diǎn)擊無(wú)關(guān)的,只和用戶(hù)興趣中的局部信息有關(guān)。
因此,受 attention 機(jī)制啟發(fā),DIN 在 embedding 層后做了一個(gè) action unit 的操作,對(duì)用戶(hù)的興趣分布進(jìn)行學(xué)習(xí)后再輸入到 DNN 中去,網(wǎng)絡(luò)結(jié)構(gòu)如圖 12所示:
▲?圖12:DIN 模型結(jié)構(gòu)
DIN 把用戶(hù)特征、用戶(hù)歷史行為特征進(jìn)行 embedding 操作,視為對(duì)用戶(hù)興趣的表示,之后通過(guò) attention network,對(duì)每個(gè)興趣表示賦予不同的權(quán)值。?
Vu:表示用戶(hù)最終向量?
Vi:表示用戶(hù)興趣向量(shop_id, good_id..)?
Va:表示廣告表示向量?
Wi: 對(duì)于候選廣告,attention 機(jī)制中該興趣的權(quán)重
可以看到,對(duì)于用戶(hù)的每個(gè)興趣向量 Vi,都會(huì)通過(guò)學(xué)習(xí)該興趣的權(quán)重 Vi, 來(lái)作為最終的用戶(hù)表示。
寫(xiě)在最后
前面介紹了 10 種深度學(xué)習(xí)模型的網(wǎng)絡(luò)結(jié)構(gòu),總結(jié)起來(lái)如下所表示:
各種 CTR 深度模型看似結(jié)構(gòu)各異,其實(shí)大多數(shù)可以用如下的通用范式來(lái)表達(dá):
input->embedding:把大規(guī)模的稀疏特征 ID 用 embedding 操作映射為低維稠密的 embedding 向量。?
embedding 層向量:concat, sum, average pooling 等操作,大部分 CTR 模型在該層做改造。
embedding->output:通用的 DNN 全連接框架,輸入規(guī)模從 n 維降為 k*f 維度甚至更低。
▲?圖13:通用深度學(xué)習(xí)模型結(jié)構(gòu)
其中,embedding vector 這層的融合是深度學(xué)習(xí)模型改造最多的地方,該層是進(jìn)入深度學(xué)習(xí)模型的輸入層,embedding 融合的質(zhì)量將影響 DNN 模型學(xué)習(xí)的好壞。
個(gè)人總結(jié)大體有以下 4 種操作,當(dāng)然后續(xù)可能會(huì)有越來(lái)越多其他的變形結(jié)構(gòu)。
▲?圖14:embedding 層融合方式
另外,DNN 部分,業(yè)界也有很多或 state-of-art 或很 tricky 的方法,都可以在里面進(jìn)行嘗試,例如 dropout,在 NFM 的 Bi-interaction 中可以嘗試以一定概率 dropout 掉交叉特征增前模型的泛化能力等。
結(jié)語(yǔ)
CTR 預(yù)估領(lǐng)域不像圖像、語(yǔ)音等領(lǐng)域具有連續(xù)、稠密的數(shù)據(jù)以及空間、時(shí)間等的良好局部相關(guān)性,CTR 預(yù)估中的大多數(shù)輸入都是離散而且高維的,特征也分散在少量不同的 field 上。
要解決這樣的一個(gè)深度學(xué)習(xí)模型,面臨的第一個(gè)問(wèn)題是怎么把輸入向量用一個(gè) embedding 層降維策劃那個(gè)稠密連續(xù)的向量,如本文介紹的用 FM 去做預(yù)訓(xùn)練,或者和模型一起聯(lián)合訓(xùn)練,或者其他數(shù)據(jù)源提取的 embedding 特征向量去做 concat。
其次,在寬和深的大戰(zhàn)中,在 Google 提出了 Wide & Deep 模型框架后,這套體系基本已成為業(yè)內(nèi)的基本框架。無(wú)論 Wide 部分或者 Deep 怎么改造,其實(shí)本質(zhì)上還是一些常見(jiàn)組件的結(jié)合,或者改造 Wide,或者改造 Weep,或者在 Wide 和 Deep 的結(jié)合過(guò)程中進(jìn)行改造。?
CTR 預(yù)估領(lǐng)域方法變化層出不窮,但萬(wàn)變不離其宗,各種模型本質(zhì)上還是基礎(chǔ)組件的組合,如何結(jié)合自己的業(yè)務(wù)、數(shù)據(jù)、應(yīng)用場(chǎng)景去挑選合適的模型應(yīng)用,可能才是真正的難點(diǎn)所在。
參考文獻(xiàn)
[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
#作 者 招 募#
讓你的文字被很多很多人看到,喜歡我們不如加入我們
? ? ? ? ??
?我是彩蛋
?解鎖新功能:熱門(mén)職位推薦!
PaperWeekly小程序升級(jí)啦
今日arXiv√猜你喜歡√熱門(mén)職位√
找全職找實(shí)習(xí)都不是問(wèn)題
?
?解鎖方式?
1. 識(shí)別下方二維碼打開(kāi)小程序
2. 用PaperWeekly社區(qū)賬號(hào)進(jìn)行登陸
3. 登陸后即可解鎖所有功能
?職位發(fā)布?
請(qǐng)?zhí)砑有≈治⑿?#xff08;pwbot02)進(jìn)行咨詢(xún)
?
長(zhǎng)按識(shí)別二維碼,使用小程序
賬號(hào)注冊(cè)paperweek.ly
關(guān)于PaperWeekly
PaperWeekly 是一個(gè)推薦、解讀、討論、報(bào)道人工智能前沿論文成果的學(xué)術(shù)平臺(tái)。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號(hào)后臺(tái)點(diǎn)擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點(diǎn)擊 |?閱讀原文?| 進(jìn)入作者知乎專(zhuān)欄
總結(jié)
以上是生活随笔為你收集整理的深度学习在CTR预估中的应用 | CTR深度模型大盘点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于CNN的阅读理解式问答模型:DGCN
- 下一篇: 梳理百年深度学习发展史-七月在线机器学习