接着廣告模型初探(二),這篇咱們主要聊聊廣告預估模型集大成者DNN派系。
0.DNN模型
DNN網絡結構
模型結構較為簡單,不再贅述。重點關注一下Embedding部分,和NLP里面的Embedding層類似,在廣告模型中Embedding層會對不同類型的特征進行如下變換:
-
單值離散特征:直接Embedding
-
多值離散特征:在Embedding 之后接上Sum Pooling 從而將多值映射為單個Embedding(Average Pooling也未嘗不可)
-
數值型特征:一般先進行離散化(如特征分桶之類)轉化為類似單值離散特征來處理
1.DeepFM模型
DeepFM網絡結構
DeepFM模型可以分為兩個部分,一部分是上篇中提到的FM模型,另一部分就是本篇中提到的DNN模型。最終輸出結果通過下面公式計算得到:
從上面網絡結構圖中可以看到,最底層是輸入的稀疏的原始特征,接着進入了Embedding層,將特征限定到有限的向量空間中,接着分別進入FM和DNN層。FM部分主要考慮的是低階特征(主要是二階特征)而DNN部分主要獲取的是高階特征,FM和DNN層共享Embedding。
2.SDNN模型
SDNN網絡結構
相比於前面兩個模型,SDNN模型的結構更為復雜,當然相應的效果也是更優的。從圖中可以看出,SDNN模型分為兩個階段,一個階段是Join階段、一個階段是Update階段。圖中的slot1,slot2指的是不同的特征,fea1,fea2表示的不同特征的不同取值,舉個例子:slot1表示用戶的興趣愛好,fea1表示足球,fea2表示籃球。不同的fea1和fea2我們會統計show和click的值,最終累加在一起,得到對應的slot1的特征的show和click值。當然show和click對應的值最終也是通過embedding化之后加入模型中訓練的。
與之前不同的是,這里的embedding是一種動態的embedding,剛開始默認的維度可以設置為1,當show&click達到一定的閾值之后,會擴展為fix+dynamic的形式。需要注意的是在Join階段主要更新的是NN參數,從圖中也可以看出梯度只回傳到normalization就停止了,而在Update階段主要更新的是Embedding參數。
之所以采用兩階段的訓練方式,主要是為了:
-
保持線上線下預估的一致性
-
線上預估embedding是pass內固定的,而Update NN學習的是動態變化的embedding的NN
至此,廣告模型初探系列完結,下一篇和大家聊聊廣告算法工程師的日常。后會有期!
歡迎關注微信公眾號:計算廣告那些事兒