推薦系統中的深度匹配模型(中)

下文要講的模型,也是在模型結構或者特徵層面做的各種變化。

4.1.1.1 NeuMF 模型 ( Neural Matrix Factorization )

Neural MF,顧名思義,同時利用了 MF 和神經網絡 MLP 的能力來擬合 matching score;MF 利用向量內積學習 user 和 item 的關聯,同時 MLP 部分捕捉兩者的其他高階信息。這篇 paper 其實和 NCF 框架是出自同一篇 paper 的。模型可以分為 GMF 和 MLP 兩個部分來看,如圖4.4所示。

推薦系統中的深度匹配模型(中)

圖4.4 NeuMF 模型結構框架

❶ GMF ( General Matrix Factorization ) 部分

User 和 item 都通過 one-hot 編碼得到稀疏的輸入向量,然後通過一個 embedding 層映射為 user vector 和 item vector。這樣就獲得了 user 和 item 的隱向量,一般可以通過向量點積或者哈達馬積 ( element-wide product ) 得到交互,不過在 NeuMF 中多連接了一個連接層,也就是 GMF layer:

推薦系統中的深度匹配模型(中)

❷ MLP 部分

輸入和 GMF 部分一樣,都是 one-hot 的稀疏編碼,然後通過 embedding 層映射為 user vector 和 item vector。注意到這裡 user 和 item 的 vector 和 GMF 部分是不一樣的,原因是 GMF 和 MLP 兩個網絡結構對隱層維度要求不同,MLP 部分會高一些 ( 個人感覺 share embedding 能更充分訓練 embedding )。

Embedding 層之後就是幾層常規的 MLP,這塊沒什麼好說的,最後一層輸出作為 MLP 的 output。

推薦系統中的深度匹配模型(中)

4.1.1.2 NNCF 模型 ( Neighbor-based NCF )

CIKM2017 提出的一種基於 neighbor 的 NCF 方法,最大的不同在於輸入除了 user 和 item 的信息,還各自引入了 user 和 item 各自的 neighbor 信息。

推薦系統中的深度匹配模型(中)

圖4.5 NNCF 模型框架

圖4.5所示的輸入由兩部分組成,中間 xu 和 yi 為原始的 user 和 item 的 one-hot 輸入,通過 embedding 層後映射為 pu 和 qi 的 embedding 向量,然後通過哈達馬積作為 MLP 的輸入。而輸入層兩側的 nu 和 ni 是 user 和 item 各自的 neighbor 信息的輸入,這裡 nu 和ni 信息如何提取可以採用多種手段,如二部圖挖掘,user-CF 或者 item-CF 等。

對於 neighbor 信息,由於每個用戶和 item 的 neighbor 數不一致,輸入是不定長的,通過卷積和 pooling 後提取得到定長的 embedding,然後和 user 以及 item 本身的向量 concat 後輸入到模型中:

推薦系統中的深度匹配模型(中)

4.1.1.3 ONCF 模型 ( Outer-Product based NCF )

何向南博士2018年在 NCF 模型框架上提出了 outer-product based NCF,在原有的 NCF 框架上,引入了 outer product 的概念,如圖4.6所示。

推薦系統中的深度匹配模型(中)

圖4.6 ONCF 模型框架

在 embedding layer 之後,O-NCF 模型引入了 interaction map 也就是特徵交叉層,對於用戶 u 的向量 pu 和物品 i 的向量 qi,引入兩者的 outer-product:

推薦系統中的深度匹配模型(中)

E 是一個 k*k 維的矩陣,其中的每個 element 兩兩相乘,得到2維的矩陣。到這,可以通過把二維矩陣展開變成一個 k2 維度的向量,作為 MLP 的輸入。假設 k=64,那麼 E 就是個4096的向量,每一層隱層單元個數設置為上一層的一半,那麼第一層的維度為4096*2048約需要840萬的網絡參數需要訓練,參數量非常巨大。

因此,文章提出了一種利用 CNN 局部連接共享參數的方法來減少 embedding layer 到 hidden layer 之間的參數,如圖4.7所示。

推薦系統中的深度匹配模型(中)

圖4.7 ConvNCF 模型框架

