選單

Google深度學習CTR預估模型DCN:顯式高階交叉特徵學習

DCN模型的顯著優點是:

提供了顯式的高階交叉特徵;

使用了殘差的方式保證交叉特徵的有效學習;

特徵交叉透過模型自動學習來實現,免去了人工特徵工程。

下面我們來看下DCN模型的介紹。

一、模型結構和原理

DCN模型結構如下圖所示,主要的模組為:

Embedding and Stacking Layer:輸入特徵的處理,包括embedding處理和concat操作;

Cross Network:特徵交叉網路,對特徵進行顯式的有限階的高階交叉;

Deep Network:DNN層網路,對特徵進行隱式的高階交叉;

Combination Layer:結合特徵交叉層和DNN層的隱層輸出,並輸入到預測層。

Google深度學習CTR預估模型DCN:顯式高階交叉特徵學習

1.Embedding and Stacking Layer

在大規模工業級的推薦等場景中,模型的輸入大多為sparse特徵,當然也包括一些dense特徵。對sparse特徵常見的處理方式,是將one-hot的特徵經過一個embedding矩陣變換成一個vector表達,然後和其他的dense特徵做concat,再進入input層即可,最終輸入到input層的特徵如下所示:

2.Cross Network

交叉網路也是DCN模型的核心創新之處,它顯式的使用了特徵交叉操作,具體交叉公式為:

可以看到,x_(l+1)的更新方式是由兩部分組成的,即 f函式 和 x_l,f函式是一個關於x_l的變換函式,而從x_l從和x_(l+1)的關係來講,是一個典型的residual結構,殘差結構的主要作用是在模型結構比較深的情況下,能保證網路模型的正常更新和收斂。

具體來看cross公式的各個部分,x_l和x_(l+1)都是d維的列向量,分別表示第l個交叉層和第(l+1)個交叉層的輸出,w_l和b_l也都是d維的向量,它們分別表示第l交叉層的權重引數和偏差引數;而每個交叉層在特徵crossing之後都會加上這個層本身的輸入,以殘差結構的角度看就是,f=x_(l+1)-x_l,f的輸入和輸出都是d維。對cross計算的視覺化的解釋如下圖所示:

Google深度學習CTR預估模型DCN:顯式高階交叉特徵學習

另外,我們可以看下Cross網路的特徵交叉階數和時間複雜度:

交叉階數:Cross網路層數為l時,因為l_0的階數是1,所以其最高的交叉特徵階數為 l+1 ,這個比較容易理解;

複雜度:對於一共 L_c 層的Cross網路來講,單獨Cross網路的引數數量為 d✖️L_c✖️2 ,其中d表示輸入特徵的維度。其時間複雜度和空間複雜度都和輸入維度呈線性關係,因此,與DNN網路相比,Cross網路引入的複雜度可以忽略不計,而這主要得益於 x_0 ✖️ x_l^T 的一階計算特性,在不用計算和儲存整個矩陣的情況下,也可以計算出來所有的交叉項。

3.Deep Network

深度網路就是一個常見的全連線網路,每層網路的計算公式如下:

DNN網路的複雜度:為了簡便,假設DNN中所有的網路層的大小相同,L_d 表示網路層數量,m 表示每層的神經元數量,那麼DNN中所有引數量為:

4.Combination Layer

從交叉網路和DNN網路輸出的結果會拼接起來,並輸入到之後的預測函式中,即:

對應的loss函式為:

二、後續模型學習

Cross網路對於整個DCN模型的作用來說,肯定是有正向收益的,因為它在DNN的特徵隱式高階交叉之外,額外引入了顯式的不同階的特徵交叉實現。但是在DCN模型之後,DCN的作者針對當前的DCN模型結構設計中有明顯需要改進的地方,又做了一些有效的改進。相關的改進方式以DCN-v2的形式發表了出來,我隨後會將相應的DCN-v2對於DCN的改進之處整理並分享出來。