知乎-推薦nfm
fm對於特徵的組合僅限於二階,缺少對特徵之間深層次關係的抽取。因此,nfm提出來就是在fm的基礎上引入神經網路,實現對特徵的深層次抽取。與fm(因式分解機)相似,nfm使用實值特徵向量。給定乙個稀疏向量x∈rn作為輸入,其中特徵值為xi=0表示第i個特徵不存在,nfm預估的目標為:
其中第一項和第二項是線性回歸部分,與fm相似,fm模擬資料的全域性偏差和特徵權重。第三項f(x)是nfm的核心組成部分,用於建模特徵互動。它是乙個多層前饋神經網路。
首先輸入就是離散化的特徵,然後再進行embedding操作,獲得每乙個特徵的向量表示。接著就到了bi-interaction pooling層,這裡其實就是fm部分。fm的公式如下圖所示:
去掉最外層的累加號,我們得到的是乙個長度為k的向量,也就是embedding部分的長度。然後再對這個向量送入幾層全連線層即可,最後輸出ctr預估值。這就是nfm的整體思路。
和其他的dnn模型處理稀疏輸入一樣,embedding將輸入轉換到低維度的稠密的嵌入空間中進行處理。這裡做稍微不同的處理是,使用原始的特徵值乘以embedding vector,使得模型也可以處理real valued feature。
bi是bi-linear的縮寫,這一層其實是乙個pooling層操作,它把很多個向量轉換成乙個向量,形式化如下:
fbi的輸入是整個的嵌入向量,xi ,xj是特徵取值,vi, vj是特徵對應的嵌入向量。中間的操作表示對應位置相乘。所以原始的嵌入向量任意兩個都進行組合,對應位置相乘結果得到乙個新向量;然後把這些新向量相加,就得到了bi-interaction的輸出。這個輸出只有乙個向量。
這個跟其他的模型基本一樣,堆積隱藏層以期來學習高階組合特徵。一般選用constant的效果要好一些。
最後一層隱藏層zl到輸出層最後**結果形式化如下:
其中h是中間的網路引數。考慮到前面的各層隱藏層權重矩陣,f(x)形式化如下:
這裡相比於fm其實多出的引數其實就是隱藏層的引數,所以說fm也可以看做是乙個神經網路架構,就是去掉隱藏層的nfm。
1. nfm核心就是在nn中引入了bilinear interaction(bi-interaction) pooling操作。基於此,nn可以在low level就學習到包含更多資訊的組合特徵。
2. 通過deepen fm來學習高階的非線性的組合特徵。
3. nfm相比於上面提到的dnn模型,模型結構更淺、更簡單(shallower structure),但是效能更好,訓練和調整引數更加容易。
所以,依舊是fm+dnn的組合套路,不同之處在於如何處理embedding向量,這也是各個模型重點關注的地方。現在來看業界就如何用dnn來處理高維稀疏的資料並沒有乙個統一普適的方法,依舊在摸索中。
《推薦系統》 NFM模型
在ctr預估中,為了解決稀疏特徵的問題,學者們提出了fm模型來建模特徵之間的互動關係。但是fm模型只能表達特徵之間兩兩組合之間的關係,無法建模兩個特徵之間深層次的關係或者說多個特徵之間的互動關係,因此學者們通過deep network來建模更高階的特徵之間的關係。因此 fm和深度網路dnn的結合也就...
推薦演算法 NFM
fm對於特徵的組合僅限於二階,缺少對特徵之間深層次關係的抽取。因此,nfm提出來就是在fm的基礎上引入神經網路,實現對特徵的深層次抽取。nfm的模型結構圖如下所示 模型的結構如上圖所示,首先輸入就是離散化的特徵,然後再進行embedding操作,獲得每乙個特徵的向量表示。接著就到了bi intera...
深度學習baseline模型 深度學習模型訓練流程
工作中訓練了很多的深度學習模型,目前到了上公升到方 的角度來看了。日常工作中有的人可能已經在遵循方 做事,可能自己沒有注意,有的人可能沒有遵循方 在做事,雖然可能最後的結果差不多,但花費的時間和精力應該會差別很大,當然這是我自己的感受。我們不必完全按照方 來做,但基本流程跟方 應該一致。下面的具體步...