從FM推演各深度學(xué)習(xí)CTR預(yù)估模型(上) | 推薦系統(tǒng)

文 | 七月在線
編 | 小七
解析:
點(diǎn)擊率(click-through rate, CTR)是互聯(lián)網(wǎng)公司進(jìn)行流量分配的核心依據(jù)之一。比如互聯(lián)網(wǎng)廣告平臺,為了精細(xì)化權(quán)衡和保障用戶、廣告、平臺三方的利益,準(zhǔn)確的CTR預(yù)估是不可或缺的。CTR預(yù)估技術(shù)從傳統(tǒng)的邏輯回歸,到近兩年大火的深度學(xué)習(xí),新的算法層出不窮:DeepFM, NFM, DIN, AFM, DCN……
然而,相關(guān)的綜述文章不少,但碎片羅列的居多,模型之間內(nèi)在的聯(lián)系和演化思路如何揭示?怎樣才能迅速get到新模型的創(chuàng)新點(diǎn)和適用場景,快速提高新論文速度,節(jié)約理解、復(fù)現(xiàn)模型的成本?這些都是亟待解決的問題。
我們認(rèn)為,從FM及其與神經(jīng)網(wǎng)絡(luò)的結(jié)合出發(fā),能夠迅速貫穿很多深度學(xué)習(xí)CTR預(yù)估網(wǎng)絡(luò)的思路,從而更好地理解和應(yīng)用模型。
本文的思路與方法我們試圖從原理上進(jìn)行推導(dǎo)、理解各個深度CTR預(yù)估模型之間的相互關(guān)系,知其然也知其所以然。(以下的分析與拆解角度,是一種我們嘗試的理解視角,并不是唯一的理解方式)
推演的核心思路:“通過設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行組合特征的挖掘”。
具體來說有兩條:其一是從FM開始推演其在深度學(xué)習(xí)上的各種推廣(對應(yīng)下圖的紅線),另一條是從embedding+MLP自身的演進(jìn)特點(diǎn)結(jié)合CTR預(yù)估本身的業(yè)務(wù)場景進(jìn)行推演(對應(yīng)下圖黑線部分)。

為了便于理解,我們簡化了數(shù)據(jù)案例——只考慮離散特征數(shù)據(jù)的建模,以分析不同神經(jīng)網(wǎng)絡(luò)在處理相同業(yè)務(wù)問題時的不同思路。
同時,我們將各典型論文不同風(fēng)格的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖統(tǒng)一按照計(jì)算圖來繪制,以便于對比不同模型。
二、FM:降維版本的特征二階組合
CTR預(yù)估本質(zhì)是一個二分類問題,以移動端展示廣告推薦為例,依據(jù)日志中的用戶側(cè)的信息(比如年齡,性別,國籍,手機(jī)上安裝的app列表)、廣告?zhèn)鹊男畔ⅲ◤V告id,廣告類別,廣告標(biāo)題等)、上下文側(cè)信息(渠道id等),去建模預(yù)測用戶是否會點(diǎn)擊該廣告。FM出現(xiàn)之前的傳統(tǒng)的處理方法是人工特征工程加上線性模型(如邏輯回歸Logistic Regression)。為了提高模型效果,關(guān)鍵技術(shù)是找到到用戶點(diǎn)擊行為背后隱含的特征組合。如男性、大學(xué)生用戶往往會點(diǎn)擊游戲類廣告,因此“男性且是大學(xué)生且是游戲類”的特征組合就是一個關(guān)鍵特征。但這本質(zhì)仍是線性模型,其假設(shè)函數(shù)表示成內(nèi)積形式一般為:
其中為特征向量,
為權(quán)重向量,σ()為sigmoid函數(shù)。
但是人工進(jìn)行特征組合通常會存在諸多困難,如特征爆炸、特征難以被識別、組合特征難以設(shè)計(jì)等。
為了讓模型自動地考慮特征之間的二階組合信息,線性模型推廣為二階多項(xiàng)式(2d?Polynomial 2d-Polynomial2d?Polynomial)模型:
其實(shí)就是對特征兩兩相乘(組合)構(gòu)成新特征(離散化之后其實(shí)就是“且”操作),并對每個新特征分配獨(dú)立的權(quán)重,通過機(jī)器學(xué)習(xí)來自動得到這些權(quán)重。將其寫成矩陣形式為:
其中為二階特征組合的權(quán)重矩陣,是對稱矩陣。而這個矩陣參數(shù)非常多,為
。為了降低該矩陣的維度,可以將其因子分解(Factorization FactorizationFactorization)為兩個低維(比如n?k n*kn?k)矩陣的相乘。則此時W WW矩陣的參數(shù)就大幅降低,為O(nk)。公式如下:
這就是Rendle RendleRendle等在2010年提出因子分解機(jī)(Factorization Machines,F(xiàn)M)的名字的由來。FM的矩陣形式公式如下:
將其寫成內(nèi)積的形式:
利用
,可以將上式進(jìn)一步改寫成求和式的形式:
其中向量是矩陣W WW的第i ii列。為了去除重復(fù)項(xiàng)與特征平方項(xiàng),上式可以進(jìn)一步改寫成更為常見的FM公式:
對比二階多項(xiàng)式模型,F(xiàn)M模型中特征兩兩相乘(組合)的權(quán)重是相互不獨(dú)立的,它是一種參數(shù)較少但表達(dá)力強(qiáng)的模型。
在給出FM的TensorFlow代碼實(shí)現(xiàn)之前,值得一提的是FM通過內(nèi)積進(jìn)行無重復(fù)項(xiàng)與特征平方項(xiàng)的特征組合過程使用了一個小trick,就是:


