Deep & Cross Network for Ad Click Predictions
阿新 • • 發佈:2022-05-13
目錄
\[\bm{x}_{l + 1} = f(\bm{x}_l, \bm{w}_l, \bm{b}_l) + \bm{x}_l = \underbrace{\bm{x}_0 \bm{x}_l^T \bm{w}_l + \bm{b}_l}_{cross} + \underbrace{\bm{x}_l}_{residual},
\]
. 這個可以由歸納法得到, 不妨設對於 \(l\) 均成立, 則 (省略偏置和residual連線)
\[\bm{x}_{l + 1} = \bm{x}_0 \bm{x}_l^T \bm{w}_l = \bm{x}_0 [\bm{x}_l^T \bm{w}_l] = \sum_i x_i [\bm{x}_l^T \bm{w}_l],
\]
概
Wide & Deep 模型雖然強大, 但是其 wide 部分仍需要複雜的交叉特徵的特徵工程, 本文主要提了一個 Cross 模組去自動提取.
主要內容
Embedding and Stacking Layer
如圖所示, DCN 首先需要將稀疏特徵通過 embedding layer 轉換為稠密向量
\[\bm{x}_{\text{embed}, i} = W_{\text{embed}, i} \bm{x}_i, \]然後通過拼接得到
\[\bm{x}_0 = [\bm{x}_{\text{embed}, 1}^T, \cdots, \bm{x}_{\text{embed}, k}^T, \bm{x}_{\text{dense}}^T]^T \]Cross Network
特徵交叉對於推薦系統是非常重要的, 比如 FM 就是主要利用了2階的交叉
\[x_i x_j. \]Cross Network 的作用就是自動的提取高階交叉特徵, 其每一層的形式如下
假設共有 \(L\) 層 (從 0 開始計數), 則最後\(\bm{x}_{L}\)囊括了所有
\[x_1^{\alpha_1}x_2^{\alpha_2}\cdots x_d^{\alpha_d}, \: 0 \le |\bm{\alpha}| \le L + 1, \]其中 \(|\bm{\alpha}| = \sum_{i=1}^d \alpha_i\)
既然 \(\bm{x}_l^T \bm{w}_l\) \(l + 1\) 階, \(\bm{x}_{l+1}\) 自然 \(l + 2\)階.
此外, 和一般的交叉模型不同的是, 由於每個交叉特徵的權重不是獨立的, 使得模型既減少了計算開銷, 又避免了隨之而來的嚴重的過擬合.
Deep Network
很普通的MLP:
\[\bm{h}_{l+1} = f(W_l \bm{h}_l + \bm{b}_l). \]Combination Layer
最後, 通過 combination layer 進行預測
\[p = \sigma([\bm{x}_{L_1}^T, \bm{h}_{L_2}^T]\bm{w}_{\text{logits}}). \]損失為
\[loss = -\frac{1}{N} \sum_{i=1}^N y_i \log p_i + (1 - y_i) \log (1 - p_i) + \lambda \sum_l \|\bm{w}_l\|_2^2. \]程式碼
注: 看了 PyTorch 的程式碼, 發現 Cross 部分居然真的沒用上啟用函式.