推薦系統實踐 0x10 Deep Crossing

NoMornings發表於2020-12-17

這一篇,我們將介紹微軟BING AD團隊提出的Deep Crossing模型,用來解決大規模特徵組合問題的模型,這些特徵可以是稠密的,也可以是稀疏的,從而避免了人工進行特徵組合,並使用了當年提出的殘差神經網路。這個模型也算是深度學習在推薦系統的完整應用了:完整的解決了特徵工程、稀疏向量稠密化、多層神經網路進行優化等一些列深度學習的目標應用。

特徵

微軟在廣告場景中所使用的特徵如下面所示:

  • 查詢。
    使用者在搜尋框中輸入的文字字串
  • 關鍵字
    與產品相關的文字字串,廣告主新增的其產品描述詞
  • 標題
    贊助廣告的標題(簡稱為"廣告",以下簡稱 "廣告"),由廣告主指定,以獲取關注度
  • 落地頁
    使用者點選了相應的廣告之後進入的頁面
  • 匹配型別
    給廣告商的一個選項,包括精準匹配、短語匹配、語義匹配等等
  • 點選
    顯示是否有一個印象被點選使用者的點選。點選通常會與執行時的其他資訊一起被記錄下來
  • 點選率
    廣告的歷史點選率
  • 點選預測
    平臺的關鍵模式,即預測使用者點選給定廣告的可能性。
  • 廣告計劃
    廣告主創造的投放廣告的計劃、包括預算、定向條件等
  • 曝光樣例
    一個廣告“曝光”的例子,記錄了廣告在實際曝光場景的相關資訊
  • 點選陽曆
    一個廣告“點選”的例子,記錄了廣告在實際點選場景的相關資訊

模型結構

網路的主要模型結構如下圖所示

可以看出網路結構主要包括4種網路層——Embedding層,Stacking層,Multiple Residual Units層以及Scoring層。所需要的優化目標也是很常見的點選與否的二分類log損失:

\[logloss=-\frac{1}{N}\sum_{1}^{N}(y_i\log(p_i))+(1-y_i)\log(1-p_i)) \]

Embedding層

Embedding層以全連線層為主,主要目的是用來將稀疏的類別特徵轉化成稠密的Embedding向量,一般來說,Embedding向量的維度要遠小於原始的洗漱特徵向量。數值型別的特徵不需要經過Embedding層而直接進入Stacking層。從下面的公式也能看出,所使用的啟用函式是ReLU函式。

\[X^O_j=\max(0, W_jX_j^I+b_j) \]

Stacking層

Stacking層比較簡單,將所有的Embedding向量與數值型別的特徵拼接在一起,從而形成新的特徵向量,該層也常被成為連線層(Concatenate)。

Multiple Residual Untis層

這個層主要大量使用了帶有殘差的多層感知機,也就是借鑑了ResNet的殘差的思想進行優化的網路結構。通過多層殘差網路對特徵向量的各個維度進行充分的交叉組合,使得模型能夠捕捉到更多的非線性特徵以及組合特徵的資訊,同時殘差也使得網路變得更深以及更容易優化。下圖就是一個殘差單元的結構:

將原始的輸入和通過網路層的輸出進行逐元素相加,也被稱為短路(Shortcut)操作。

\[X^O=\mathcal{F}(X^I,\{W_0, W_1\},\{b_0,b_1\})+X^I \]

Scoring層

Scoring層作為輸出層,為了擬合優化目標存在的,如CTR預估這種二分類模型,Scoring層往往使用的邏輯迴歸模型,對於影像分類等多分類模型,Scoring層使用的Softmax模型。

小結

作為一個“Embedding+多層神經網路”的結構,在歷史上是具有革命意義的,沒有使用任何的人工特徵,並且相對於FM/FFM等模型,做到了通過調整網路層數進行深度特徵交叉。這也是Deep Crossing模型的名字由來。

參考

Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features

相關文章