RS Meet DL(78)-CFM:結合3D卷積的FM模型
- 2020 年 3 月 9 日
- 筆記

本文介紹的是IJCAI-19的一篇論文,題目為《CFM: Convolutional Factorization Machines for Context-Aware Recommendation》,將卷積神經網絡和因子分解機FM相結合,提出了CFM模型,一起來學習下! 論文下載地址:https://www.ijcai.org/Proceedings/2019/0545.pdf
1、背景
在推薦系統中,提升模型效果的一個很關鍵的方面是建模特徵之間交互關係。那麼目前存在的方法主要包括兩種:
1)人工進行特徵交叉,如邏輯回歸模型,這需要很強的專業知識和業務理解。
2)由模型自動進行特徵交叉,如因子分解機FM。但是FM模型在進行特徵交叉時,對特徵對應的嵌入向量使用的是求內積的方法,這隱含了一個前提,嵌入向量不同維度之間是相互獨立的(因為內積是對位相乘),而沒有考慮嵌入向量不同維度之間的關係。如特徵f1對應的嵌入向量是[x1,x2,x3],特徵f2對應的嵌入向量是[y1,y2,y3],那麼FM在做內積的時候,只有x1y1,x2y2,x3y3,而x1y2、x1y3等沒有考慮。
為了解決上述的問題,本文將FM和卷積神經網絡相結合,提出了Convolutional Factorization Machine (CFM) ,一起來學習一下。
2、CFM模型
2.1 整體概述
CFM模型的整體計算公式如下:

其中我們重點關注g(x)部分,該部分的模型結構如下圖所示:

可以看到,該部分主要有輸入層、嵌入層、自注意力機制池化層、交互層、卷積層和全連接層。我們分別來介紹一下。
2.2 輸入和嵌入層
輸入層輸入一堆離散特徵,包括一些one-hot特徵,如用戶ID、性別等,還有multi-hot特徵,如用戶的歷史交互過的item的ID等。每個特徵首先通過嵌入層轉換成一個d維的embedding vector。
2.3 自注意力機制池化層
首先說明一下,這裡的自注意力機制並非Transformer里的自注意力機制,通過下面的介紹就可以體會到。同時,這裡的池化層僅針對multi-hot特徵。
對於multi-hot特徵,一個field可能對應多個不同的嵌入向量,為了計算的方便,通常的做法就是對一個field里的嵌入向量進行池化,如avg-pooling和max-pooling。但是這種做法並不是最優的,本文提出了一種自注意力機制池化方法。首先,對於field里的每個嵌入向量vi,首先通過全連接層得到一個attention score:

然後所有的attention score通過softmax 轉換為加和為1的權重:

然後對所有的嵌入向量進行一個加權:

經過這樣的計算,每一個field對應一個向量ej。
2.4 交互層
在背景部分也提到了,FM中使用對嵌入向量求內積的方式來計算特徵的交互,這種方式隱含了嵌入向量不同維度之間獨立的假設。而本文使用外積(outer product)的方法來建模特徵的交互,如field i和field j對應的向量分別為ei和ej,外積的計算如下:

每兩個field對應的向量通過外積運算都會得到一個d*d的二維矩陣Mi,j,那麼所有的Mi,j可以堆疊成一個三維的矩陣:

假設共有10個域,向量的維度為64,那麼C的形狀為64 * 64 * 45
2.5 3D卷積層
接下來,通過3D卷積進一步建模特徵之間的高階交互關係,3D卷積的示意圖如下:

3D卷積層的輸出是向量g,再通過一層全連接得到最終的輸出g(x):

2.6 模型訓練
接下來講一下幾個模型訓練的細節,首先是損失函數這裡採用的是BPR損失:

同時,論文中還提到: 1)嵌入向量是通過FM結合BPR損失預訓練得到的。 2)在訓練CFM模型中,對嵌入層、卷積層和全連接層的參數增加L2正則 3)除最後的全連接層外,對其他層加入drop-out
本系列已經介紹了很多FM及其變形,如FFM、DeepFM、xDeepFM、FwFM、NFM、AFM等,本文進一步介紹了和卷積神經網絡相結合的CFM模型。可以一起對比學習呦!