天天看點

LibRec 每周算法:DeepFM

本周介紹一篇來自與哈工大與華為諾亞方舟實驗室的論文。 本文提出的DeepFM模型有效的結合了神經網絡與因子分解機在特征學習中的優點。DeepFM可以同時提取到低階組合特征與高階組合特征,并除了得到原始特征之外無需其他特征工程。實驗表明DeepFM比其他用于CTR的模型更加有效和高效。

Guo et al., DeepFM: A Factorization-Machine based Neural Network for CTR Prediction, arXiv:1703.04247v1 [cs.IR] 13 Mar 2017

動機

對于一個基于CTR預估的推薦系統,最重要的是學習到使用者點選行為背後隐含的特征組合。在不同的推薦場景中,低階組合特征或者高階組合特征可能都會對最終的CTR産生影響。而根據google提出的Wide&Deep model表示,同時考慮到低階特征與高階特征會比單獨考慮其中一個有額外的提升。

目前最大的挑戰是有效的提取到特征組合。有些組合很好被了解,但是有些特征組合很難找到對應的先驗知識。而且即使特征組合有明确的語義,當特征數目比較大的時候也幾乎不可行。

目前常用的CTR預估模型分别存在這些問題。

在使用線性模型中,提取高階特征的普遍方式其實是基于手工和先驗知識。一方面當特征次元比較高時幾乎不可行。另外一方面,這些模型也很難對在訓練集中很少出現的組合特征進行模組化。

因子分解機(Factorization Machines, FM)通過對于每一維特征的隐變量内積來提取特征組合。最終的結果也非常好。但是,理論上來講FM可以對高階特征組合進行模組化,實際上因為計算複雜度的原因一般都隻用到了二階特征組合。

深度神經網絡在學習複雜的特征關系中非常有潛力。目前也有很多基于CNN與RNN的用于CTR預估的模型。但是基于CNN的模型比較偏向于相鄰的特征提取,基于RNN的模型更适合有序列依賴的點選資料。

zhang et al. 提出的FNN(Factorization-machine supported Neural Network)模型首先預訓練FM,再将訓練好的FM應用到DNN中。Qu et al. 在PNN網絡的embedding層與全連接配接層之間加了一層Product Layer來完成特征組合。PNN和FNN與其他深度學習模型相似,很難有效的提取出低階特征。

wide&deep模型混合了寬度(wide)模型與深度模型。但是寬度模型的輸入依舊依賴于特征工程。

是以,現在的模型要不然偏向于低階特征或者高階特征的提取,要不然依賴于特征工程。而本文提出了DeepFM模型可以以端對端的方式來學習不同階組合特征的模型,并且不需要其他特征工程。本文主要貢獻點如下:

本文提出了全新的神經網絡模型,命名為DeepFM。DeepFM的結構中包含了因子分解機部分以及深度神經網絡部分,分别負責低階特征的提取和高階特征的提取。與Wide&Deep Model不同,DeepFM在訓練過程中不需要特征工程。

DeepFM的訓練更高效。與Wide&Deep Model不同,DeepFM共享相同的輸入與embedding向量。在Wide&Deep Model中,因為在Wide部分包含了人工設計的成對特征組,是以輸入向量的長度也會顯著增加。這也增加了其複雜性。

在不同的資料集上對DeepFM進行了驗證。最終結果顯示,與用于CTR預估的已有模型相比,deepFM模型均有提升。

模型

首先給出DeepFM的模型:

LibRec 每周算法:DeepFM

DeepFM模型的資料集的輸入資料χ包含m個域的資料。χ包含連續資料與離散資料。離散資料一般進行one-hot編碼,連續資料使用本身的數值或者離散之後的one-hot編碼。對應的标簽取值為0或者1, 其中0表示沒有點選,1表示點選。這樣一個執行個體中x就可以表示為d維的長向量[x_field1,x_field2,…,x_fieldj,…,x_fieldm]。一般來說,輸入資料x是一個高維稀疏向量。而點選率預估任務則是建構一個預測模型 hat{y}=CTR_model(x),進而估計在給定的情景下使用者點選一個特定app的機率。

DeepFM

DeepFM包含兩部分:神經網絡部分與因子分解機部分。這兩部分共享同樣的輸入。對于給定特征ii,向量wiwi用于表征一階特征的重要性,隐變量ViVi用于表示與其他特征的互相影響。在FM部分,ViVi用于表征二階特征,同時在神經網絡部分用于建構高階特征。對于目前模型,所有的參數共同參與訓練。DeepFM的預測結果可以寫為

hat{y}=sigmoid(yFM+yDNN)

其中y∈(0,1)是預測的點選率,yFM與yDNN分别是FM部分與DNN部分。

FM部分的詳細結構如下:

LibRec 每周算法:DeepFM

FM部分是一個因子分解機。關于因子分解機可以參閱文章[Rendle, 2010] Steffen Rendle. Factorization machines. In ICDM, 2010.。因為引入了隐變量的原因,對于幾乎不出現或者很少出現的隐變量,FM也可以很好的學習。

如圖二所示,FM的輸出如下公式:

LibRec 每周算法:DeepFM

其中w∈R^d,V_i∈R^k. 加法部分反映了一階特征,而内積部分反應了二階特征。

深度部分詳細如下:

LibRec 每周算法:DeepFM

深度部分是一個前饋神經網絡。與圖像或者語音這類輸入不同,圖像語音的輸入一般是連續而且密集的,然而用于CTR的輸入一般是及其稀疏的。是以需要重新設計網絡結構。具體實作中為,在第一層隐含層之前,引入一個嵌入層來完成将輸入向量壓縮到低維稠密向量。

LibRec 每周算法:DeepFM

嵌入層(embedding layer)的結構如上圖所示。目前網絡結構有兩個有趣的特性,1)盡管不同field的輸入長度不同,但是embedding之後向量的長度均為 (k)。2)在FM裡得到的隐變量VV現在作為了嵌入層網絡的權重。在文獻Weinan Zhang, Tianming Du, and Jun Wang. Deep learning over multi-field categorical data - - A case study on user response prediction. In ECIR, 2016.中,V是通過FM來預訓練,但是本文中,FM模型作為整個模型的一部分與其他深度學習模型一起參與整體的學習。此時,整個模型可以通過end-to-end的方式來完成訓練。嵌入層的表示如下:

a_0=[e_1,e_2,,e_m]

其中e_i表示嵌入層的第i個field,m為#field。a_0為輸入深度神經網絡的向量,前饋過程可以表示為

a_{l+1}=σ(W^(l) a^(l) + b^(l))

需要指出的是,FM部分與深度部分共享相同的embedding帶來了兩個好處:

從原始資料中同時學習到了低維與高維特征。

不再需要特征工程。而Wide&Deep Model需要。

與其他模型的聯系

該部分主要讨論了本文提出的DeepFM模型與已經存在的深度學習模型之間的差異。不同模型的結構如下圖所示:

LibRec 每周算法:DeepFM

FNN:[Zhang et al., 2016] Weinan Zhang, Tianming Du, and Jun Wang. Deep learning over multi-field categorical data - - A case study on user response prediction. In ECIR, 2016. 本模型中FM需要預訓練。而此帶來了這兩點局限:1)FM可能過于影響到嵌入層的參數。2)預訓練也降低了效率。另外,FNN隻能捕捉到高維特征。

PNN:為了捕捉到高階特征,PNN在嵌入層與隐含層第一層之間引入了product layer。而根據不同的乘積方式,PNN有三種變種:IPNN,OPNN,PNN*,分别對應內積,外積,內積與外積。在具體使用中,因為外積的近似計算損失了大量的資訊,使得外積的結果不如內積可靠。然而盡管如此,考慮到product layer的輸出與第一層隐含層的連接配接為全連接配接,內積計算的計算複雜度比較高。不同于PNN,DeepFM的procdutlayer隻和最終的輸出連接配接,也就是一個神經元。與FNN相似,不同類型的PNN都忽略了低階特征。

Wide&Deep: Wide&Deep Model是google提出的可以同時提取低階和高階組合特征的模型。wide部分的輸入需要進行特征工程。相應的,DeepFM可以直接處理原始輸入特征而不需要特征工程。

不同模型之間的關系如下表

LibRec 每周算法:DeepFM

另外一個非常直覺的擴充是将此模型中的FM部分使用LR來代替。在DeepFM中,FM部分與深度部分的feature embedding是共享的。而這種共享的政策又進一步通過反向傳播的方式影響了低階與高階的特征組合,進而建構出更具有表征能力的特征。

實驗

在Kaggle比賽中使用的公開資料集Criteo Dataset與私有資料集中對LR,FM,FNN,PNN,Wide&Deep,與DeepFM模型進行對比實驗。在性能評估中,在GPU與CPU兩種計算模式下,DeepFM幾乎均為最有效的模型。在有效性評估中,AUC與LogLoss兩種評價名額下,DeepFM均達到了最優的結果。

繼續閱讀