假設隱層維度 K=64,有6層 hidden layer,每一層有32個卷積核 ( feature map ),步長 stride=2,那麼經過每個卷積核後的 feature map 大小為原來的1/4 ( 長和寬各少了一半 )。以第一層卷積為例:

推薦系統中的深度匹配模型(中)

那麼第一層卷積後得到的網絡是個32*32*32的3維 vector,其中最後一個32代表 feature map 個數。這裡如何體現特徵交叉的思想呢?ei,j,c 代表的就是在前一層的 feature map 中,第 i 個單元和第 j 個 element 的二階交叉。第一層 feature map 中,每個單元提取的是上一層2*2區域的 local 連接信息,第三層提取的就是第一層4*4的信息,那麼在網絡的最後一層就能提取到原始 feature map 裡的 global 連接信息,從而達到高階特徵提取的目的。

總結來說,使用原始的 outer-product 思想,在第一層網絡處有近千萬的參數需要學習,而使用 CNN 網絡一方面能夠減少參數量,另一方面又同時提取了低階和高階特徵的組合。個人覺得引入 CNN 固然能節省內存,但也同時會帶來訓練和推理時間的增加,是一種時間換空間的思想。另外用 CNN 是否能夠比原始 MLP 更有效擬合特徵組合也需要結合數據分佈去看。

4.1.1.4 小結

基於 NCF 框架的方法基礎原理是基於協同過濾,而協同過濾本質上又是在做 user 和 item 的矩陣分解,所以,基於 NCF 框架的方法本質上也是基於 MF 的方法。矩陣分解本質是儘可能將 user 和 item 的 vector,通過各種方法去讓 user 和 item 在映射後的空間中的向量儘可能接近 ( 用向量點擊或者向量的 cosine 距離直接衡量是否接近)。

而另外一種思路,基於翻譯的方法,也叫 translation based model,認為 user 和 item 在新的空間中映射的 vector 可以有 gap,這個 gap 用 relation vector 來表達,也就是讓用戶的向量加上 relation vector 的向量,儘可能和 item vector 接近。兩種方法的區別可以用圖4.8形象的表示。

推薦系統中的深度匹配模型(中)

圖4.8 基於矩陣分解和基於翻譯的模型區別

4.1.2 基於 translation 框架的方法

4.1.2.1 transRec 模型

2017年的 recsys 會議上提出的一種基於 "translate" 的推薦方法,要解決的是 next item 的推薦問題。基本思想是說用戶本身的向量,加上用戶上一個交互的 item 的向量,應該接近於用戶下一個交互的 item 的向量,輸入是 (user, prev item, next item),預測下個 item 被推薦的概率。

推薦系統中的深度匹配模型(中)

圖4.9 transRec 模型框架

用戶向量表達如下:

推薦系統中的深度匹配模型(中)

這裡 ri 和 rj 表示的是用戶上一個交互的 item i 和下一個交互的 item j,tu 為用戶本身的向量表達。而在實際的推薦系統中,往往存在數據稀疏和用戶冷啟動問題,因此,作者將用戶向量tu 分解成了兩個向量:

推薦系統中的深度匹配模型(中)

這裡 t 可以認為是全局向量,表示的是所有用戶的平均行為,tu 表示用戶 u 本身的 bias,例如對於冷啟動用戶,tu 可以設置為0,用全局用戶的表達 t 作為冷啟動。

對於熱門 item 由於出現次數非常多,會導致最終熱門 item 的向量和絕大多數用戶向量加上 item 向量很接近,因此文章對熱門 item 做了懲罰,最終,已知上一個 item i,用戶和下一個 item j 的匹配 score 表達為:

推薦系統中的深度匹配模型(中)

其中, 第一項 βj 表示的是物品 j 的全局熱度;第二項 d 表示的是用戶向量加上物品 i 的向量與物品 j 向量的距離;距離越小表示 i 和 j 距離越接近,被推薦的可能性就越大。

4.1.2.2 LRML 模型 ( Latent Relational Metric Learning )

