深度學習在點擊率預估方面的應用

深度學習在點擊率預估方面的應用

來自專欄計算廣告演算法

背景

計算廣告要解決的問題是為用戶找到最匹配的廣告,使得廣告平台的 eCPM 期望最大。在投放廣告的過程中會對候選廣告進行排序,排序是按照候選廣告的預期收益 eCPM = bid * p_ctr 的大小排序。這裡bid指的是廣告主的對單次點擊的出價,p_ctr 是預估點擊率。所以,點擊率預估地準不準,將直接影響到廣告平台的收益。

最廣泛使用的點擊率預估模型是Logistic Regression(LR) 模型,其假設函數為:

LR 的優勢在於其簡單、高效,以及很好的可解釋性,要學習的參數 wi 就是特徵 xi 對於最終預測值的貢獻程度。但 LR 本質上還是一個線性模型,需要大量的特徵工程才能學習到高階的交叉特徵。

最近這幾年,深度學習技術在圖像、語音以及自然語言處理領域等眾多領域大放異彩。在廣告推薦領域,許多公司開始嘗試將深度學習的技術應用到點擊率預測當中,本文也將對幾種深度模型進行簡單介紹。

在進行介紹前,說明下各個變數的定義:

  • n: 特徵總數,也就是對特徵 One-hot 後的向量總長度
  • f: 特徵域個數,表示有多少個特徵類別
  • e: embedding 向量維度
  • Hi: 第 i 層隱藏層單元個數

深度神經網路(DNN)

廣告領域對於深度學習的應用比較簡單,一般不會用到特別複雜的網路結構,層數一般 3-5 層。下圖是一個由輸入層、輸出層以及2個隱藏層構成的 4 層 DNN 網路,各層之間通過全連接相連。

其中第 l+1 層網路的輸出 a^(l+1) 為:

W^ll 層係數矩陣, a^ll 層輸出,b^ll 層偏置項,sigma 為激活函數,一般是 sigmoid 函數。DNN 的訓練通過反向傳播演算法進行,可使用 SGD,Adagrad,Adam 等常見優化演算法進行參數更新,正則化可通過設置 dropout 或者 l2 。

整個 DNN 需要學習的參數量: n * H_1 + H_1 * H_2 + H_2 * 1

LR 模型也可以看做是一個只有輸入輸出層,沒有隱藏層的兩層神經網路,其輸入直接通過sigmoid函數激活輸出。如下圖:

在廣告領域,大部分的特徵都是類別特徵(categorical feature),例如廣告 ID,網路類型特徵。對於連續值特徵,有時候也會利用分桶的方式將其轉化成類別特徵。針對類別特徵,一般採用 One-hot 編碼,例如網路類型有三種:3G,4G,WIFI。One-hot 編碼後向量長度為3,分別為[1,0,0],[0,1,0],[0,0,1]。

直接將特徵 One-hot 編碼後放到 DNN 里,會使得輸入層變得非常稀疏,且維度變得很大,這會使得要學習的參數量會變得非常大,在現實場景中是不可接受的。深度神經網路的輸入一般是稠密的實數值向量,如何將高維稀疏向量轉化成低維稠密的實數值向量,其實CTR 預估領域經常用到的FM模型已經給出了解決方案:對每個特徵都學習一個低維的實數值隱向量,從而降低 DNN 的輸入維度。

FM 模型由 LR 部分以及特徵交叉部分組成,FM 的優勢在於求 xixj 交叉特徵的權重時,不再像以前一樣需要 xixj 同時存在於訓練樣本中,而是對每個特徵 xi 都會學習到一個長度為 e (量級在O(1), O(10))的實數值隱向量 Vi,交叉特徵的權重等於特徵對應隱向量的內積。

FM 模型也可以看做是如下的前向神經網路,各層之間不再是全連接。

最下面是特徵維度為 n 的離散輸入,embedding 層可以看做是 DNN 的輸入層,從而將 DNN 的輸入維度從 n 變成了 f*e,其值要遠遠小於 n。經過 embedding 層後,對線性部分(LR)和非線性部分(特徵交叉)累加後經過sigmoid輸出。

對於 FM,需要學習的參數:

  • LR 部分:$n+1$
  • 特徵交叉部分:$n * e$

Wide & Deep 模型

谷歌在 2016 年提出了 Wide & Deep 模型,並將其用於 Google Play App 推薦,取得了不錯的效果。

