深度CTR之xDeepFM:融合了顯式和隱式特徵交互關係的深度模型推薦系統

1 解決的問題

文章發表於KDD 2018,由中科大和微軟合作推出。
paper-《xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems》

paper解決的問題如下:

  1. 交互特徵或者說組合特徵非常重要,但是由於數據的多樣性等原因,導致通過手動生成交互特徵的成本比較高
  2. 儘管DNN模型具有從數據中學習任意的函數模式的強大能力,但是普通的DNN網絡只能生成隱式的特徵交互關係,而且只能在bit-wise水平

文章提出了一個新穎的模型結構-壓縮交互網絡CIN,CIN可以顯式的生成特徵交互,並且是在vector-wise水平生成的。paper中證明了CIN與CNN和RNN結構具有一些共性,並將CIN與DNN結合,形成了paper的模型結構-xDeepFM,xDeepFM模型不僅可以顯式的生成一定階數內的特徵交互關係,而且可以隱式的生成任意低階和高階的特徵交互

xDeepFM模型在三個數據集上進行了實驗,均取得由於當前SOTA模型的效果。

2 介紹部分

首先還是強調特徵變換的廣泛使用和重要作用,而對於類別特徵的計算交叉積的變換方式是一種重要的變換方式 ,計算交叉積可以稱爲 cross features 或者 multi-way features。

自動學習交互特徵的方法,主要是針對傳統的生成交互特徵的特徵工程工作:

  1. 獲取到有用的特徵需要耗費的成本比較高;
  2. 對於具有大量原始特徵的任務,想要提取到所有的交叉特徵是不可行的;
  3. 人工設計特徵無法泛化到訓練樣本中未出現的特徵。

下面是作者通過對比前人的工作的優缺點,引出了自己的xDeepFM模型結構。

  1. FM:由於paper介紹的是xDeepFM模型,所以在說到FM模型時,對於FM模型中的每個特徵的embedding向量中的每一個元素,paper中稱之爲bit。經典的FM模型可以引入任意高階的交互特徵;
  2. AFM:但是建模所有特徵的交互關係有可能引入無用的特徵,甚至給模型帶來噪音;
  3. FNN:在DNN之前有使用FM預訓練好的field embedding,可以學習高階特徵;
  4. PNN:在embedding層和DNN層之間有product層,而且不需要依賴預訓練。但是PNN和FNN都有共同的缺點-都聚焦在高階交互特徵上而對低階交互特徵關注較少;
  5. Wide&Deep:通過引入淺層模塊和深層模塊的組合結構,使得學習過程具有記憶性和泛化性,可以同時學習到低階和高階的交互特徵。
  6. DeepFM:通過引入淺層模塊和深層模塊的組合結構構,使得學習過程具有記憶性和泛化性,可以同時學習到低階和高階的交互特徵;
  7. DCN:捕捉有界階數的交互特徵;
  8. xDeepFM:以vector-wise形式來顯式生成特徵交互,使用CIN模塊來代替DCN中的cross網絡模塊,CIN可以顯式的學習交互關係,並且隨着網絡的加深,特徵交互關係的階數也在變大。並且仿照Wide&Deep和DeepFM的組合式網絡結構,xDeepFM組合了顯式高階交互模塊、隱式高階交互模塊和傳統的FM模塊

可以看到xDeepFM相比於DeepFM模多了一個顯式高階交互模塊。該顯式高階交互模塊是在vector-wise層面建模的。

paper中作者提到的三個主要貢獻(其中前兩個也是本文xDeepFM模型相比於其他模型的最主要特點和優勢):

  1. 有效結合了顯式高階交互模塊、隱式高階交互模塊,不需要人工特徵工程
  2. 設計了CIN模塊可以學習顯式高階交互,並且特徵交互階數往後每一層都會增加,以vector-wise方式代替普通DNN的bit-wise方式
  3. 在3個數據集上對比了其他的SOTA算法,證明了xDeepFM模型結構的有效性。