前面講到,基於 translation 框架的方法對比基於 CF 框架方法最大的不同,在於找到一個 relation vector,使得 user vector + relation vector 儘可能接近 item vector。WWW2018 提出的 LRML 模型通過引入 memory network 來學習度量距離。可以分為三層 layer,分別是 embedding layer, memory layer 和 relation layer。

推薦系統中的深度匹配模型(中)

圖4.10 LRML 模型框架

❶ embedding layer

底層是常規的雙塔 embedding,分別是用戶 embedding 矩陣和物品的 embedding 矩陣,用戶 one-hot 輸入和 item 的 one-hot 輸入通過 embedding 後得到用戶向量 p 和物品向量 q。

❷ memory layer

記憶網絡層是文章的核心模塊,作者通過引入 memory layer 作為先驗模塊。這個模塊可以分為三個步驟進行計算:

① 用戶和物品 embedding 融合

Embedding 層得到的 user 和 item 向量 p 和 q 需要先經過交叉合成一個向量後輸入到下一層,作者提到使用哈達碼積效果優於 MLP 效果,也更簡單:

推薦系統中的深度匹配模型(中)

② 用戶-物品 key addressing

從第一步得到的向量 s 中,去和 memory 記憶網絡模塊中的各個 memory vector 挨個計算相似度,相似度可以用內積表達並做歸一化:

推薦系統中的深度匹配模型(中)

得到的 ai 代表的是當前用戶-物品輸入對 (p,q) 與 memory-network 中的第 i 個向量的相似度。

③ 最終加權表達

最終得到的 relation vector 是第二步得到的 memory 記憶網絡中不同 vector 的加權表達,如下所示:

推薦系統中的深度匹配模型(中)

❸ relation layer

從 memory layer 得到的 r 向量可以認為是用戶向量 p 與物品向量 q 的 relation vector,最終的距離用平方損失衡量,如圖4.11所示。

推薦系統中的深度匹配模型(中)

推薦系統中的深度匹配模型(中)

圖4.11 LRML relation 層以及 loss 結構

由於解決的是推薦物品的排序問題,文章使用的是 pairwise loss,因此在網絡的最後一層,對 user 和 item 分別進行負樣本採樣得到 p' 和 q',然後使用 pairwise hinge loss 進行優化:

推薦系統中的深度匹配模型(中)

4.2 feature-based 的深度模型

4.1介紹的基於 CF 的方法,對大多數推薦系統來說,輸入的特徵向量往往都是非常高維而且稀疏的,而特徵之間的交叉關係對模型來說往往都是非常重要的。例如,用戶一般會在一天快吃三餐的時候,打開和訂餐相關的 app,這樣,用戶使用訂餐 app 和時間存在著二階交叉關係;又比如說,男性的青年群體,往往更喜歡射擊類的遊戲,性別、年齡以及類目之間存在著三階的交叉關係。因此,如何捕捉特徵之間的交叉關係,衍生了眾多基於特徵的模型,在這裡將這些捕捉特徵交叉關係的模型稱為 feature-based model。

4.2.1 wide&deep 模型

提到深度學習模型,最經典的莫過於2016年 google 提出的 wide and deep 模型。說是模型,不如說是通用的一套範式框架,在整個工業界一舉奠定了風靡至今的模型框架,如圖4.12所示。

推薦系統中的深度匹配模型(中)

圖4.12 wide&deep 模型框架

在這個經典的 wide&deep 模型中,google 提出了兩個概念:generalization ( 泛化性 ) 和 memory ( 記憶性 )。

❶ 記憶性:wide 部分長處在於學習樣本中的高頻部分,優點是模型的記憶性好,對於樣本中出現過的高頻低階特徵能夠用少量參數學習;缺點是模型的泛化能力差,例如對於沒有見過的 ID 類特徵,模型學習能力較差。

❷ 泛化性:deep 部分長處在於學習樣本中的長尾部分,優點是泛化能力強,對於少量出現過的樣本甚至沒有出現過的樣本都能做出預測 ( 非零的 embedding 向量 ),容易帶來驚喜。缺點是模型對於低階特徵的學習需要用較多參數才能等同 wide 部分效果,而且泛化能力強某種程度上也可能導致過擬合出現 bad case。尤其對於冷啟動的一些 item,也有可能用用戶帶來驚嚇。

