從FM推演各深度CTR預估模型(附代碼)

2021-01-08 大數據文摘

大數據文摘投稿作品

作者:龍心塵、寒小陽

多年以後,當資深算法專家們看著無縫對接用戶需求的廣告收入節節攀升時,他們可能會想起自己之前痛苦推導FM與深度學習公式的某個夜晚……

——題記

1.引言

點擊率(click-through rate, CTR)是網際網路公司進行流量分配的核心依據之一。比如網際網路廣告平臺,為了精細化權衡和保障用戶、廣告、平臺三方的利益,準確的CTR預估是不可或缺的。CTR預估技術從傳統的邏輯回歸,到近兩年大火的深度學習,新的算法層出不窮:DeepFM, NFM, DIN, AFM, DCN……

然而,相關的綜述文章不少,但碎片羅列的居多,模型之間內在的聯繫和演化思路如何揭示?怎樣才能迅速get到新模型的創新點和適用場景,快速提高新論文速度,節約理解、復現模型的成本?這些都是亟待解決的問題。

我們認為,從FM及其與神經網絡的結合出發,能夠迅速貫穿很多深度學習CTR預估網絡的思路,從而更好地理解和應用模型。

2.本文的思路與方法

我們試圖從原理上進行推導、理解各個深度CTR預估模型之間的相互關係,知其然也知其所以然。(以下的分析與拆解角度,是一種我們嘗試的理解視角,並不是唯一的理解方式)

推演的核心思路:「通過設計網絡結構進行組合特徵的挖掘。」

具體來說有兩條:其一是從FM開始推演其在深度學習上的各種推廣(對應下圖的紅線),另一條是從embedding+MLP自身的演進特點結合CTR預估本身的業務場景進行推演(對應下圖黑線部分)。

為了便於理解,我們簡化了數據案例——只考慮離散特徵數據的建模,以分析不同神經網絡在處理相同業務問題時的不同思路。

同時,我們將各典型論文不同風格的神經網絡結構圖統一按照計算圖來繪製,以便於對比不同模型。

3.FM:降維版本的特徵二階組合

CTR預估本質是一個二分類問題,以移動端展示廣告推薦為例,依據日誌中的用戶側的信息(比如年齡,性別,國籍,手機上安裝的app列表)、廣告側的信息(廣告id,廣告類別,廣告標題等)、上下文側信息(渠道id等),去建模預測用戶是否會點擊該廣告。

FM出現之前的傳統的處理方法是人工特徵工程加上線性模型(如邏輯回歸Logistic Regression)。為了提高模型效果,關鍵技術是找到到用戶點擊行為背後隱含的特徵組合。如男性、大學生用戶往往會點擊遊戲類廣告,因此「男性且是大學生且是遊戲類」的特徵組合就是一個關鍵特徵。但這本質仍是線性模型,其假設函數表示成內積形式一般為:

其中為特徵向量,為權重向量,為sigmoid函數。

但是人工進行特徵組合通常會存在諸多困難,如特徵爆炸、特徵難以被識別、組合特徵難以設計等。為了讓模型自動地考慮特徵之間的二階組合信息,線性模型推廣為二階多項式()模型:

其實就是對特徵兩兩相乘(組合)構成新特徵(離散化之後其實就是「且」操作),並對每個新特徵分配獨立的權重,通過機器學習來自動得到這些權重。將其寫成矩陣形式為:

其中W^(2)為二階特徵組合的權重矩陣,是對稱矩陣。而這個矩陣參數非常多,為。為了降低該矩陣的維度,可以將其因子分解(Factorization)為兩個低維(比如)矩陣的相乘。則此時W矩陣的參數就大幅降低,為。公式如下:

這就是Rendle等在2010年提出因子分解機(Factorization Machines,FM)的名字的由來。FM的矩陣形式公式如下:

將其寫成內積的形式:

利用:

可以將上式進一步改寫成求和式的形式:

其中vi向量是矩陣的第i列。為了去除重複項與特徵平方項,上式可以進一步改寫成更為常見的FM公式:

對比二階多項式模型,FM模型中特徵兩兩相乘(組合)的權重是相互不獨立的,它是一種參數較少但表達力強的模型。

此處附上FM的TensorFlow代碼實現,完整數據和代碼請參考網盤。

網盤連結:

https://pan.baidu.com/s/1eDwOxweRDPurI2fF51EALQ

注意FM通過內積進行無重複項與特徵平方項的特徵組合過程使用了一個小trick,就是:

4.用神經網絡的視角看FM:嵌入後再進行內積

我們觀察FM公式的矩陣內積形式:

發現部分就是將離散係數特徵通過矩陣乘法降維成一個低維稠密向量。這個過程對神經網絡來說就叫做嵌入(embedding)。所以用神經網絡視角來看:

FM首先是對離散特徵進行嵌入。之後通過對嵌入後的稠密向量進行內積來進行二階特徵組合。最後再與線性模型的結果求和進而得到預估點擊率。 其示意圖如下。為了表述清晰,我們繪製的是神經網絡計算圖而不是網絡結構圖——在網絡結構圖中增加了權重W的位置。

5.FM的實際應用:考慮領域信息

廣告點擊率預估模型中的特徵以分領域的離散特徵為主,如:廣告類別、用戶職業、手機APP列表等。由於連續特徵比較好處理,為了簡化起見,本文只考慮同時存在不同領域的離散特徵的情形。處理離散特徵的常見方法是通過one-hot編碼轉換為一系列二值特徵向量。

然後將這些高維稀疏特徵通過嵌入(embedding)轉換為低維連續特徵。前面已經說明FM中間的一個核心步驟就是嵌入,但這個嵌入過程沒有考慮領域信息。這使得同領域內的特徵也被當做不同領域特徵進行兩兩組合了。

其實可以將特徵具有領域關係的特點作為先驗知識加入到神經網絡的設計中去:同領域的特徵嵌入後直接求和作為一個整體嵌入向量,進而與其他領域的整體嵌入向量進行兩兩組合。而這個先嵌入後求和的過程,就是一個單領域的小離散特徵向量乘以矩陣的過程。

此時FM的過程變為:對不同領域的離散特徵分別進行嵌入,之後再進行二階特徵的向量內積。其計算圖圖如下所示:

這樣考慮其實是給FM增加了一個正則:考慮了領域內的信息的相似性。而且還有一個附加的好處,這些嵌入後的同領域特徵可以拼接起來作為更深的神經網絡的輸入,達到降維的目的。接下來我們將反覆看到這種處理方式。

此處需要注意,這與「基於領域的因子分解機」(Field-aware Factorization Machines,FFM)有區別。FFM也是FM的另一種變體,也考慮了領域信息。但其不同點是同一個特徵與不同領域進行特徵組合時,其對應的嵌入向量是不同的。本文不考慮FFM的作用機制。

經過這些改進的FM終究還是淺層網絡,它的表現力仍然有限。為了增加模型的表現力(model capacity),一個自然的想法就是將該淺層網絡不斷「深化。」

6.embedding+MLP:深度學習CTR預估的通用框架

embedding+MLP是對於分領域離散特徵進行深度學習CTR預估的通用框架。深度學習在特徵組合挖掘(特徵學習)方面具有很大的優勢。比如以CNN為代表的深度網絡主要用於圖像、語音等稠密特徵上的學習,以W2V、RNN為代表的深度網絡主要用於文本的同質化、序列化高維稀疏特徵的學習。CTR預估的主要場景是對離散且有具體領域的特徵進行學習,所以其深度網絡結構也不同於CNN與RNN。 具體來說, embedding+MLP的過程如下:

對不同領域的one-hot特徵進行嵌入(embedding),使其降維成低維度稠密特徵。然後將這些特徵向量拼接(concatenate)成一個隱含層。之後再不斷堆疊全連接層,也就是多層感知機(Multilayer Perceptron, MLP,有時也叫作前饋神經網絡)。最終輸出預測的點擊率。

其示意圖如下:

embedding+MLP的缺點是只學習高階特徵組合,對於低階或者手動的特徵組合不夠兼容,而且參數較多,學習較困難。

7.FNN:FM與MLP的串聯結合

Weinan Zhang等在2016年提出的因子分解機神經網絡(Factorisation Machine supported Neural Network,FNN)將考FM與MLP進行了結合。它有著十分顯著的特點:

採用FM預訓練得到的隱含層及其權重作為神經網絡的第一層的初始值,之後再不斷堆疊全連接層,最終輸出預測的點擊率。可以將FNN理解成一種特殊的embedding+MLP,其要求第一層嵌入後的各領域特徵維度一致,並且嵌入權重的初始化是FM預訓練好的。這不是一個端到端的訓練過程,有貪心訓練的思路。而且如果不考慮預訓練過程,模型網絡結構也沒有考慮低階特徵組合。

其計算圖如下所示:

通過觀察FFN的計算圖可以看出其與embedding+MLP確實非常像。不過此處省略了FNN的FM部分的線性模塊。這種省略為了更好地進行兩個模型的對比。接下來的計算圖我們都會省略線性模塊。

此處附上FNN的代碼實現,完整數據和代碼請參考網盤。

網盤連結:

https://pan.baidu.com/s/1eDwOxweRDPurI2fF51EALQ

8.DeepFM: FM與MLP的並聯結合