paper中一個有意思的論述式:DNN模型多是在bit-wise層面建模特徵交互關係,而FM模型則是在vector-wise層面建模特徵交互關係。所以還很難說在推薦領域,DNN模型就是用來建模高階交互關係的最有效的模型。

3 已有模塊的介紹

Embedding Layer

paper中也提到了在推薦系統中,不像cv和nlp領域的數據具有時空關聯的特性,通常對於大規模級別的推薦系統中,輸入特徵通常是高維離散特徵,因此,對於一個任務中具有多個離散特徵特徵的的情況也是比較常見的。

Embedding層其實是非常常見的,它的作用就是將原始特徵壓縮成低維連續特徵。通常有兩種情況:

  1. 單個特徵,例如特徵名爲‘性別’,該特徵對應的embedding可以直接用於DNN的輸入;
  2. 複合特徵,或者說交叉特徵,例如[user_id=s02,gender=male, organization=msra,interests=comedy&rock]這種交叉特徵,對於每個特徵user_id、gender、organization、interests都有他們自身對應的embedding,一般是計算交叉特徵中單個特徵embedding的sum pooling結果用於DNN的輸入。

Embedding層的輸出結果一般是表示成如下的wide concatenated vector形式:
e=[e1,e2,,em],eiRD e = [e_1, e_2, \cdots,e_m], \qquad e_i \in \mathbb{R}^D
其中m表示特徵的數量,D表示原始特徵embedding後的維度。因此儘管每個instance的特徵數量是不一樣的(具體樣本中有些特徵取值爲空),但是最終每個instance的wide concatenated vector的長度都是一樣的,即m * D

在這裏插入圖片描述

圖中的 Field 1 應該是單個特徵,而 Field m 應該是複合特徵。

注意:

  1. paper中將每個原始特徵分別當做一個field,例如原始一共有10個,那麼該數據集的fields數量爲10。這裏的field跟FFM模型中的field是一個意思;
  2. paper中每一條樣本爲爲一個instance。

Implicit High-order Interactions

FNN、DCN、Wide&Deep等模型都是在field embedding向量e上使用前向神經網絡充分學習高階特徵交互的信息,前向的計算公式如下:
x1=σ(W1e+b1) x^1 = \sigma(W^1 e + b^1)
xk=σ(Wkek1+bk) x^k = \sigma(W^k e^{k-1} + b^k)
其中,k表示神經網絡層的深度,σ表示激活函數,x^k表示第k層神經網絡的輸出,這與圖2中的深度網絡部分比較相似(當然不包括FM層或者Product層)這種前向神經網絡的模型架構是以bit-wise的方式來建模交互關係的,也就是說,即使是同一個field embedding向量內的bit元素也會互相影響。

而FNN、DeepFM模型對上面的前向神經網絡的模型架構進行了略微的調整,除了保持原有的前向DNN結構之外,還會加入一個two-way的交互層,因此在FNN、DeepFM模型中同時存在bit-wise和vector-wise的特徵交互關係,而FNN、DeepFM結構的主要區別在於FNN是將product的輸出連接到DNN上,而DeepFM是將FM層直接連接到輸出單元上。

在這裏插入圖片描述

Explicit High-order Interactions

在這裏插入圖片描述

在如上的DCN模型中,顯式的建模了高階特徵,不像前向神經網絡只能隱式的建模高階特徵,DCN建模高階特徵公式如下:
xk=x0xk1Twk+bk+xk1 x_k = x_0 x_{k-1}^T w_k + b_k + x_{k-1}
其中CrossNet中的每一個層都是x0的標量倍數,同時paper中也證明了這一理論:

Theory: 一個k層交叉的網絡的第(i+1)層計算公式爲:
xi+1=x0xiTwi+1+xi x_{i+1} = x_0 x_i^T w_{i+1} + x_i
那麼交叉網絡x_k的輸出爲x0的標量倍數。

通過歸納假設證明如下:

  1. 當k=1時,
    x1=x0(x0Tw1)+x0 x_1 = x_0 (x_0^T w_1) + x_0
    =x0(x0Tw1+1) \qquad = x_0 (x_0^T w_1 + 1)
    =α1x0 \qquad = \alpha^1 x_0
    其中,\alpha^1 就是x0的線性迴歸形式,因此,x1是x0的標量倍數。
  2. 我們假設k=i時的多重標量成立,那麼當k=i+1時,
    xi+1=x0xiTwi+1+xi x_{i+1} = x_0 x_i^T w_{i+1} + x_i
    =x0((αix0)Twi+1)+αix0 \qquad\qquad\qquad = x_0 ((\alpha^i x_0)^T w_{i+1}) + \alpha^i x_0
    =αi+1x0 = \alpha^{i+1} x_0
    其中,
    αi+1=αi(x0Twi+1+1) \alpha^{i+1} = \alpha^i (x_0^T w_{i+1} + 1)

是一個標量,因此x_{i+1}仍然是x0的標量倍數。
因此通過上面的歸納假設證明了交叉網絡層的輸出x_k是x0的的標量倍數的關係。

但是,一個需要注意的問題是,這並不意味着x_k是x0的線性關係,因爲\alpha^{i+!}是關於x0敏感的,CrossNet可以高效學習出來特徵交互關係,但是CrossNet也就有其自身的侷限性,即:

  1. CrossNet的輸出只能是指定的形式,即是關於x0的標量倍數;
  2. 特徵交叉也是也是以bit-wise形式得到的。

4 新模型-XDeepFM

Compressed Interaction Network

CIN網絡設計的優點:

  1. 是以vector-wisee而不是bit-wise形式得到特徵交叉關係;
  2. 可以得到顯式的特徵特徵高階交叉關係;
  3. 參數容量不會隨着網絡層數的加深而呈指數形式上升。

embedding向量是看做vector-wise形式的特徵交互,我們之後將多個field embedding表示成矩陣,
X0Rm×D X^0 \in \mathbb{R}^{m\times D}
其中,X^0 的第i行向量表示第i個field特徵的embedding向量,將其表示成:
Xi,0=ei X^0_{i,*} = e^i
D 表示field embedding向量的維度。

而對應的CIN的第k層的輸出也是一個矩陣,表示成:
XkRHk×D X^k \in \mathbb{R}^{H_k \times D}
其中,X_k 表示第k層的(embedding)特徵向量的數量的數量,且對應的 H_0=m ,對於每一層,X_k 是通過下面的方式計算的,:
Xi,k=i=1Hk1j=1mWijk,h(Xi,k1Xj,0)(6) X^k_{i,*} = \sum_{i=1}^{H_{k-1}} \sum_{j=1}^{m} W_{ij}^{k,h}(X_{i,*}^{k-1} \circ X_{j,*}^{0}) \qquad (6)
其中,
0hHk,Wk,hRHk1×m 0 \leq h \le H_k, \qquad W^{k, h} \in \mathbb{R}^{H_{k-1} \times m}
其中,W^{k,h}表示用於計算第k層輸出中的第h行向量X_{i,*}^k的一個參數矩陣,因此W_{ij}^{k,h}是一個標量數值,即對哈達瑪積計算標量倍數。

計算符號‘∘’表示哈達瑪積,即兩個相同維度的向量的相同位置的元素相乘的值,作爲結果中相同位置處的輸出元素。

上面需要注意的是,X_k是通過X_{k-1}和X0計算得到的,因此特徵交互關係是通過顯性的計算的並且特徵交互啊的階數隨着層數的增加也在加深。

paper中說到,上面的這種網絡結構非常類似於RNN結構,即下一層輸出的結果取決於上一層輸出的結果和一個額外的輸入,而且我們在每層中都是用這樣的結構,因此特徵交互關係就是在vector-wise水平上得到的。

下面來看下CIN結構特點:
在這裏插入圖片描述

除了上面說的CIN結構與RNN結構的相似性之外,CIN還與CNN有一定的可類比性,如圖4a所示,我們引入一箇中間張量(intermediate tensor) Z^{k+1},它是關於隱藏層X_k和X0的一個outer products(沿着embedding維度),因此可以將Z^{k+1}看做一幅圖像,並且 W^{k,h}是一個filter,