推薦系統中的深度匹配模型(中)

圖4.13 wide&deep 模型特徵框架

值得注意的是,雖然模型的 deep 部分擬合和泛化能力很強,但絕對不意味著把特徵交叉都交給 MLP 就夠了。實際證明,對於重要的一些人工經驗的特徵,對於提升整體效果還是非常重要的,如圖4.13所示。這個人工特徵的所謂缺點,也是後續各種模型結構想對其進行 "自動化" 的優化點。

4.2.2 deep crossing 模型

微軟在2016年提出了一套框架 deep crossing,這篇文章在輸入到 embedding 這裡到是和 wide&deep 沒有太多不同,主要區別在於 MLP 部分。

Google 的 wide&deep 模型裡深度網絡的 MLP 部分是全連接網絡,每一層的網絡輸入都是前一層的輸入出,受限於模型結構,越往後越難學習到原始輸入的表達,一般深度不會太深,超過5層的網絡在工業界已經算很少見了。為了解決這個問題,deep crossing 網絡引入了 resnet 殘差網絡的概念,通過 short-cut,在 MLP 的深層網絡,也能接收來自第一層的輸入,這樣可以使得模型的深度達到10層之多,如圖4.14所示。

推薦系統中的深度匹配模型(中)

圖4.14 deep crossing 模型框架

上述提到的 wide&deep 以及 deep crossing 框架更像是在模型結構做的改進,一個引入了 wide&deep,一個引入了 resnet,特徵層面並沒有做太多改造,如何體現 feature-base 呢?SigIR2017 就有一篇文章做了個實驗,對 wide&deep 以及 Deep&Cross 實驗按照 embedding 是否做初始化分別做了實驗。實驗發現,如果 embedding 是隨機初始化的,兩個深度模型連基礎的 FM 模型都打不過;哪怕經過 FM 初始化了 embedding,wide&deep 模型效果也僅僅略好於 FM 模型,而 deep crossing 模型依然比不過 FM 模型,實驗結果如圖4.15所示。

推薦系統中的深度匹配模型(中)

圖4.15 不同初始化對模型影響

這個結論也引出了關於 MLP 的一些思考,全連接網絡表面上看對所有節點都進行了連接,理論上應該學習到了各個節點的交叉特徵,但是從結果上來看,MLP 對這些特徵交叉的學習能力確實非常差的。糾其原因,還是在模型結構的設計上。

推薦系統中的深度匹配模型(中)

圖4.16 wide&deep 模型和 deep crossing 模型

圖4.16裡無論是 wide&deep 還是 deep crossing network,embedding 層之後到 MLP 之間,都是將 embedding 做 concat 的。這些 concat 後的信息其實能夠表達的特徵交叉信息其實是非常有限的,僅靠 MLP 想完全捕捉到特徵的有效交叉其實是非常困難的。因此,有大量工作關於在 embedding 這裡如何捕捉特徵交叉,其實就是在 MLP 網絡之前,利用更多的數學先驗範式做特徵交叉去提取特徵,這也是本節提到的方法叫做 feature-based 的原因。

4.2.3 PNN 模型

Embedding layer 進入 MLP 之前,引入了 product layer 來顯式的學習每個 field 的 embedding 向量之間的兩兩交叉,如圖4.17所示。

推薦系統中的深度匹配模型(中)

圖4.17 PNN 模型框架

左邊 z 為 embedding 層的線性部分,右邊為 embedding 層的特徵交叉部分。這種 product 思想來源於,推薦系統中的特徵之間的交叉關係更多是一種 and "且" 的關係,而非 add "加" 的關係。例如,性別為男且喜歡遊戲的人群,比起性別男和喜歡遊戲的人群,前者的組合比後者更能體現特徵交叉的意義。根據 product 的方式不同,可以分為 inner product ( IPNN ) 和 outer product ( OPNN ),如圖4.18所示。

推薦系統中的深度匹配模型(中)

圖4.18 PNN 模型的兩種不同交叉方式

其中,IPNN 模型每個特徵是個 inner product,f 個 field 兩兩交叉,得到的新的特徵組合有 f*(f-1)/2個;outer product 是兩個向量的乘積,得到的新的特徵組合有 f*(f-1)/2*k*k 個。

