Deep & Cross Network總結


一、介紹

CTR預估全稱是Click Through Rate,就是展示給用戶的廣告或者商品,估計用戶點擊的概率。公司規模較大的時候,CTR直接影響的價值在數十億美元的級別。廣告支付一個非常流行的模型就是CPC(cost-per-click),就是按照用戶的點擊來付錢。那么准確的進行CTR預估,展現給用戶他們最可能點擊的廣告就非常重要了。

傳統的CTR預估模型需要大量的特征工程,耗時耗力;引入DNN之后,依靠神經網絡強大的學習能力,可以一定程度上實現自動學習特征組合。但是DNN的缺點在於隱式的學習特征組合帶來的不可解釋性,以及低效率的學習(並不是所有的特征組合都是有用的)。

DCN全稱Deep & Cross Network,是谷歌和斯坦福大學在2017年提出的用於Ad Click Prediction的模型。DCN(Deep Cross Network)在學習特定階數組合特征的時候效率非常高,而且同樣不需要特征工程,引入的額外的復雜度也是微乎其微的。

二、相關工作

最開始FM使用隱向量的內積來建模組合特征;FFM在此基礎上引入field的概念,針對不同的field上使用不同隱向量。但是,這兩者都是針對低階的特征組合進行建模的。
隨着DNN在計算機視覺、自然語言處理、語音識別等領域取得重要進展,DNN幾乎無限的表達能力被廣泛的研究。同樣也嘗試被用來解決web產品中輸入高維高稀疏的問題。DNN可以對高維組合特征進行建模,但是DNN是否就是針對此類問題最高效的建模方式那?直到現在,業界也沒有一個准確的答案。
在Kaggle上的很多比賽中,大部分的獲勝方案都是使用的人工特征工程,構造低階的組合特征,這些特征意義明確且高效。而DNN學習到的特征都是高度非線性的高階組合特征,含義非常難以解釋。那么是否能設計一種DNN的特定網絡結構來改善DNN,使得其學習起來更加高效那?

業內進行了很多探索,DCN就是其中一個。

三、DCN特點

DCN特點如下:

  1. 使用cross network,在每一層都應用feature crossing。高效的學習了bounded degree組合特征。不需要人工特征工程。

  2. 網絡結構簡單且高效。多項式復雜度由layer depth決定。

  3. 相比於DNN,DCN的logloss更低,而且參數的數量將近少了一個數量級。

四、DCN

DCN架構圖如上圖所示:最開始是Embedding and stacking layer,然后是並行的Cross NetworkDeep Network,最后是Combination LayerCross NetworkDeep Network的結果組合得到Output

Embedding and Stacking Layer

這一層說起來其實非常的簡單,就兩個功能EmbedStack

為什么要Embed那?
在web-scale的推薦系統比如CTR預估中,輸入的大部分特征都是類別型特征,通常的處理辦法就是one-hot,但是one-hot之后輸入特征維度非常高非常系數。
所以有了Embedding來大大的降低輸入的維度,就是把這些binary features轉換成dense vectors with real values。

Embedding操作其實就是用一個矩陣和one-hot之后的輸入相乘,也可以看成是一次查詢(lookup)。這個Embedding矩陣跟網絡中的其他參數是一樣的,是需要隨着網絡一起學習的。

為什么要Stack那?
處理完了類別型特征,還有連續型特征沒有處理那。所以我們把連續型特征規范化之后,和嵌入向量stacking到一起,就得到了原始的輸入:

 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。

Deep Network

這一部分沒什么特別的,就是一個前向傳播的全連接神經網絡,我們可以計算一下參數的數量來估計下復雜度。假設輸入x0維度為d,一共有Lc層神經網絡,每一層的神經元個數都是m個。那么總的參數或者復雜度為:

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是一起訓練的,這樣網絡可以知道另外一個網絡的存在。

泛化FM

跟FM一樣,DCN同樣也是基於參數共享機制的,參數共享不僅僅使得模型更加高效而且使得模型可以泛化到之前沒有出現過的特征組合,並且對噪聲的抵抗性更加強。
FM是一個非常淺的結構,並且限制在表達二階組合特征上,DeepCrossNetwork(DCN)把這種參數共享的思想從一層擴展到多層,並且可以學習高階的特征組合。但是和FM的高階版本的變體不同,DCN的參數隨着輸入維度的增長是線性增長的。

轉自https://mp.weixin.qq.com/s/lF_WLAn6JyQqf10076hsjA


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM