papers地址:https://arxiv.org/pdf/1708.05027.pdf算法
借用論文開頭,目前不少的算法任務都是須要使用category feature,而通常對於category feature處理的方式是通過one hot編碼,而後咱們有些狀況下,category feature 對應取值較多時,如:ID等,one hot 編碼後,數據會變得很是的稀疏,不只給算法帶來空間上的複雜度,算法收斂也存在必定的挑戰。網絡
爲了能解決one hot 編碼帶來的數據稀疏性的問題,咱們每每能想到的是否是經過其餘的編碼Embeding方式。剛好深度學習的爆發,咱們能夠經過深度學習構架神經網絡對category feature進行embeding。爲了介紹該篇論文,主要圍繞該篇論文進行介紹一下。論文主要分爲四個部分:機器學習
第一部分:介紹背景學習
第二部分:介紹Factorization Machines和DNN優化
第三部分:介紹NFM網絡結構及其原理(本文的重點)編碼
第四部分:實驗部分blog
最後談談我的的理解和想法。深度學習
一、介紹背景io
如上面所述,背景部分主要內容說的現階段的問題和痛點:pdf
(1)category feature在傳統機器學習中處理的方法——one hot編碼,而這種編碼方式會帶來數據的維度暴增和數據的稀疏性。這個會給傳統機器學習帶來空間複雜度和算法收斂較爲困難。
(2)FM的二階交叉項僅僅是兩兩之間的交叉特徵,對於三階或者高階的特徵並不能很好的表達。
二、介紹Factorization Machines和DNN
(1)Factorization Machines 因式分解機
因式分解機是在LR的基礎之上,增長一個二階交叉特徵。其表達式以下所示:
其中,vi和vj是經過矩陣分解的方式獲得。
(2)DNN
DNN實際上就會一個全鏈接的深度神經網絡,該網絡的特色主要是具備必定的層數,層與層之間是全鏈接的。
三、NFM網絡及其原理
(1)NFM的原理和表達式:
從表達咱們能夠看出,其基本形式與FM是一致的,區別在於最後一項,NFM使用的是一個f(x)來表示,實際上該f(x)是一個統稱,他表示的一個網絡的輸出。該網絡以下所示:
從f(x)的網絡結構咱們一樣能夠看出,其主要解決的問題就是二階交叉項的問題。其結構是:
1)第一層是輸入層/,即輸入category feature
2)第二層Embeding,對category feature進行編碼
3)第三層是二階交叉項層,該層論文中主要是經過網絡獲得二階交叉特徵,計算方式:(a+b)^2-a*b 獲得二階交叉項
4)DNN層,該層是經過DNN提取高階特徵
以上就是NFM的基本原理和網絡結構。
四、實驗部分
實驗部分主要用了兩個數據集,分別以下:
實驗結構以下所示:
五、感悟
從該論文內容來看,基本上仍是圍繞着怎麼解決(1)category feature 編碼的問題和(2)獲取高階特徵,經過神經網絡來優化FM,提出了一個NFM的網絡結構。論文主要創新點是:
一、Embeding
二、將二階交叉特徵經過DNN提取高階特徵