DeepFM
算法思想
初始想法
推薦系統中面對的特征往往是海量稀疏特征,如何挖掘出這些海量特征里隱含的組合特征對于改善推薦系統的效果來說非常重要。普通的線性模型時優化時是一個個特征考慮的,沒有顯示的考慮到組合特征。FM通過對于每一維特征的隱變量內積來提取特征組合。最終的結果也非常好。但是,雖然理論上來講FM可以對高階特征組合進行建模,但實際上因為計算復雜度的原因一般都只用到了二階特征組合。那么對于高階的特征組合來說,我們很自然的想法,通過多層的神經網絡即DNN去解決。
面臨的問題
在推薦系統中由于我們會把特征離散化后得到高維稀疏特征,如果直接把這些特征輸入到神經網絡中的話會導致參數數量爆炸,從時間空間和訓練角度上來說都不可行。
解決方法
上面我們提到,在推薦系統中我們一般會對每個特征進行離散化得到這個特征的onehot編碼,但是這個onehot編碼的維度可能太高,我們一個很自然的想法就是對這個高維的稀疏向量進行降維得到一個低維的稠密向量:
初步模型
在上面的embedding層后面接幾個全連接層提取高階特征,最后加個輸出層,我們就得到了初步的模型了
新的問題
按照上面的模型,經過幾層全連接層后,輸入輸出層的似乎只有高階特征。我們如果希望能同時把高階特征和低階特征一起輸入到輸出層中,應該怎么辦呢?
解決辦法
DeepFM詳解
模型結構
DeepFM包含兩部分:FM部分與DNN部分,分別負責低階特征的提取和高階特征的提取。這兩部分共享同樣的輸入。DeepFM的預測結果可以寫為:
細節分析
模型的DNN部分很好理解,就是embedding+幾層全連接層
FM的權重該怎么求呢?我個人認為這就是DeepFM最核心的部分,DeepFM中的FM部分和DNN部分不僅共享輸入而且共享隱向量部分權重,FM部分的一階權重是獨立學習的,但是FM部分的每個特征的隱向量是embedding層每個特征對應的embedding權重:
參考博客
https://www.jianshu.com/p/6f1c2643d31b
總結
- 上一篇: 咖啡鲜果脱皮脱胶对提高咖啡有影响吗?
- 下一篇: 为什么想吃辣 探究辣食物对人体的影响?