4.2.4 deepFM 模型

Google 的 wide&deep 框架固然強大,但由於 wide 部分是個 LR 模型,仍然需要人工特徵工程。華為諾亞方舟團隊結合 FM 相比 LR 的特徵交叉的功能,在2017年提出了 deepFM,將 wide&deep 部分的 LR 部分替換成 FM 來避免人工特徵工程,如圖4.19所示。

推薦系統中的深度匹配模型(中)

圖4.19 deepFM 模型框架

比起 wide&deep 的 LR 部分,deeFM 採用 FM 作為 wide 部分的輸出,FM 部分如圖4.20所示。

推薦系統中的深度匹配模型(中)

圖4.20 deepFM 模型中的 FM 部分

除此之外,deepFM 還有如下特點:

❶ 更強的低階特徵表達

Wide 部分取代 WDL 的 LR,與4.2.1和4.2.2提到的 wide&deep 模型以及 deep crossing 模型相比更能捕捉低階特徵信息。

❷ Embedding 層共享

Wide&deep 部分的 embedding 層得需要針對 deep 部分單獨設計;而在 deepFM 中,FM 和 DEEP 部分共享 embedding 層,FM 訓練得到的參數既作為 wide 部分的輸出,也作為 DNN 部分的輸入。

❸ end-end 訓練

Embedding 和網絡權重聯合訓練,無需預訓練和單獨訓練。

4.2.5 NFM 模型 ( Neural Factorization Machines )

DeepFM 在 embedding 層後把 FM 部分直接 concat 起來 ( f*k 維,f 個 field,每個 filed 是 k 維向量 ) 作為 DNN 的輸入。Neural Factorization Machines,簡稱 NFM,提出了一種更加簡單粗暴的方法,在 embedding 層後,做了一個叫做 Bi-interaction 的操作,讓各個 field 做 element-wise 後 sum 起來去做特徵交叉,MLP 的輸入規模直接壓縮到 k 維,和特徵的原始維度 n 和特徵 field 維度 f 沒有任何關係,如圖4.21所示。

推薦系統中的深度匹配模型(中)

圖4.21 NFM 模型框架

這裡論文只畫出了其中的 deep 部分, wide 部分在這裡省略沒有畫出來。Bi-interaction 所做的操作很簡單:讓 f 個 field 兩兩 element-wise 相乘後,得到 f*(f-1)/2 個維度為 k 的向量,然後直接 sum 起來,最後得到一個 k 維的向量。所以該層沒有任何參數需要學習,同時也降低了網絡複雜度,能夠加速網絡的訓練;但同時這種方法也可能帶來較大的信息損失。

4.2.6 AFM 模型 ( Attention Factorization Machines )

前面提到的各種網絡結構中的 FM 在做特徵交叉時,讓不同特徵的向量直接做交叉,基於的假設是各個特徵交叉對結果的貢獻度是一樣的。這種假設往往不太合理,原因是不同特徵對最終結果的貢獻程度一般是不一樣的。Attention Neural Factorization Machines,簡稱 AFM 模型,利用了近年來在圖像、NLP、語音等領域大獲成功的 attention 機制,在前面講到的 NFM 基礎上,引入了 attention 機制來解決這個問題,如圖4.22所示。

推薦系統中的深度匹配模型(中)

圖4.22 AFM 模型框架

AFM 的 embedding 層後和 NFM 一樣,先讓 f 個 field 的特徵做了 element-wise product 後,得到 f*(f-1)/2 個交叉向量。和 NFM 直接把這些交叉項 sum 起來不同,AFM 引入了一個 Attention Net,認為這些交叉特徵項每個對結果的貢獻是不同的,例如 xi 和 xj的權重重要度,用 aij 來表示。從這個角度來看,其實 AFM 其實就是個加權累加的過程。Attention Net 部分的權重 aij 不是直接學習,而是通過如下公式表示:

推薦系統中的深度匹配模型(中)