filter size:可以將m和H_k看做filter的寬高,D看做filter的層數(深度)D;

filter的元素:每一層中的每個元素爲 W^{k,h}_{ij},且然後將其複製成D層的深度即可

如圖4b所示,我們將filter沿着Z^{k+1}的embedding維度方向做平滑操作,即可得到隱向量 X^{k+1}_{i,*},類比到CV領域中,我們將其稱爲一個feature map,因此Xk就是Hk個不同feature map的集合,X{k+1}就是H{k+1}個不同feature map的集合。CIN中的名詞compressed是指第k個隱層將H^{k-1}*m個向量的潛在空間壓縮至H_k個向量(對於H^{k-1}*m個向量這樣的結構,在潛在空間中一共有H_k個,每一個這樣的結構只能壓縮成爲輸出中的一個向量)。

當CIN的深度爲1,隱層的feature map也只有1個,那麼其就完全等價於FM模型了(可能會多了特徵的平方項,少了特徵的非交叉項,這些先不管了,你懂!)

如圖4c所示,表達CIN的整體結構,用T表示CIN的深度,每一個隱藏層X^k, k \in [1,T]和輸出單元都具有關聯,在第k個隱層,在其中每個feature map上,我們做sum pooling操作,即:
pik=j=1DXi,jk,i[1,T](7) p_i^k = \sum_{j=1}^{D} X^k_{i,j}, \qquad i \in [1, T]\qquad (7)
因此,對於第k個隱層,我們可以得到poolng之後的長度爲H_k的向量:
pk=[p1k,p2k,,pHkk] \boldsymbol{p^k} = [p^k_1, p^k_2,\cdots,p^k_{H_k}]
對於所有隱層的pooling之後的向量,我們將它們concat之後作爲輸出單元,
p+=[p1,p2,,pT]Ri=1THi \boldsymbol{p^+} = \boldsymbol{[p^1,p^2,\cdots,p^T]} \in \mathbb{R}^{\sum_{i=1}^{T}H_i}
哈哈,到這裏,如果我們直接使用CIN用於二分類,那麼輸出單元就是一個在p^+上的sigmoid節點:
y=11+expp+Two y = \frac{1}{1 + exp^{{p^+}^{T} w^o}}
其中,w^o表示迴歸參數。

CIN Analysis

來看下CIN模塊的複雜度,以及這樣的結構是否有效果。

空間複雜度

CIN的空間複雜度和普通DNN的空間複雜度做對比。

分爲一共T層的CIN的參數和最後一層迴歸層的參數,參數量爲:
k=1THk×+k=1THk1×m \sum_{k=1}^{T} H_k \times + \sum_{k=1}^{T} H_{k-1} \times m
=k=1THk×(1+Hk1×m) = \sum_{k=1}^{T} H_k \times (1 + H_{k-1} \times m)
因此CIN的空間複雜度與每個特徵的embedding向量的維度D的大小無關。

對比之下,一個普通的DNN模型的參數量爲:
m×D×H1+HT+k=2THk×Hk1 m\times D\times H_1 + H_T + \sum_{k=2}^{T} H_{k} \times H_{k-1}

在CIN模型中,由於m和 H_k 一般不會太大,因此總體上來看CIN的參數量是是可接受的,paper還針對了m和 H_k較大時的一個處理方案,就是進行矩陣分解,具體見paper中公式(9),這裏就不再講解了。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UcCxlYBx-1581236746807)(evernotecid://AFC3459F-70B1-4432-9FEA-943ED3F7E284/appyinxiangcom/22185754/ENResource/p505)]
其中,
Wk,hRHk1×m,Uk,hRHk1×L,Vk,hRm×L,LH,Lm \boldsymbol{W^{k,h}} \in \mathbb{R}^{H_{k-1}\times m},\boldsymbol{U^{k,h}} \in \mathbb{R}^{H_{k-1}\times L}, \boldsymbol{V^{k,h}} \in \mathbb{R}^{m\times L}, L\ll H,L\ll m

時間複雜度

CIN的時間複雜度和普通DNN的時間複雜度做對比。

CIN中,每個中間張量Z^{k+1}(feature map)的計算時間爲O(mHD),計算H個feature map,有T層CIN,時間 複雜度爲O(mTH^2 D),而普通DNN的計算時間複雜度爲O(mHD+H^2 T),因此相比之下,CIN的主要缺點在於時間複雜度的劣勢

多項式逼近

通過對問題進行簡化,即假設CIN中不同層的feature map的數量全部一致,均爲fields的數量m,並且用[m]表示小於等於m的正整數。CIN中的第一層的第h個feature map表示爲x_h^1 \in \mathbb{R}^D,即:
xh1=i[m],j[m]Wi,j1,h(xi0xj0)(10) \boldsymbol{x_h^1} = \sum_{i\in [m], j\in [m]} \boldsymbol{W}_{i, j}^{1, h} (x_i^0 \circ x_j^0) \qquad (10)
因此,在第一層中是通過O(m^2)個參數來建模成對的特徵交互關係,相似的,第二層的第h個feature map表示爲:
xh2=i[m],j[m]Wi,j2,h(xi1xj0) \boldsymbol{x_h^2} = \sum_{i\in [m], j\in [m]} \boldsymbol{W}_{i, j}^{2, h} (x_i^1 \circ x_j^0)
=i[m],j[m]l[m],k[m]Wi,j2,hWl,k1,h(xj0xk0xl0)(11) = \sum_{i\in [m], j\in [m]} \sum_{l\in [m], k\in [m]} \boldsymbol{W}_{i, j}^{2, h} \boldsymbol{W}_{l, k}^{1, h} (x_j^0 \circ x_k^0 \circ x_l^0) \qquad (11)
上面公式(11)中有關下標爲k和l的相關計算都已經在前面一層計算完成了,這裏只是爲了方便觀察才又寫出來的,知道就好。這裏我們呢可以看到第二層中feature map的只用了O(m^2)個參數就建模出了3-way的特徵交互關係。

我們知道一個經典的k階多項式一般是需要O(m^k)個參數的,而我們展示了CIN在一系列feature map中只需要O(k m^2)個參數就可以近似此類多項式。而且paper使用了歸納假設的方法證明了一下,具體見paper的公式(13)和公式(14)。

Combination with Implicit Networks

在這裏插入圖片描述

xDeepFM將線性模塊、CIN模塊、DNN模型三者組合起來互爲補充,分別提供的姐特徵、顯式高階特徵、隱式高階特徵。

預測結果的計算公式、loss函數、優化的目標函數分爲如公式(15)、公式(16)、公式(17)所示,這裏比較簡單,不再解釋。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0kyOMLZP-1581236746808)(evernotecid://AFC3459F-70B1-4432-9FEA-943ED3F7E284/appyinxiangcom/22185754/ENResource/p506)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1iNiGcH3-1581236746808)(evernotecid://AFC3459F-70B1-4432-9FEA-943ED3F7E284/appyinxiangcom/22185754/ENResource/p507)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eQzSnbrQ-1581236746808)(evernotecid://AFC3459F-70B1-4432-9FEA-943ED3F7E284/appyinxiangcom/22185754/ENResource/p508)]

對於paper中提到的xDeepFM和FM、DeepFM的關係:

  1. 對於xDeepFM,將CIN模塊的層數設置爲1,feature map數量也爲1時,其實就是DeepFM的結構,因此DeepFM是xDeepFM的特殊形式,而xDeepFM是DeepFM的一般形式;
  2. 在1中的基礎上,當我們再將xDeepFM中的DNN去除,並對feature map使用一個常數形式的 sum filter,那麼x就DeepFM退化成了FM形式了。

5 實驗環節

實驗環節也是在解決三個問題:

  1. CIN中的特徵交互關係如何學習;
  2. 對於推薦系統來說,是否有必要同時學習隱式和顯式的高階特徵交互關係;
  3. xDeepFM的參數設置對模型效果有怎樣的影響?

實驗數據集配置

使用了三個數據集:Criteo Dataset、Dianping Dataset、Bing News Dataset,這裏不細說,具體細節見paper。

單獨神經模塊之間的對比

在三個數據集上,這裏對比了FM、DNN、CrossNet、CIN四個單獨模型的效果,實驗證明CIN均取得了最好的效果,並且在DNN、CrossNet、CIN均優於FM的結果,也證明了在sparse feature上的高階交互特徵是有正向收益的。

在這裏插入圖片描述

組合模型之間的效果

從LR模型一致對比到xDeepFM 模型,驗證了同時組合了顯式高階交互特徵和隱式高階交互特徵的xDeepFM 模型可以去的最好的實驗效果。

並且還看到了一個有意思的現象:實驗中所有的神經網絡模型,在最好的參數設置中,都不需要太深的網絡層數,一般只需要2~3層的網絡深度即可

在這裏插入圖片描述

CIN中超參數的設置

主要是隱層的深度、每層神經元的數量、激活函數。

其中隱層的深度、每層神經元的數量,沒有什麼特別,就不再說了。值得一提的是,在激活函數的選取上,paper中在公式(6)中使用的激活函數是恆等式(哈哈,其實就是沒有激活函數),作者這裏也讓實驗了其他的例如sigmoid、tanh、relu等常用的非線性激活函數,但是結果顯示在公式(6)上的恆等式變換的效果反而是最好的,即可以不用其他的非線性激活函數效果就很好,用了的話效果反而會下降

對於這種現象,有什麼合理的解釋嗎,還是就只能理解爲這事deep learning中玄學問題(就是不知道怎麼解釋,哈哈),哪位大佬有這方面的理解,還請不吝賜教?

在這裏插入圖片描述

6 前人的工作

主要分是介紹了之前的一些優秀的pape人中模型結構和特點,從經典的推薦系統和當前火熱的基於深度學習的推薦系統兩個方面來介紹。

經典推薦系統

非因子分解模型:
主要介紹了兩類,一類是常見的線性模型,例如LR with FTRL,這一塊很多工作是在交互特徵的特徵工程方面;另一類是提升決策樹模型的研究。不再細說。

因子分解模型:
MF模型,FM模型,以及在FM模型基礎上的貝葉斯模型等,不再細說。

基於深度學習的推薦系統

學習高階交互特徵的深度學習:
這塊常見的方法模型可以參考上面 第2部分介紹部分的常見方法。

學習精心的表徵學習的深度學習:
這塊跟‘學習高階交互特徵的深度學習’的常見網絡模型區別是,這塊常見的深度學習模型不是focus在學習高階特徵交互關係。在一些早期的工作中,使用深度學習來建模輔助信息,例如視覺數據、音頻數據等,而近期,在推薦系統中使用深度神經網絡來建模協同過濾,例如paper《Neural collaborative Filtering》中提出了神經協同過濾,這使得MF的內積可以被通過神經架構得到的任意一個方程代替。還有其他paper中提出了自動編碼機的範例來建模協同過濾,並且已經在實驗中證明了基於自動編碼機的協同過濾方法超過了幾個經典的MF模型,而且自動編碼機可以進一步應用於聯合建模協同過濾和附加信息以生成更好的潛在因子。同時還有其他paper提出了Attentive Collaborative Filtering (ACF)的方法,以及阿里的Deep Interest Network (DIN) 等方法。

7 總結

來總結下吧。

模型主要優勢:

  1. CIN可以學習高效的學習有界的高階特徵;
  2. xDeepFM模型可以同時顯示和隱式的學習高階交互特徵;
  3. 以vector-wise方式而不是bit-wise方式學習特徵交互關係。

模型可改進方面:

  1. 目前對於multivalent fields的特徵是使用sum pooling的方式處理的,未來可以借鑑DIN的思想進行改進;
  2. CIN的時間複雜度比較高,paper中打算未來在GPU集羣上使用分佈式的方式來訓練模型。

8 發散問題

  1. paper一直在強調的使用vector-wise而不是bit-wise方式來生成特徵交互關係,到底有什麼好處?

9 參考代碼

https://github.com/Leavingseason/xDeepFM

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章