推薦系統FM系列文章(三)-- NFM模型

演算法人生發表於2020-12-19

0. 寫在前面

繼上次介紹了DeepFM模型後,本文我們介紹將FM模型思想結合神經網路的又一工作 – NFM(Neural Factorization Machine),一起來看看NFM相比於FM模型及DeepFM模型有哪些不同之處以及優化點。

個人心得:

  1. bi-interaction pooling layer,一種element-wise product的特徵交叉層

論文地址:

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

1. 背景

DeepFM將神經網路成功引入了FM模型當中,並取得了較為理想的效果。此外,推薦領域研究學者也提出了NFM模型,同樣是將特徵顯式交叉的思想引入神經網路,與DeepFM相似,NFM模型的結構依然遵循類似的two-part結構,包括shallow-part(淺層)以及dnn-part(深層)。下面詳細介紹NFM中的dnn-part。

2. 模型架構

NFM模型架構如圖所示。上面說到,NFM分為兩部分,分別為線性部分及神經網路部分。線性部分具備樣本記憶的能力,神經網路部分負責複雜的特徵抽取、特徵交叉等工作,具體樣本泛化能力。我們重點來看dnn這一部分。

NFM神經網路部分對輸入樣本的處理方式完全一致,類別特徵onehot後進行embedding,連續特徵直接embedding,兩類特徵的embedding維度保持一致,等價於FM模型二階特徵交叉項中隱向量的維度。每個特徵field的embedding向量經過一層bi-interaction pooling layer後,輸出與embedding向量維度一致的新向量,最後送入全連線層。由此可見,除了剛剛提到的bi-interaction pooling layer以外,NFM其他部分均平平無奇,下面我們就來看看bi-interaction pooling layer作為獨立的一層,到底實現了什麼功能。

3. bi-interaction pooling layer

之前我們說到DeepFM通過特徵embedding的向量兩兩內積實現特徵交叉,重點就在於“特徵交叉”。在NFM中,bi-interaction layer就是那個實現特徵交叉的關鍵一層。bi-interaction pooling layer實現特徵交叉的方式如下式所示。

其中, x i x_{i} xi表示特徵取值, v i v_{i} vi表示特徵 x i x_{i} xi對應的embedding向量, @ @ @運算子號表示element-wise product,即兩個向量對應元素相乘,得到的向量維數與每個特徵域embedding向量維數相同。通過對所有特徵域進行兩兩交叉後,可以得到一系列特徵交叉後的結果,最後將所有結果進行sum pooling操作,得到最終特徵交叉後特徵向量表示。
對比DeepFM的特徵交叉方式,我們可以發現bi-interaction pooling layer:

  1. 採用特徵pooling的方式代替DeepFM中二階特徵向量橫向連線操作,得到的結果向量由 n ∗ k n*k nk維優化為k維,大大減少訓練引數數目。( n n n為特徵域個數, k k k為embedding向量維度)
  2. 採用sum pooling的方式綜合二階特徵資訊,可能會有資訊損失

4. 總結

NFM是第一個將bi-interaction layer引入神經網路的工作,在特徵交叉方面提出了相應的優化點,推薦領域中後續很多工作均借鑑了NFM中bi-interaction pooling的思想,從另一方面也說明NFM在推薦演算法發展過程中所起到的代表性。

相關文章