天天看點

《推薦系統》-DeepFM模型1、背景2、DeepFM模型

1、背景

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

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

DNN的局限

下面的圖檔來自于張俊林教授在AI大會上所使用的PPT。我們之前也介紹過了,對于離散特征的處理,我們使用的是将特征轉換成為one-hot的形式,但是将One-hot類型的特征輸入到DNN中,會導緻網絡參數太多:

《推薦系統》-DeepFM模型1、背景2、DeepFM模型

圖1、DNN參數過多

如何解決這個問題呢,類似于FFM中的思想,将特征分為不同的field:

《推薦系統》-DeepFM模型1、背景2、DeepFM模型

圖2、劃分field

再加兩層的全連結層,讓Dense Vector進行組合,那麼高階特征的組合就出來了

《推薦系統》-DeepFM模型1、背景2、DeepFM模型

圖3、組合高階特征

但是低階和高階特征組合隐含地展現在隐藏層中,如果我們希望把低階特征組合單獨模組化,然後融合高階特征組合。

《推薦系統》-DeepFM模型1、背景2、DeepFM模型

圖4、怎麼把低價特征單獨模組化

即将DNN與FM進行一個合理的融合:

《推薦系統》-DeepFM模型1、背景2、DeepFM模型

圖5、融合DNN與FM

二者的融合總的來說有兩種形式,一是并行結構,二是串行結構:

《推薦系統》-DeepFM模型1、背景2、DeepFM模型

圖6、并行結構

《推薦系統》-DeepFM模型1、背景2、DeepFM模型

圖7、串行結構

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

2、DeepFM模型

2.1 整體結構

我們先來看一下DeepFM的模型結構:

《推薦系統》-DeepFM模型1、背景2、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部分的詳細結構如下:

《推薦系統》-DeepFM模型1、背景2、DeepFM模型

圖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=1n​wi​xi​+∑i=1n​∑j=i+1n​<vi​,vj​>xi​xj​

2.3 深度部分

《推薦系統》-DeepFM模型1、背景2、DeepFM模型

圖10、 The architecture of DNN

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

《推薦系統》-DeepFM模型1、背景2、DeepFM模型

圖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} vi1​,vi2​,vi3​,vi4​,vi5​ 。這五個值組合起來就是我們在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預估中的應用

繼續閱讀