針對FNN需要預訓練的問題,Huifeng Guo等提出了深度因子分解機模型(Deep Factorisation Machine, DeepFM, 2017)。該模型的特點是:

不需要預訓練。將考慮領域信息的FM部分與MLP部分並聯起來(借用初中電路的術語),其實就是對兩個模型進行聯合訓練。考慮領域信息的FM部分的嵌入向量拼接起來作為MLP部分的輸入特徵,也就是是兩個模型共享嵌入後的特徵。

其計算圖如下所示:

通過觀察DeepFM的計算圖可以看出紅色虛線以上部分其實就是FM部分,虛線以下就是MLP部分。

此處DeepFM的代碼實現,完整數據和代碼請參考網盤。

網盤連結:

https://pan.baidu.com/s/1eDwOxweRDPurI2fF51EALQ

9.NFM:通過逐元素乘法延遲FM的實現過程

我們再回到考慮領域信息的FM,它仍有改進的空間。因為以上這些網絡的FM部分都是只進行嵌入向量的兩兩內積後直接求和,沒有充分利用二階特徵組合的信息。Xiangnan He等在2017年提出了神經網絡因子分解機(Neural Factorization Machines,NFM)對此作出了改進。其計算圖如下所示:

NFM的基本特點是:

利用二階交互池化層(Bi-Interaction Pooling)對FM嵌入後的向量兩兩進行元素級別的乘法,形成同維度的向量求和後作為前饋神經網絡的輸入。計算圖中用圈乘表示逐元素乘法運算。NFM與DeepFM的區別是沒有單獨的FM的淺層網絡進行聯合訓練,而是將其整合後直接輸出給前饋神經網絡。當MLP的全連接層都是恆等變換且最後一層參數全為1時,NFM就退化成了FM。可見,NFM是FM的推廣,它推遲了FM的實現過程,並在其中加入了更多非線性運算。另一方面,我們觀察計算圖會發現NFM與FNN非常相似。它們的主要區別是NFM在embedding之後對特徵進行了兩兩逐元素乘法。因為逐元素相乘的向量維數不變,之後對這些向量求和的維數仍然與embedding的維數一致。因此輸入到MLP的參數比起直接concatenate的FNN更少。

此處附上NFM的代碼實現,完整數據和代碼請參考網盤:

網盤連結:

https://pan.baidu.com/s/1eDwOxweRDPurI2fF51EALQ

10.AFM: 對簡化版NFM進行加權求和

NFM的主要創新點是在FM過程中添加了逐元素相乘的運算來增加模型的複雜度。但沒有在此基礎上添加更複雜的運算過程,比如對加權求和。Jun Xiao等在2017年提出了注意力因子分解模型(Attentional Factorization Machine,AFM)就是在這個方向上的改進。其計算圖如下所示:

AFM的特點是:

AFM與NFM都是致力於充分利用二階特徵組合的信息,對嵌入後的向量兩兩進行逐元素乘法,形成同維度的向量。而且AFM沒有MLP部分。AFM通過在逐元素乘法之後形成的向量進行加權求和,而且權重是基於網絡自身來產生的。其方法是引入一個注意力子網絡(Attention Net)。當權重都相等時,AFM退化成無全連接層的NFM。「注意力子網絡」的主要操作是進行矩陣乘法,其最終輸出結果為softmax,以保證各分量的權重本身是一個概率分布。

11.PNN:通過改進向量乘法運算延遲FM的實現過程

再回到FM。既然AFM、NFM可以通過添加逐元素乘法的運算來增加模型的複雜度,那向量乘法有這麼多,可否用其他的方法增加FM複雜度?答案是可以的。Huifeng Guo等在2016年提出了基於向量積的神經網絡(Product-based Neural Networks,PNN)就是一個典型例子。

其簡化計算圖如下所示:

對比之前模型的計算圖,我們可以發現PNN的基本特點是:

利用二階向量積層(Pair-wisely Connected Product Layer)對FM嵌入後的向量兩兩進行向量積,形成的結果作為之後MLP的輸入。計算圖中用圓點表示向量積運算。PNN採用的向量積有內積與外積兩種形式。需要說明的是,本計算圖中省略了PNN中向量與常數1進行的乘法運算。這部分其實與FNN類似,不是PNN的主要創新點。故在此圖中省略。對於內積形式的PNN,因為兩個向量相乘的結果為標量,可以直接把各個標量「拼接」成一個大向量,就可以作為MLP的輸入了。當MLP的全連接層都是恆等變換且最後一層參數全為1時,內積形式的PNN就退化成了FM。對於外積形式的PNN,因為兩個向量相乘相當於列向量與行向量進行矩陣相乘,得到的結果為一個矩陣。各個矩陣向之前內積形式的操作一樣直接拼接起來維數太多,論文的簡化方案是直接對各個矩陣進行求和,得到的新矩陣(可以理解成之後對其拉長成向量)就直接作為MLP的輸入。觀察計算圖發現外積形式的PNN與NFM很像,其實就是PNN把NFM的逐元素乘法換成了外積。

此處PNN的內積與外積形式代碼,完整數據請參考網盤。

網盤連結:

https://pan.baidu.com/s/1eDwOxweRDPurI2fF51EALQ

12.DCN:高階FM的降維實現

以上的FM推廣形式,主要是對FM進行二階特徵組合。高階特徵組合是通過MLP實現的。但這兩種實現方式是有很大不同的,FM更多是通過向量embedding之間的內積來實現,而MLP則是在向量embedding之後一層一層進行權重矩陣乘法實現。

可否直接將FM的過程在高階特徵組合上進行推廣?答案是可以的。Ruoxi Wang等在2017提出的深度與交叉神經網絡(Deep & Cross Network,DCN)就是在這個方向進行改進的。DCN的計算圖如下:

DCN的特點如下:

Deep部分就是普通的MLP網絡,主要是全連接。與DeepFM類似,DCN是由embedding+MLP部分與cross部分進行聯合訓練的。Cross部分是對FM部分的推廣。cross部分的公式如下:

可以證明,cross網絡是FM的過程在高階特徵組合的推廣。完全的證明需要一些公式推導,感興趣的同學可以直接參考原論文的附錄。

而用簡單的公式證明可以得到一個很重要的結論:只有兩層且第一層與最後一層權重參數相等時的Cross網絡與簡化版FM等價。

此處對應簡化版的FM視角是將拼接好的稠密向量作為輸入向量,且不做領域方面的區分(但產生這些稠密向量的過程是考慮領域信息的,相對全特徵維度的全連接層減少了大量參數,可以視作稀疏連結思想的體現)。而且之後進行embedding權重矩陣W只有一列——是退化成列向量的情形。與MLP網絡相比,Cross部分在增加高階特徵組合的同時減少了參數的個數,並省去了非線性激活函數。

13.Wide&Deep: DeepFM與DCN的基礎框架

開篇已經提到,本文思路有兩條主線。到此為止已經將基於FM的主線介紹基本完畢。接下來將串講從embedding+MLP自身的演進特點的CTR預估模型主線,而這條思路與我們之前的FM思路同樣有千絲萬縷的聯繫。

Google在2016年提出的寬度與深度模型(Wide&Deep)在深度學習CTR預估模型中佔有非常重要的位置,它奠定了之後基於深度學習的廣告點擊率預估模型的框架。

Wide&Deep將深度模型與線性模型進行聯合訓練,二者的結果求和輸出為最終點擊率。其計算圖如下:

我們將Wide&Deep的計算圖與之前的模型進行對比可知:

Wide&Deep是前面介紹模型DeepFM與DCN的基礎框架。這些模型均採用神經網絡聯合訓練的思路,對神經網絡進行並聯。DeepFM、DCN與Wide&Deep的Deep部分都是MLP。Wide&Deep的Wide部分是邏輯回歸,可以手動設計組合特徵。DeepFM的Wide部分是FM,DCN的Wide部分是Cross網絡,二者均不強求手動設計特徵。但此時都與字面意義上的Wide有一定差異,因為均共享了降維後的嵌入特徵。

此處附上DeepFM的代碼實現,完整數據和代碼請參考網盤:

網盤連結:

https://pan.baidu.com/s/1eDwOxweRDPurI2fF51EALQ

14.Deep Cross: DCN由其殘差網絡思想進化

由K. He等提出的深度殘差網絡能夠大大加深神經網絡的深度,同時不會引起退化的問題,顯著提高了模型的精度。Ying Shan等將該思路應用到廣告點擊率預估模型中,提出深度交叉模型(DeepCross,2016)。

Deep Cross的計算圖如下:

將Deep Cross與之前的模型對比,可以發現其特點是:

對embedding+MLP的改進主要是MLP部分增加跳躍連接成為殘差網絡。Deep Cross 與傳統的殘差網絡的區別主要是沒有採用卷積操作。其中一個原因是在廣告點擊率預估領域,特徵不具備平移不變性。DCN其實是從Deep Cross進化出來的版本。DCN相對Deep Cross的主要貢獻是解耦了Deep 與Cross(特徵交叉)部分。因此DCN中的Cross部分可以理解為殘差網絡的變體:其將Deep Cross的跨越連結縮短為只有一層,而全連接部分改為與權重向量和輸入向量的內積。

15.DIN:對同領域歷史信息引入注意力機制的MLP

