淺談推薦,從 FM 到深度學習

大家好,上一篇文章當中我們介紹了 Embedding 對於推薦系統模型的作用,介紹了 FFM 和 AFM 的基本原理。今天我們繼續來介紹 FM,介紹一下 FM 之後的幾個重要的迭代版本,以及它的發展方向。

FNN

首先我們來介紹一下 FNN,FNN 的全稱是 Factorisation-machi supported Neural Network,即 FM 支撐的神經網絡。其實這個名字當中信息量很大,我們來做個簡單的詞法分析,這個短語的主語是神經網絡,FM 支撐的是一個修飾的定語。也就是說這個模型的本質是神經網絡,FM 只是這個神經網絡的一個特性。

而如果回顧一下 FFM 以及 AFM,你會發現這兩個模型的主體還是 FM,神經網絡是 FM 的修飾。這裏的一個潛在的主語的變化其實是有隱藏信息的,隱藏信息就是學界對於模型的認知正在逐漸變化,正從 FM 爲主體悄然轉化成神經網絡爲主體。這個悄然的變化說明了一個關鍵信息,以後推薦系統的相關模型,神經網絡纔是大頭。

瞭解完了這個潛在臺詞之後,我們再來看看 FNN 的網絡結構。其實 FNN 的網絡結構非常簡單,就是 FM 與神經網絡的一個串聯。通過 FM 部分將特徵轉化成 Embedding,之後全部拼接到一起之後,放入 MLP(多層感知機)當中做訓練。大家參考一下下圖很容易就能搞明白。

PNN

PNN 和 FNN 類似它唯一的區別就是 MLP 的輸入不僅僅是特徵的 Embedding,還加上了 Embedding product 的結果。

它的模型結構是這樣的:

我們關注一下中間的 Product Layer,這一層分成了左右兩個部分,左邊的部分就是特徵 Embedding,右邊的部分是 Embedding 的兩兩 product 的結果,也就是特徵之間兩兩內積的結果。而向量之間 product 的操作也有好幾種,既可以內積也可以外積。但不管是內積還是外積都有一個問題,就是它的數量太多了。對於 N 維特徵的模型來說,它的兩兩交叉一共有種,這是一個非常龐大的數字。

DeepFM

下一個登場的是 DeepFM,關於這個模型我們之前對它的論文寫過詳細的分析解讀,如果感興趣想要了解更多細節的同學可以點擊一下下方的傳送門。

喫透論文——推薦算法不可不看的 DeepFM 模型

DeepFM 和 FNN 非常接近,唯一的不同點是 FNN 的 FM 部分和 MLP 是串聯,而在 DeepFM 當中則改成了並聯。

大家對照一下下圖,就可以發現 FM 模塊輸出的 Embedding 除了直接進入 MLP 之外,也會在 FM 層進行 FM 的兩兩交叉操作,之後會和 MLP 的結果一起作爲最後一層的輸入。

總結

在這個三個模型當中,前兩個基本上都是擺設,真正效果比較不錯,在工業界得到廣泛使用的還是第三個。因爲它既保留了 FM 原汁原味的兩兩特徵交叉項,也容納了多層神經網絡強大的泛化擬合能力,因此它在 FM 的基礎上得到了進一步的極大提升。

除了模型效果之外,還有一點非常有意思,就是以現在的眼光來看,FNN 和 PNN 其實和 FM 沒有半毛錢關係。因爲他們所謂的 FM 支撐的部分不過是用來進行了 Embedding 而已,也就是把單個的特徵轉化成了向量的形式。這個在如今的推薦領域已經成了常規操作、家常便飯,但是在當時還是會被視爲是 FM 的特性,這其實是很鮮明的時代特徵。這裏也能看得出一個轉變,我們推薦領域的模型正在逐漸擺脫 FM 的束縛,全面迎接神經網絡。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/ErHb5k7U84Woem0RDRXEeg