這裡 t 表示 attention net 中的隱層維度,k 和前面一樣,為 embedding 層的維度。所以這裡需要學習的參數有3個,W,b,h,參數個數共 t*k+2*t 個。得到 aij 權重後,對各個特徵兩兩點積加權累加後,得到一個 k 維的向量,引入一個簡單的參數向量 hT,維度為 k 進行學習,和 wide 部分一起得到最終的 AFM 輸出。

推薦系統中的深度匹配模型(中)

圖4.23 AFM 模型中 attention 的可視化解釋

關於 AFM 還有個好處,通過 attention-base pooling 計算的 score 值 aij 體現的是特徵 vi 和 vj 之間的權重,能夠選擇有用的二階特徵,如圖4.23所示。

4.2.7 DCN 模型 ( Deep Cross Network )

前面提到的幾種 FM-based 的方法都是做的二階特徵交叉,如 PNN 用 product 方式做二階交叉,NFM 和 AFM 也都採用了 Bi-interaction 的方式學習特徵的二階交叉。對於更高階的特徵交叉,只有讓 deep 去學習了。為解決這個問題,google 在2017年提出了 Deep&Cross Network,簡稱 DCN 的模型,可以任意組合特徵,而且不增加網絡參數。圖4.24為 DCN 的結構。

推薦系統中的深度匹配模型(中)

圖4.24 DCN 模型結構

整個網絡分4部分組成:

❶ embedding and stacking layer

之所以不把 embedding 和 stacking 分開來看,是因為很多時候,embedding 和 stacking 過程是分不開的。前面講到的各種 XX-based FM 網絡結構,利用 FM 學到的 v 向量可以很好的作為 embedding。而在很多實際的業務結構,可能已經有了提取到的 embedding 特徵信息,例如圖像的特徵 embedding,text 的特徵 embedding,item 的 embedding 等,還有其他連續值信息,例如年齡,收入水平等,這些 embedding 向量 stack 在一起後,一起作為後續網絡結構的輸入。當然,這部分也可以用前面講到的 FM 來做 embedding。為了和原始論文保持一致,這裡我們假設 x0 向量維度為 d ( 上文的網絡結構中為 k ),這一層的做法就是簡答的把各種 embedding 向量 concat 起來。

推薦系統中的深度匹配模型(中)

❷ deep layer network

在 embedding and stacking layer 之後,網絡分成了兩路,一路是傳統的 DNN 結構。表示如下:

推薦系統中的深度匹配模型(中)

為簡化理解,假設每一層網絡的參數有 m 個,一共有 Ld 層,輸入層由於和上一層連接,有 d*m 個參數 ( d 為 x0 向量維度 ),後續的 Ld-1 層,每層需要 m*(m+1) 個參數,所以一共需要學習的參數有 d*m+m*(m+1)*(Ld-1)。最後的輸出也是個 m 維向量。

❸ cross layer network

Embedding and stacking layer 輸入後的另一路就是 DCN 的重點工作了。每一層 l+1 和前一層l的關係可以用如下關係表示:

推薦系統中的深度匹配模型(中)

可以看到 f 是待擬合的函數,xl 即為上一層的網絡輸入。需要學習的參數為 wl 和 bl,因為 xl維度為 d,當前層網絡輸入 xl+1 也為 d 維,待學習的參數 wl 和 bl 也都是 d 維向量。因此,每一層都有 2*d 的參數 ( w 和 b ) 需要學習,網絡結構如下。

推薦系統中的深度匹配模型(中)

圖4.25 DCN 模型的 cross 原理

經過 Lc 層的 cross layer network 後,在該 layer 最後一層 Lc 層的輸出為 Lc2 的 d 維向量。

❹ combination output layer

經過 cross network 的輸出 XL1 ( d 維 ) 和 deep network 之後的向量輸入 ( m 維 ) 直接做 concat,變為一個 d+m 的向量,最後套一個 LR 模型,需要學習參數為 1+d+m。

總結起來,DCN 引入的 cross network 理論上可以表達任意高階組合,同時每一層保留低階組合,參數的向量化也控制了模型的複雜度。Cross 網絡部分的交叉學習的是特徵向量中每一個 element 的交叉,本質上是 bit-wise 的。

4.2.8 xDeepFM 模型 ( extreme Deep Factor Machine )

