1. 程式人生 > >深度學習在 CTR 中應用

深度學習在 CTR 中應用

核心 融合 輸出 -s 情況 ... 能夠 rec 數據

歡迎大家前往騰訊雲技術社區,獲取更多騰訊海量技術實踐幹貨哦~

作者:高航

一. Wide&&Deep 模型

首先給出Wide && Deep [1] 網絡結構:

技術分享

本質上是線性模型(左邊部分, Wide model)和DNN的融合(右邊部分,Deep Model)。

推薦系統需要解決兩個問題:

記憶性: 比如通過歷史數據知道”麻雀會飛”,”鴿子會飛”

泛化性: 推斷在歷史數據中從未見過的情形,”帶翅膀的動物會飛”

WideDeep是怎麽解決這兩個問題呢?

Wide模型:

比如現在有一個點餐推薦APP,我輸入炸雞(query),那麽會給我進行推薦其他相關的食物(item),那麽模型目地就是為了希望知道給定了query, 消費item的概率, 即: P(消費| query, item). 那我們就可以通過構建出一系列(query, item)的cross 特征, 通過LR去學習到這些不同的cross特征與target = 消費 的相關性。比如(query = “炸雞”, item = “啤酒”) 與target = 消費 ,通過歷史數據學習到有很強的相關性,那麽就推薦給炸雞。

技術分享

Deep模型:

現在我厭倦了推薦的結果,希望推一些讓我驚喜的食物,上面的wide模型,我們構建的cross特征也是有限的,不能面面俱到,cross特征或許可以是三個類別,四個類別。所以,需要deep模型自動幫我們做一些特征。每個特征可以映射到一個低維空間去,學習到一個低維dense的表達(embedding vector)。 那麽給定一個query, 我們可以在embedding space中找距離相近的item, 認為是潛在喜歡的item

技術分享

Wide模型與Deep模型的結合,目的是為了平衡記憶性和泛化性的結果.

技術分享

二. FNN,SNN 模型

和wide deep出發點一樣, 一些線性模型LR很難學到非線性表達, 非線性模型比如FM, GBDT又很難學到所有的特征組合方式。那麽,如何利用DNN去自動學習到特征表達,自動去學習到特征之間的交叉呢?

FNN模型結構[2]:

技術分享

首先需要對category特征進行一個one-hot編碼。

l1, l2層都是隱藏層,那麽, dense real layer 就可以看作一個embedding層, 每個field 分別 對應一個embedding的過程。通常,使用FM去初始化這些參數往往能夠更快地收斂,最大限制避免訓練過程中陷入局部最小,以及得到更好的結果。可以看到,FNN其實就是widedeep模型的deep部分,但是FNN有用FM進行一個參數初始化的過程。

SNN模型結構:

技術分享

SNN和FNN模型區別於最底層的訓練方法, FNN最底層先用FM初始化,可以看到,SNN最底層是全連接的,不區分不同的field。 初始化采用RBM(限制玻爾茲曼機) 和 DAE(自動編碼機)。

訓練過程中,沒有每輪叠代都會用到所有的特征,對為0的單元進行一個下采樣操作,圖中黑色的單元即是沒有被選取到,不參與參數叠代。計算復雜度得到大量的減少。

文章在iPinYou數據集上進行評測,可以看到FNN效果優於FM,LR。

技術分享

文章對調參也給出了一些經驗

  1. 網絡結構,通常,鉆石型的網絡結構往往優於其他結構

    1. 隱藏層單元數不是越高越好,中間有一個臨界值達到最優.
  2. Dropout在數據量本來就很稀疏的情況下盡量不用,不同的數據集dropout表現差距比較大。

三. PNN 模型

PNN[3]的網絡結構:

技術分享

PNN的結構的思想相比於WideDeep模型核心改動地方在對於embedding後的dense feature,增加了兩兩交叉的功能,widedeep是embedding feature全部輸入到隱藏層了。不同field經過Embedding後的特征做點擊運算其實就相當於FM,那麽PNN認為首先需要確保學習到這些交叉特征,再去額外交給DNN去學習更復雜的交叉特征。那麽PNN結構其實相當於FM+DEEP。

再說下網絡細節: Embedding layer 和Wide Deep模型是一樣的, 不同field特征映射到了一個embedding的空間上,這時,不是所有的特征直接送到一個NN網絡裏面去,這裏分成兩個部分z 和p。 z部分直接就是原始的embedding特征不變; P部分是embedding特征兩兩做內積運算,達到FM的效果,接下來z和p拼接成一個vector, 送到一個NN網絡裏面,最後softmax輸出概率值。

四. DeepFM 模型

DeepFM[4]的網絡結構:

技術分享

可以看到,很像PNN結構,只是在這裏FM沒有和原始特征一起送到NN中去訓練,而是單獨拿出來類似於WIDE模型。其實就是WideDeep模型中Wide側替換為FM。

五. NFM 模型

NFM模型[5]的網絡結構:

技術分享

首先,也是經過全連接得到embedding層,輸入是技術分享

技術分享分別是不同特征對應的相同維數的embedding向量。接下來,這些embedding向量兩兩做element-wise的相乘運算得到B-interaction layer。(element-wide運算舉例: (1,2,3)element-wide相乘(4,5,6)結果是(4,10,18)。)

技術分享

該B-interaction Layer 得到的是一個和embedding維數相同的向量。然後後面接幾個隱藏層輸出結果。

為什麽這麽做呢?首先看如果B-interaction layer後面不接隱藏層,直接把向量的元素相加輸出結果(對應下面的公式h=(1,1,1,...,1)) , 就是一個FM, 就好比一個線性模型,權重都是1 :

技術分享

現在後面增加了隱藏層,相當於做了更高階的FM,更加增強了非線性表達能力。

六. AFM 模型

AFM模型[6]的網絡結構:

技術分享

AFM是NFM模型的一個改進, 在傳統FM模型中,使用二階交叉特征得到非線性表達能力,但是不是所有的特征交叉都會有預測能力,很多無用的特征交叉加入後反而會相當於加入了噪聲。

因此,在這個模型中,加入了Attention Net 機制,aij表示特征i,j交叉的權重。計算方式如下: 經過一個attention net的隱藏層,得到該特征交叉的權重

技術分享

最後的預測方式和NFM類似, 當P=(1,1,1,...,1),是加了權重的FM, 後面也可以和NFM一樣增加隱藏層,得到更高階特征的表達能力。

技術分享

結語: 沒有萬能的模型,針對不同的業務可能需要選擇不同的模型,比如如果需要解釋能力強的,那麽不妨選擇AFM模型, Wide Deep實際中應用比較廣,效果也可以,但是很難定位問題,也難分析Deep側的特征重要性。同時網絡結構需要不斷嘗試,或許我們都可以embedding到一個固定的維數後,可以把這個embedding特征當作圖像來做,做卷積,pooling, 說不定有驚喜,達到去噪聲的目的。

參考文獻

[1] Cheng H T, Koc L, Harmsen J, et al. Wide & Deep Learning for Recommender Systems[J]. 2016:7-10.

[2] Zhang, Weinan, T. Du, and J. Wang. "Deep Learning over Multi-field Categorical Data: A Case Study on User Response Prediction." (2016).

[3] Qu Y, Cai H, Ren K, et al. Product-Based Neural Networks for User Response Prediction[J]. 2016:1149-1154.

[4] Guo H, Tang R, Ye Y, et al. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction[J]. 2017.

[5] He X, Chua T S. Neural Factorization Machines for Sparse Predictive Analytics[J]. 2017.

[6] Xiao J, Ye H, He X, et al. Attentional factorization machines: Learning the weight of feature interactions via attention networks[C]. IJCAI, 2017.

相關閱讀

基於 word2vec 和 CNN 的文本分類 :綜述 & 實踐

深度學習的異構硬件加速:TPU 特性與數據中心的 ASIC 應用(概述篇)

基於深度學習的圖像真實風格遷移


此文已由作者授權騰訊雲技術社區發布,轉載請註明文章出處

原文鏈接:https://cloud.tencent.com/community/article/817449

深度學習在 CTR 中應用