三、用神經(jīng)網(wǎng)絡(luò)的視角看FM:嵌入后再進(jìn)行內(nèi)積
我們觀察FM公式的矩陣內(nèi)積形式:
發(fā)現(xiàn)部分就是將離散系數(shù)特征通過矩陣乘法降維成一個低維稠密向量。這個過程對神經(jīng)網(wǎng)絡(luò)來說就叫做嵌入(embedding)。所以用神經(jīng)網(wǎng)絡(luò)視角來看:
a) FM首先是對離散特征進(jìn)行嵌入。
b) 之后通過對嵌入后的稠密向量進(jìn)行內(nèi)積來進(jìn)行二階特征組合。
c) 最后再與線性模型的結(jié)果求和進(jìn)而得到預(yù)估點(diǎn)擊率。
其示意圖如下。為了表述清晰,我們繪制的是神經(jīng)網(wǎng)絡(luò)計(jì)算圖而不是網(wǎng)絡(luò)結(jié)構(gòu)圖——在網(wǎng)絡(luò)結(jié)構(gòu)圖中增加了權(quán)重W位置。
四、FM的實(shí)際應(yīng)用:考慮領(lǐng)域信息
廣告點(diǎn)擊率預(yù)估模型中的特征以分領(lǐng)域的離散特征為主,如:廣告類別、用戶職業(yè)、手機(jī)APP列表等。由于連續(xù)特征比較好處理,為了簡化起見,本文只考慮同時存在不同領(lǐng)域的離散特征的情形。處理離散特征的常見方法是通過獨(dú)熱(one-hot)編碼轉(zhuǎn)換為一系列二值特征向量。然后將這些高維稀疏特征通過嵌入(embedding)轉(zhuǎn)換為低維連續(xù)特征。前面已經(jīng)說明FM中間的一個核心步驟就是嵌入,但這個嵌入過程沒有考慮領(lǐng)域信息。這使得同領(lǐng)域內(nèi)的特征也被當(dāng)做不同領(lǐng)域特征進(jìn)行兩兩組合了。
其實(shí)可以將特征具有領(lǐng)域關(guān)系的特點(diǎn)作為先驗(yàn)知識加入到神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)中去:同領(lǐng)域的特征嵌入后直接求和作為一個整體嵌入向量,進(jìn)而與其他領(lǐng)域的整體嵌入向量進(jìn)行兩兩組合。而這個先嵌入后求和的過程,就是一個單領(lǐng)域的小離散特征向量乘以矩陣的過程。此時FM的過程變?yōu)椋簩Σ煌I(lǐng)域的離散特征分別進(jìn)行嵌入,之后再進(jìn)行二階特征的向量內(nèi)積。其計(jì)算圖圖如下所示:
這樣考慮其實(shí)是給FM增加了一個正則:考慮了領(lǐng)域內(nèi)的信息的相似性。而且還有一個附加的好處,這些嵌入后的同領(lǐng)域特征可以拼接起來作為更深的神經(jīng)網(wǎng)絡(luò)的輸入,達(dá)到降維的目的。接下來我們將反復(fù)看到這種處理方式。
此處需要注意,這與“基于領(lǐng)域的因子分解機(jī)”(Field-aware Factorization Machines,F(xiàn)FM)有區(qū)別。FFM也是FM的另一種變體,也考慮了領(lǐng)域信息。但其不同點(diǎn)是同一個特征與不同領(lǐng)域進(jìn)行特征組合時,其對應(yīng)的嵌入向量是不同的。本文不考慮FFM的作用機(jī)制。
經(jīng)過這些改進(jìn)的FM終究還是淺層網(wǎng)絡(luò),它的表現(xiàn)力仍然有限。為了增加模型的表現(xiàn)力(model capacity),一個自然的想法就是將該淺層網(wǎng)絡(luò)不斷“深化”。
五、embedding+MLP:深度學(xué)習(xí)CTR預(yù)估的通用框架
embedding+MLP是對于分領(lǐng)域離散特征進(jìn)行深度學(xué)習(xí)CTR預(yù)估的通用框架。深度學(xué)習(xí)在特征組合挖掘(特征學(xué)習(xí))方面具有很大的優(yōu)勢。比如以CNN為代表的深度網(wǎng)絡(luò)主要用于圖像、語音等稠密特征上的學(xué)習(xí),以W2V、RNN為代表的深度網(wǎng)絡(luò)主要用于文本的同質(zhì)化、序列化高維稀疏特征的學(xué)習(xí)。CTR預(yù)估的主要場景是對離散且有具體領(lǐng)域的特征進(jìn)行學(xué)習(xí),所以其深度網(wǎng)絡(luò)結(jié)構(gòu)也不同于CNN與RNN。
具體來說, embedding+MLP的過程如下:
①對不同領(lǐng)域的one-hot特征進(jìn)行嵌入(embedding),使其降維成低維度稠密特征。
②然后將這些特征向量拼接(concatenate)成一個隱含層。
③之后再不斷堆疊全連接層,也就是多層感知機(jī)(Multilayer Perceptron, MLP,有時也叫作前饋神經(jīng)網(wǎng)絡(luò))。
④最終輸出預(yù)測的點(diǎn)擊率。
其示意圖如下:
embedding+MLP的缺點(diǎn)是只學(xué)習(xí)高階特征組合,對于低階或者手動的特征組合不夠兼容,而且參數(shù)較多,學(xué)習(xí)較困難。
六、FNN:FM與MLP的串聯(lián)結(jié)合
Weinan Zhang等在2016年提出的因子分解機(jī)神經(jīng)網(wǎng)絡(luò)(Factorisation Machine supported Neural Network,F(xiàn)NN)將考FM與MLP進(jìn)行了結(jié)合。它有著十分顯著的特點(diǎn):
采用FM預(yù)訓(xùn)練得到的隱含層及其權(quán)重作為神經(jīng)網(wǎng)絡(luò)的第一層的初始值,之后再不斷堆疊全連接層,最終輸出預(yù)測的點(diǎn)擊率。
可以將FNN理解成一種特殊的embedding+MLP,其要求第一層嵌入后的各領(lǐng)域特征維度一致,并且嵌入權(quán)重的初始化是FM預(yù)訓(xùn)練好的。
這不是一個端到端的訓(xùn)練過程,有貪心訓(xùn)練的思路。而且如果不考慮預(yù)訓(xùn)練過程,模型網(wǎng)絡(luò)結(jié)構(gòu)也沒有考慮低階特征組合。
其計(jì)算圖如下所示:
通過觀察FFN的計(jì)算圖可以看出其與embedding+MLP確實(shí)非常像。**不過此處省略了FNN的FM部分的線性模塊。**這種省略為了更好地進(jìn)行兩個模型的對比。接下來的計(jì)算圖我們都會省略線性模塊。
此處附上FNN的代碼實(shí)現(xiàn):


七、DeepFM: FM與MLP的并聯(lián)結(jié)合
針對FNN需要預(yù)訓(xùn)練的問題,Huifeng Guo等提出了深度因子分解機(jī)模型(Deep Factorisation Machine, DeepFM, 2017)。該模型的特點(diǎn)是:
i) 不需要預(yù)訓(xùn)練。ii)將考慮領(lǐng)域信息的FM部分與MLP部分并聯(lián)起來(借用初中電路的術(shù)語),其實(shí)就是對兩個模型進(jìn)行聯(lián)合訓(xùn)練。iii)考慮領(lǐng)域信息的FM部分的嵌入向量拼接起來作為MLP部分的輸入特征,也就是是兩個模型共享嵌入后的特征。
其計(jì)算圖如下所示:
通過觀察DeepFM的計(jì)算圖可以看出紅色虛線以上部分其實(shí)就是FM部分,虛線以下就是MLP部分。
本文素材來源于七月在線面試題,關(guān)注公號,獲取更多面試資料。本期特訓(xùn)課程
評論
圖片
表情






















