【CTR預估系列】Deep & Cross Network 模型

論文下載地址:https://arxiv.org/pdf/1708.05123.pdf

如果瞭解WD模型的話,簡單的說這篇文章就是把WD模型的wide側改成了cross網絡。

結構圖如下所示:

                                  

從下到上,先看模型的輸入是

                                     

這個也是推薦領域常見的輸入方式,將實值類的特徵stack起來,稀疏的類別特徵做embedding。然後整體concat起來作爲模型的輸入。

再網上走一步

                             

先看右邊的模型,就是一個正常的全連接網絡。

關鍵的是左邊的cross 網絡。

如果直接看圖上的公式會有點誤導,直接看文章給出的每一層x的計算公式和具體的可視化圖

            公式:

                                  

            交叉層可視化圖:

                                     

這樣就比較清楚了,每一層的計算中都有x_0,x_0是一個列向量,所以x_0*x{}'這個計算過程相當於把交叉網絡輸入x_0的每個維度分發到不同的維度上,再利用w把分發出去的值合併起來,以此來達到交叉特徵的效果。

舉個栗子🌰

假設輸入的是一個三維的向量x_0=[x_{01},x_{02},x_{03}],那麼第一層交叉層的計算如下圖:

                               

看一下過程就很清楚了。

 而每一層中的參數只有w_lb_l ,如果輸入數據的維度是d,交叉層的層數是L,那麼整個交叉網絡的參數只有d*L*2,也大大減少了參數的數量。

最後的輸出

                                

交叉網絡和深度網絡的輸出是他們最後一層神經網絡節點值。這裏和wide and deep 模型不同的是,wide and deep模型最後的輸出只有一個節點,模型直接將wide和deep兩個子模型的輸出的單個值加起來送入激活函數。

而這裏是將cross網絡輸出的向量和deep輸出的向量concate起來,再做一層的全連接,才送入激活函數。

具體實現代碼github上很多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章