其中 Deep 部分是 DNN,原始特徵經過 Embedding 後將各個 embedding 向量拼接起來構成 DNN 的輸入 a^0=[V1, V2,...,Vf]; Wide 部分由LR以及交叉特徵 varPhi(x) 構成,其中 varPhi(x) 表達了兩個特徵同時出現在樣本中對於最終預測值的貢獻程度,往往需要做大量特徵工程工作。最終兩者的輸出累加後經過 sigmoid 激活輸出。

至於為什麼這麼設計,谷歌在論文中提到兩個重要概念,記憶性以及泛化性。

  • 記憶性:記憶性是指學習在訓練數據中高頻特徵與標籤之間關聯的能力。廣義線性模型比如 LR 的優勢在於記憶性好,對於樣本中出現的高頻低階特徵能夠用少量參數學習,缺點在於泛化能力差,對於沒見過的 ID 類特徵,模型學習能力比較差。
  • 泛化性是指學習在歷史數據中低頻特徵與標籤之間關聯的能力。基於隱向量的 DNN 模型優勢在於其泛化性好,對於樣本中少量出現甚至沒出現過的樣本都能做出預測。

Wide & Deep 模型通過聯合訓練 Wide & Deep,累加 Wide & Deep 的結果,結合了廣義線性模型記憶性好以及 DNN 模型泛化性好的優點,在 Google app store 的推薦上取得了不錯的效果。該模型需要學習的參數:

  • Wide: n+1
  • Deep: f*e*H_1 + H_1*H_2+H_2*1
  • Embedding: n*e

谷歌提出的 Wide & Deep 框架基本成為了「業界標準」,在它之後的許多模型通過變換 Wide 端或者 Deep 端的組件形成新的模型。

DeepFM 模型

由於 Wide & Deep 模型中的 Wide 端 LR 還需要特徵工程去設計交叉特徵,華為以及哈工大實驗室隨後提出了DeepFM 模型。DeepFM 將 Wide 端的 LR 替換為 FM,省去了 LR 特徵工程的工作,而且由於 Wide & Deep 共享同一個 Embedding 層,訓練也會變得更加高效。

左邊是 FM 層,用來學習 order-1 以及 order-2 交叉特徵。右邊是 DNN 層,用來學習更高階的交叉特徵。

DeepFM 需要學習的參數:

  • Deep: f*e*H_1 + H_1*H_2 + H_2*1
  • FM: 1+n+n*e

Neural Factorization Machine(NFM)

NFM 模型用 DNN 來改進 FM 的交叉特徵部分的學習。

f(x) 的結構如下所示:

原始特徵經過 Embedding 後拼成 Vi=xivi}, xi != 0,經過一個 Bi-Interaction Pooling(BI) 後作為 DNN 的輸入。BI 層的操作如下:

odot 代表兩個向量對應元素進行乘積。經過 BI 操作後,DNN 輸入的維度從 n 降低到 e(一般設置為O(10),O(100)),降低了網路複雜度,從而提高了模型訓練的效率。但與此同時,這種方式可能會帶來比較大的信息損失。

該模型需要學習的參數:

  • LR: n+1
  • NFM: n*e+e*H_1+H_1*H_2 + H_2*1

Deep&Cross Network (DCN)

DCN 模型由 Deep 端和 Cross 端構成,Deep 是一個典型的 DNN 網路,Cross 端構造地很巧妙,可以高效地學習高階的交叉特徵,公式如下:

其中 vi 是特徵 xi 對應的 embedding 向量,在 DCN 中,embedding 向量的維度是不固定的,論文中對於 criteo 數據集取值 6*(category cardinality)^(1/4)x0 由 vi 拼接而成,假設 x0 維度是 dxl 能夠表達最高 l+1 次的特徵交叉,但是這一層需要學習的參數只有wlbl,維度與 x0 相同, 總共 2 * d 個,所以 Cross 層可以高效地學習高階交叉特徵。

模型需要學習的參數:

  • Embedding: 固定 embedding 向量維度為 e,則為 n*e
  • Deep: d * H1 + H1 * H2 + H2 * 1
  • Cross: 2 * d * L, L 是Cross的層數

參考:

  1. Wide & Deep Learning for Recommender Systems
  2. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
  3. Neural Factorization Machines for Sparse Predictive Analytics
  4. Deep & Cross Network for Ad Click Predictions

推薦閱讀:

TAG:深度學習DeepLearning | 機器學習 | ctr |