【论文解读】DCN-M:Google提出改进版DCN,用于大规模排序系统的特征交叉学习(附代码)...
“?本文結合DeepCTR-Torch中的代碼實現,介紹了DCN的改進版——DCN-M。該模型能更有效地學習特征交叉,并通過低秩矩陣分解對參數矩陣進行降維,降低計算成本。受MOE結構啟發,作者還在多個子空間中建模特征交叉。實驗表明,傳統的基于ReLU的神經網絡在學習高階特征交叉時效率較低;DCN-M能夠在保證效率較高的同時,取得優于SOTA方法的效果。”
本文介紹的論文是《DCN-M: Improved Deep & Cross Network for Feature Cross Learning in Web-scale Learning to Rank Systems》 論文地址:https://arxiv.org/abs/2008.13535
代碼實現:DeepCTR-(https://github.com/shenweichen/DeepCTR-Torch)中DCN-M和DCN-Mix(點擊文末閱讀原文可訪問)
摘要
在大規模(幾十億樣本)場景下,DCN[1]中cross網絡的表達能力有限,無法學到更加有用的特征交叉。盡管學術界做出了大量進展,但工業界很多深度模型還是依賴于傳統的DNN來低效地學習特征交叉。
基于DCN的優缺點以及現有的特征交叉方法,作者提出了改進版的DCN-M[2]來使模型更容易在大規模工業場景下落地。大量實驗結果表明,DCN-M在學習特征交叉時的表達能力更強且效率較高,在主流數據集上能夠超過SOTA方法。在引入混合低秩矩陣后效果更好。DCN-M結構簡單,容易作為building blocks,且在許多大規模L2R系統中取得了顯著的線下和線上指標提升。
貢獻
提出了一種新的DCN-M模型來有效地學習顯式和隱式特征交叉,模型高效、簡單的同時,表達能力更強。
基于DCN-M中學習出的低秩矩陣,利用低秩方法來在子空間中進行近似特征交叉,在模型效果和時延上達到了更好的權衡。受MOE結構啟發,將矩陣分解至多個子空間,隨后通過門控機制來對這些子空間進行融合。
使用人造數據集進行了研究,結果表明傳統的基于ReLU的神經網絡在學習高階特征交叉時效率較低。
在Criteo和ml-1m數據上的大量實驗表明,DCN-M模型能夠顯著勝過SOTA方法。
模型
DCN回顧
首先回顧一下DCN的模型結構:
特征經過embedding、stack后,分別輸入cross network和DNN,兩路的輸出stack后經過單層nn映射為一維的預測分數。
embedding/stack/DNN不必贅述,主要看cross network。cross network的核心思想是更高效地實現顯式特征交叉,每一層的計算如下:
其中
圖示:
, , , 都是d維的列向量,形狀是(d,1)。的形狀是(d,1) * (1,d) * (d,1)=(d,1),與, 一致。cross網絡每一層僅增加2d個參數(和),整體參數量為(為網絡層數),參數量相比DNN是少得多的。
cross網絡的改進
DCN中cross網絡的參數是向量,DCN-M中換成了矩陣來提高表達能力、方便落地。DCN-M是指“DCN-matrix” ,原來的DCN在這里稱為DCN-V(“DCN-vector”)。
其中,
圖示:
目前最新版的DeepCTR-Torch[3]中已實現了DCN和DCN-M,只需調整parameterization參數即可切換模型。其中CrossNet的核心代碼如下:
if?self.parameterization?==?'vector':xl_w?=?torch.tensordot(x_l,?self.kernels[i],?dims=([1],?[0]))dot_?=?torch.matmul(x_0,?xl_w)x_l?=?dot_?+?self.bias[i] elif?self.parameterization?==?'matrix':dot_?=?torch.matmul(self.kernels[i],?x_l)??#?W?*?xi??(bs,?in_features,?1)dot_?=?dot_?+?self.bias[i]??#?W?*?xi?+?bdot_?=?x_0?*?dot_??#?x0?·?(W?*?xi?+?b)??Hadamard-product x_l?=?dot_?+?x_l完整代碼地址:https://github.com/shenweichen/DeepCTR-Torch/blob/bc881dcd417fec64f840b0cacce124bc86b3687c/deepctr_torch/layers/interaction.py#L406-L461
Deep和cross的結合方式
結合方式分為堆疊(串行)和并行兩種:
這兩種結合方式下的DCN-M效果都優于基準算法。但這兩種結構之間的優劣不能一概而論,與數據集有關。串行結構在criteo數據集上更好,而并行結構在Movielen-1M上效果更好。
損失函數
損失函數為帶L2正則化的log loss:
混合低秩矩陣
工業界模型往往受計算資源和響應時間限制,需要在保證效果的同時降低計算成本。低秩方法被廣泛用于降低計算成本——將一個稠密矩陣近似分解為兩個”高瘦“的低秩矩陣。而且,當原矩陣的奇異值差異較大或快速衰減時,低秩分解的方法會更加有效。作者發現,DCN-M中學到的參數矩陣是低秩的(所以比較適合做矩陣分解)。下圖展示了DCN-M中學到的參數矩陣的奇異值衰減趨勢,比初始化的矩陣衰減更快:
因此,作者將參數矩陣分解為了兩個低秩矩陣:
這個公式有兩種解釋:
(1)在子空間中學習特征交叉
(2)將輸入特征x映射到低維空間中,然后再映射回到
這兩種解釋分別激發了作者隨后的兩處改進:
(1)激發了作者使用Mixture-of-Experts (MoE)的思想,在多個子空間中學習,然后再進行融合。MOE方法包含兩部分:專家網絡(即上個公式中使用低秩矩陣分解的cross網絡)和門控單元(一個關于輸入的函數),通過門控單元來聚合個專家網絡的輸出結果:
圖示:
(2)激發了作者利用映射空間的低秩性。在映射回原有空間之前,施加了非線性變換來提煉特征:
此公式的代碼實現:(低秩空間中的非線性函數目前采用tanh)
??#?E(x_l)#?project?the?input?x_l?to?$\mathbb{R}^{r}$v_x?=?torch.matmul(self.V_list[i][expert_id].T,?x_l)??#?(bs,?low_rank,?1)#?nonlinear?activation?in?low?rank?spacev_x?=?torch.tanh(v_x)v_x?=?torch.matmul(self.C_list[i][expert_id],?v_x)v_x?=?torch.tanh(v_x)#?project?back?to?$\mathbb{R}^ozvdkddzhkzd$uv_x?=?torch.matmul(self.U_list[i][expert_id],?v_x)??#?(bs,?in_features,?1)dot_?=?uv_x?+?self.bias[i]dot_?=?x_0?*?dot_??#?Hadamard-product完整代碼:https://github.com/shenweichen/DeepCTR-Torch/blob/bc881dcd417fec64f840b0cacce124bc86b3687c/deepctr_torch/layers/interaction.py#L464-L537
復雜度
DCN-M中的cross網絡的時空復雜度是,采用混合低秩矩陣后(稱作DCN-Mix)的時空復雜度是,當rK<<d時會更加高效。
實驗
「RQ1:在什么情況下,顯式學習特征交叉的模型能比基于ReLU的DNN更有效?」
很多CTR的工作都在針對顯式特征交叉進行建模(傳統神經網絡無法高效地學習到),但很多工作都只在公開數據集上進行研究,這些公開數據集上特征交叉的模式是未知的,且包含許多噪聲數據。因此,作者通過特定的特征交叉模式來生成數據集,驗證各模型的效果。
首先考慮「2階特征交叉」。按照難度由易到難的順序指定特征交叉的模式:
中的集合和權重是隨機指定的。下面我們看看各模型能否有效的學習到這些特征交叉(CN是指單獨的Cross Network):
從RMSE上來看模型擬合的效果:CN-V和CN-M效果較好。當交叉的模式變得復雜時(),所有方法的效果都有所下降,但CN-M仍然是很準確的。DNN的效果較差,即使是使用更寬、更深的DNN(DNN-large),效果仍然較差。
「1-4階特征交叉」(與實際情況較為接近):
CN-M和DNN的效果如下表所示:
當增大層數時,CN-M能夠捕捉數據中更高階的特征交叉、達到更好的效果。由于CN-M中的殘差項和偏置項,即使模型超過3層(引入了多余的特征交叉),效果也沒有變差。
「RQ2:去掉DNN后,baselines中的特征交叉部分表現如何?」
數據集:Criteo
更高階的模型會比2階的模型效果更好,說明在Criteo數據集上更高階的交叉也是有意義的。
在高階模型中,Cross Network取得了最好的效果
「RQ3 DCN-M的效果與baselines相比如何?能否在準確性和計算成本上取得更好的權衡?」
數據集:Criteo、ml-1m
FLOPS是模型運行時間的近似估計。大部分模型的運行時間大約是參數量#Params的2倍,但xDeepFM卻高出了一個數量級,難以落地。DCN-M效果最好,而且相對來說效率比較高;DCN-Mix進一步降低了計算成本,在準確性和計算成本上實現了更好的權衡。
「RQ4 cross網絡能否替代ReLU層?」
作者進一步對比了DNN和CrossNet的效果。由于實際生產環境中資源有效,往往需要限制模型大小。因此作者限制了模型的內存占用(即參數量)。結果顯示,在相同的參數量限制下,CrossNet的效果更好。那是不是說CrossNet就能替代ReLU層?作者表示:還需要更多實驗和分析...
「RQ5 DCN-M中的各項參數是如何影響模型效果的?」
1.網絡層數:
當cross網絡層數增加時,效果會穩定提升,說明能夠捕捉更有用的交叉。但提升的速度越來越慢,說明高階特征交叉的作用是低于低階交叉的。作者也對比了一個相同規模的DNN,層數<=2時DNN效果比cross網絡更好,但層數更多時,差距會減小甚至出現反超。
2.矩陣的秩:
當秩小于64時,logloss幾乎是呈線性下降;大于64時下降速度放緩。這說明最重要的特征能夠被最大的64個奇異值所捕捉。
3.專家網絡的數量:
當其他參數設置為最優時,使用更多的專家網絡并沒有明顯的提升,這可能是由于門控機制和優化方法比較樸素。作者認為,如果采用更精細化的門控機制和優化方法,會從MOE結構中取得更大收益。
「RQ6 DCN-M能否捕捉重要的特征交叉?」
DCN-M中的權重矩陣能夠反映不同交叉特征的重要程度:
根據繪制出不同交叉特征的權重圖譜:
可以看到,模型能夠學到一些強特征,例如gender × userid,movieId × userid。
總結
DCN-M模型能夠簡單且有效地建模顯式特征交叉,并通過混合低秩矩陣在模型效果和時延上實現了更好的權衡。DCN-M已成功應用于多個大型L2R系統,取得了顯著的線下及線上收益。實驗結果表明DCN-M的效果超過了現有SOTA方法。
參考資料
[1] Wang R, Fu B, Fu G, et al. Deep & cross network for ad click predictions[M]//Proceedings of the ADKDD'17. 2017: 1-7.
[2] Wang R, Shivanna R, Cheng D Z, et al. DCN-M: Improved Deep & Cross Network for Feature Cross Learning in Web-scale Learning to Rank Systems[J]. arXiv preprint arXiv:2008.13535, 2020.
[3] DeepCTR-Torch: https://github.com/shenweichen/DeepCTR-Torch
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:
https://t.zsxq.com/y7uvZF6
本站qq群704220115。
加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【论文解读】DCN-M:Google提出改进版DCN,用于大规模排序系统的特征交叉学习(附代码)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 豆瓣评分9.9!机器学习“蜥蜴书”最新版
- 下一篇: 【推荐系统】面向科研的推荐系统Bench