1. 程式人生 > 實用技巧 >《推薦系統》-DeepFM模型

《推薦系統》-DeepFM模型

1、背景

對於一個基於CTR預估的推薦系統,最重要的是學習到使用者點選行為背後隱含的特徵組合。在不同的推薦場景中,低階組合特徵或者高階組合特徵可能都會對最終的CTR產生影響。

之前介紹的因子分解機(Factorization Machines, FM)通過對於每一維特徵的隱變數內積來提取特徵組合。最終的結果也非常好。但是,雖然理論上來講FM可以對高階特徵組合進行建模,但實際上因為計算複雜度的原因一般都只用到了二階特徵組合。那麼對於高階的特徵組合來說,我們很自然的想法,通過多層的神經網路即DNN去解決。

DNN的侷限

下面的圖片來自於張俊林教授在AI大會上所使用的PPT。我們之前也介紹過了,對於離散特徵的處理,我們使用的是將特徵轉換成為one-hot的形式,但是將One-hot型別的特徵輸入到DNN中,會導致網路引數太多:

在這裡插入圖片描述
圖1、DNN引數過多

如何解決這個問題呢,類似於FFM中的思想,將特徵分為不同的field:
在這裡插入圖片描述
圖2、劃分field

再加兩層的全連結層,讓Dense Vector進行組合,那麼高階特徵的組合就出來了
在這裡插入圖片描述
圖3、組合高階特徵

但是低階和高階特徵組合隱含地體現在隱藏層中,如果我們希望把低階特徵組合單獨建模,然後融合高階特徵組合。
在這裡插入圖片描述
圖4、怎麼把低價特徵單獨建模

即將DNN與FM進行一個合理的融合:
在這裡插入圖片描述
圖5、融合DNN與FM

二者的融合總的來說有兩種形式,一是並行結構,二是序列結構:
在這裡插入圖片描述
圖6、並行結構
在這裡插入圖片描述
圖7、序列結構

而我們今天要講到的DeepFM,就是並行結構中的一種典型代表。

2、DeepFM模型

2.1 整體結構

我們先來看一下DeepFM的模型結構:
在這裡插入圖片描述
圖8、 Wide & deep architecture of DeepFM

deepFM包含兩部分:神經網路部分與因子分解機部分,分別負責低階特徵的提取和高階特徵的提取。這兩部分共享同樣的輸入。DeepFM的預測結果可以寫為:
y ^ = s i g m o i d ( y F M + y D N N ) \hat{y} =sigmoid(y_{FM} + y_{DNN} ) y^=sigmoid(yFM+yDNN)

2.2 FM部分

FM部分的詳細結構如下:
在這裡插入圖片描述
圖9、 The architecture of FM

FM部分是一個因子分解機。關於因子分解機可以參閱文章[Rendle, 2010] Steffen Rendle. Factorization machines. In ICDM, 2010.。因為引入了隱變數的原因,對於幾乎不出現或者很少出現的隱變數,FM也可以很好的學習。FM的輸出公式為:
y F M = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n < v i , v j > x i x j y_{FM} =w_{0}+ \sum_{i=1}^n w_{i} x_{i}+ \sum_{i=1}^{n} \sum_{j=i+1}^n <v_{i}, v_{j}> x_{i} x_{j} yFM=w0+i=1nwixi+i=1nj=i+1n<vi,vj>xixj

2.3 深度部分

在這裡插入圖片描述
圖10、 The architecture of DNN

深度部分是一個前饋神經網路。與影象或者語音這類輸入不同,影象語音的輸入一般是連續而且密集的,然而用於CTR的輸入一般是及其稀疏的。因此需要重新設計網路結構。具體實現中為,在第一層隱含層之前,引入一個嵌入層來完成將輸入向量壓縮到低維稠密向量。
在這裡插入圖片描述
圖11、The structure of the embedding layer

嵌入層(embedding layer)的結構如上圖所示。當前網路結構有兩個有趣的特性:

1、儘管不同field的輸入長度不同,但是embedding之後向量的長度均為k。

2、在FM裡得到的隱變數 V i k V_{i k} Vik 現在作為了嵌入層網路的權重。

這裡的第二點如何理解呢,假設我們的k=5,首先,對於輸入的一條記錄,同一個field 只有一個位置是1,那麼在由輸入得到dense vector的過程中,輸入層只有一個神經元起作用,得到的dense vector其實就是輸入層到embedding層該神經元相連的五條線的權重,即 v i 1 , v i 2 , v i 3 , v i 4 , v i 5 v_{i1} ,v_{i2} ,v_{i3} ,v_{i4} ,v_{i5} vi1vi2vi3vi4vi5 。這五個值組合起來就是我們在FM中所提到的 v i v_{i} vi 。在FM部分和DNN部分,這一塊是共享權重的,對同一個特徵來說,得到的Vi是相同的。

參考文獻:

論文:DeepFM: A Factorization-Machine based Neural Network for CTR Prediction

推薦系統遇上深度學習(三)–DeepFM模型理論和實踐

原始碼地址:https://github.com/ChenglongChen/tensorflow-DeepFM

推薦好文: 深度學習在CTR預估中的應用