10、DCN 介绍
前言
傳統的CTR預估模型需要大量的特征工程,耗時耗力;引入DNN之后,依靠神經網絡強大的學習能力,可以一定程度上實現自動學習特征組合。但是DNN的缺點在于隱式的學習特征組合帶來的不可解釋性,以及低效率的學習(并不是所有的特征組合都是有用的)。
最開始FM使用隱向量的內積來建模組合特征;FFM在此基礎上引入field的概念,針對不同的field上使用不同隱向量。但是,這兩者都是針對低階的特征組合進行建模的。
而DNN學習到的特征都是高度非線性的高階組合特征,含義非常難以解釋。
1、 DCN 介紹
DCN全稱Deep & Cross Network,是谷歌和斯坦福大學在2017年提出的用于Ad Click Prediction的模型。DCN(Deep Cross Network)在學習特定階數組合特征的時候效率非常高,而且同樣不需要特征工程,引入的額外的復雜度也是微乎其微的。
2、DCN模型結構
DCN架構圖如上圖所示:最開始是Embedding and stacking layer,然后是并行的Cross Network和Deep Network,最后是Combination Layer把Cross Network和Deep Network的結果組合得到Output。
2.1 Embedding and Stacking Layer
-
為什么要Embed?
- 在web-scale的推薦系統比如CTR預估中,輸入的大部分特征都是類別型特征,通常的處理辦法就是one-hot,但是one-hot之后輸入特征維度非常高非常稀疏。
- 所以有了Embedding來大大的降低輸入的維度,就是把這些binary features轉換成dense vectors with real values。
- Embedding操作其實就是用一個矩陣和one-hot之后的輸入相乘,也可以看成是一次查詢(lookup)。這個Embedding矩陣跟網絡中的其他參數是一樣的,是需要隨著網絡一起學習的。
-
為什么要Stack?
處理完了類別型特征,還有連續型特征沒有處理那。所以我們把連續型特征規范化之后,和嵌入向量stacking到一起,就得到了原始的輸入:
2.2 Cross Network
Cross Network是整篇論文的核心。它被設計來高效的學習組合特征,關鍵在于如何高效的進行feature crossing。形式化如下:
xl和xl+1 分別是第l層和第l+1層cross layer的輸出,wl和bl是這兩層之間的連接參數。注意上式中所有的變量均是列向量,W也是列向量,并不是矩陣。
- 該怎么理解?
其實也不難,xl+1 = f(xl, wl, bl) + xl. 每一層的輸出,都是上一層的輸出加上feature crossing f。而f就是在擬合該層輸出和上一層輸出的殘差。 針對one cross layer可視化如下:
- High-degree Interaction Across Features:
Cross Network特殊的網絡結構使得cross feature的階數隨著layer depth的增加而增加。相對于輸入x0來說,一個l層的cross network的cross feature的階數為l+1。
- 復雜度分析:
假設一共有Lc層cross layer,起始輸入x0的維度為d。那么整個cross network的參數個數為:
因為每一層的W和b都是d維度的。
從上式可以發現,復雜度是輸入維度d的線性函數。所以相比于deep network,cross network引入的復雜度微不足道。這樣就保證了DCN的復雜度和DNN是一個級別的。論文中表示,Cross Network之所以能夠高效的學習組合特征,就是因為x0 * xT的秩為1,使得我們不用計算并存儲整個的矩陣就可以得到所有的cross terms。
但是,正是因為cross network的參數比較少導致它的表達能力受限,為了能夠學習高度非線性的組合特征,DCN并行的引入了Deep Network。
2.3 Deep Network
這一部分沒什么特別的,就是一個前向傳播的全連接神經網絡,我們可以計算一下參數的數量來估計下復雜度。假設輸入x0維度為d,一共有Lc層神經網絡,每一層的神經元個數都是m個。那么總的參數或者復雜度為:
2.4 Combination Layer
Combination Layer把Cross Network和Deep Network的輸出拼接起來,然后經過一個加權求和后得到logits,然后經過sigmoid函數得到最終的預測概率。形式化如下:
p是最終的預測概率;XL1是d維的,表示Cross Network的最終輸出;hL2是m維的,表示Deep Network的最終輸出;Wlogits是Combination Layer的權重;最后經過sigmoid函數,得到最終預測概率。
損失函數使用帶正則項的log loss,形式化如下:
另外,針對Cross Network和Deep Network,DCN是一起訓練的,這樣網絡可以知道另外一個網絡的存在。
3、實例
接下來使用的代碼主要采用開源的DeepCTR,相應的API文檔可以在這里閱讀
https://deepctr-doc.readthedocs.io/en/latest/Examples.html
4、 總結
DCN特點如下:
- 使用cross network,在每一層都應用feature crossing。高效的學習了bounded degree組合特征。不需要人工特征工程。
- 網絡結構簡單且高效。多項式復雜度由layer depth決定。
- 相比于DNN,DCN的logloss更低,而且參數的數量將近少了一個數量級。
總結
- 上一篇: 康师傅被“水和面”糊住了眼睛?
- 下一篇: Visio 2013最新产品密钥分享,在