Deep & Cross Network(DCN)[1]是來自於 2017 年 google 和 Stanford 共同完成的一篇工作,對比同樣來自 google 的工作 Wide & Deep[2] ,DCN 不需要特徵工程來獲得高階的交叉特徵,對比 FM 系列[3][4]的模型,DCN 擁有更高的計算效率並且能夠提取到更高階的交叉特徵。
模型簡介
從網路結構上面來看,該模型是非常簡單明瞭的,特徵分為類別型與數值型,類別型特徵經過 embedding 之後與數值型特徵直接拼接作為模型的輸入。所有的特徵分別經過 cross 和 deep 網路,如果把這兩個網路看作特徵提取的話,經過提取後的特徵向量拼接之後是常規的二分類,如果訓練資料是曝光和點選,最後輸出的就可以看作點選率了。
離散特徵嵌入
離散特徵嵌入這個想法最初來自於 Mikolov 的 word2vec[5] 系列文章。最初解決的問題是詞的獨熱表示過於稀疏,並且不同詞之間的向量形式表示完全沒有聯絡。具體思路在此不贅述,最終的實現是將一個上萬維的詞獨熱表示嵌入到了只有幾百維的稠密向量中。而嵌入的本質其實是構建一張隨機初始化的向量查詢表,通過我們的訓練目標做有監督學習來得到不同詞在特定目標下,處於向量空間中的位置。
將詞嵌入的思路推廣到其它的離散特徵處理中,我們可以用同樣的方法將各種類別特徵如“使用者性別”、“城市”、“日期”嵌入到稠密的向量空間中。經過這樣處理之後,自然就解決了原本 FM 遇到的特徵稀疏問題。
高階交叉特徵
在廣告場景下,特徵交叉的組合與點選率是有顯著相關的,例如,“USA”與“Thanksgiving”、“China”與“Chinese New Year”這樣的關聯特徵,對使用者的點選有著正向的影響。換句話說,來自“China”的使用者很可能會在“Chinese New Year”有大量的瀏覽、購買行為,而在“Thanksgiving”卻不會有特別的消費行為。這種關聯特徵與label的正向相關性在實際問題中是普遍存在的,如“化妝品”類商品與“女性”,“球類運動配件”的商品與“男性”,“電影票”的商品與“電影”品類偏好等。因此,引入特徵的組合是非常有意義的。看到這種需要,我們很容易就能想到 SVM 裡面的多項式核函式,FM 就是在多項式核的基礎上,優化了稀疏問題以及計算複雜度的產物。
而本文開發了一個新的運算元,用另一種形式來得到交叉特徵:
考慮 x₀ 為輸入的特徵及第一層的輸入,x 為 第 L 層的輸入,我們可以看到它的基本思路還是用矩陣乘法來實現特徵的組合。
這是個遞推形式運算元,所以使用它很容易能得到高於二階的交叉特徵;並且該模型還用了殘差的思想,解決網路效能退化的問題;此公式還有一個小的優化技巧,三矩陣相乘那個運算元,用乘法結合律先計算後面兩個矩陣的積,這樣可以減少三分之一的計算複雜度。
DCN和同場景模型對比
在此我們略過 FM,因為它已經包含在 deepFM 內了。
可以看到 deepFM 進行了離散特徵嵌入的操作,並且還將嵌入前的離散特徵加入到了 FM 層;所以該網路可以看作是傳統的 FM 、離散特徵嵌入之後的 FM 和基本 DNN 三個模型融合的結果。
可以看到 wide & deep 的思路中,deep 部分的做法和 deepFM 是大相徑庭的,關鍵的 wide 部分其實是離線的特徵工程,根據業務場景提前完成了特徵交叉等處理,該模型可以看作是 DNN 與離線特徵模型的融合結果。
而從 DCN 的網路中我們可以發現,deep 部分網路除了使用離散嵌入特徵外,還拼接了數值型特徵;cross 部分網路直接完成了特徵組合,對比 FM 層它可以學到更高階的組合特徵,對比 wide 網路它不需要做線下的特徵工程。
小結
DCN 已經在雲腦科技內部多個專案中得到了實踐運用,包括資訊流和應用商店等多個場景下的點選率預測任務。在深度定製的預測服務支援下,得益於該模型不需要複雜的特徵工程,該模型能以很低的時延和較高的併發量執行。
實踐經驗表明,手工做的特徵工程有時並不能很好的反映我們的預測目標,在實際完成的生產專案中我們更是發現,減少人工特徵工程的使用反而會提高模型的效果,也是更加耐人尋味。