xDeepFM 模型從名字上聽好像是 deepFM 模型的升級,但其實更應該拿來和 DCN 模型做對比。DCN 模型引入了高階特徵交叉,但是特徵的交叉本質上是在 bit-wise 的。而 xDeepFM 模型認為特徵向量 i 和特徵向量 j 的交叉過程中,i 本身的元素交叉沒有意義,提取 i 和 j 的向量交叉才是更有效捕捉特徵的方式,也就是 vector-wise 的交叉,整個模型的框架如圖4.26所示,最核心的模塊在於特徵交叉的 CIN 模塊。

推薦系統中的深度匹配模型(中)

圖4.26 xDeepFM 模型結構

首先我們來看下整個 CIN 的整體框架圖,如圖4.27所示,假設特徵 field 個數是 m,每個 field 的隱層維度為 d,那麼原始 embedding 層的大小為 m*d,而 cross network 有 Hk層,提取的是特徵的交叉。每一層網絡在做什麼事情呢?就是和第一層 x0 做特徵交叉得到新的特徵向量後,然後這 Hk 層 cross net 得到的特徵向量 concat 到一起,作為 MLP 的輸入。那麼,這裡面,每一層的特徵 xk 到底是如何輸入層 x0 發生交互的?

推薦系統中的深度匹配模型(中)

圖4.27 CIN 模塊結構

以 cross net 的第 k 層和原始輸入 x0 為例,我們看下如何提取得到新的特徵,圖4.28是其特徵交叉的過程。其中 xk 的維度為 Hk*D,表示的是第 k 層有 Hk 個 vector,而原始輸入 x0 的維度為 m*D,表示輸入層有 m 個 D 維的 vector。

推薦系統中的深度匹配模型(中)

圖4.28 CIN 模塊中特徵交叉過程

推薦系統中的深度匹配模型(中)

這裡 Wk,h 表示的是第 k 層的第 h 個 vector 的權重,是模型需要學習的參數。整個公式的理解是整個 xDeepFM 理解的關鍵,我們具體看下發生了什麼:

❶ 首先,從前一層的輸入 Xk-1 ( 一共有 Hk-1 個 vector ),取出任意一個 vector;從原始輸入x0 ( 一共有 m 個 vector ),取出任意一個 vector,兩者兩兩做哈達碼積,可以得到 Hk-1*m 個 vector。

❷ 這 Hk-1*m 個交叉得到的 vector,每個 vector 維度都是 D,我們通過一個 W 矩陣做乘積進行加權求和,相當於是個帶權重的 pooling,最終得到加權求和後的 vector Xh,k,表示的是第 h 層第 k 個 vector。這裡的 W 矩陣就是模型要學習的。

❸ 為什麼說是壓縮,壓縮體現在哪裡?還是用圖說話,這裡我們看下原始論文給出的圖示,有助於整個過程的理解。

推薦系統中的深度匹配模型(中)

圖4.29 CIN 模塊具體結構

在圖4.29左圖中,我們把 D 看成是原始二維平面的寬度,我們沿著 D 的方向挨個進行計算。先看 xk 向量中 D 的第一維,有 Hk 個數;x0 向量中 D 的第一維,有 m 個數,讓 Hk 和 m 兩兩計算,就可以得到 Hk*m 的一個平面。一直沿著 D 方向,2,3,4,…D,我們就可以得到一個 Hk*m*D 的三維矩陣,暫且叫做 zk+1,注意這個過程只是簡單的矩陣計算,沒有參數需要學習。

在4.29右邊的圖中,我們開始提取前面 zk+1 的信息,還是以 D 方向的第一維為例,一個 m*Hk 的平面,乘以一個大小一樣的 m*Hk 矩陣 W,然後加權求和,就可以得到這個平面最後壓縮的一個實數。整個平面被 "壓縮" 成為了一個一維的數。一直沿著 D 方向求解每個平面壓縮後的數,就可以得到一個 D 維的向量。

這就是整個 "壓縮" 的取名原因。整個過程非常類似 CNN 的 filter 卷積思想,W 就是卷積核,得到的每個特徵映射的值就是 feature map。


分享到:


相關文章: