(讀論文)推薦系統之ctr預估-NFM模型解析


本系列的第六篇,一起讀論文~

本人才疏學淺,不足之處歡迎大家指出和交流。

今天要分享的是另一個Deep模型NFM(串行結構)。NFM也是用FM+DNN來對問題建模的,相比於之前提到的Wide&Deep(Google)、DeepFM(華為+哈工大)、PNN(上交)和之后會分享的的DCN(Google)、DIN(阿里)等,NFM有什么優點呢,下面就走進模型我們一起來看看吧。

原文:Neural Factorization Machines for Sparse Predictive Analytics

地址:https://arxiv.org/pdf/1708.05027.pdf

1、問題由來


老生常談,再聊數據特點:對於廣告中的大量的類別特征,特征組合也是非常多的。傳統的做法是通過人工特征工程或者利用決策樹來進行特征選擇,選擇出比較重要的特征。但是這樣的做法都有一個缺點,就是:無法學習訓練集中沒有出現的特征組合

最近幾年,Embedding-based方法開始成為主流,通過把高維稀疏的輸入_embed_到低維度的稠密的隱向量空間中,模型可以學習到訓練集中沒有出現過的特征組合。

Embedding-based大致可以分為兩類:

1.factorization machine-based linear models

2.neural network-based non-linear models
(具體就不再展開了)


FM:以線性的方式學習二階特征交互,對於捕獲現實數據非線性和復雜的內在結構表達力不夠;

深度網絡:例如Wide&Deep 和DeepCross,簡單地拼接特征embedding向量不會考慮任何的特征之間的交互, 但是能夠學習特征交互的非線性層的深層網絡結構又很難訓練優化;

而NFM摒棄了直接把嵌入向量拼接輸入到神經網絡的做法,在嵌入層之后增加了_Bi-Interaction_操作來對二階組合特征進行建模。這使得low level的輸入表達的信息更加的豐富,極大的提高了后面隱藏層學習高階非線性組合特征的能力。

2、NFM


2.1 NFM Model

與FM(因式分解機)相似,NFM使用實值特征向量。給定一個稀疏向量x∈Rn作為輸入,其中特征值為xi=0表示第i個特征不存在,NFM預估的目標為:

![](https://img2018.cnblogs.com/blog/1630213/201907/1630213-20190730092903666-1110870186.png)
其中第一項和第二項是線性回歸部分,與FM相似,FM模擬數據的全局偏差和特征權重。第三項f(x)是NFM的核心組成部分,用於建模特征交互。它是一個多層前饋神經網絡。如圖2所示,接下來,我們一層一層地闡述f(x)的設計。 模型整體結構圖如下所示:
![](https://img2018.cnblogs.com/blog/1630213/201907/1630213-20190730092354902-1233630475.png)

2.1.1 Embedding Layer

和其他的DNN模型處理稀疏輸入一樣,Embedding將輸入轉換到低維度的稠密的嵌入空間中進行處理。這里做稍微不同的處理是,使用原始的特征值乘以Embedding vector,使得模型也可以處理real valued feature。

2.1.2 Bi-Interaction Layer

Bi是Bi-linear的縮寫,這一層其實是一個pooling層操作,它把很多個向量轉換成一個向量,形式化如下:

![](https://img2018.cnblogs.com/blog/1630213/201907/1630213-20190730092405630-1054840434.png)
fbi的輸入是整個的嵌入向量,xi ,xj是特征取值,vi, vj是特征對應的嵌入向量。中間的操作表示對應位置相乘。所以原始的嵌入向量任意兩個都進行組合,對應位置相乘結果得到一個新向量;然后把這些新向量相加,就得到了Bi-Interaction的輸出。這個輸出只有一個向量。

注:Bi-Interaction並沒有引入額外的參數,而且它的計算復雜度也是線性的,參考FM的優化方法,化簡如下:

![](https://img2018.cnblogs.com/blog/1630213/201907/1630213-20190730092419786-1797631408.png)

2.1.3 Hidden Layer

這個跟其他的模型基本一樣,堆積隱藏層以期來學習高階組合特征。一般選用constant的效果要好一些。

2.1.4 Prediction Layer

最后一層隱藏層Zl到輸出層最后預測結果形式化如下:

![](https://img2018.cnblogs.com/blog/1630213/201907/1630213-20190730092431994-1576904360.png)
其中h是中間的網絡參數。考慮到前面的各層隱藏層權重矩陣,f(x)形式化如下:
![](https://img2018.cnblogs.com/blog/1630213/201907/1630213-20190730092442302-1054817560.png)
這里相比於FM其實多出的參數其實就是隱藏層的參數,所以說FM也可以看做是一個神經網絡架構,就是去掉隱藏層的NFM。

2.2 NFM vs Wide&Deep、DeepCross

實質:

NFM最重要的區別就在於Bi-Interaction Layer。Wide&Deep和DeepCross都是用拼接操作(concatenation)替換了Bi-Interaction。

Concatenation操作的最大缺點就是它並沒有考慮任何的特征組合信息,所以就全部依賴后面的MLP去學習特征組合,但是很不幸,MLP的學習優化非常困難。

使用Bi-Interaction考慮到了二階特征組合,使得輸入的表示包含更多的信息,減輕了后面MLP部分的學習壓力,所以可以用更簡單的模型(實驗中只一層隱層),取得更好的效果。

3、總結(具體的對比實驗和實現細節等請參閱原論文)


NFM主要的特點如下:

1. NFM核心就是在NN中引入了Bilinear Interaction(Bi-Interaction) pooling操作。基於此,NN可以在low level就學習到包含更多信息的組合特征。

2. 通過deepen FM來學習高階的非線性的組合特征。

3. NFM相比於上面提到的DNN模型,模型結構更淺、更簡單(shallower structure),但是性能更好,訓練和調整參數更加容易。

所以,依舊是FM+DNN的組合套路,不同之處在於如何處理Embedding向量,這也是各個模型重點關注的地方。現在來看業界就如何用DNN來處理高維稀疏的數據並沒有一個統一普適的方法,依舊在摸索中。

實現DeepFM的一個Demo,感興趣的童鞋可以看下我的github


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM