《推薦系統》-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=1n∑j=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} vi1,vi2,vi3,vi4,vi5 。這五個值組合起來就是我們在FM中所提到的 v i v_{i} vi 。在FM部分和DNN部分,這一塊是共享權重的,對同一個特徵來說,得到的Vi是相同的。
參考文獻:
論文:DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
原始碼地址:https://github.com/ChenglongChen/tensorflow-DeepFM
推薦好文: 深度學習在CTR預估中的應用