CTR預估系列(一)-FNN論文筆記

1 論文摘要及介紹

在推薦系統或者廣告系統中,CTR、CVR預估至關重要。不同於視覺和音頻領域連續的原始特徵,這些任務場景的輸入特徵大多數是多類型的離散特徵, 且特徵之間相互依賴的先驗知識很少。常用的解決方法是線性模型+手工組合高階特徵。線性模型簡單有效,但無法學習特徵間組合信息。手工組合高階特徵會導致龐大的特徵空間,待學習參數量增加,導致模型訓練複雜。非線性模型可以通過特徵間的組合提高模型的能力,例如FM模型將二值化的特徵映射程連續的低維空間,通過內積獲取特徵間的組合關係;GBDT等梯度提升樹算法可以通過樹的構建過程自動的學習特徵的組合,這些方法都不能利用所有可能的組合關係。DNN在CV和NLP等領域取得較好的效果,而針對CTR預估等場景下大規模輸入特徵空間下,DNN需要學習的參數量也很大,計算成本較高。

在本論文中,利用有監督或者無監督的Embedding方法來學習大規模多類型的離散特徵空間。論文提出的FNN模型中Embedding層採用FM模型來有監督的對稀疏特徵進行降維處理,轉換爲稠密連續型特徵。論文提出的SNN-RBM模型採用基於負採樣的RBM來處理Embedding層,SNN-DAE則採用基於負採樣的DAE處理Embedding層。在Embedding層之上,構建多層的神經網絡來探索潛在的數據的模式。

模型輸入categorical特徵都是field-wis one-hot編碼,編碼後特徵記爲: xx

2 FNN原理

FNN網絡結構圖
從上到下,各層定義及說明如下:

輸出層:使用sigmoid(x)=1/(1+ex)sigmoid(x)=1 /\left(1+e^{-x}\right)激活函數,即:
y^=sigmoid(W3l2+b3) \hat{y}=\operatorname{sigmoid}\left(\boldsymbol{W}_{3} l_{2}+b_{3}\right)
其中,W3R1×Lb3R and l2RL\boldsymbol{W}_{3} \in \mathbb{R}^{1 \times L},b_{3} \in \mathbb{R} \text { and } l_{2} \in \mathbb{R}^{L}

隱藏層l2層、l1層使用tanh(x)=(1eβx)/(1+e2x)\tanh (x)=\left(1-e^{-\beta x}\right) /\left(1+e^{-2 x}\right)激活函數,即:
l2=tanh(W2l1+b2) l_{2}=\tanh \left(W_{2} l_{1}+b_{2}\right)

l1=tanh(W1z+b1) l_{1}=\tanh \left(W_{1} z+b_{1}\right)

其中,W2RL×M,b2RLl1RM\boldsymbol{W}_{2} \in \mathbb{R}^{L \times M}, \boldsymbol{b}_{2} \in \mathbb{R}^{L},l_{1} \in \mathbb{R}^{M}W1RM×J,b1RM\boldsymbol{W}_{1} \in \mathbb{R}^{M \times J}, \boldsymbol{b}_{1} \in \mathbb{R}^{M} and z=(w0,z1,z2,zi,,zn)RJ\boldsymbol{z}=\left(w_{0}, \boldsymbol{z}_{1}, \boldsymbol{z}_{2}, \dots \boldsymbol{z}_{i}, \dots, \boldsymbol{z}_{n}\right) \in \mathbb{R}^{J}w0Rw_{0} \in \mathbb{R}是全局biais參數,nn是特徵類型總數,zi=W0ix[starti:endi]=(wi,vi1,vi2,,viK)\boldsymbol{z}_{i}=\boldsymbol{W}_{0}^{i} \cdot \boldsymbol{x}\left[\operatorname{start}_{i}: \operatorname{end}_{i}\right]=\left(w_{i}, v_{i}^{1}, v_{i}^{2}, | \ldots, v_{i}^{K}\right) 代表第i個field特徵。zz向量是上圖中第一層,由FM訓練得出:
yFM(x):=sigmoid(w0+i=1Nwixi+i=1Nj=i+1Nvi,vjxixj) y_{\mathrm{FM}}(\boldsymbol{x}):=\operatorname{sigmoid}\left(w_{0}+\sum_{i=1}^{N} w_{i} x_{i}+\sum_{i=1}^{N} \sum_{j=i+1}^{N}\left\langle\boldsymbol{v}_{i}, \boldsymbol{v}_{j}\right\rangle x_{i} x_{j}\right)
上層的神經網絡學習的是FM的輸出表示,所以大大減少了網絡參數,解決了計算複雜度問題。而不同隱層通過採用不同激活函數可以從數據中學習不同形式的表示, 所以模型會更好的捕捉到潛在的組合關係,獲得更好的性能。

借鑑CNN通過相鄰層神經元進行局部連接來充分利用空間局部相關性的思想,因此,爲了保證局部的稀疏性,以及讓FM在潛在空間中學習到的結構化數據表示更好用於後續的模型,所以FNN的底層並沒有採用全連接。但是FM的乘積規則和DNN的求和規則確實存在明顯的差異性,但根據文獻,如果觀測的差異信息高度不確定,則後邊DNN層的權重並不會明顯偏離FM層的權重。

另外,除了FM層的隱藏層的權重可以使用文獻[17]中提出基於contrastive divergence的layer-wise RBM預訓練模型進行初始化,這樣可以更有效的保留輸入數據的信息。FM層的權重可以使用SGD進行訓練,只更新連接非0輸入單元的權重,可以大大降低計算複雜度。通過預訓練對FM層和其他的層進行初始化之後,使用交叉熵的損失函數進行有監督的fine-tuning(後向傳播):
L(y,y^)=ylogy^(1y)log(1y^) L(y, \hat{y})=-y \log \hat{y}-(1-y) \log (1-\hat{y})
通過後向傳播的鏈式法則,包括FM在內的所有FNN權重可以被快速的更新,例如,FM層權重更新方式如下:
L(y,y^)W0i=L(y,y^)ziziW0i=L(y,y^)zix[starti: end i]W0iW0iηL(y,y^)zix[starti:endi] \begin{aligned} \frac{\partial L(y, \hat{y})}{\partial \boldsymbol{W}_{0}^{i}} &=\frac{\partial L(y, \hat{y})}{\partial \boldsymbol{z}_{i}} \frac{\partial \boldsymbol{z}_{i}}{\partial \boldsymbol{W}_{0}^{i}}=\frac{\partial L(y, \hat{y})}{\partial \boldsymbol{z}_{i}} \boldsymbol{x}\left[\operatorname{start}_{i}: \text { end }_{i}\right] \\ \boldsymbol{W}_{0}^{i} & \leftarrow \boldsymbol{W}_{0}^{i}-\eta \cdot \frac{\partial L(y, \hat{y})}{\partial \boldsymbol{z}_{i}} \boldsymbol{x}\left[\operatorname{start}_{i}: \operatorname{end}_{i}\right] \end{aligned}
由於輸入x[ start i: end i]x\left[\text { start }_{i}: \text { end }_{i}\right]特徵大多數都是0,所以在fine-tuning過程中只更新連接非0單元的權重。

3 SNN原理

SNN網絡結構圖
SNN模型和FNN模型的區別主要是在最底層的網絡結構和訓練方法。SNN的底層採用Sigmoid激活函數的全連接:
z=sigmoid(W0x+b0) z=\operatorname{sigmoid}\left(W_{0} x+b_{0}\right)
底層權重的初始化,在預訓練階段嘗試了RBM和DAE模型。爲了優化高度稀疏one-hot編碼帶來的計算成本問題,論文提出了基於採樣的RBM(SNN-RBM, Fig2(b)),和基於採樣的DAE(SNN-DAE,Fig2©)方法來計算底層初始化權重。在訓練時,我們不使用每個field的全部的特徵,例如city這個領域,只有一個元素是1,其他都是0,所以我們隨機採樣m個爲0的元素,圖2中(b)和(c)中的黑點表示的沒有被採樣到的爲0的元素。然後RBM使用對比散度,在DAE上用SGD來進行預訓練,得到的稠密的特徵表示作爲後一層的輸入。

4 實驗及結論

  • 激活函數:嘗試了線性函數,sigmoid,tanh,然後發現tanh是最好的

  • 結構選擇:研究了具有3,4,5個隱層的結構,發現具有3個隱層的結構效果最好。除了增減層數外,我們還對比了不同的結構,在總的隱含節點相同的情況下,發現鑽石型的是最好的。最後使用結構是(200,300,100)
    在這裏插入圖片描述

  • 正則化:dropout效果優於L2,dropout的比例的變化,對AUC的影響是比較大的。隨着dropout比例的變大,模型的能力先變好,然後顯著的下降。對於FNN來說,dropout的最佳值爲0.8,對SNN來說,dropout的最佳值爲0.99
    在這裏插入圖片描述

5 參考資料

  • Deep Learning over Multi-field Categorical Data - A Case Study on User Response Prediction. Weinan Zhang etc.
  • FNN論文解讀: https://zhuanlan.zhihu.com/p/65112570
  • 論文作者復現代碼:https://github.com/wnzhang/deep-ctr
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章