以上神經網絡對同領域離散特徵的處理基本是將其嵌入後直接求和,這在一般情況下沒太大問題。但其實可以做得更加精細。比如對於歷史統計類特徵。

以用戶歷史瀏覽的商戶id為例,假設用戶歷史瀏覽了10個商戶,這些商戶id的常規處理方法是作為同一個領域的特徵嵌入後直接求和得到一個嵌入向量。但這10個商戶只有一兩個商戶與當前被預測的廣告所在的商戶相似,其他商戶關係不大。

增加這兩個商戶在求和過程中的權重,應該能夠更好地提高模型的表現力。而增加求和權重的思路就是典型的注意力機制思路。

由 Bahdanau et al. (2015) 引入的現代注意力機制,本質上是加權平均(權重是模型根據數據學習出來的),其在機器翻譯上應用得非常成功。

受注意力機制的啟發,Guorui Zhou等在2017年提出了深度興趣網絡(Deep Interest Network,DIN)。DIN主要關注用戶在同一領域的歷史行為特徵,如瀏覽了多個商家、多個商品等。DIN可以對這些特徵分配不同的權重進行求和。其網絡結構圖如下:

此處採用原論文的結構圖,表示起來更清晰。DIN考慮對同一領域的歷史特徵進行加權求和,以加強其感興趣的特徵的影響。用戶的每個領域的歷史特徵權重則由該歷史特徵及其對應備選廣告特徵通過一個子網絡得到。即用戶歷史瀏覽的商戶特徵與當前瀏覽商戶特徵對應,歷史瀏覽的商品特徵與當前瀏覽商品特徵對應。權重子網絡主要包括特徵之間的元素級別的乘法、加法和全連接等操作。AFM也引入了注意力機制。但是AFM是將注意力機制與FM同領域特徵求和之後進行結合,DIN直接是將注意力機制與同領域特徵求和之前進行結合。

16.多任務視角:信息的遷移與補充

對於數據驅動的解決方案而言,數據和模型同樣重要,數據(特徵)通常決定了效果的上限,各式各樣的模型會以不同的方式去逼近這個上限。而所有算法應用的老司機都知道很多場景下,如果有更多的數據進行模型訓練,效果一般都能顯著得到提高。

廣告也是一樣的場景,在很多電商的平臺上會有很多不同場景的廣告位,每個場景蘊含了用戶的不同興趣的表達,這些信息的匯總與融合可以帶來最後效果的提升。但是將不同場景的數據直接進行合併用來訓練(ctr/cvr)模型,結果很多時候並不是很樂觀,仔細想想也是合理的,不同場景下的樣本分布存在差異,直接對樣本累加會影響分布導致效果負向。

而深度學習發展,使得信息的融合與應用有了更好的進展,用 learning(MTL)的方式可以很漂亮的解決上面提到的問題。我們不直接對樣本進行累加和訓練,而是像上圖所示,把兩個場景分為兩個task,即分為兩個子網絡。

對單個網絡而言,底層的embedding層的表達受限於單場景的數據量,很可能學習不充分。而上圖這樣的網絡結合,使得整個訓練過程有了表示學習的共享(Shared Lookup Table),這種共享有助於大樣本的子任務幫助小樣本的子任務,使得底層的表達學習更加充分。

DeepFM和DCN也用到了這個思路!只是它們是對同一任務的不同模型進行結合,而多任務學習是對不同任務的不同模型進行結合。而且,我們可以玩得更加複雜。

Multi-task learning(MTL)整個結構的上層的不同的task的子網絡是不一樣的,這樣每個子網絡可以各自去擬合自己task對應的概念分布。並且,取決於問題與場景的相似性和複雜度,可以把底層的表達學習,從簡單的共享embedding到共享一些層次的表達。

極端的情況是我們可以直接共享所有的表達學習(representation learning)部分,而只接不同的網絡head來完成不一樣的任務。這樣帶來的另外一個好處是,不同的task可以共享一部分計算,從而實現計算的加速。

值得一提的另一篇paper是阿里媽媽團隊提出的「完整空間多任務模型」(Entire Space Multi-Task Model,ESMM),也是很典型的多任務學習和信息補充思路,這篇paper解決的問題不是ctr(點擊率)預估而是cvr(轉化率)預估,傳統CVR預估模型會有比較明顯的樣本選擇偏差(sample selection bias)和訓練數據過於稀疏(data sparsity )的問題,而ESMM模型利用用戶行為序列數據,在完整的樣本數據空間同時學習點擊率和轉化率(post-view clickthrough&conversion rate,CTCVR),在一定程度上解決了這個問題。

在電商的場景下,用戶的決策過程很可能是這樣的,在觀察到系統展現的推薦商品列表後,點擊自己感興趣的商品,進而產生購買行為。所以用戶行為遵循這樣一個決策順序:impression → click → conversion。CVR模型旨在預估用戶在觀察到曝光商品進而點擊到商品詳情頁之後購買此商品的概率,即pCVR = p(conversion|click,impression)。 預估點擊率pCTR,預估點擊下單率pCVR和預估點擊與下單率pCTCVR關係如下。

傳統的CVR預估任務通常採用類似於CTR預估的技術進行建模。但是不同於CTR預估任務的是,這個場景面臨一些特有的挑戰:1) 樣本選擇偏差;2) 訓練數據稀疏;3) 延遲反饋等。

ESMM模型提出了下述的網絡結構進行問題建模

EMMS的特點是:

在整個樣本空間建模。pCVR 可以在先估計出pCTR 和pCTCVR之後計算得出,如下述公式。從原理上看,相當於分別單獨訓練兩個模型擬合出pCTR 和pCTCVR,進而計算得到pCVR 。

注意到pCTR 和pCTCVR是在整個樣本空間上建模得到的,pCVR 只是一個中間變量。因此,ESMM模型是在整個樣本空間建模,而不像傳統CVR預估模型那樣只在點擊樣本空間建模。特徵表示層共享。ESMM模型借鑑遷移學習和multi-task learning的思路,在兩個子網絡的embedding層共享特徵表示詞典。embedding層的表達參數佔了整個網絡參數的絕大部分,參數量大,需要大量的訓練樣本才能學習充分。顯然CTR任務的訓練樣本量要大大超過CVR任務的訓練樣本量,ESMM模型中特徵表示共享的機制能夠使得CVR子任務也能夠從只有展現沒有點擊的樣本中學習,從而在一定程度上緩解訓練數據稀疏性問題。

17.各種模型的對比和總結

前面介紹了各種基於深度學習的廣告點擊率預估算法模型,針對不同的問題、基於不同的思路,不同的模型有各自的特點。各個模型具體關係比較如下表1所示:

表 1. 各模型對比

本文從開篇就說明這些模型推演的核心思路是「通過設計網絡結構進行組合特徵的挖掘」,其在各個模型的實現方式如下:

FM其實是對嵌入特徵進行兩兩內積實現特徵二階組合;FNN在FM基礎上引入了MLP;DeepFM通過聯合訓練、嵌入特徵共享來兼顧FM部分與MLP部分不同的特徵組合機制;NFM、PNN則是通過改造向量積的方式來延遲FM的實現過程,在其中添加非線性成分來提升模型表現力;AFM更進一步,直接通過子網絡來對嵌入向量的兩兩逐元素乘積進行加權求和,以實現不同組合的差異化,也是一種延遲FM實現的方式;DCN則是將FM進行高階特徵組合的方向上進行推廣,並結合MLP的全連接式的高階特徵組合機制;Wide&Deep是兼容手工特徵組合與MLP的特徵組合方式,是許多模型的基礎框架;Deep Cross是引入殘差網絡機制的前饋神經網絡,給高維的MLP特徵組合增加了低維的特徵組合形式,啟發了DCN;DIN則是對用戶側的某歷史特徵和廣告側的同領域特徵進行組合,組合成的權重反過來重新影響用戶側的該領域各歷史特徵的求和過程;多任務視角則是更加宏觀的思路,結合不同任務(而不僅是同任務的不同模型)對特徵的組合過程,以提高模型的泛化能力。

當然,廣告點擊率預估深度學習模型還有很多,比如Jie Zhu提出的基於決策樹的神經網絡(Deep Embedding Forest)將深度學習與樹型模型結合起來。如果數據特徵存在圖像或者大量文本相關特徵,傳統的卷積神經網絡、循環神經網絡均可以結合到廣告點擊率預估的場景中。各個深度模型都有相應的特點,限於篇幅,我們就不再贅述了。

18.後記

目前深度學習的算法層出不窮,看論文確實有些應接不暇。我們的經驗有兩點:要有充分的生產實踐經驗,同時要有紮實的算法理論基礎。很多論文的亮點其實是來自於實際做工程的經驗。也幸虧筆者一直都在生產一線並帶領算法團隊進行工程研發(當然也因此荒廢了近2年的博客,T△T ),積澱了一些特徵工程、模型訓練的經驗,才勉強跟得上新論文。比如DIN「對用戶側的某領域歷史特徵基於廣告側的同領域特徵進行加權求和」的思想,其實與傳統機器學習對強業務相關特徵進行針對性特徵組合的特徵工程思路比較相似。另一方面,對深度學習的經典、前沿方法的熟悉也很重要。

從前面我們的串講也能夠看出,CTR預估作為一個業務特點很強的場景,在應用深度學習的道路上,也充分借鑑了注意力機制、殘差網絡、聯合訓練、多任務學習等經典的深度學習方法。了解博主的朋友也知道我們一直推崇理論與實踐相結合的思路,我們自身對這條經驗也非常受用。當然,計算廣告是一個很深的領域,自己研究尚淺,串講難免存在紕漏。歡迎大家指出問題,共同交流學習。

相關焦點

  • 代碼+實戰:TensorFlow Estimator of Deep CTR——DeepFM/NFM/AFM/...
    深度學習在 ctr 預估領域的應用越來越多,新的模型不斷冒出。從 ctr 預估問題看看 f(x) 設計—DNN 篇整理了各模型之間的聯繫之後,一直在琢磨這些東西如何在工業界落地。經過幾個月的調研,發現目前存在的一些問題:開源的實現基本都是學術界的人在搞,距離工業應用還有較大的鴻溝模型實現大量調用底層 API,各版本實現千差萬別,代碼臃腫難懂,遷移成本較高單機,放到工業場景下跑不動針對存在的問題做了一些探索,摸索出一套可行方案,有以下特性:讀數據採用 Dataset API,支持 parallel and prefetch 讀取通過
  • 深度CTR預估模型在應用寶推薦系統中的探索
    導語 |點擊率(click-through rate, CTR)預估是網際網路平臺的核心任務之一。近年來,CTR預估技術從傳統的邏輯回歸,到深度學習DeepFM, Wide&Deep, DIN, DCN等算法落地,經歷了突飛猛進的發展。本文旨在以深度CTR預估模型為基礎,探索在應用寶推薦場景下的算法優化。
  • 10 大深度學習架構:計算機視覺優秀從業者必備(附代碼實現)
    原標題:10 大深度學習架構:計算機視覺優秀從業者必備(附代碼實現) 選自Analytics Vidhya 作者:FAIZAN SHAIKH 的文章,總結了計算機視覺領域已經成效卓著的 10 個深度學習架構,並附上了每篇論文的地址連結和代碼實現。機器之心對該文進行了編譯,原文連結請見文末。 時刻跟上深度學習領域的最新進展變的越來越難,幾乎每一天都有創新或新應用。但是,大多數進展隱藏在大量發表的 ArXiv / Springer 研究論文中。
  • 通過深度學習來創作自己的音樂(附代碼)
    直到我遇到了深度學習。使用特定的技術和框架,我可以創作自己的原創音樂,而不需要真正了解任何音樂理論!這是我最喜歡的專業項目之一。我把我的兩個愛好——音樂和深度學習——結合起來,創造了一個自動生成音樂的模型。夢想成真了!我很高興與你分享我的方法,包括整個代碼,使你能夠生成自己的音樂!
  • 萬字長文總結機器學習的模型評估與調參|附代碼下載
    ,相信這個大家應該沒有疑惑,一個模型如果性能不好,要麼是因為模型過於複雜導致過擬合(高方差),要麼是模型過於簡單導致導致欠擬合(高偏差)。3.1 模型準確率(Accuracy)模型準確率反饋了模型的效果,大家看下圖:1)左上角子的模型偏差很高。它的訓練集和驗證集準確率都很低,很可能是欠擬合。解決欠擬合的方法就是增加模型參數,比如,構建更多的特徵,減小正則項。2)右上角子的模型方差很高,表現就是訓練集和驗證集準確率相差太多。
  • DL時代的代碼補全利器,北大出品,效果遠超語言模型
    為什麼直接生成代碼是困難的如果深度學習模型能根據開發者的意圖,以端到端的方式直接生成對應的代碼,那麼這樣的模型會很「優雅」。但是經過研究發現,這樣的任務需求是很難實現的,這和任務本身所依賴的數據的性質有關係。李戈教授從機器學習所依賴的數據性質的角度,對代碼生成任務和傳統的圖像處理任務、自然語言處理任務的不同,給出一種較為形象化的解釋。
  • 手把手教你用Keras進行多標籤分類(附代碼)
    我不想在if / else代碼的級聯中單獨應用它們,這些代碼使用不同的網絡,具體取決於先前分類的輸出。 謝謝你的幫助Switaj提出了一個美妙的問題:Keras深度神經網絡是否有可能返回多個預測?如果可以,它是如何完成的?
  • Keras 之父講解 Keras:幾行代碼就能在分布式環境訓練模型 |...
    這使它成為一件非常強力的深度學習工具。但對於創建十分複雜先進的模型,這種操作方式說不上「理想」。在谷歌,我們相信,未來深度學習將存在於每一個普通 IT 開發者的工具箱中,不再局限於機器學習專家。原因很簡單:每個開發者都需要做出更智能的應用。為了讓這成為現實,我們需要降低深度學習的使用門檻,搞出每一個人都能用的工具,而不應該只有專家才能用深度學習解決問題。
  • 驚為天人,NumPy手寫全部主流機器學習模型,代碼超3萬行
    它為 Python 提供高效率的多維數組計算,並提供了一系列高等數學函數,我們可以快速搭建模型的整個計算流程。毫不負責任地說,NumPy 就是現代深度學習框架的「爸爸」。儘管目前使用 NumPy寫模型已經不是主流,但這種方式依然不失為是理解底層架構和深度學習原理的好方法。
  • 推演洞見未來
    用推演來預判未來形勢、檢驗決策方案已經成為國家、組織和企業的一種較為普遍的戰略需求。  推演的價值  推演的價值遠不止於方法,更是一種決策文化,它能夠為我們提供一種完全區別於傳統研究方法的思維路徑,提供改進傳統決策模式的文化環境與氛圍。因此,美國、日本及歐洲大國普遍在各領域的戰略研究和決策中長期運用推演,形成了「推演是一種決策文化」的基本共識。
  • 主流的深度學習模型有哪些?
    作者:阿薩姆 | 普華永道 數據科學家量子位 已獲授權編輯發布轉載請聯繫原作者深度學習大熱以後各種模型層出不窮,很多朋友都在問到底什麼是DNN、CNN和RNN,這麼多個網絡到底有什麼不同,作用各是什麼?趁著回答《深度學習的主要分類是什麼呀?這些網絡cnn dbn dnm rnn是怎樣的關係?》
  • 通過對比深度學習各大框架的優缺點尋找最優
    開源的深度學習神經網絡正步入成熟,而現在有許多框架具備為個性化方案提供先進的機器學習和人工智慧的能力。那麼如何決定哪個開源框架最適合你呢?本文試圖通過對比深度學習各大框架的優缺點,從而為各位讀者提供一個參考。你最看好哪個深度學習框架呢?
  • 機器學習算法一覽(附python和R代碼)
    原標題:機器學習算法一覽(附python和R代碼) 通過這些變量我們可以搭建一個模型,從而對於一個已知的預測變量值,我們可以得到對應的目標變量值。重複訓練這個模型,直到它能在訓練數據集上達到預定的準確度。 屬於監督式學習的算法有:回歸模型,,,K鄰近算法,邏輯回歸等。 2.
  • 並行算法庫清單: 附各算法代碼實例!
    對於每個算法,團隊給出了一個簡短的描述以及複雜性評估(就工作和深度而言)。  在很多情況下,NESL代碼已經設置完畢,可以使用FORMs基本接口來運行算法。隨意更改數據或算法,並提交修改後的版本。請注意,一些算法已經規定了對輸入的限制(例如必須是均勻的)。
  • 簡單推演六十四卦 卦象圖
    ,先陰後陽,如0為陰,1為陽;4、卦象是由下往上生長,與事物的發展類似,自下而上又如時間的堆疊;5、推演以單數為主,即每推演到下一卦象時,只在原卦象上加一陰(- -)或一陽(—),而不是雙數;6、四象 生 八卦(坤kūn艮gèn坎kǎn巽xùn震zhèn離lí兌duì乾qián),由四象分別次序疊加一次陰爻及陽爻得來;圖片較大請橫屏察看,如圖:
  • 對抗深度學習:魚(模型準確性)與熊掌(模型魯棒性)能否兼得?
    分類的準確度長期以來都是評價圖像分類模型性能的最核心甚至唯一標準。但最近研究表明,即使是充分訓練好的深度神經網絡模型也很容易被對抗攻擊算法攻破。對抗攻擊是指在圖像上加入特定的且人眼無法察覺的微量噪聲,使得目標模型對加噪之後得到的對抗樣本做出錯誤分類。
  • Python入門5大機器學習算法(附代碼),你知道哪幾個?
    Python也很受開發人員的歡迎,因為它允許開發人員創建交互式,可解釋式性,模塊化,動態,可移植和高級的代碼,這使得它比Java語言更獨特。下面我們看下Python的5個機器學習算法(附代碼)1、線性回歸線性回歸通常用於根據連續變量估計實際數值(房價、呼叫次數、總銷售額等)。
  • 深度學習自學指南:6個月,從基礎知識到模型構建
    原作:Bargava安妮 編譯自 Medium量子位 出品 | 公眾號 QbitAI給你6個月的時間開始學習深度學習,能夠達到怎樣的程度?在這篇文章中,數據科學培訓老師Bargava就帶你半年入門深度學習。在這份攻略中,我將給大家講講零基礎入門深度學習可行性強的資料和學習方法。